@dskripchenko/laravel-admin 1.32.2 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +3 -20
  2. package/dist/.vite/manifest.json +11 -0
  3. package/dist/app.d.ts +13 -0
  4. package/dist/assets/app-Bt8LixFu.js +29 -0
  5. package/dist/assets/app-DvKbADye.css +1 -0
  6. package/dist/components/ScreenPage.test.d.ts +1 -0
  7. package/dist/components/actions/AdminActionButton.vue.d.ts +25 -0
  8. package/dist/components/actions/AdminActionDialogs.vue.d.ts +6 -0
  9. package/dist/components/actions/AdminActionForm.vue.d.ts +8 -0
  10. package/dist/components/actions/AdminActionMenuItems.vue.d.ts +14 -0
  11. package/dist/components/dashboard/BarChartWidget.vue.d.ts +3 -0
  12. package/dist/components/dashboard/CartesianChartWidget.vue.d.ts +21 -0
  13. package/dist/components/dashboard/ChartLegend.vue.d.ts +14 -0
  14. package/dist/components/dashboard/ChartTooltip.vue.d.ts +15 -0
  15. package/dist/components/dashboard/ChartWidget.test.d.ts +1 -0
  16. package/dist/components/dashboard/ChartWidget.vue.d.ts +9 -7
  17. package/dist/components/dashboard/HeatmapWidget.vue.d.ts +1 -1
  18. package/dist/components/dashboard/MarkdownWidget.vue.d.ts +2 -1
  19. package/dist/components/dashboard/RadarChartWidget.vue.d.ts +15 -0
  20. package/dist/components/dashboard/StatMarkdownWidgets.test.d.ts +1 -0
  21. package/dist/components/dashboard/StatWidget.vue.d.ts +0 -10
  22. package/dist/components/dashboard/chartGeometry.d.ts +62 -0
  23. package/dist/components/dashboard/chartTypes.d.ts +2 -1
  24. package/dist/components/dashboard/useChartSize.d.ts +14 -0
  25. package/dist/components/fields/CascaderField.vue.d.ts +32 -0
  26. package/dist/components/fields/CodeField.vue.d.ts +28 -0
  27. package/dist/components/fields/ColorField.vue.d.ts +23 -0
  28. package/dist/components/fields/DateRangeField.vue.d.ts +24 -0
  29. package/dist/components/fields/GroupField.vue.d.ts +21 -0
  30. package/dist/components/fields/HiddenField.vue.d.ts +8 -0
  31. package/dist/components/fields/LabelField.vue.d.ts +14 -0
  32. package/dist/components/fields/MarkdownField.vue.d.ts +29 -0
  33. package/dist/components/fields/MorphSwitcherField.vue.d.ts +23 -0
  34. package/dist/components/fields/RadioField.vue.d.ts +21 -0
  35. package/dist/components/fields/RatingField.vue.d.ts +23 -0
  36. package/dist/components/fields/SliderField.vue.d.ts +24 -0
  37. package/dist/components/fields/TimeField.vue.d.ts +26 -0
  38. package/dist/components/fields/TreeSelectField.vue.d.ts +26 -0
  39. package/dist/components/fields/WysiwygField.vue.d.ts +1 -1
  40. package/dist/components/fields/pickerFields.test.d.ts +1 -0
  41. package/dist/components/fields/support/color.d.ts +18 -0
  42. package/dist/components/fields/support/dateRange.d.ts +9 -0
  43. package/dist/components/fields/support/markdown.d.ts +14 -0
  44. package/dist/components/fields/support/support.test.d.ts +1 -0
  45. package/dist/components/fields/support/tree.d.ts +23 -0
  46. package/dist/components/infolist/CascaderEntry.vue.d.ts +21 -0
  47. package/dist/components/infolist/CodeEntry.vue.d.ts +17 -0
  48. package/dist/components/infolist/ColorEntry.vue.d.ts +15 -0
  49. package/dist/components/infolist/DateRangeEntry.vue.d.ts +11 -0
  50. package/dist/components/infolist/FieldEntry.vue.d.ts +19 -0
  51. package/dist/components/infolist/GroupEntry.vue.d.ts +19 -0
  52. package/dist/components/infolist/HiddenEntry.vue.d.ts +2 -0
  53. package/dist/components/infolist/ImageEntry.vue.d.ts +21 -0
  54. package/dist/components/infolist/MapEntry.vue.d.ts +17 -0
  55. package/dist/components/infolist/MarkdownEntry.vue.d.ts +11 -0
  56. package/dist/components/infolist/MorphEntry.vue.d.ts +19 -0
  57. package/dist/components/infolist/OptionEntry.vue.d.ts +13 -0
  58. package/dist/components/infolist/RatingEntry.vue.d.ts +19 -0
  59. package/dist/components/infolist/RelationEntry.vue.d.ts +17 -0
  60. package/dist/components/infolist/TreeSelectEntry.vue.d.ts +15 -0
  61. package/dist/components/infolist/entryValue.d.ts +10 -0
  62. package/dist/components/infolist/viewEntries.test.d.ts +1 -0
  63. package/dist/components/layouts/AccordionLayout.vue.d.ts +16 -0
  64. package/dist/components/layouts/AuditTrailLayout.vue.d.ts +13 -0
  65. package/dist/components/layouts/DrawerLayout.vue.d.ts +25 -0
  66. package/dist/components/layouts/InfolistLayout.vue.d.ts +12 -0
  67. package/dist/components/layouts/ListenerLayout.test.d.ts +1 -0
  68. package/dist/components/layouts/ListenerLayout.vue.d.ts +18 -0
  69. package/dist/components/layouts/ModalLayout.vue.d.ts +22 -0
  70. package/dist/components/layouts/StepLayout.vue.d.ts +12 -0
  71. package/dist/components/layouts/ViewLayout.vue.d.ts +7 -0
  72. package/dist/components/layouts/WizardLayout.vue.d.ts +20 -0
  73. package/dist/components/layouts/WrapperLayout.vue.d.ts +12 -0
  74. package/dist/components/layouts/layouts.test.d.ts +1 -0
  75. package/dist/components/layouts/overlay.d.ts +29 -0
  76. package/dist/components/layouts/wizard.d.ts +39 -0
  77. package/dist/components/layouts/wizard.test.d.ts +1 -0
  78. package/dist/components/render/formState.d.ts +11 -0
  79. package/dist/components/render/index.d.ts +13 -0
  80. package/dist/components/render/listenerContext.d.ts +20 -0
  81. package/dist/components/render/screenContext.d.ts +75 -0
  82. package/dist/components/render/screenContext.test.d.ts +1 -0
  83. package/dist/components/resource/AuditTimeline.vue.d.ts +5 -1
  84. package/dist/components/resource/ResourceIndexPage.vue.d.ts +5 -5
  85. package/dist/components/resource/ResourceViewPage.vue.d.ts +2 -2
  86. package/dist/components/shell/AdminConfirmDialog.vue.d.ts +2 -0
  87. package/dist/composables/useActionRunner.d.ts +132 -0
  88. package/dist/composables/useActionRunner.test.d.ts +1 -0
  89. package/dist/composables/useConfirm.d.ts +31 -0
  90. package/dist/composables/useConfirm.test.d.ts +1 -0
  91. package/dist/formState-DVU2igtT.js +76 -0
  92. package/dist/formState-DVU2igtT.js.map +1 -0
  93. package/dist/formState-DqHe1Jgd.cjs +2 -0
  94. package/dist/formState-DqHe1Jgd.cjs.map +1 -0
  95. package/dist/index.cjs +19 -4
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.d.ts +9 -2
  98. package/dist/index.mjs +19320 -15516
  99. package/dist/index.mjs.map +1 -1
  100. package/dist/quill.cjs +1 -1
  101. package/dist/quill.mjs +1 -1
  102. package/dist/source-hash.txt +1 -0
  103. package/dist/stores/screen.d.ts +3 -5
  104. package/dist/stores/toast.d.ts +24 -0
  105. package/dist/stores/toast.test.d.ts +1 -0
  106. package/dist/style.css +1 -1
  107. package/dist/tinymce.cjs +1 -1
  108. package/dist/tinymce.mjs +1 -1
  109. package/package.json +5 -3
  110. package/dist/.gitkeep +0 -0
  111. package/dist/formState-DeRZBwWH.js +0 -41
  112. package/dist/formState-DeRZBwWH.js.map +0 -1
  113. package/dist/formState-yUTD6wAR.cjs +0 -2
  114. package/dist/formState-yUTD6wAR.cjs.map +0 -1
package/dist/quill.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("@vueup/vue-quill"),c=require("./formState-yUTD6wAR.cjs"),s={key:0,class:"admin-field__label"},u={key:0,class:"admin-field__required","aria-hidden":"true"},m={class:"admin-field__control admin-field__control--quill"},f={key:1,class:"admin-field__error"},h={key:2,class:"admin-field__help"},p=e.defineComponent({__name:"QuillField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},toolbar:{default:"full"},theme:{default:"snow"},disabled:{type:Boolean,default:!1}},setup(l){const t=l,o=c.useFormState(),d=e.computed(()=>o.getField(t.name)??""),a=e.computed(()=>o.errors[t.name]?.[0]);function i(n){typeof n=="string"?o.setField(t.name,n):o.setField(t.name,JSON.stringify(n))}return(n,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":a.value!==void 0}])},[l.label?(e.openBlock(),e.createElementBlock("label",s,[e.createElementVNode("span",null,e.toDisplayString(l.label),1),l.required?(e.openBlock(),e.createElementBlock("span",u,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",m,[e.createVNode(e.unref(r.QuillEditor),{content:d.value,toolbar:l.toolbar,theme:l.theme,placeholder:l.placeholder??void 0,"read-only":l.disabled,"content-type":"html","onUpdate:content":i},null,8,["content","toolbar","theme","placeholder","read-only"])]),a.value?(e.openBlock(),e.createElementBlock("p",f,e.toDisplayString(a.value),1)):l.help?(e.openBlock(),e.createElementBlock("p",h,e.toDisplayString(l.help),1)):e.createCommentVNode("",!0)],2))}});exports.QuillField=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("@vueup/vue-quill"),c=require("./formState-DqHe1Jgd.cjs"),s={key:0,class:"admin-field__label"},u={key:0,class:"admin-field__required","aria-hidden":"true"},m={class:"admin-field__control admin-field__control--quill"},f={key:1,class:"admin-field__error"},h={key:2,class:"admin-field__help"},p=e.defineComponent({__name:"QuillField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},toolbar:{default:"full"},theme:{default:"snow"},disabled:{type:Boolean,default:!1}},setup(l){const t=l,o=c.useFormState(),d=e.computed(()=>o.getField(t.name)??""),a=e.computed(()=>o.errors[t.name]?.[0]);function i(n){typeof n=="string"?o.setField(t.name,n):o.setField(t.name,JSON.stringify(n))}return(n,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":a.value!==void 0}])},[l.label?(e.openBlock(),e.createElementBlock("label",s,[e.createElementVNode("span",null,e.toDisplayString(l.label),1),l.required?(e.openBlock(),e.createElementBlock("span",u,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",m,[e.createVNode(e.unref(r.QuillEditor),{content:d.value,toolbar:l.toolbar,theme:l.theme,placeholder:l.placeholder??void 0,"read-only":l.disabled,"content-type":"html","onUpdate:content":i},null,8,["content","toolbar","theme","placeholder","read-only"])]),a.value?(e.openBlock(),e.createElementBlock("p",f,e.toDisplayString(a.value),1)):l.help?(e.openBlock(),e.createElementBlock("p",h,e.toDisplayString(l.help),1)):e.createCommentVNode("",!0)],2))}});exports.QuillField=p;
2
2
  //# sourceMappingURL=quill.cjs.map
package/dist/quill.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as f, computed as s, openBlock as l, createElementBlock as t, normalizeClass as h, createElementVNode as c, toDisplayString as i, createCommentVNode as r, createVNode as p, unref as y } from "vue";
2
2
  import { QuillEditor as b } from "@vueup/vue-quill";
3
- import { u as v } from "./formState-DeRZBwWH.js";
3
+ import { u as v } from "./formState-DVU2igtT.js";
4
4
  const _ = {
5
5
  key: 0,
6
6
  class: "admin-field__label"
@@ -0,0 +1 @@
1
+ 5cfa56155e3c3456c9823d21a95f0c5e7da5a825a382f00cb596c3d1656d5782
@@ -18,6 +18,7 @@
18
18
  * state. Keeping a dirty state across screens is not needed — custom forms are
19
19
  * usually an atomic submit, not a resumable black box.
20
20
  */
21
+ import { type ServerAlert } from './toast';
21
22
  export interface ScreenLayoutNode {
22
23
  kind: 'layout' | 'field';
23
24
  type?: string;
@@ -64,11 +65,8 @@ export interface ScreenMethodResult {
64
65
  * leaves them to find it by themselves.
65
66
  */
66
67
  message_link?: ScreenMessageLink | null;
67
- alerts?: Array<{
68
- type: string;
69
- message: string;
70
- duration_ms?: number;
71
- }>;
68
+ /** Shown as toasts by runMethod — see toastAlerts(). */
69
+ alerts?: ServerAlert[];
72
70
  redirect_url?: string | null;
73
71
  refresh?: boolean;
74
72
  download_url?: string | null;
@@ -14,4 +14,28 @@ export declare const adminToast: {
14
14
  * pushes a toast.
15
15
  */
16
16
  export declare function toastError(err: unknown, fallback?: string): void;
17
+ /** One entry of a screen method's `alerts` — see the ScreenAlert schema. */
18
+ export interface ServerAlert {
19
+ type?: string;
20
+ /** Aliases of `type` that people write for a toast. */
21
+ level?: string;
22
+ variant?: string;
23
+ message?: string;
24
+ title?: string;
25
+ duration_ms?: number;
26
+ }
27
+ export type ToastLevel = 'success' | 'info' | 'warning' | 'error';
28
+ /**
29
+ * Maps a server alert's `type` onto a toast level. The schema names
30
+ * info|success|warning|danger; `error` and `warn` are accepted as the obvious
31
+ * aliases, and anything unknown falls back to info.
32
+ */
33
+ export declare function alertLevel(type: string | undefined): ToastLevel;
34
+ /**
35
+ * Shows a server response's `alerts` as toasts. An alert whose text repeats
36
+ * `skipMessage` — the response's `message`, already drawn inline by the page —
37
+ * is left out, so the same sentence never appears twice. Returns how many
38
+ * toasts were shown.
39
+ */
40
+ export declare function toastAlerts(alerts: unknown, skipMessage?: string | null): number;
17
41
  export {};
@@ -0,0 +1 @@
1
+ export {};
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .admin-field__control--quill .ql-container{min-height:200px;font-size:14px;font-family:inherit}.admin-field__control--quill .ql-toolbar.ql-snow,.admin-field__control--quill .ql-container.ql-snow{border-color:var(--uid-border-subtle)}.admin-field__control--quill .ql-toolbar.ql-snow{border-radius:var(--uid-radius-md) var(--uid-radius-md) 0 0;background:var(--uid-surface-base)}.admin-field__control--quill .ql-container.ql-snow{border-radius:0 0 var(--uid-radius-md) var(--uid-radius-md);background:var(--uid-surface-raised);color:var(--uid-text-primary)}:root[data-density=compact],:root:not([data-density]){--admin-row-h: 32px;--admin-row-fs: 13px;--admin-page-pad: 16px}:root[data-density=comfortable]{--admin-row-h: 40px;--admin-row-fs: 14px;--admin-page-pad: 24px}:root{--admin-foot-height: 32px}.admin-impersonation-banner{position:fixed;top:0;left:0;right:0;height:32px;z-index:var(--uid-z-sticky, 200);background:var(--uid-warning);color:var(--uid-color-amber-950, #4c2a02);display:flex;align-items:center;justify-content:center;font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);gap:var(--uid-space-md)}:root[data-theme=dark] .admin-impersonation-banner{color:var(--uid-color-amber-50);background:color-mix(in srgb,var(--uid-warning) 60%,var(--uid-surface-raised))}.admin-impersonation-banner__exit{appearance:none;background:#00000026;color:inherit;border:0;height:22px;padding:0 var(--uid-space-sm);border-radius:var(--uid-radius-sm);font:inherit;font-size:11px;font-weight:var(--uid-font-weight-semibold);cursor:pointer}.admin-poll-indicator{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:11px;color:var(--uid-text-tertiary)}.admin-poll-indicator__dot{width:6px;height:6px;border-radius:var(--uid-radius-full);background:var(--uid-success);position:relative}.admin-poll-indicator__dot:after{content:"";position:absolute;inset:-3px;border-radius:var(--uid-radius-full);background:var(--uid-success);opacity:.5;animation:admin-poll-pulse 1.6s ease-out infinite}@keyframes admin-poll-pulse{0%{transform:scale(.6);opacity:.6}to{transform:scale(2);opacity:0}}.admin-topbar{height:56px;padding:0 var(--uid-space-lg);display:flex;align-items:center;gap:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);position:sticky;top:0;z-index:var(--uid-z-sticky, 200);flex:none}.admin-topbar__spacer{flex:1}.admin-topbar__breadcrumbs{display:flex;align-items:center;gap:var(--uid-space-xs);font-size:13px;color:var(--uid-text-secondary)}.admin-topbar__breadcrumbs .sep{color:var(--uid-text-tertiary)}.admin-topbar__breadcrumbs .cur{color:var(--uid-text-primary);font-weight:500}.admin-topbar__search{display:flex;align-items:center;gap:var(--uid-space-sm);height:32px;padding:0 var(--uid-space-sm);min-width:220px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-tertiary);font-size:13px;cursor:pointer}.admin-topbar__search kbd{margin-left:auto;font-family:var(--uid-font-family-mono);font-size:10px;padding:1px 5px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);color:var(--uid-text-tertiary)}.admin-topbar__icon-btn{position:relative;appearance:none;border:0;background:transparent;width:32px;height:32px;border-radius:var(--uid-radius-md);display:grid;place-items:center;color:var(--uid-text-secondary);cursor:pointer}.admin-topbar__icon-btn:hover{background:var(--uid-surface-base);color:var(--uid-text-primary)}.admin-topbar__bell-badge{position:absolute;top:0;right:0;min-width:14px;height:14px;padding:0 2px;border-radius:var(--uid-radius-full);background:var(--uid-danger);color:var(--uid-color-white, #fff);font-size:9px;line-height:1;font-weight:var(--uid-font-weight-semibold);display:grid;place-items:center;border:1.5px solid var(--uid-surface-raised);font-variant-numeric:tabular-nums}.admin-auth-page{min-height:100vh;display:grid;place-items:center;padding:var(--uid-space-xl);background:var(--uid-surface-base);position:relative}@media(max-width:480px){.admin-auth-page{padding:var(--uid-space-md)}}.admin-auth-page__corner{position:absolute;top:var(--uid-space-md);right:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-auth-card{width:100%;max-width:400px}.admin-auth-card--wide{max-width:440px}.admin-auth-card__hd{padding:var(--uid-space-lg) var(--uid-space-lg) var(--uid-space-md);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--uid-space-sm)}.admin-auth-card__logo{width:40px;height:40px;border-radius:9px;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:var(--uid-font-size-lg)}.admin-auth-card__logo img{width:100%;height:100%;border-radius:inherit;display:block}.admin-auth-card__logo:has(img){background:none}.admin-auth-card__logo--accent{background:var(--uid-accent);color:var(--uid-text-on-accent)}.admin-auth-card__title{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary);font-family:var(--uid-font-family-display);letter-spacing:-.01em}.admin-auth-card__sub{font-size:13px;color:var(--uid-text-secondary)}.admin-auth-card__bd{padding:var(--uid-space-sm) var(--uid-space-lg) var(--uid-space-lg);display:flex;flex-direction:column;gap:14px}.admin-auth-card__row{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm)}.admin-auth-card__link{color:var(--uid-accent-text);font-size:var(--uid-font-size-xs);cursor:pointer;text-decoration:none}.admin-auth-card__link:hover{text-decoration:underline}.admin-auth-card__alert{margin-bottom:4px}.admin-code-input{display:flex;gap:var(--uid-space-sm);justify-content:center}.admin-code-input input{width:44px;height:52px;text-align:center;font-family:var(--uid-font-family-mono);font-size:22px;font-weight:var(--uid-font-weight-semibold);border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);outline:none;caret-color:var(--uid-accent)}.admin-code-input input:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);outline-offset:0}.admin-code-input input--error,.admin-code-input input.is-error{border-color:var(--uid-danger)}.admin-page{padding:var(--admin-page-pad, 24px)}.admin-page__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-page__title-wrap{display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-page__title{font-family:var(--uid-font-family-display);font-size:22px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.015em;line-height:1;margin:0;color:var(--uid-text-primary)}.admin-page__count{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-page__actions,.admin-page__title-row{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-page__live{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-medium);line-height:1}.admin-page__live-dot{width:8px;height:8px;border-radius:50%;background:var(--uid-color-success, #10b981);flex:none;animation:admin-page-pulse 2s ease-out infinite}@keyframes admin-page-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--uid-color-success, #10b981) 45%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in srgb,var(--uid-color-success, #10b981) 0%,transparent)}to{box-shadow:0 0 color-mix(in srgb,var(--uid-color-success, #10b981) 0%,transparent)}}@media(prefers-reduced-motion:reduce){.admin-page__live-dot{animation:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--uid-color-success, #10b981) 18%,transparent)}}.admin-page__scope{font-weight:var(--uid-font-weight-medium)}.admin-page__more{width:var(--uid-size-md);padding:0;justify-content:center}.admin-page__import-input{display:none}.admin-page__view-row{display:inline-flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);width:100%}.admin-page__view-name{display:inline-flex;align-items:center;gap:var(--uid-space-2xs)}.admin-page__view-badge{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:var(--uid-radius-sm);background:color-mix(in srgb,var(--uid-accent) 15%,transparent);color:var(--uid-accent)}.admin-page__view-delete{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-tertiary);cursor:pointer}.admin-page__view-delete:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 12%,transparent);color:var(--uid-color-danger, #dc2626)}@media(max-width:768px){.admin-topbar{padding:0 var(--uid-space-sm);gap:var(--uid-space-xs)}.admin-topbar__search,.admin-topbar__breadcrumbs{display:none}.admin-topbar__icon-btn{flex-shrink:0}.admin-page__hd,.admin-page__actions{flex-wrap:wrap}}.admin-topbar__status[data-v-dbf1c8df]{display:inline-flex;align-items:center;gap:var(--uid-space-1, 4px)}.admin-topbar__status-item[data-v-dbf1c8df]{display:inline-flex;align-items:center;color:inherit;text-decoration:none}.admin-topbar__status-inner[data-v-dbf1c8df]{display:inline-flex;align-items:center;gap:var(--uid-space-1, 4px);padding:2px 8px;border-radius:999px;font-size:12px;line-height:18px}.admin-topbar__status-item--warning .admin-topbar__status-inner[data-v-dbf1c8df]{color:var(--uid-color-warning-fg, #92400e);background:var(--uid-color-warning-bg, #fef3c7)}.admin-topbar__status-item--error .admin-topbar__status-inner[data-v-dbf1c8df]{color:var(--uid-color-danger-fg, #991b1b);background:var(--uid-color-danger-bg, #fee2e2)}.admin-topbar__status-item--unknown .admin-topbar__status-inner[data-v-dbf1c8df]{color:var(--uid-color-fg-muted, #6b7280);background:var(--uid-color-bg-subtle, #f3f4f6)}@media(max-width:720px){.admin-topbar__status-label[data-v-dbf1c8df]{display:none}}.admin-sidebar-node{--admin-sidebar-stripe-color: color-mix( in srgb, var(--uid-color-primary, #14b8a6) calc(var(--admin-sidebar-stripe-alpha, 0) * 100%), transparent )}.admin-sidebar-node>.admin-sidebar-node__group,.admin-sidebar-node>.admin-sidebar-node__leaf{padding-inline-start:calc(12px + var(--admin-sidebar-indent, 0px))}.admin-sidebar-node--stripe>.admin-sidebar-node__group,.admin-sidebar-node--stripe>.admin-sidebar-node__leaf{box-shadow:inset 2px 0 0 0 var(--admin-sidebar-stripe-color)}.admin-sidebar-node__group{width:calc(100% - var(--uid-space-sm) * 2);margin:1px var(--uid-space-sm);border:0;background:transparent;cursor:pointer;font:inherit;color:var(--uid-sidebar-item-color, var(--uid-color-text-secondary));text-align:left}.admin-sidebar-node__chev{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;margin-inline-start:auto;color:var(--uid-color-text-tertiary);transition:transform var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-sidebar-node__chev--open{transform:rotate(90deg)}.admin-sidebar-node--has-children.admin-sidebar-node--active>.admin-sidebar-node__group{color:var(--uid-color-text-primary)}.admin-sidebar-node__children{display:flex;flex-direction:column}.uid-pattern-sidebar--collapsed .admin-sidebar-node__children,.uid-pattern-sidebar--collapsed .admin-sidebar-node__chev{display:none}.ladmin-logo{display:inline-flex;align-items:center;justify-content:flex-start;font-family:ui-monospace,IBM Plex Mono,Fira Code,Menlo,monospace;font-weight:700;letter-spacing:-.02em;line-height:1;flex:none;box-shadow:inset 0 1px #ffffff0f}.ladmin-logo--animated .ladmin-logo__cursor{animation:ladmin-cursor 1.1s steps(1,end) infinite}@keyframes ladmin-cursor{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.ladmin-logo--animated .ladmin-logo__cursor{animation:none}}.admin-sidebar-boot{display:flex;flex-direction:column;gap:8px;padding:8px 12px}.uid-pattern-sidebar__header:has(.admin-sidebar-brand){padding:0}.admin-sidebar-brand{display:flex;align-items:center;gap:10px;height:56px;padding:0 16px;text-decoration:none;color:inherit;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-sidebar-brand:hover{background:var(--uid-color-surface-hover, rgba(0, 0, 0, .04))}.admin-sidebar-brand:focus-visible{outline:2px solid var(--uid-color-focus-ring, var(--uid-accent));outline-offset:-2px}.admin-sidebar-brand__logo{width:28px;height:28px;border-radius:7px;flex:none;display:block}.admin-sidebar-brand__mark{width:28px;height:28px;border-radius:7px;flex:none;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:14px;letter-spacing:-.02em}.admin-sidebar-brand__name{font-family:var(--uid-font-family-display);font-size:14px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;color:var(--uid-text-primary)}.admin-sidebar-tenant{margin:8px;display:flex;align-items:center;gap:8px;height:32px;padding:0 8px;border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);background:var(--uid-surface-base)}.admin-sidebar-tenant b{color:var(--uid-text-primary);font-weight:500}.admin-sidebar-foot{height:var(--admin-foot-height, 32px);padding:0 16px;border-top:1px solid var(--uid-border-subtle);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--uid-text-tertiary)}.admin-sidebar-foot__link{cursor:pointer}.admin-sidebar-foot__link:hover{color:var(--uid-text-primary)}.admin-sidebar__icon{width:16px;height:16px;display:inline-block;flex:none;color:currentColor}.admin-search__box{display:flex;align-items:center;gap:var(--uid-space-sm);padding:4px 4px 12px;border-bottom:1px solid var(--uid-border-subtle)}.admin-search__box-icon{color:var(--uid-text-tertiary);flex:none}.admin-search__input{flex:1;border:0;outline:none;background:transparent;font-size:16px;color:var(--uid-text-primary)}.admin-search__input::placeholder{color:var(--uid-text-tertiary)}.admin-search__results{margin-top:8px;max-height:52vh;overflow-y:auto;overscroll-behavior:contain}.admin-search__hint{padding:16px 8px;margin:0;color:var(--uid-text-tertiary);font-size:13px;text-align:center}.admin-search__group{margin-bottom:6px}.admin-search__group-hd{display:flex;align-items:center;gap:6px;padding:6px 10px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--uid-text-tertiary)}.admin-search__item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:0;border-radius:var(--uid-radius-md);background:transparent;text-align:left;cursor:pointer;color:var(--uid-text-primary)}.admin-search__item--active{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-search__item-title{font-size:14px}.admin-search__item-sub{font-size:12px;color:var(--uid-text-tertiary)}.admin-search__item-enter{margin-left:auto;color:var(--uid-text-tertiary);flex:none}.admin-shell-root[data-admin-impersonating=true]{padding-top:32px}:root[data-admin-impersonating=true]{scroll-padding-top:32px}.admin-shell.uid-layout-sidebar{height:100vh;min-height:0;max-height:100vh;overflow:hidden}.admin-shell .uid-layout-sidebar__sidebar{height:100vh}.admin-shell .uid-pattern-sidebar{height:100%;display:flex;flex-direction:column;border-top:none}.admin-shell .uid-pattern-sidebar__header{border-bottom:none}.admin-shell .uid-pattern-sidebar__nav{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior:contain}.admin-shell .uid-pattern-sidebar__footer{flex:none}.admin-shell .uid-layout-sidebar__main{height:100vh;display:flex;flex-direction:column;overflow:hidden;min-width:0}.admin-shell .uid-layout-sidebar__main-header{flex:none}.admin-shell .uid-layout-sidebar__main-content{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior:contain}.admin-shell-root[data-admin-impersonating=true] .admin-shell.uid-layout-sidebar,.admin-shell-root[data-admin-impersonating=true] .admin-shell .uid-layout-sidebar__sidebar,.admin-shell-root[data-admin-impersonating=true] .admin-shell .uid-layout-sidebar__main{height:calc(100vh - 32px);max-height:calc(100vh - 32px)}.admin-main-footer{height:var(--admin-foot-height, 32px);border-top:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);flex:none;display:flex;align-items:center;justify-content:flex-end;padding:0 var(--uid-space-md, 16px)}.admin-main-footer__copyright{font-size:12px;color:var(--uid-text-tertiary)}.admin-boot-skeleton{display:flex;flex-direction:column;gap:16px}.admin-boot-skeleton__hd{display:flex;align-items:center;justify-content:space-between;gap:16px}.admin-boot-skeleton__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:720px){.admin-boot-skeleton__row{grid-template-columns:1fr}}.admin-loading-bar{position:fixed;top:0;left:0;right:0;height:2px;z-index:var(--uid-z-toast, 9999);pointer-events:none;opacity:0;transition:opacity .12s ease-out;background:transparent}.admin-loading-bar--visible{opacity:1}.admin-loading-bar--visible:before{content:"";position:absolute;inset:0;background:var(--uid-accent, var(--uid-color-primary, #14b8a6));transform-origin:0 50%;animation:admin-loading-bar-slide 1.4s cubic-bezier(.4,0,.2,1) infinite}@keyframes admin-loading-bar-slide{0%{transform:translate(-100%) scaleX(.4)}50%{transform:translate(0) scaleX(.7)}to{transform:translate(100%) scaleX(.4)}}@media(prefers-reduced-motion:reduce){.admin-loading-bar--visible:before{animation:none;width:60%;transform:none}}.admin-notif-drawer{position:fixed;inset:0;z-index:var(--uid-z-drawer, 400);pointer-events:none}.admin-notif-drawer__backdrop{position:absolute;inset:0;background:#0006;pointer-events:auto}.admin-notif-drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(480px,100%);display:flex;flex-direction:column;background:var(--uid-surface-raised);border-left:1px solid var(--uid-border-subtle);box-shadow:var(--uid-shadow-lg);pointer-events:auto}.admin-notif-drawer__hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);padding:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle)}.admin-notif-drawer__title{display:inline-flex;align-items:center;gap:var(--uid-space-xs);margin:0;font-family:var(--uid-font-family-display);font-size:16px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-notif-drawer__unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;padding:2px 6px;border-radius:10px;background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626);font-size:11px;font-weight:var(--uid-font-weight-semibold);line-height:1}.admin-notif-drawer__hd-actions{display:inline-flex;align-items:center;gap:var(--uid-space-xs)}.admin-notif-drawer__mark-all{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:6px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);font-size:13px;cursor:pointer}.admin-notif-drawer__mark-all:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-notif-drawer__close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);cursor:pointer}.admin-notif-drawer__close:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-notif-drawer__tabs{display:flex;align-items:center;gap:var(--uid-space-md);padding:0 var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle)}.admin-notif-drawer__tab{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:12px 0;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--uid-text-secondary);font-size:13px;font-weight:var(--uid-font-weight-medium);cursor:pointer}.admin-notif-drawer__tab:hover{color:var(--uid-text-primary)}.admin-notif-drawer__tab--active{color:var(--uid-text-primary);border-bottom-color:var(--uid-accent)}.admin-notif-drawer__tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;padding:1px 6px;border-radius:9px;background:var(--uid-border-subtle);color:var(--uid-text-tertiary);font-size:11px;font-weight:var(--uid-font-weight-semibold)}.admin-notif-drawer__tab--active .admin-notif-drawer__tab-count{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer__body{flex:1;min-height:0;overflow-y:auto}.admin-notif-drawer__empty{padding:var(--uid-space-xl);text-align:center;color:var(--uid-text-tertiary);font-size:13px}.admin-notif-drawer__list{list-style:none;margin:0;padding:0}.admin-notif-drawer__item{position:relative;display:flex;align-items:flex-start;gap:var(--uid-space-sm);padding:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle);cursor:pointer;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-notif-drawer__item:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-notif-drawer__item--unread{background:color-mix(in srgb,var(--uid-accent) 5%,transparent)}.admin-notif-drawer__icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;border-radius:50%}.admin-notif-drawer__icon[data-variant=success]{background:color-mix(in srgb,var(--uid-color-success, #10b981) 14%,transparent);color:var(--uid-color-success, #10b981)}.admin-notif-drawer__icon[data-variant=warning]{background:color-mix(in srgb,var(--uid-color-warning, #f59e0b) 14%,transparent);color:var(--uid-color-warning, #f59e0b)}.admin-notif-drawer__icon[data-variant=danger]{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer__icon[data-variant=info]{background:color-mix(in srgb,var(--uid-accent) 14%,transparent);color:var(--uid-accent)}.admin-notif-drawer__icon[data-variant=neutral]{background:var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-notif-drawer__content{flex:1;min-width:0}.admin-notif-drawer__row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--uid-space-sm)}.admin-notif-drawer__item-title{font-size:13px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-notif-drawer__item-time{font-size:11px;color:var(--uid-text-tertiary);flex:none}.admin-notif-drawer__item-description{margin-top:2px;font-size:13px;color:var(--uid-text-secondary);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.admin-notif-drawer__unread-dot{position:absolute;top:16px;right:36px;width:8px;height:8px;border-radius:50%;background:var(--uid-color-success, #10b981)}.admin-notif-drawer__item-delete{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;background:transparent;border-radius:50%;color:var(--uid-text-tertiary);cursor:pointer;opacity:0;flex:none;align-self:flex-start;margin-top:-2px}.admin-notif-drawer__item:hover .admin-notif-drawer__item-delete{opacity:1}.admin-notif-drawer__item-delete:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer-enter-active,.admin-notif-drawer-leave-active{transition:opacity .2s ease-out}.admin-notif-drawer-enter-active .admin-notif-drawer__panel,.admin-notif-drawer-leave-active .admin-notif-drawer__panel{transition:transform .24s cubic-bezier(.2,.8,.2,1)}.admin-notif-drawer-enter-from,.admin-notif-drawer-leave-to{opacity:0}.admin-notif-drawer-enter-from .admin-notif-drawer__panel,.admin-notif-drawer-leave-to .admin-notif-drawer__panel{transform:translate(100%)}.admin-notif-drawer__ft{padding:10px 16px;border-top:1px solid var(--uid-color-border, #e5e7eb);font-size:13px}.admin-page-host{position:relative;min-height:200px;overflow:hidden}.admin-page-host__suspended{min-height:320px}.admin-boot-enter-active{transition:opacity .2s ease-out}.admin-boot-enter-from{opacity:0}.admin-boot-leave-active{position:absolute;inset:0;width:100%;transition:opacity .14s ease-out}.admin-boot-leave-to{opacity:0}.admin-page-leave-active{position:absolute;inset:0;width:100%;transition:opacity .14s ease-out}.admin-page-leave-to{opacity:0}.admin-page-enter-active{transition:opacity .32s cubic-bezier(.2,.8,.2,1) 60ms,transform .32s cubic-bezier(.2,.8,.2,1) 60ms}.admin-page-enter-from{opacity:0;transform:translate(28px)}.admin-page-enter-to{opacity:1;transform:translate(0)}@media(prefers-reduced-motion:reduce){.admin-boot-enter-active,.admin-boot-leave-active,.admin-page-enter-active,.admin-page-leave-active{transition:opacity 80ms ease-out}.admin-page-enter-from{transform:none}}.admin-widget-actions{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:2px;padding:2px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-sm);z-index:5}.admin-widget-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);cursor:pointer}.admin-widget-actions__btn:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-widget-actions__btn--danger:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-widget-actions__drag{cursor:grab}.admin-widget-actions__drag:active{cursor:grabbing}.admin-dialog__restore-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.admin-dialog__empty{margin:0;padding:16px 12px;border:1px dashed var(--uid-border-subtle);border-radius:var(--uid-radius-md);color:var(--uid-text-tertiary);font-size:13px;text-align:center}.admin-dialog__readonly{padding:8px 10px;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:13px;color:var(--uid-text-secondary)}.admin-dialog__required{color:var(--uid-color-danger, #dc2626);font-weight:var(--uid-font-weight-semibold);margin-inline-start:2px}.admin-dialog__hint{flex:1;font-size:var(--uid-font-size-xs, 11px);color:var(--uid-text-tertiary, #9ca3af)}.admin-dashboard__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:140px;gap:var(--uid-space-md)}@media(max-width:768px){.admin-dashboard__grid{grid-template-columns:1fr;grid-auto-rows:minmax(140px,auto)}.admin-dashboard__cell{grid-column:1 / -1!important}}.admin-dashboard__grid--editing .admin-dashboard__cell{outline:1px dashed transparent;transition:outline-color .12s ease,opacity .12s ease}.admin-dashboard__grid--editing .admin-dashboard__cell:hover{outline-color:var(--uid-accent)}.admin-dashboard__cell--dragging{opacity:.45}.admin-dashboard__cell--drop-target{outline:2px solid var(--uid-color-primary, var(--uid-accent, #14b8a6))!important;outline-offset:-2px;background:color-mix(in srgb,var(--uid-color-primary, #14b8a6) 6%,transparent)}.admin-dashboard__cell{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column}.admin-dashboard__cell>*{flex:1 1 auto;min-height:0}.admin-dashboard__cell .admin-widget,.admin-dashboard__cell>.uid-card,.admin-dashboard__cell>.uid-stat,.admin-dashboard__cell .admin-widget>.uid-card{height:100%;display:flex;flex-direction:column}.admin-dashboard__cell .uid-card__body,.admin-dashboard__cell .admin-widget__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.admin-dashboard__resize{position:absolute;bottom:4px;right:4px;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0 50%,var(--uid-text-tertiary) 50% 60%,transparent 60% 70%,var(--uid-text-tertiary) 70% 80%,transparent 80%);z-index:4;border-radius:2px}.admin-dashboard__resize:hover{background:linear-gradient(135deg,transparent 0 45%,var(--uid-color-primary, var(--uid-text-primary)) 45% 60%,transparent 60% 70%,var(--uid-color-primary, var(--uid-text-primary)) 70% 85%,transparent 85%)}.admin-home{display:flex;flex-direction:column;gap:var(--uid-space-lg);padding:var(--uid-space-md)}.admin-home__title{font-size:var(--uid-font-size-2xl);font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm)}.admin-home__lead{color:var(--uid-text-secondary);margin:0}.admin-home__heading{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-home__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--uid-space-sm);list-style:none;padding:0;margin:0}.admin-home__card{display:flex;flex-direction:column;gap:var(--uid-space-2xs);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);text-align:left;cursor:pointer;transition:border-color .15s ease,transform .15s ease}.admin-home__card:hover{border-color:var(--uid-accent);transform:translateY(-1px)}.admin-home__card-label{font-weight:var(--uid-font-weight-medium)}.admin-home__card-slug{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-status-page{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:var(--uid-space-lg)}.admin-status-page__card{text-align:center;max-width:480px}.admin-status-page__code{font-size:64px;font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm);color:var(--uid-text-secondary)}.admin-status-page__message{margin:0 0 var(--uid-space-md);color:var(--uid-text-secondary)}.admin-settings-page{padding:var(--uid-space-md)}.admin-settings-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-settings-page__debug{background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);padding:var(--uid-space-sm);border-radius:var(--uid-radius-sm);font-family:var(--uid-font-mono);font-size:var(--uid-font-size-xs);overflow:auto;max-height:60vh}.admin-settings-page__hint{color:var(--uid-text-secondary)}.admin-screen-page__description{margin:4px 0 0;font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary)}.admin-screen-page__alert-link{margin-left:6px;font-weight:600;text-decoration:underline;color:inherit}.admin-screen-page__alert{margin-bottom:var(--uid-space-md)}.admin-screen-page__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-screen-page__body{margin-bottom:var(--uid-space-2xl)}.admin-auth-card__submit,.admin-auth-card__back{width:100%;margin-top:var(--uid-space-sm)}.admin-auth-card__error{color:var(--uid-color-danger, #dc2626);font-size:13px;margin:var(--uid-space-xs) 0 0}.admin-toolbar{display:flex;flex-direction:column;gap:var(--uid-space-xs);padding:var(--uid-space-sm) var(--uid-space-md);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-bottom:0;margin-top:var(--uid-space-md)}.admin-toolbar__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-xs)}.admin-toolbar__divider{width:1px;height:22px;background:var(--uid-border-subtle);flex:none;margin:0 var(--uid-space-2xs)}.admin-toolbar__spacer{flex:1}.admin-toolbar__search{position:relative;display:inline-flex;align-items:center;flex:1 1 200px;max-width:360px;height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);gap:var(--uid-space-2xs)}.admin-toolbar__search:focus-within{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-toolbar__search-icon{color:var(--uid-text-tertiary);flex:none}.admin-toolbar__search-input{flex:1;height:100%;border:0;outline:none;background:transparent;font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-toolbar__search-input::placeholder{color:var(--uid-text-tertiary)}.admin-toolbar__chip{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease),border-color var(--uid-duration-fast, .12s) var(--uid-ease-out, ease),color var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-toolbar__chip:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-toolbar__chip--active{background:color-mix(in srgb,var(--uid-accent) 12%,transparent);border-color:color-mix(in srgb,var(--uid-accent) 35%,transparent);color:var(--uid-accent)}.admin-toolbar__chip--active:hover{background:color-mix(in srgb,var(--uid-accent) 18%,transparent);color:var(--uid-accent)}.admin-toolbar__chip-text{white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}.admin-toolbar__chip-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;cursor:pointer;margin-left:var(--uid-space-2xs)}.admin-toolbar__chip-x:hover{background:color-mix(in srgb,var(--uid-accent) 25%,transparent)}.admin-toolbar__popover{display:flex;flex-direction:column;gap:var(--uid-space-sm);padding:var(--uid-space-sm);min-width:220px;max-width:320px}.admin-toolbar__popover--list{padding:var(--uid-space-2xs);gap:0}.admin-toolbar__popover-actions{display:flex;justify-content:flex-end;gap:var(--uid-space-2xs);border-top:1px solid var(--uid-border-subtle);padding-top:var(--uid-space-sm)}.admin-toolbar__list-item{display:flex;align-items:center;gap:var(--uid-space-2xs);padding:var(--uid-space-2xs) var(--uid-space-sm);border-radius:var(--uid-radius-sm);cursor:pointer;background:transparent;border:0;font-size:13px;text-align:left;color:var(--uid-text-primary)}.admin-toolbar__list-item:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-toolbar__list-item--checkbox{cursor:pointer}.admin-toolbar__editor{display:flex;flex-direction:column;gap:var(--uid-space-2xs)}.admin-toolbar__editor--dates{gap:var(--uid-space-xs)}.admin-toolbar__input{height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font-size:13px;outline:none}.admin-toolbar__input:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-inline-edit{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.admin-inline-edit--editable{cursor:text;border-radius:3px;transition:background .12s ease}.admin-inline-edit--editable:hover{background:color-mix(in srgb,var(--uid-accent) 8%,transparent)}.admin-inline-edit__input{width:100%;height:26px;padding:0 6px;border:1px solid var(--uid-accent);background:var(--uid-surface-base);border-radius:var(--uid-radius-sm);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-inline-edit__input--textarea{height:auto;min-height:64px;padding:6px;resize:vertical;font-family:inherit}.admin-resource-tree-page[data-v-b425200a]{display:flex;flex-direction:column;gap:var(--uid-spacing-md, 16px);padding:var(--uid-spacing-lg, 24px)}.admin-resource-tree-page__header[data-v-b425200a]{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-spacing-md, 16px)}.admin-resource-tree-page__title[data-v-b425200a]{display:flex;align-items:center;gap:var(--uid-spacing-sm, 8px);font-size:var(--uid-font-size-xl, 20px);font-weight:600;margin:0}.admin-resource-tree-page__count[data-v-b425200a]{background:var(--uid-color-surface-2, #eef0f3);color:var(--uid-color-text-secondary, #62686f);border-radius:999px;padding:2px 10px;font-size:var(--uid-font-size-sm, 12px)}.admin-resource-tree-page__subtitle[data-v-b425200a]{margin:4px 0 0;color:var(--uid-color-text-secondary, #62686f)}.admin-resource-tree-page__toolbar[data-v-b425200a]{display:flex;align-items:center;gap:var(--uid-spacing-sm, 8px);flex-wrap:wrap}.admin-resource-tree-page__search[data-v-b425200a]{max-width:320px;flex:1}.admin-resource-tree-page__selection-divider[data-v-b425200a]{color:var(--uid-border-subtle, #e5e7eb);padding:0 2px}.admin-resource-tree-page__selection-label[data-v-b425200a]{color:var(--uid-color-text-secondary, #62686f);font-weight:500}.admin-resource-tree-page__body[data-v-b425200a]{background:var(--uid-color-surface-1, #fff);border:1px solid var(--uid-color-border, #e5e7eb);border-radius:var(--uid-radius-md, 8px);padding:var(--uid-spacing-md, 16px);min-height:240px}.admin-resource-tree-page[data-v-b425200a] .uid-tree-item__row{border-radius:6px}.admin-resource-tree-page[data-v-b425200a] .uid-tree-item__row:focus-visible{outline:none;background:var(--uid-color-bg-subtle, rgba(0, 0, 0, .03))}.admin-resource-tree-page[data-v-b425200a] .uid-tree-item__row:hover{background:var(--uid-color-bg-subtle, rgba(0, 0, 0, .03))}.admin-resource-tree-page[data-v-b425200a] .uid-tree-item--selected>.uid-tree-item__row{background:color-mix(in srgb,var(--uid-accent, #14b8a6) 10%,transparent);color:var(--uid-accent, #14b8a6);font-weight:500;outline:none}.admin-resource-tree-page[data-v-b425200a] .uid-tree-item--selected>.uid-tree-item__row .uid-tree-item__icon,.admin-resource-tree-page[data-v-b425200a] .uid-tree-item--selected>.uid-tree-item__row .uid-tree-item__chevron{color:var(--uid-accent, #14b8a6)}.admin-resource-index__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm);margin-top:var(--uid-space-md);min-height:320px}.admin-resource-index__row-drag{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;cursor:grab;color:var(--uid-text-tertiary);border-radius:var(--uid-radius-sm)}.admin-resource-index__row-drag:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-resource-index__row-drag:active{cursor:grabbing}.admin-resource-index__row-drag--ghost{opacity:.4}.admin-resource-index__row-drag--drop-before:before,.admin-resource-index__row-drag--drop-after:before{content:"";position:absolute;left:0;right:-9999px;height:2px;background:var(--uid-accent);pointer-events:none;z-index:5}.admin-resource-index__row-drag--drop-before:before{top:-1px}.admin-resource-index__row-drag--drop-after:before{bottom:-1px}.admin-resource-index__row-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--uid-space-2xs)}.admin-resource-index__row-action{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--uid-radius-sm);background:transparent;color:var(--uid-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out),color var(--uid-duration-fast) var(--uid-ease-out),border-color var(--uid-duration-fast) var(--uid-ease-out)}.admin-resource-index__row-action:hover{background:var(--uid-color-surface-hover);color:var(--uid-text-primary);border-color:var(--uid-border-subtle)}.admin-resource-index__row-action--danger:hover{color:var(--uid-color-danger, #dc2626)}.admin-resource-index__state{margin-top:var(--uid-space-xl)}.admin-resource-index__table{margin-top:0}.admin-resource-index__table .uid-table-wrap{border:1px solid var(--uid-border-subtle);border-top:0;border-radius:0 0 var(--uid-radius-lg) var(--uid-radius-lg)}.admin-resource-index__table .uid-table__td,.admin-resource-index__table .uid-table__th{padding:6px var(--uid-space-md);font-size:var(--admin-row-fs, 13px);height:var(--admin-row-h, 32px);line-height:1.3}.admin-cell-truncate{display:inline-block;max-width:var(--admin-cell-max-width, 320px);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-cell-link{color:var(--uid-accent, #2563eb);text-decoration:none;cursor:pointer}.admin-cell-link:hover{text-decoration:underline}.admin-cell-truncate--multi{display:-webkit-box;white-space:normal;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}.admin-resource-index__footer{display:flex;justify-content:flex-end;padding:var(--uid-space-md) 0}.admin-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-bottom:0;margin-top:var(--uid-space-md)}.admin-filter-bar__search{flex:1;min-width:200px;max-width:320px;height:28px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font-size:13px;outline:none}.admin-filter-bar__search:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-filter-bar__spacer{flex:1}.admin-bulk-toolbar{display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-color-zinc-900, #18181b);color:var(--uid-color-zinc-100, #f4f4f5);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border:1px solid var(--uid-color-zinc-900, #18181b);border-bottom:0;margin-top:var(--uid-space-md)}.admin-bulk-toolbar__count{font-size:13px}.admin-bulk-toolbar__count b{font-weight:var(--uid-font-weight-semibold)}.admin-bulk-toolbar__divider{width:1px;height:20px;background:#ffffff26}.admin-bulk-toolbar__spacer{flex:1}.admin-bulk-toolbar .uid-button{background:transparent;border-color:#ffffff26;color:var(--uid-color-zinc-100, #f4f4f5)}.admin-bulk-toolbar .uid-button:hover:not([disabled]){background:#ffffff14}.admin-bulk-toolbar .uid-button--danger{color:var(--uid-color-rose-400, #fb7185)}.admin-resource-index__row--selected{background:color-mix(in srgb,var(--uid-accent) 8%,transparent)}.admin-resource-form__back{font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);cursor:pointer;text-decoration:none;display:inline-block;margin-bottom:4px}.admin-resource-form__back:hover{color:var(--uid-text-primary)}.admin-resource-form__alert{margin-bottom:var(--uid-space-md)}.admin-resource-form__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-resource-form__body{margin-bottom:var(--uid-space-2xl)}.admin-resource-form__notfound{text-align:center;display:flex;flex-direction:column;gap:var(--uid-space-sm, 8px);align-items:center}.admin-resource-form__notfound-title{font-size:18px;font-weight:600;margin:0}.admin-resource-form__notfound-hint{color:var(--uid-text-secondary, #6b7280);margin:0 0 var(--uid-space-sm, 8px)}.admin-resource-form__savebar{position:sticky;bottom:0;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-surface-raised);border-top:1px solid var(--uid-border-default);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);margin-top:var(--uid-space-md)}.admin-resource-form__savebar-hint{flex:1;font-size:13px;color:var(--uid-warning)}.admin-infolist-entry{display:flex;flex-direction:column;align-items:flex-start;gap:var(--uid-space-2xs);padding:var(--uid-space-sm) 0}.admin-infolist-entry+.admin-infolist-entry{border-top:1px solid var(--uid-border-subtle)}.admin-infolist-entry__label{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);text-transform:uppercase;letter-spacing:.04em;font-weight:var(--uid-font-weight-medium)}.admin-infolist-rows{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--uid-space-md)}.admin-infolist-section{margin-bottom:var(--uid-space-md);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-lg);background:var(--uid-surface-raised)}.admin-infolist-section__hd{margin-bottom:var(--uid-space-sm)}.admin-infolist-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-infolist-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-infolist-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-tabs__list{list-style:none;margin:0 0 var(--uid-space-sm);padding:0;display:flex;gap:var(--uid-space-xs);border-bottom:1px solid var(--uid-border-subtle)}.admin-infolist-tabs__tab{padding:var(--uid-space-sm) var(--uid-space-sm);font-size:13px;color:var(--uid-text-secondary);border-bottom:2px solid transparent}.admin-infolist-tabs__tab--active{color:var(--uid-text-primary);border-bottom-color:var(--uid-accent);font-weight:var(--uid-font-weight-medium)}.admin-audit-timeline{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-audit-timeline__title{margin:0;font-family:var(--uid-font-family-display);font-size:var(--uid-font-size-lg, 16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-audit-timeline__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-audit-timeline__item{position:relative;display:flex;gap:var(--uid-space-sm)}.admin-audit-timeline__item:not(:last-child):after{content:"";position:absolute;left:11px;top:24px;bottom:calc(-1 * var(--uid-space-md));width:2px;background:var(--uid-border-subtle)}.admin-audit-timeline__icon{position:relative;z-index:1;flex:none;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-audit-timeline__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;padding-top:0}.admin-audit-timeline__row{display:flex;align-items:center;gap:var(--uid-space-2xs);flex-wrap:wrap}.admin-audit-timeline__row:first-child{min-height:24px}.admin-audit-timeline__actor{font-size:13px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-audit-timeline__verb{font-size:13px;color:var(--uid-text-secondary)}.admin-audit-timeline__when{margin-left:auto;font-size:12px;color:var(--uid-text-tertiary)}.admin-audit-timeline__detail{font-size:12px;color:var(--uid-text-tertiary)}.admin-audit-timeline__diff{list-style:none;margin:var(--uid-space-2xs) 0 0;padding:0;display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:var(--uid-space-md);row-gap:2px}.admin-audit-timeline__diff-row{display:contents;font-size:12px}.admin-audit-timeline__diff-field{font-weight:var(--uid-font-weight-medium);color:var(--uid-text-secondary);align-self:baseline}.admin-audit-timeline__diff-values{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:var(--uid-space-xs);min-width:0;align-self:baseline}.admin-audit-timeline__diff-before{color:var(--uid-text-tertiary);text-decoration:line-through;word-break:break-word}.admin-audit-timeline__diff-arrow{color:var(--uid-text-tertiary)}.admin-audit-timeline__diff-after{color:var(--uid-text-primary);word-break:break-word}.admin-audit-timeline__empty,.admin-audit-timeline__error{font-size:13px;color:var(--uid-text-tertiary)}.admin-audit-timeline__error{color:var(--uid-color-danger, #dc2626)}.admin-audit-timeline__loading{display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-resource-view__alert{margin-bottom:var(--uid-space-md)}.admin-resource-view__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-resource-view__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-resource-view__hd-left{display:flex;flex-direction:column;gap:var(--uid-space-2xs);min-width:0}.admin-resource-view__hd-right{display:flex;align-items:center;gap:var(--uid-space-sm);flex:none}.admin-resource-view__back{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:0;margin:0;font-size:13px;color:var(--uid-text-tertiary);background:transparent;border:0;cursor:pointer;align-self:flex-start}.admin-resource-view__back:hover{color:var(--uid-text-primary)}.admin-resource-view__meta{display:flex;align-items:center;gap:var(--uid-space-sm);margin-top:var(--uid-space-2xs)}.admin-resource-view__uid{font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:12px;color:var(--uid-text-tertiary);letter-spacing:.02em}.admin-status-badge{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:2px 8px 2px 6px;border-radius:var(--uid-radius-sm);font-size:12px;font-weight:var(--uid-font-weight-medium);text-transform:capitalize}.admin-status-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.admin-status-badge[data-variant=success]{background:color-mix(in srgb,var(--uid-color-success, #10b981) 15%,transparent);color:var(--uid-color-success, #10b981)}.admin-status-badge[data-variant=warning]{background:color-mix(in srgb,var(--uid-color-warning, #f59e0b) 15%,transparent);color:var(--uid-color-warning, #f59e0b)}.admin-status-badge[data-variant=danger]{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 15%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-status-badge[data-variant=neutral],.admin-status-badge[data-variant=muted]{background:var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-resource-view__grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--uid-space-md);align-items:start}@media(max-width:1024px){.admin-resource-view__grid{grid-template-columns:1fr}}.admin-resource-view__main{display:flex;flex-direction:column;gap:var(--uid-space-md);min-width:0}.admin-resource-view__aside,.admin-resource-view__card{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-resource-view__card-title{margin:0;font-family:var(--uid-font-family-display);font-size:var(--uid-font-size-lg, 16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-resource-view__metrics{display:flex;flex-direction:column;gap:var(--uid-space-md);margin:0;padding:0}.admin-resource-view__metric-label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:var(--uid-font-weight-medium);color:var(--uid-text-tertiary);margin:0}.admin-resource-view__metric-value{font-size:14px;color:var(--uid-text-primary);margin:4px 0 0;font-variant-numeric:tabular-nums}.admin-2fa{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-2fa__panel{display:flex;flex-direction:column;gap:var(--uid-space-sm);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);background:var(--uid-surface-base)}.admin-2fa__panel--success{border-color:color-mix(in srgb,var(--uid-color-success, #10b981) 35%,transparent);background:color-mix(in srgb,var(--uid-color-success, #10b981) 5%,transparent)}.admin-2fa__lead{margin:0;color:var(--uid-text-secondary);font-size:14px}.admin-2fa__steps{padding-left:20px;display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-2fa__steps li{font-size:14px;color:var(--uid-text-primary)}.admin-2fa__secret{display:inline-flex;align-items:center;gap:var(--uid-space-sm);margin-top:6px;padding:6px 10px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:13px}.admin-2fa__copy{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:0;background:transparent;border-radius:var(--uid-radius-sm);cursor:pointer;font-size:11px;color:var(--uid-text-secondary)}.admin-2fa__copy:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-2fa__uri{display:block;margin-top:6px;padding:6px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-sm);font-size:11px;word-break:break-all}.admin-2fa__hint{margin:6px 0 0;font-size:12px;color:var(--uid-text-tertiary)}.admin-2fa__qr{display:inline-block;margin-top:8px;padding:12px;background:#fff;border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md)}.admin-2fa__qr svg{display:block;width:200px;height:200px}.admin-2fa__code-row{display:inline-flex;align-items:center;gap:var(--uid-space-sm);margin-top:6px}.admin-2fa__code-input{width:140px}.admin-2fa__error{margin:0;color:var(--uid-color-danger, #dc2626);font-size:13px}.admin-2fa__codes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}.admin-2fa__codes-item{padding:6px 8px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-sm);font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:12px;text-align:center}.admin-2fa__manage{display:flex;flex-wrap:wrap;gap:var(--uid-space-sm);align-items:center}.admin-profile__layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:var(--uid-space-lg);align-items:start}.admin-profile__nav{display:flex;flex-direction:column;gap:2px}.admin-profile__nav-item{appearance:none;border:0;background:transparent;text-align:left;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-sm);border-radius:var(--uid-radius-md);font-size:13px;color:var(--uid-text-secondary);cursor:pointer}.admin-profile__nav-item:hover{background:var(--uid-surface-hover);color:var(--uid-text-primary)}.admin-profile__nav-item--active{background:var(--uid-surface-base);color:var(--uid-text-primary);font-weight:var(--uid-font-weight-medium)}.admin-profile__nav-icon{width:14px;height:14px;flex:none}.admin-profile__content{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-profile__card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--uid-space-md)}.admin-profile__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-profile__card-ft{margin-top:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-profile__hint{margin:0;font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary)}.admin-profile__hero{display:flex;align-items:center;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-profile__hero-text{display:flex;flex-direction:column;gap:4px}.admin-profile__hero-name{font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-profile__hero-meta{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-profile__form{display:grid;grid-template-columns:1fr 1fr;gap:var(--uid-space-md)}@media(max-width:720px){.admin-profile__form{grid-template-columns:1fr}.admin-profile__layout{grid-template-columns:minmax(0,1fr)}.admin-profile__nav{flex-direction:row;overflow-x:auto;gap:var(--uid-space-xs);padding-bottom:var(--uid-space-xs);scrollbar-width:thin}.admin-profile__nav-item{flex:none;white-space:nowrap}}.admin-notifs-page[data-v-4ef227b5]{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-notifs-page__head[data-v-4ef227b5]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);flex-wrap:wrap}.admin-notifs-page__sub[data-v-4ef227b5]{margin:4px 0 0;font-size:13px;color:var(--uid-color-text-secondary, #62686f)}.admin-notifs-page__tabs[data-v-4ef227b5]{display:flex;gap:4px}.admin-notifs-page__tab[data-v-4ef227b5]{padding:6px 12px;border:0;border-radius:6px;background:transparent;color:var(--uid-color-text-secondary, #62686f);font:inherit;font-size:13px;cursor:pointer}.admin-notifs-page__tab--active[data-v-4ef227b5]{background:var(--uid-color-surface-2, #f3f4f6);color:var(--uid-color-text, #1f2937);font-weight:500}.admin-notifs-page__item--unread[data-v-4ef227b5]{border-left:3px solid var(--uid-color-primary, #2dd4bf)}.admin-notifs-page__row[data-v-4ef227b5]{display:flex;align-items:flex-start;gap:10px}.admin-notifs-page__dot[data-v-4ef227b5]{width:8px;height:8px;margin-top:6px;border-radius:50%;flex:none;background:var(--uid-color-text-secondary, #9ca3af)}.admin-notifs-page__dot[data-kind=success][data-v-4ef227b5]{background:var(--uid-success, #10b981)}.admin-notifs-page__dot[data-kind=warning][data-v-4ef227b5]{background:var(--uid-warning, #f59e0b)}.admin-notifs-page__dot[data-kind=danger][data-v-4ef227b5]{background:var(--uid-danger, #ef4444)}.admin-notifs-page__body[data-v-4ef227b5]{flex:1;min-width:0}.admin-notifs-page__item-title[data-v-4ef227b5]{font-weight:500;color:var(--uid-color-text, #1f2937);text-decoration:none}a.admin-notifs-page__item-title[data-v-4ef227b5]:hover{text-decoration:underline}.admin-notifs-page__item-body[data-v-4ef227b5]{margin:2px 0 0;font-size:13px;color:var(--uid-color-text-secondary, #62686f)}.admin-notifs-page__time[data-v-4ef227b5]{display:block;margin-top:4px;font-size:12px;color:var(--uid-color-text-secondary, #9ca3af)}.admin-notifs-page__actions[data-v-4ef227b5]{display:flex;gap:4px;flex:none}.admin-notifs-page__empty[data-v-4ef227b5]{color:var(--uid-color-text-secondary, #62686f)}.admin-notifs-page__pager[data-v-4ef227b5]{display:flex;align-items:center;gap:var(--uid-space-md)}.admin-notifs-page__pager-info[data-v-4ef227b5]{font-size:13px;color:var(--uid-color-text-secondary, #62686f)}@media(max-width:640px){.admin-notifs-page__row[data-v-4ef227b5]{flex-wrap:wrap}.admin-notifs-page__actions[data-v-4ef227b5]{width:100%;justify-content:flex-end}}.admin-widget__hd{margin-bottom:var(--uid-space-sm)}.admin-widget__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-widget__desc{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-widget-bar-chart{display:block;width:100%;flex:1 1 auto;min-height:0;height:auto!important}.admin-donut-widget__row{display:flex;align-items:center;gap:var(--uid-space-md);flex:1 1 auto;min-height:0}.admin-widget__empty{flex:1 1 auto;display:flex;align-items:center;justify-content:center;color:var(--uid-text-tertiary, #9ca3af);font-size:var(--uid-font-size-sm)}.admin-donut-widget__svg{width:120px;height:120px;flex:none}.admin-donut-widget__legend{list-style:none;margin:0;padding:0;flex:1;display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-donut-widget__legend li{display:flex;align-items:center;gap:var(--uid-space-sm);font-size:var(--uid-font-size-xs)}.admin-donut-widget__dot{width:10px;height:10px;border-radius:var(--uid-radius-full);flex:none}.admin-donut-widget__label{flex:1;color:var(--uid-text-primary)}.admin-donut-widget__value{color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-widget__table--clickable[data-v-c9bc6a1d] tbody tr{cursor:pointer}.admin-heatmap{display:flex;flex-direction:column;gap:2px;font-size:var(--uid-font-size-xs, 11px)}.admin-heatmap__cols-axis{display:grid;grid-template-columns:32px repeat(var(--admin-heatmap-cols),1fr);gap:2px;color:var(--uid-text-tertiary, #9ca3af);margin-bottom:4px}.admin-heatmap__cols-axis:before{content:""}.admin-heatmap__col-label{font-size:10px;text-align:center;white-space:nowrap}.admin-heatmap__row{display:grid;grid-template-columns:32px 1fr;gap:6px;align-items:center}.admin-heatmap__row-label{color:var(--uid-text-secondary, #6b7280);font-size:11px;text-align:right}.admin-heatmap__cells{display:grid;grid-template-columns:repeat(var(--admin-heatmap-cols),1fr);gap:2px}.admin-heatmap__cell{display:block;width:100%;height:14px;border-radius:2px;background:var(--uid-color-primary, #14b8a6);opacity:0;transition:transform 80ms ease}.admin-heatmap__cell:hover{transform:scale(1.4);z-index:1}.admin-heatmap__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-gauge-widget__body{flex:1 1 auto;display:flex;align-items:center;justify-content:center;min-height:0}.admin-markdown-widget{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);white-space:pre-wrap;line-height:var(--uid-line-height-normal)}.admin-widget__iframe[data-v-0dbdfc76]{width:100%;border:0;border-radius:var(--uid-radius-md, 8px);background:var(--uid-color-bg-subtle, transparent)}.admin-tags{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:36px;padding:4px 8px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);cursor:text}.admin-tags--focused{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-tags--disabled{opacity:.6;cursor:not-allowed}.admin-tags__chip{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 8px;background:color-mix(in srgb,var(--uid-accent) 14%,transparent);color:var(--uid-accent);border-radius:var(--uid-radius-sm);font-size:12px;font-weight:500;font-family:var(--uid-font-family-mono, ui-monospace, monospace)}.admin-tags__chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;background:transparent;color:inherit;border-radius:50%;cursor:pointer}.admin-tags__chip-remove:hover{background:color-mix(in srgb,var(--uid-accent) 28%,transparent)}.admin-tags__input{flex:1;min-width:80px;height:24px;padding:0 4px;border:0;background:transparent;outline:none;font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-tags__dropdown{z-index:var(--uid-z-popover, 1000);margin:0;padding:4px;display:flex;flex-direction:column;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);max-height:320px;overflow-y:auto}.admin-tags__group-label{padding:8px 10px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-semibold);position:sticky;top:0;background:var(--uid-surface-raised);z-index:1}.admin-tags__group-label:first-child{padding-top:4px}.admin-tags__option{display:block;width:100%;text-align:left;padding:6px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);font-size:13px;cursor:pointer;color:var(--uid-text-primary);font-family:var(--uid-font-family-mono, ui-monospace, monospace)}.admin-tags__option:hover,.admin-tags__option--active{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-translatable{display:flex;flex-direction:column;gap:6px}.admin-translatable__tabs{display:inline-flex;align-items:center;gap:2px;align-self:flex-start;padding:2px;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md)}.admin-translatable__tab{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);font-size:11px;font-weight:600;color:var(--uid-text-secondary);cursor:pointer;letter-spacing:.04em}.admin-translatable__tab:hover{color:var(--uid-text-primary)}.admin-translatable__tab--active{background:var(--uid-surface-raised);color:var(--uid-text-primary);box-shadow:0 1px 2px #0000000a}.admin-translatable__dot{width:5px;height:5px;border-radius:50%;background:var(--uid-color-success, #10b981)}.admin-translatable__textarea{width:100%;padding:8px 10px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font:inherit;font-size:13px;resize:vertical}.admin-translatable__textarea:focus{outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);border-color:var(--uid-accent)}.admin-wysiwyg-wrap[data-v-86c08b9f]{position:relative}.admin-wysiwyg__file-input[data-v-86c08b9f]{display:none}.admin-wysiwyg-img__handle[data-v-86c08b9f]{position:absolute;background:var(--uid-color-primary, #2dd4bf);border:2px solid #fff;border-radius:2px;cursor:nwse-resize;z-index:20;box-shadow:0 1px 3px #0003}.admin-wysiwyg-img__handle--ne[data-v-86c08b9f],.admin-wysiwyg-img__handle--sw[data-v-86c08b9f]{cursor:nesw-resize}.admin-wysiwyg-img__dropline[data-v-86c08b9f]{position:absolute;height:2px;background:var(--uid-color-primary, #2dd4bf);pointer-events:none;z-index:19;box-shadow:0 0 0 1px #2dd4bf66}.admin-wysiwyg-img--selected{outline:2px solid var(--uid-color-primary, #2dd4bf);outline-offset:1px;cursor:move}.admin-file-field[data-v-afcb2d73]{display:flex;flex-direction:column;gap:6px}.admin-file-field__label[data-v-afcb2d73]{font-size:13px;font-weight:500}.admin-file-field__required[data-v-afcb2d73]{color:var(--uid-color-danger, #dc2626);margin-left:2px}.admin-file-field__drop[data-v-afcb2d73]{border:2px dashed var(--uid-color-border, #d1d5db);border-radius:8px;padding:24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,border-color .12s ease;color:var(--uid-color-text-secondary, #62686f)}.admin-file-field__drop[data-v-afcb2d73]:hover,.admin-file-field__drop--over[data-v-afcb2d73]{border-color:var(--uid-color-primary, #2dd4bf);background:var(--uid-color-surface-2, #f3f4f6)}.admin-file-field__hint[data-v-afcb2d73]{margin:8px 0 0;font-size:13px}.admin-file-field__input[data-v-afcb2d73]{display:none}.admin-file-field__preview[data-v-afcb2d73]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:8px}.admin-file-field__preview-info[data-v-afcb2d73]{display:flex;flex-direction:column;gap:2px;font-size:13px}.admin-file-field__preview-meta[data-v-afcb2d73]{color:var(--uid-color-text-secondary, #62686f);font-size:12px}.admin-file-field__help[data-v-afcb2d73]{font-size:12px;color:var(--uid-color-text-secondary, #62686f);margin:0}.admin-file-field__error[data-v-afcb2d73]{font-size:12px;color:var(--uid-color-danger, #dc2626);margin:0}.admin-image-cropper[data-v-dd3b40d1]{display:flex;flex-direction:column;gap:6px}.admin-image-cropper__label[data-v-dd3b40d1]{font-size:13px;font-weight:500}.admin-image-cropper__required[data-v-dd3b40d1]{color:var(--uid-color-danger, #dc2626);margin-left:2px}.admin-image-cropper__drop[data-v-dd3b40d1]{border:2px dashed var(--uid-color-border, #d1d5db);border-radius:8px;padding:32px 16px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,border-color .12s ease;color:var(--uid-color-text-secondary, #62686f)}.admin-image-cropper__drop[data-v-dd3b40d1]:hover,.admin-image-cropper__drop--over[data-v-dd3b40d1]{border-color:var(--uid-color-primary, #2dd4bf);background:var(--uid-color-surface-2, #f3f4f6)}.admin-image-cropper__hint[data-v-dd3b40d1]{margin:8px 0 0;font-size:13px}.admin-image-cropper__hint-sub[data-v-dd3b40d1]{margin:4px 0 0;font-size:12px;opacity:.7}.admin-image-cropper__input[data-v-dd3b40d1]{display:none}.admin-image-cropper__crop[data-v-dd3b40d1]{display:flex;flex-direction:column;gap:12px;user-select:none}.admin-image-cropper__canvas-wrap[data-v-dd3b40d1]{position:relative;background:#f3f4f6;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:8px;overflow:hidden}.admin-image-cropper__img[data-v-dd3b40d1]{display:block;pointer-events:none}.admin-image-cropper__rect[data-v-dd3b40d1]{position:absolute;border:2px solid var(--uid-color-primary, #2dd4bf);box-shadow:0 0 0 9999px #00000059;cursor:move;box-sizing:border-box}.admin-image-cropper__handle[data-v-dd3b40d1]{position:absolute;width:12px;height:12px;background:var(--uid-color-primary, #2dd4bf);border:2px solid white;border-radius:2px}.admin-image-cropper__handle--nw[data-v-dd3b40d1]{top:-7px;left:-7px;cursor:nwse-resize}.admin-image-cropper__handle--ne[data-v-dd3b40d1]{top:-7px;right:-7px;cursor:nesw-resize}.admin-image-cropper__handle--sw[data-v-dd3b40d1]{bottom:-7px;left:-7px;cursor:nesw-resize}.admin-image-cropper__handle--se[data-v-dd3b40d1]{bottom:-7px;right:-7px;cursor:nwse-resize}.admin-image-cropper__actions[data-v-dd3b40d1]{display:flex;gap:8px}.admin-image-cropper__preview[data-v-dd3b40d1]{display:flex;gap:16px;padding:12px;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:8px;align-items:center}.admin-image-cropper__preview-img[data-v-dd3b40d1]{max-width:160px;max-height:100px;border-radius:4px;background:repeating-conic-gradient(#eee 0% 25%,transparent 25% 50%) 0 0/16px 16px}.admin-image-cropper__preview-info[data-v-dd3b40d1]{display:flex;flex-direction:column;gap:4px;flex:1}.admin-image-cropper__preview-name[data-v-dd3b40d1]{font-size:13px;font-weight:500}.admin-image-cropper__preview-meta[data-v-dd3b40d1]{font-size:12px;color:var(--uid-color-text-secondary, #62686f)}.admin-image-cropper__preview-actions[data-v-dd3b40d1]{display:flex;gap:8px;margin-top:6px}.admin-image-cropper__help[data-v-dd3b40d1]{font-size:12px;color:var(--uid-color-text-secondary, #62686f);margin:0}.admin-image-cropper__error[data-v-dd3b40d1]{font-size:12px;color:var(--uid-color-danger, #dc2626);margin:0}.admin-keyvalue__rows[data-v-4d208b6b]{display:flex;flex-direction:column;gap:var(--uid-space-xs, 6px)}.admin-keyvalue__head[data-v-4d208b6b],.admin-keyvalue__row[data-v-4d208b6b]{display:grid;grid-template-columns:1fr 1fr 36px;gap:var(--uid-space-sm, 8px);align-items:center}.admin-keyvalue__head[data-v-4d208b6b]{font-size:12px;color:var(--uid-color-text-subtle, #6b7280)}.admin-keyvalue__add[data-v-4d208b6b]{margin-top:var(--uid-space-sm, 8px);align-self:flex-start}.admin-nested-fields[data-v-df29c244]{display:flex;flex-direction:column;gap:var(--uid-space-md, 12px)}.admin-repeater[data-v-3ec68540]{display:flex;flex-direction:column;gap:var(--uid-space-sm, 8px)}.admin-repeater__item-hd[data-v-3ec68540]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--uid-space-sm, 8px)}.admin-repeater__item-no[data-v-3ec68540]{font-size:12px;color:var(--uid-color-text-subtle, #6b7280)}.admin-repeater__add[data-v-3ec68540]{align-self:flex-start}.admin-builder[data-v-4a91ea0a]{display:flex;flex-direction:column;gap:var(--uid-space-sm, 8px)}.admin-builder__block-hd[data-v-4a91ea0a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--uid-space-sm, 8px)}.admin-builder__block-type[data-v-4a91ea0a]{font-weight:600;font-size:13px}.admin-builder__add[data-v-4a91ea0a]{align-self:flex-start}.admin-generated__row{display:flex;gap:var(--uid-space-sm, 8px);align-items:flex-start}.admin-generated__input{flex:1}.admin-section{margin-bottom:var(--uid-space-md)}.admin-section__header{margin-bottom:var(--uid-space-sm)}.admin-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-embedded-table[data-v-11081c93]{display:flex;flex-direction:column;gap:var(--uid-spacing-sm, 12px)}.admin-embedded-table__toolbar[data-v-11081c93]{display:flex;align-items:center;gap:var(--uid-spacing-sm, 8px)}.admin-embedded-table__row-delete[data-v-11081c93]{background:none;border:none;cursor:pointer;color:var(--uid-color-text-secondary, #62686f);padding:4px;border-radius:var(--uid-radius-sm, 4px)}.admin-embedded-table__row-delete[data-v-11081c93]:hover{background:var(--uid-color-surface-2, #f3f4f6);color:var(--uid-color-danger, #dc2626)}.admin-embedded-table__draft[data-v-11081c93]{background:var(--uid-color-surface-2, #f9fafb);border:1px dashed var(--uid-color-border, #e5e7eb);border-radius:var(--uid-radius-md, 8px);padding:var(--uid-spacing-md, 16px);display:flex;flex-direction:column;gap:var(--uid-spacing-sm, 12px)}.admin-embedded-table__draft-cells[data-v-11081c93]{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--uid-spacing-sm, 12px)}.admin-embedded-table__draft-cell[data-v-11081c93]{display:flex;flex-direction:column;gap:4px}.admin-embedded-table__draft-label[data-v-11081c93]{font-size:var(--uid-font-size-sm, 12px);color:var(--uid-color-text-secondary, #62686f)}.admin-embedded-table__draft-input[data-v-11081c93]{height:32px;padding:0 8px;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:var(--uid-radius-sm, 4px);font:inherit;font-size:13px}.admin-embedded-table__draft-actions[data-v-11081c93]{display:flex;gap:var(--uid-spacing-sm, 8px)}.admin-infolist-text{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);word-break:break-word;white-space:pre-wrap}.admin-infolist-text--mono{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs)}.admin-infolist-icon{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:var(--uid-font-size-sm)}.admin-infolist-icon--on{color:var(--uid-success)}.admin-infolist-icon--off{color:var(--uid-text-tertiary)}.admin-infolist-icon__glyph{flex:none}.admin-repeatable{display:flex;flex-direction:column;gap:8px;padding:8px 0}.admin-repeatable__lbl{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);text-transform:uppercase;letter-spacing:.04em;font-weight:var(--uid-font-weight-medium)}.admin-repeatable__empty{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm);margin:0}.admin-repeatable__tbl{border-collapse:collapse;width:100%;font-size:var(--uid-font-size-sm)}.admin-repeatable__tbl th,.admin-repeatable__tbl td{border:1px solid var(--uid-border-subtle, #e5e7eb);padding:6px 10px;text-align:left;vertical-align:top}.admin-repeatable__tbl th{background:var(--uid-surface-muted, #f9fafb);font-weight:var(--uid-font-weight-semibold, 600);color:var(--uid-text-secondary, #4b5563);font-size:var(--uid-font-size-xs, 12px);text-transform:uppercase;letter-spacing:.04em}.admin-repeatable__idx{width:40px;color:var(--uid-text-tertiary, #6b7280);text-align:center!important}.admin-repeatable__cards{display:flex;flex-direction:column;gap:8px}.admin-repeatable__card{border:1px solid var(--uid-border-subtle, #e5e7eb);border-radius:6px;padding:10px 14px}.admin-repeatable__card-hd{font-size:12px;font-weight:600;color:var(--uid-text-tertiary, #6b7280);margin-bottom:4px}.admin-repeatable__dl{display:grid;grid-template-columns:200px 1fr;gap:4px 12px;margin:0}.admin-repeatable__dl dt{color:var(--uid-text-tertiary, #6b7280);font-size:12px}.admin-repeatable__dl dd{margin:0;font-size:13px}.admin-repeatable__inline{display:flex;flex-wrap:wrap;gap:6px}.admin-repeatable__chip{padding:3px 10px;border:1px solid var(--uid-border-subtle, #e5e7eb);border-radius:999px;font-size:12px}.admin-status-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-status-page__hint{margin:0;color:var(--uid-text-secondary);font-size:var(--uid-font-size-sm)}.admin-import-wizard{max-width:1100px;margin:0 auto}.admin-import-wizard__card{margin-top:var(--uid-space-md)}.admin-import-wizard__card-hd{margin-bottom:var(--uid-space-md)}.admin-import-wizard__card-hd h3{margin:0 0 var(--uid-space-2xs);font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold)}.admin-import-wizard__card-hd p{margin:0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-import-wizard__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-import-wizard__mapping{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-import-wizard__map-row{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--uid-space-md);align-items:center}.admin-import-wizard__map-source{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-import-wizard__map-sample{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-xs);font-style:italic}.admin-import-wizard__map-arrow{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-md)}.admin-import-wizard__kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md);margin-top:var(--uid-space-md)}.admin-import-wizard__nav{display:flex;align-items:center;gap:var(--uid-space-sm);margin-top:var(--uid-space-md)}.admin-gallery__group{margin-bottom:var(--uid-space-2xl)}.admin-gallery__group-title{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md)}@media(max-width:960px){.admin-gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.admin-gallery__grid{grid-template-columns:1fr}}.admin-gallery__card{display:flex;flex-direction:column}.admin-gallery__card-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);margin-bottom:var(--uid-space-xs)}.admin-gallery__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-gallery__card-type{font-family:var(--uid-font-family-mono);font-size:11px;color:var(--uid-text-tertiary);background:var(--uid-surface-base);padding:1px 6px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle)}.admin-gallery__card-desc{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);line-height:var(--uid-line-height-normal)}.admin-gallery__card-demo{flex:1;display:flex;flex-direction:column;justify-content:flex-end}
1
+ .admin-field__control--quill .ql-container{min-height:200px;font-size:14px;font-family:inherit}.admin-field__control--quill .ql-toolbar.ql-snow,.admin-field__control--quill .ql-container.ql-snow{border-color:var(--uid-border-subtle)}.admin-field__control--quill .ql-toolbar.ql-snow{border-radius:var(--uid-radius-md) var(--uid-radius-md) 0 0;background:var(--uid-surface-base)}.admin-field__control--quill .ql-container.ql-snow{border-radius:0 0 var(--uid-radius-md) var(--uid-radius-md);background:var(--uid-surface-raised);color:var(--uid-text-primary)}:root[data-density=compact],:root:not([data-density]){--admin-row-h: 32px;--admin-row-fs: 13px;--admin-page-pad: 16px}:root[data-density=comfortable]{--admin-row-h: 40px;--admin-row-fs: 14px;--admin-page-pad: 24px}:root{--admin-foot-height: 32px}.admin-impersonation-banner{position:fixed;top:0;left:0;right:0;height:32px;z-index:var(--uid-z-sticky, 200);background:var(--uid-warning);color:var(--uid-color-amber-950, #4c2a02);display:flex;align-items:center;justify-content:center;font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);gap:var(--uid-space-md)}:root[data-theme=dark] .admin-impersonation-banner{color:var(--uid-color-amber-50);background:color-mix(in srgb,var(--uid-warning) 60%,var(--uid-surface-raised))}.admin-impersonation-banner__exit{appearance:none;background:#00000026;color:inherit;border:0;height:22px;padding:0 var(--uid-space-sm);border-radius:var(--uid-radius-sm);font:inherit;font-size:11px;font-weight:var(--uid-font-weight-semibold);cursor:pointer}.admin-poll-indicator{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:11px;color:var(--uid-text-tertiary)}.admin-poll-indicator__dot{width:6px;height:6px;border-radius:var(--uid-radius-full);background:var(--uid-success);position:relative}.admin-poll-indicator__dot:after{content:"";position:absolute;inset:-3px;border-radius:var(--uid-radius-full);background:var(--uid-success);opacity:.5;animation:admin-poll-pulse 1.6s ease-out infinite}@keyframes admin-poll-pulse{0%{transform:scale(.6);opacity:.6}to{transform:scale(2);opacity:0}}.admin-topbar{height:56px;padding:0 var(--uid-space-lg);display:flex;align-items:center;gap:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);position:sticky;top:0;z-index:var(--uid-z-sticky, 200);flex:none}.admin-topbar__spacer{flex:1}.admin-topbar__breadcrumbs{display:flex;align-items:center;gap:var(--uid-space-xs);font-size:13px;color:var(--uid-text-secondary)}.admin-topbar__breadcrumbs .sep{color:var(--uid-text-tertiary)}.admin-topbar__breadcrumbs .cur{color:var(--uid-text-primary);font-weight:500}.admin-topbar__search{display:flex;align-items:center;gap:var(--uid-space-sm);height:32px;padding:0 var(--uid-space-sm);min-width:220px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-tertiary);font-size:13px;cursor:pointer}.admin-topbar__search kbd{margin-left:auto;font-family:var(--uid-font-family-mono);font-size:10px;padding:1px 5px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);color:var(--uid-text-tertiary)}.admin-topbar__icon-btn{position:relative;appearance:none;border:0;background:transparent;width:32px;height:32px;border-radius:var(--uid-radius-md);display:grid;place-items:center;color:var(--uid-text-secondary);cursor:pointer}.admin-topbar__icon-btn:hover{background:var(--uid-surface-base);color:var(--uid-text-primary)}.admin-topbar__bell-badge{position:absolute;top:0;right:0;min-width:14px;height:14px;padding:0 2px;border-radius:var(--uid-radius-full);background:var(--uid-danger);color:var(--uid-color-white, #fff);font-size:9px;line-height:1;font-weight:var(--uid-font-weight-semibold);display:grid;place-items:center;border:1.5px solid var(--uid-surface-raised);font-variant-numeric:tabular-nums}.admin-auth-page{min-height:100vh;display:grid;place-items:center;padding:var(--uid-space-xl);background:var(--uid-surface-base);position:relative}@media(max-width:480px){.admin-auth-page{padding:var(--uid-space-md)}}.admin-auth-page__corner{position:absolute;top:var(--uid-space-md);right:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-auth-card{width:100%;max-width:400px}.admin-auth-card--wide{max-width:440px}.admin-auth-card__hd{padding:var(--uid-space-lg) var(--uid-space-lg) var(--uid-space-md);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--uid-space-sm)}.admin-auth-card__logo{width:40px;height:40px;border-radius:9px;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:var(--uid-font-size-lg)}.admin-auth-card__logo img{width:100%;height:100%;border-radius:inherit;display:block}.admin-auth-card__logo:has(img){background:none}.admin-auth-card__logo--accent{background:var(--uid-accent);color:var(--uid-text-on-accent)}.admin-auth-card__title{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary);font-family:var(--uid-font-family-display);letter-spacing:-.01em}.admin-auth-card__sub{font-size:13px;color:var(--uid-text-secondary)}.admin-auth-card__bd{padding:var(--uid-space-sm) var(--uid-space-lg) var(--uid-space-lg);display:flex;flex-direction:column;gap:14px}.admin-auth-card__row{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm)}.admin-auth-card__link{color:var(--uid-accent-text);font-size:var(--uid-font-size-xs);cursor:pointer;text-decoration:none}.admin-auth-card__link:hover{text-decoration:underline}.admin-auth-card__alert{margin-bottom:4px}.admin-code-input{display:flex;gap:var(--uid-space-sm);justify-content:center}.admin-code-input input{width:44px;height:52px;text-align:center;font-family:var(--uid-font-family-mono);font-size:22px;font-weight:var(--uid-font-weight-semibold);border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);outline:none;caret-color:var(--uid-accent)}.admin-code-input input:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);outline-offset:0}.admin-code-input input--error,.admin-code-input input.is-error{border-color:var(--uid-danger)}.admin-page{padding:var(--admin-page-pad, 24px)}.admin-page__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-page__title-wrap{display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-page__title{font-family:var(--uid-font-family-display);font-size:22px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.015em;line-height:1;margin:0;color:var(--uid-text-primary)}.admin-page__count{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-page__actions,.admin-page__title-row{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-page__live{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-medium);line-height:1}.admin-page__live-dot{width:8px;height:8px;border-radius:50%;background:var(--uid-color-success, #10b981);flex:none;animation:admin-page-pulse 2s ease-out infinite}@keyframes admin-page-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--uid-color-success, #10b981) 45%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in srgb,var(--uid-color-success, #10b981) 0%,transparent)}to{box-shadow:0 0 color-mix(in srgb,var(--uid-color-success, #10b981) 0%,transparent)}}@media(prefers-reduced-motion:reduce){.admin-page__live-dot{animation:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--uid-color-success, #10b981) 18%,transparent)}}.admin-page__scope{font-weight:var(--uid-font-weight-medium)}.admin-page__more{width:var(--uid-size-md);padding:0;justify-content:center}.admin-page__import-input{display:none}.admin-page__view-row{display:inline-flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);width:100%}.admin-page__view-name{display:inline-flex;align-items:center;gap:var(--uid-space-2xs)}.admin-page__view-badge{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:var(--uid-radius-sm);background:color-mix(in srgb,var(--uid-accent) 15%,transparent);color:var(--uid-accent)}.admin-page__view-delete{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-tertiary);cursor:pointer}.admin-page__view-delete:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 12%,transparent);color:var(--uid-color-danger, #dc2626)}@media(max-width:768px){.admin-topbar{padding:0 var(--uid-space-sm);gap:var(--uid-space-xs)}.admin-topbar__search,.admin-topbar__breadcrumbs{display:none}.admin-topbar__icon-btn{flex-shrink:0}.admin-page__hd,.admin-page__actions{flex-wrap:wrap}}.admin-markdown{font-size:var(--uid-font-size-sm);line-height:var(--uid-line-height-normal, 1.5);color:var(--uid-text-primary);word-break:break-word}.admin-markdown>:first-child{margin-top:0}.admin-markdown>:last-child{margin-bottom:0}.admin-markdown p,.admin-markdown ul,.admin-markdown ol,.admin-markdown blockquote,.admin-markdown pre{margin:0 0 var(--uid-space-sm, 8px)}.admin-markdown h1,.admin-markdown h2,.admin-markdown h3,.admin-markdown h4,.admin-markdown h5,.admin-markdown h6{margin:var(--uid-space-md, 12px) 0 var(--uid-space-xs, 6px);font-weight:var(--uid-font-weight-semibold);line-height:1.25}.admin-markdown h1{font-size:1.5em}.admin-markdown h2{font-size:1.3em}.admin-markdown h3{font-size:1.15em}.admin-markdown ul,.admin-markdown ol{padding-left:1.5em}.admin-markdown blockquote{padding-left:var(--uid-space-md, 12px);border-left:3px solid var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-markdown code{font-family:var(--uid-font-family-mono);font-size:.9em;padding:0 .25em;border-radius:var(--uid-radius-sm);background:var(--uid-surface-sunken, var(--uid-surface-raised))}.admin-markdown pre{padding:var(--uid-space-sm, 8px);border-radius:var(--uid-radius-md);background:var(--uid-surface-sunken, var(--uid-surface-raised));overflow:auto}.admin-markdown pre code{padding:0;background:none}.admin-markdown img{max-width:100%}.admin-markdown hr{border:0;border-top:1px solid var(--uid-border-subtle);margin:var(--uid-space-md, 12px) 0}.admin-markdown a{color:var(--uid-accent)}.admin-topbar__status[data-v-dbf1c8df]{display:inline-flex;align-items:center;gap:var(--uid-space-1, 4px)}.admin-topbar__status-item[data-v-dbf1c8df]{display:inline-flex;align-items:center;color:inherit;text-decoration:none}.admin-topbar__status-inner[data-v-dbf1c8df]{display:inline-flex;align-items:center;gap:var(--uid-space-1, 4px);padding:2px 8px;border-radius:999px;font-size:12px;line-height:18px}.admin-topbar__status-item--warning .admin-topbar__status-inner[data-v-dbf1c8df]{color:var(--uid-color-warning-fg, #92400e);background:var(--uid-color-warning-bg, #fef3c7)}.admin-topbar__status-item--error .admin-topbar__status-inner[data-v-dbf1c8df]{color:var(--uid-color-danger-fg, #991b1b);background:var(--uid-color-danger-bg, #fee2e2)}.admin-topbar__status-item--unknown .admin-topbar__status-inner[data-v-dbf1c8df]{color:var(--uid-color-fg-muted, #6b7280);background:var(--uid-color-bg-subtle, #f3f4f6)}@media(max-width:720px){.admin-topbar__status-label[data-v-dbf1c8df]{display:none}}.admin-sidebar-node{--admin-sidebar-stripe-color: color-mix( in srgb, var(--uid-color-primary, #14b8a6) calc(var(--admin-sidebar-stripe-alpha, 0) * 100%), transparent )}.admin-sidebar-node>.admin-sidebar-node__group,.admin-sidebar-node>.admin-sidebar-node__leaf{padding-inline-start:calc(12px + var(--admin-sidebar-indent, 0px))}.admin-sidebar-node--stripe>.admin-sidebar-node__group,.admin-sidebar-node--stripe>.admin-sidebar-node__leaf{box-shadow:inset 2px 0 0 0 var(--admin-sidebar-stripe-color)}.admin-sidebar-node__group{width:calc(100% - var(--uid-space-sm) * 2);margin:1px var(--uid-space-sm);border:0;background:transparent;cursor:pointer;font:inherit;color:var(--uid-sidebar-item-color, var(--uid-color-text-secondary));text-align:left}.admin-sidebar-node__chev{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;margin-inline-start:auto;color:var(--uid-color-text-tertiary);transition:transform var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-sidebar-node__chev--open{transform:rotate(90deg)}.admin-sidebar-node--has-children.admin-sidebar-node--active>.admin-sidebar-node__group{color:var(--uid-color-text-primary)}.admin-sidebar-node__children{display:flex;flex-direction:column}.uid-pattern-sidebar--collapsed .admin-sidebar-node__children,.uid-pattern-sidebar--collapsed .admin-sidebar-node__chev{display:none}.ladmin-logo{display:inline-flex;align-items:center;justify-content:flex-start;font-family:ui-monospace,IBM Plex Mono,Fira Code,Menlo,monospace;font-weight:700;letter-spacing:-.02em;line-height:1;flex:none;box-shadow:inset 0 1px #ffffff0f}.ladmin-logo--animated .ladmin-logo__cursor{animation:ladmin-cursor 1.1s steps(1,end) infinite}@keyframes ladmin-cursor{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.ladmin-logo--animated .ladmin-logo__cursor{animation:none}}.admin-sidebar-boot{display:flex;flex-direction:column;gap:8px;padding:8px 12px}.uid-pattern-sidebar__header:has(.admin-sidebar-brand){padding:0}.admin-sidebar-brand{display:flex;align-items:center;gap:10px;height:56px;padding:0 16px;text-decoration:none;color:inherit;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-sidebar-brand:hover{background:var(--uid-color-surface-hover, rgba(0, 0, 0, .04))}.admin-sidebar-brand:focus-visible{outline:2px solid var(--uid-color-focus-ring, var(--uid-accent));outline-offset:-2px}.admin-sidebar-brand__logo{width:28px;height:28px;border-radius:7px;flex:none;display:block}.admin-sidebar-brand__mark{width:28px;height:28px;border-radius:7px;flex:none;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:14px;letter-spacing:-.02em}.admin-sidebar-brand__name{font-family:var(--uid-font-family-display);font-size:14px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;color:var(--uid-text-primary)}.admin-sidebar-tenant{margin:8px;display:flex;align-items:center;gap:8px;height:32px;padding:0 8px;border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);background:var(--uid-surface-base)}.admin-sidebar-tenant b{color:var(--uid-text-primary);font-weight:500}.admin-sidebar-foot{height:var(--admin-foot-height, 32px);padding:0 16px;border-top:1px solid var(--uid-border-subtle);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--uid-text-tertiary)}.admin-sidebar-foot__link{cursor:pointer}.admin-sidebar-foot__link:hover{color:var(--uid-text-primary)}.admin-sidebar__icon{width:16px;height:16px;display:inline-block;flex:none;color:currentColor}.admin-search__box{display:flex;align-items:center;gap:var(--uid-space-sm);padding:4px 4px 12px;border-bottom:1px solid var(--uid-border-subtle)}.admin-search__box-icon{color:var(--uid-text-tertiary);flex:none}.admin-search__input{flex:1;border:0;outline:none;background:transparent;font-size:16px;color:var(--uid-text-primary)}.admin-search__input::placeholder{color:var(--uid-text-tertiary)}.admin-search__results{margin-top:8px;max-height:52vh;overflow-y:auto;overscroll-behavior:contain}.admin-search__hint{padding:16px 8px;margin:0;color:var(--uid-text-tertiary);font-size:13px;text-align:center}.admin-search__group{margin-bottom:6px}.admin-search__group-hd{display:flex;align-items:center;gap:6px;padding:6px 10px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--uid-text-tertiary)}.admin-search__item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:0;border-radius:var(--uid-radius-md);background:transparent;text-align:left;cursor:pointer;color:var(--uid-text-primary)}.admin-search__item--active{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-search__item-title{font-size:14px}.admin-search__item-sub{font-size:12px;color:var(--uid-text-tertiary)}.admin-search__item-enter{margin-left:auto;color:var(--uid-text-tertiary);flex:none}.admin-shell-root[data-admin-impersonating=true]{padding-top:32px}:root[data-admin-impersonating=true]{scroll-padding-top:32px}.admin-shell.uid-layout-sidebar{height:100vh;min-height:0;max-height:100vh;overflow:hidden}.admin-shell .uid-layout-sidebar__sidebar{height:100vh}.admin-shell .uid-pattern-sidebar{height:100%;display:flex;flex-direction:column;border-top:none}.admin-shell .uid-pattern-sidebar__header{border-bottom:none}.admin-shell .uid-pattern-sidebar__nav{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior:contain}.admin-shell .uid-pattern-sidebar__footer{flex:none}.admin-shell .uid-layout-sidebar__main{height:100vh;display:flex;flex-direction:column;overflow:hidden;min-width:0}.admin-shell .uid-layout-sidebar__main-header{flex:none}.admin-shell .uid-layout-sidebar__main-content{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior:contain}.admin-shell-root[data-admin-impersonating=true] .admin-shell.uid-layout-sidebar,.admin-shell-root[data-admin-impersonating=true] .admin-shell .uid-layout-sidebar__sidebar,.admin-shell-root[data-admin-impersonating=true] .admin-shell .uid-layout-sidebar__main{height:calc(100vh - 32px);max-height:calc(100vh - 32px)}.admin-main-footer{height:var(--admin-foot-height, 32px);border-top:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);flex:none;display:flex;align-items:center;justify-content:flex-end;padding:0 var(--uid-space-md, 16px)}.admin-main-footer__copyright{font-size:12px;color:var(--uid-text-tertiary)}.admin-boot-skeleton{display:flex;flex-direction:column;gap:16px}.admin-boot-skeleton__hd{display:flex;align-items:center;justify-content:space-between;gap:16px}.admin-boot-skeleton__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:720px){.admin-boot-skeleton__row{grid-template-columns:1fr}}.admin-loading-bar{position:fixed;top:0;left:0;right:0;height:2px;z-index:var(--uid-z-toast, 9999);pointer-events:none;opacity:0;transition:opacity .12s ease-out;background:transparent}.admin-loading-bar--visible{opacity:1}.admin-loading-bar--visible:before{content:"";position:absolute;inset:0;background:var(--uid-accent, var(--uid-color-primary, #14b8a6));transform-origin:0 50%;animation:admin-loading-bar-slide 1.4s cubic-bezier(.4,0,.2,1) infinite}@keyframes admin-loading-bar-slide{0%{transform:translate(-100%) scaleX(.4)}50%{transform:translate(0) scaleX(.7)}to{transform:translate(100%) scaleX(.4)}}@media(prefers-reduced-motion:reduce){.admin-loading-bar--visible:before{animation:none;width:60%;transform:none}}.admin-notif-drawer{position:fixed;inset:0;z-index:var(--uid-z-drawer, 400);pointer-events:none}.admin-notif-drawer__backdrop{position:absolute;inset:0;background:#0006;pointer-events:auto}.admin-notif-drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(480px,100%);display:flex;flex-direction:column;background:var(--uid-surface-raised);border-left:1px solid var(--uid-border-subtle);box-shadow:var(--uid-shadow-lg);pointer-events:auto}.admin-notif-drawer__hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);padding:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle)}.admin-notif-drawer__title{display:inline-flex;align-items:center;gap:var(--uid-space-xs);margin:0;font-family:var(--uid-font-family-display);font-size:16px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-notif-drawer__unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;padding:2px 6px;border-radius:10px;background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626);font-size:11px;font-weight:var(--uid-font-weight-semibold);line-height:1}.admin-notif-drawer__hd-actions{display:inline-flex;align-items:center;gap:var(--uid-space-xs)}.admin-notif-drawer__mark-all{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:6px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);font-size:13px;cursor:pointer}.admin-notif-drawer__mark-all:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-notif-drawer__close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);cursor:pointer}.admin-notif-drawer__close:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-notif-drawer__tabs{display:flex;align-items:center;gap:var(--uid-space-md);padding:0 var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle)}.admin-notif-drawer__tab{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:12px 0;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--uid-text-secondary);font-size:13px;font-weight:var(--uid-font-weight-medium);cursor:pointer}.admin-notif-drawer__tab:hover{color:var(--uid-text-primary)}.admin-notif-drawer__tab--active{color:var(--uid-text-primary);border-bottom-color:var(--uid-accent)}.admin-notif-drawer__tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;padding:1px 6px;border-radius:9px;background:var(--uid-border-subtle);color:var(--uid-text-tertiary);font-size:11px;font-weight:var(--uid-font-weight-semibold)}.admin-notif-drawer__tab--active .admin-notif-drawer__tab-count{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer__body{flex:1;min-height:0;overflow-y:auto}.admin-notif-drawer__empty{padding:var(--uid-space-xl);text-align:center;color:var(--uid-text-tertiary);font-size:13px}.admin-notif-drawer__list{list-style:none;margin:0;padding:0}.admin-notif-drawer__item{position:relative;display:flex;align-items:flex-start;gap:var(--uid-space-sm);padding:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle);cursor:pointer;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-notif-drawer__item:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-notif-drawer__item--unread{background:color-mix(in srgb,var(--uid-accent) 5%,transparent)}.admin-notif-drawer__icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;border-radius:50%}.admin-notif-drawer__icon[data-variant=success]{background:color-mix(in srgb,var(--uid-color-success, #10b981) 14%,transparent);color:var(--uid-color-success, #10b981)}.admin-notif-drawer__icon[data-variant=warning]{background:color-mix(in srgb,var(--uid-color-warning, #f59e0b) 14%,transparent);color:var(--uid-color-warning, #f59e0b)}.admin-notif-drawer__icon[data-variant=danger]{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer__icon[data-variant=info]{background:color-mix(in srgb,var(--uid-accent) 14%,transparent);color:var(--uid-accent)}.admin-notif-drawer__icon[data-variant=neutral]{background:var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-notif-drawer__content{flex:1;min-width:0}.admin-notif-drawer__row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--uid-space-sm)}.admin-notif-drawer__item-title{font-size:13px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-notif-drawer__item-time{font-size:11px;color:var(--uid-text-tertiary);flex:none}.admin-notif-drawer__item-description{margin-top:2px;font-size:13px;color:var(--uid-text-secondary);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.admin-notif-drawer__unread-dot{position:absolute;top:16px;right:36px;width:8px;height:8px;border-radius:50%;background:var(--uid-color-success, #10b981)}.admin-notif-drawer__item-delete{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;background:transparent;border-radius:50%;color:var(--uid-text-tertiary);cursor:pointer;opacity:0;flex:none;align-self:flex-start;margin-top:-2px}.admin-notif-drawer__item:hover .admin-notif-drawer__item-delete{opacity:1}.admin-notif-drawer__item-delete:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer-enter-active,.admin-notif-drawer-leave-active{transition:opacity .2s ease-out}.admin-notif-drawer-enter-active .admin-notif-drawer__panel,.admin-notif-drawer-leave-active .admin-notif-drawer__panel{transition:transform .24s cubic-bezier(.2,.8,.2,1)}.admin-notif-drawer-enter-from,.admin-notif-drawer-leave-to{opacity:0}.admin-notif-drawer-enter-from .admin-notif-drawer__panel,.admin-notif-drawer-leave-to .admin-notif-drawer__panel{transform:translate(100%)}.admin-notif-drawer__ft{padding:10px 16px;border-top:1px solid var(--uid-color-border, #e5e7eb);font-size:13px}.admin-confirm__message{margin:0;white-space:pre-line}.admin-page-host{position:relative;min-height:200px;overflow:hidden}.admin-page-host__suspended{min-height:320px}.admin-boot-enter-active{transition:opacity .2s ease-out}.admin-boot-enter-from{opacity:0}.admin-boot-leave-active{position:absolute;inset:0;width:100%;transition:opacity .14s ease-out}.admin-boot-leave-to{opacity:0}.admin-page-leave-active{position:absolute;inset:0;width:100%;transition:opacity .14s ease-out}.admin-page-leave-to{opacity:0}.admin-page-enter-active{transition:opacity .32s cubic-bezier(.2,.8,.2,1) 60ms,transform .32s cubic-bezier(.2,.8,.2,1) 60ms}.admin-page-enter-from{opacity:0;transform:translate(28px)}.admin-page-enter-to{opacity:1;transform:translate(0)}@media(prefers-reduced-motion:reduce){.admin-boot-enter-active,.admin-boot-leave-active,.admin-page-enter-active,.admin-page-leave-active{transition:opacity 80ms ease-out}.admin-page-enter-from{transform:none}}.admin-widget-actions{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:2px;padding:2px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-sm);z-index:5}.admin-widget-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);cursor:pointer}.admin-widget-actions__btn:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-widget-actions__btn--danger:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-widget-actions__drag{cursor:grab}.admin-widget-actions__drag:active{cursor:grabbing}.admin-dialog__restore-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.admin-dialog__empty{margin:0;padding:16px 12px;border:1px dashed var(--uid-border-subtle);border-radius:var(--uid-radius-md);color:var(--uid-text-tertiary);font-size:13px;text-align:center}.admin-dialog__readonly{padding:8px 10px;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:13px;color:var(--uid-text-secondary)}.admin-dialog__required{color:var(--uid-color-danger, #dc2626);font-weight:var(--uid-font-weight-semibold);margin-inline-start:2px}.admin-dialog__hint{flex:1;font-size:var(--uid-font-size-xs, 11px);color:var(--uid-text-tertiary, #9ca3af)}.admin-dashboard__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:140px;gap:var(--uid-space-md)}@media(max-width:768px){.admin-dashboard__grid{grid-template-columns:1fr;grid-auto-rows:minmax(140px,auto)}.admin-dashboard__cell{grid-column:1 / -1!important}}.admin-dashboard__grid--editing .admin-dashboard__cell{outline:1px dashed transparent;transition:outline-color .12s ease,opacity .12s ease}.admin-dashboard__grid--editing .admin-dashboard__cell:hover{outline-color:var(--uid-accent)}.admin-dashboard__cell--dragging{opacity:.45}.admin-dashboard__cell--drop-target{outline:2px solid var(--uid-color-primary, var(--uid-accent, #14b8a6))!important;outline-offset:-2px;background:color-mix(in srgb,var(--uid-color-primary, #14b8a6) 6%,transparent)}.admin-dashboard__cell{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column}.admin-dashboard__cell>*{flex:1 1 auto;min-height:0}.admin-dashboard__cell .admin-widget,.admin-dashboard__cell>.uid-card,.admin-dashboard__cell>.uid-stat,.admin-dashboard__cell .admin-widget>.uid-card{height:100%;display:flex;flex-direction:column}.admin-dashboard__cell .uid-card__body,.admin-dashboard__cell .admin-widget__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.admin-dashboard__resize{position:absolute;bottom:4px;right:4px;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0 50%,var(--uid-text-tertiary) 50% 60%,transparent 60% 70%,var(--uid-text-tertiary) 70% 80%,transparent 80%);z-index:4;border-radius:2px}.admin-dashboard__resize:hover{background:linear-gradient(135deg,transparent 0 45%,var(--uid-color-primary, var(--uid-text-primary)) 45% 60%,transparent 60% 70%,var(--uid-color-primary, var(--uid-text-primary)) 70% 85%,transparent 85%)}.admin-home{display:flex;flex-direction:column;gap:var(--uid-space-lg);padding:var(--uid-space-md)}.admin-home__title{font-size:var(--uid-font-size-2xl);font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm)}.admin-home__lead{color:var(--uid-text-secondary);margin:0}.admin-home__heading{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-home__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--uid-space-sm);list-style:none;padding:0;margin:0}.admin-home__card{display:flex;flex-direction:column;gap:var(--uid-space-2xs);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);text-align:left;cursor:pointer;transition:border-color .15s ease,transform .15s ease}.admin-home__card:hover{border-color:var(--uid-accent);transform:translateY(-1px)}.admin-home__card-label{font-weight:var(--uid-font-weight-medium)}.admin-home__card-slug{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-status-page{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:var(--uid-space-lg)}.admin-status-page__card{text-align:center;max-width:480px}.admin-status-page__code{font-size:64px;font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm);color:var(--uid-text-secondary)}.admin-status-page__message{margin:0 0 var(--uid-space-md);color:var(--uid-text-secondary)}.admin-settings-page{padding:var(--uid-space-md)}.admin-settings-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-settings-page__debug{background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);padding:var(--uid-space-sm);border-radius:var(--uid-radius-sm);font-family:var(--uid-font-mono);font-size:var(--uid-font-size-xs);overflow:auto;max-height:60vh}.admin-settings-page__hint{color:var(--uid-text-secondary)}.admin-action-form{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-action-confirm__message{margin:0;white-space:pre-line}.admin-action-async{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-action-async__hint{margin:0;font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary)}.admin-screen-page__description{margin:4px 0 0;font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary)}.admin-screen-page__alert-link{margin-left:6px;font-weight:600;text-decoration:underline;color:inherit}.admin-screen-page__alert{margin-bottom:var(--uid-space-md)}.admin-screen-page__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-screen-page__body{margin-bottom:var(--uid-space-2xl)}.admin-auth-card__submit,.admin-auth-card__back{width:100%;margin-top:var(--uid-space-sm)}.admin-auth-card__error{color:var(--uid-color-danger, #dc2626);font-size:13px;margin:var(--uid-space-xs) 0 0}.admin-toolbar{display:flex;flex-direction:column;gap:var(--uid-space-xs);padding:var(--uid-space-sm) var(--uid-space-md);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-bottom:0;margin-top:var(--uid-space-md)}.admin-toolbar__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-xs)}.admin-toolbar__divider{width:1px;height:22px;background:var(--uid-border-subtle);flex:none;margin:0 var(--uid-space-2xs)}.admin-toolbar__spacer{flex:1}.admin-toolbar__search{position:relative;display:inline-flex;align-items:center;flex:1 1 200px;max-width:360px;height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);gap:var(--uid-space-2xs)}.admin-toolbar__search:focus-within{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-toolbar__search-icon{color:var(--uid-text-tertiary);flex:none}.admin-toolbar__search-input{flex:1;height:100%;border:0;outline:none;background:transparent;font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-toolbar__search-input::placeholder{color:var(--uid-text-tertiary)}.admin-toolbar__chip{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease),border-color var(--uid-duration-fast, .12s) var(--uid-ease-out, ease),color var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-toolbar__chip:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-toolbar__chip--active{background:color-mix(in srgb,var(--uid-accent) 12%,transparent);border-color:color-mix(in srgb,var(--uid-accent) 35%,transparent);color:var(--uid-accent)}.admin-toolbar__chip--active:hover{background:color-mix(in srgb,var(--uid-accent) 18%,transparent);color:var(--uid-accent)}.admin-toolbar__chip-text{white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}.admin-toolbar__chip-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;cursor:pointer;margin-left:var(--uid-space-2xs)}.admin-toolbar__chip-x:hover{background:color-mix(in srgb,var(--uid-accent) 25%,transparent)}.admin-toolbar__popover{display:flex;flex-direction:column;gap:var(--uid-space-sm);padding:var(--uid-space-sm);min-width:220px;max-width:320px}.admin-toolbar__popover--list{padding:var(--uid-space-2xs);gap:0}.admin-toolbar__popover-actions{display:flex;justify-content:flex-end;gap:var(--uid-space-2xs);border-top:1px solid var(--uid-border-subtle);padding-top:var(--uid-space-sm)}.admin-toolbar__list-item{display:flex;align-items:center;gap:var(--uid-space-2xs);padding:var(--uid-space-2xs) var(--uid-space-sm);border-radius:var(--uid-radius-sm);cursor:pointer;background:transparent;border:0;font-size:13px;text-align:left;color:var(--uid-text-primary)}.admin-toolbar__list-item:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-toolbar__list-item--checkbox{cursor:pointer}.admin-toolbar__editor{display:flex;flex-direction:column;gap:var(--uid-space-2xs)}.admin-toolbar__editor--dates{gap:var(--uid-space-xs)}.admin-toolbar__input{height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font-size:13px;outline:none}.admin-toolbar__input:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-inline-edit{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.admin-inline-edit--editable{cursor:text;border-radius:3px;transition:background .12s ease}.admin-inline-edit--editable:hover{background:color-mix(in srgb,var(--uid-accent) 8%,transparent)}.admin-inline-edit__input{width:100%;height:26px;padding:0 6px;border:1px solid var(--uid-accent);background:var(--uid-surface-base);border-radius:var(--uid-radius-sm);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-inline-edit__input--textarea{height:auto;min-height:64px;padding:6px;resize:vertical;font-family:inherit}.admin-resource-tree-page[data-v-3c7fa0bb]{display:flex;flex-direction:column;gap:var(--uid-spacing-md, 16px);padding:var(--uid-spacing-lg, 24px)}.admin-resource-tree-page__header[data-v-3c7fa0bb]{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-spacing-md, 16px)}.admin-resource-tree-page__title[data-v-3c7fa0bb]{display:flex;align-items:center;gap:var(--uid-spacing-sm, 8px);font-size:var(--uid-font-size-xl, 20px);font-weight:600;margin:0}.admin-resource-tree-page__count[data-v-3c7fa0bb]{background:var(--uid-color-surface-2, #eef0f3);color:var(--uid-color-text-secondary, #62686f);border-radius:999px;padding:2px 10px;font-size:var(--uid-font-size-sm, 12px)}.admin-resource-tree-page__subtitle[data-v-3c7fa0bb]{margin:4px 0 0;color:var(--uid-color-text-secondary, #62686f)}.admin-resource-tree-page__toolbar[data-v-3c7fa0bb]{display:flex;align-items:center;gap:var(--uid-spacing-sm, 8px);flex-wrap:wrap}.admin-resource-tree-page__search[data-v-3c7fa0bb]{max-width:320px;flex:1}.admin-resource-tree-page__selection-divider[data-v-3c7fa0bb]{color:var(--uid-border-subtle, #e5e7eb);padding:0 2px}.admin-resource-tree-page__selection-label[data-v-3c7fa0bb]{color:var(--uid-color-text-secondary, #62686f);font-weight:500}.admin-resource-tree-page__body[data-v-3c7fa0bb]{background:var(--uid-color-surface-1, #fff);border:1px solid var(--uid-color-border, #e5e7eb);border-radius:var(--uid-radius-md, 8px);padding:var(--uid-spacing-md, 16px);min-height:240px}.admin-resource-tree-page[data-v-3c7fa0bb] .uid-tree-item__row{border-radius:6px}.admin-resource-tree-page[data-v-3c7fa0bb] .uid-tree-item__row:focus-visible{outline:none;background:var(--uid-color-bg-subtle, rgba(0, 0, 0, .03))}.admin-resource-tree-page[data-v-3c7fa0bb] .uid-tree-item__row:hover{background:var(--uid-color-bg-subtle, rgba(0, 0, 0, .03))}.admin-resource-tree-page[data-v-3c7fa0bb] .uid-tree-item--selected>.uid-tree-item__row{background:color-mix(in srgb,var(--uid-accent, #14b8a6) 10%,transparent);color:var(--uid-accent, #14b8a6);font-weight:500;outline:none}.admin-resource-tree-page[data-v-3c7fa0bb] .uid-tree-item--selected>.uid-tree-item__row .uid-tree-item__icon,.admin-resource-tree-page[data-v-3c7fa0bb] .uid-tree-item--selected>.uid-tree-item__row .uid-tree-item__chevron{color:var(--uid-accent, #14b8a6)}.admin-resource-index__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm);margin-top:var(--uid-space-md);min-height:320px}.admin-resource-index__row-drag{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;cursor:grab;color:var(--uid-text-tertiary);border-radius:var(--uid-radius-sm)}.admin-resource-index__row-drag:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-resource-index__row-drag:active{cursor:grabbing}.admin-resource-index__row-drag--ghost{opacity:.4}.admin-resource-index__row-drag--drop-before:before,.admin-resource-index__row-drag--drop-after:before{content:"";position:absolute;left:0;right:-9999px;height:2px;background:var(--uid-accent);pointer-events:none;z-index:5}.admin-resource-index__row-drag--drop-before:before{top:-1px}.admin-resource-index__row-drag--drop-after:before{bottom:-1px}.admin-resource-index__row-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--uid-space-2xs)}.admin-resource-index__row-action{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--uid-radius-sm);background:transparent;color:var(--uid-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out),color var(--uid-duration-fast) var(--uid-ease-out),border-color var(--uid-duration-fast) var(--uid-ease-out)}.admin-resource-index__row-action:hover{background:var(--uid-color-surface-hover);color:var(--uid-text-primary);border-color:var(--uid-border-subtle)}.admin-resource-index__row-menu-wrap{display:inline-flex}.admin-resource-index__row-action--danger:hover{color:var(--uid-color-danger, #dc2626)}.admin-resource-index__state{margin-top:var(--uid-space-xl)}.admin-resource-index__table{margin-top:0}.admin-resource-index__table .uid-table-wrap{border:1px solid var(--uid-border-subtle);border-top:0;border-radius:0 0 var(--uid-radius-lg) var(--uid-radius-lg)}.admin-resource-index__table .uid-table__td,.admin-resource-index__table .uid-table__th{padding:6px var(--uid-space-md);font-size:var(--admin-row-fs, 13px);height:var(--admin-row-h, 32px);line-height:1.3}.admin-cell-truncate{display:inline-block;max-width:var(--admin-cell-max-width, 320px);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-cell-link{color:var(--uid-accent, #2563eb);text-decoration:none;cursor:pointer}.admin-cell-link:hover{text-decoration:underline}.admin-cell-truncate--multi{display:-webkit-box;white-space:normal;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}.admin-resource-index__footer{display:flex;justify-content:flex-end;padding:var(--uid-space-md) 0}.admin-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-bottom:0;margin-top:var(--uid-space-md)}.admin-filter-bar__search{flex:1;min-width:200px;max-width:320px;height:28px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font-size:13px;outline:none}.admin-filter-bar__search:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-filter-bar__spacer{flex:1}.admin-bulk-toolbar{display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-color-zinc-900, #18181b);color:var(--uid-color-zinc-100, #f4f4f5);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border:1px solid var(--uid-color-zinc-900, #18181b);border-bottom:0;margin-top:var(--uid-space-md)}.admin-bulk-toolbar__count{font-size:13px}.admin-bulk-toolbar__count b{font-weight:var(--uid-font-weight-semibold)}.admin-bulk-toolbar__divider{width:1px;height:20px;background:#ffffff26}.admin-bulk-toolbar__spacer{flex:1}.admin-bulk-toolbar .uid-button{background:transparent;border-color:#ffffff26;color:var(--uid-color-zinc-100, #f4f4f5)}.admin-bulk-toolbar .uid-button:hover:not([disabled]){background:#ffffff14}.admin-bulk-toolbar .uid-button--danger{color:var(--uid-color-rose-400, #fb7185)}.admin-resource-index__row--selected{background:color-mix(in srgb,var(--uid-accent) 8%,transparent)}.admin-resource-form__back{font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);cursor:pointer;text-decoration:none;display:inline-block;margin-bottom:4px}.admin-resource-form__back:hover{color:var(--uid-text-primary)}.admin-resource-form__alert{margin-bottom:var(--uid-space-md)}.admin-resource-form__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-resource-form__body{margin-bottom:var(--uid-space-2xl)}.admin-resource-form__notfound{text-align:center;display:flex;flex-direction:column;gap:var(--uid-space-sm, 8px);align-items:center}.admin-resource-form__notfound-title{font-size:18px;font-weight:600;margin:0}.admin-resource-form__notfound-hint{color:var(--uid-text-secondary, #6b7280);margin:0 0 var(--uid-space-sm, 8px)}.admin-resource-form__savebar{position:sticky;bottom:0;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-surface-raised);border-top:1px solid var(--uid-border-default);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);margin-top:var(--uid-space-md)}.admin-resource-form__savebar-hint{flex:1;font-size:13px;color:var(--uid-warning)}.admin-infolist-entry{display:flex;flex-direction:column;align-items:flex-start;gap:var(--uid-space-2xs);padding:var(--uid-space-sm) 0}.admin-infolist-entry+.admin-infolist-entry{border-top:1px solid var(--uid-border-subtle)}.admin-infolist-entry__label{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);text-transform:uppercase;letter-spacing:.04em;font-weight:var(--uid-font-weight-medium)}.admin-infolist-rows{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--uid-space-md)}.admin-infolist-section{margin-bottom:var(--uid-space-md);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-lg);background:var(--uid-surface-raised)}.admin-infolist-section__hd{margin-bottom:var(--uid-space-sm)}.admin-infolist-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-infolist-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-infolist-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-tabs__list{list-style:none;margin:0 0 var(--uid-space-sm);padding:0;display:flex;gap:var(--uid-space-xs);border-bottom:1px solid var(--uid-border-subtle)}.admin-infolist-tabs__tab{padding:var(--uid-space-sm) var(--uid-space-sm);font-size:13px;color:var(--uid-text-secondary);border-bottom:2px solid transparent}.admin-infolist-tabs__tab--active{color:var(--uid-text-primary);border-bottom-color:var(--uid-accent);font-weight:var(--uid-font-weight-medium)}.admin-audit-timeline{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-audit-timeline__title{margin:0;font-family:var(--uid-font-family-display);font-size:var(--uid-font-size-lg, 16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-audit-timeline__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-audit-timeline__item{position:relative;display:flex;gap:var(--uid-space-sm)}.admin-audit-timeline__item:not(:last-child):after{content:"";position:absolute;left:11px;top:24px;bottom:calc(-1 * var(--uid-space-md));width:2px;background:var(--uid-border-subtle)}.admin-audit-timeline__icon{position:relative;z-index:1;flex:none;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-audit-timeline__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;padding-top:0}.admin-audit-timeline__row{display:flex;align-items:center;gap:var(--uid-space-2xs);flex-wrap:wrap}.admin-audit-timeline__row:first-child{min-height:24px}.admin-audit-timeline__actor{font-size:13px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-audit-timeline__verb{font-size:13px;color:var(--uid-text-secondary)}.admin-audit-timeline__when{margin-left:auto;font-size:12px;color:var(--uid-text-tertiary)}.admin-audit-timeline__detail{font-size:12px;color:var(--uid-text-tertiary)}.admin-audit-timeline__diff{list-style:none;margin:var(--uid-space-2xs) 0 0;padding:0;display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:var(--uid-space-md);row-gap:2px}.admin-audit-timeline__diff-row{display:contents;font-size:12px}.admin-audit-timeline__diff-field{font-weight:var(--uid-font-weight-medium);color:var(--uid-text-secondary);align-self:baseline}.admin-audit-timeline__diff-values{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:var(--uid-space-xs);min-width:0;align-self:baseline}.admin-audit-timeline__diff-before{color:var(--uid-text-tertiary);text-decoration:line-through;word-break:break-word}.admin-audit-timeline__diff-arrow{color:var(--uid-text-tertiary)}.admin-audit-timeline__diff-after{color:var(--uid-text-primary);word-break:break-word}.admin-audit-timeline__empty,.admin-audit-timeline__error{font-size:13px;color:var(--uid-text-tertiary)}.admin-audit-timeline__error{color:var(--uid-color-danger, #dc2626)}.admin-audit-timeline__loading{display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-resource-view__alert{margin-bottom:var(--uid-space-md)}.admin-resource-view__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-resource-view__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-resource-view__hd-left{display:flex;flex-direction:column;gap:var(--uid-space-2xs);min-width:0}.admin-resource-view__hd-right{display:flex;align-items:center;gap:var(--uid-space-sm);flex:none}.admin-resource-view__back{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:0;margin:0;font-size:13px;color:var(--uid-text-tertiary);background:transparent;border:0;cursor:pointer;align-self:flex-start}.admin-resource-view__back:hover{color:var(--uid-text-primary)}.admin-resource-view__meta{display:flex;align-items:center;gap:var(--uid-space-sm);margin-top:var(--uid-space-2xs)}.admin-resource-view__uid{font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:12px;color:var(--uid-text-tertiary);letter-spacing:.02em}.admin-status-badge{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:2px 8px 2px 6px;border-radius:var(--uid-radius-sm);font-size:12px;font-weight:var(--uid-font-weight-medium);text-transform:capitalize}.admin-status-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.admin-status-badge[data-variant=success]{background:color-mix(in srgb,var(--uid-color-success, #10b981) 15%,transparent);color:var(--uid-color-success, #10b981)}.admin-status-badge[data-variant=warning]{background:color-mix(in srgb,var(--uid-color-warning, #f59e0b) 15%,transparent);color:var(--uid-color-warning, #f59e0b)}.admin-status-badge[data-variant=danger]{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 15%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-status-badge[data-variant=neutral],.admin-status-badge[data-variant=muted]{background:var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-resource-view__grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--uid-space-md);align-items:start}@media(max-width:1024px){.admin-resource-view__grid{grid-template-columns:1fr}}.admin-resource-view__main{display:flex;flex-direction:column;gap:var(--uid-space-md);min-width:0}.admin-resource-view__aside,.admin-resource-view__card{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-resource-view__card-title{margin:0;font-family:var(--uid-font-family-display);font-size:var(--uid-font-size-lg, 16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-resource-view__metrics{display:flex;flex-direction:column;gap:var(--uid-space-md);margin:0;padding:0}.admin-resource-view__metric-label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:var(--uid-font-weight-medium);color:var(--uid-text-tertiary);margin:0}.admin-resource-view__metric-value{font-size:14px;color:var(--uid-text-primary);margin:4px 0 0;font-variant-numeric:tabular-nums}.admin-2fa{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-2fa__panel{display:flex;flex-direction:column;gap:var(--uid-space-sm);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);background:var(--uid-surface-base)}.admin-2fa__panel--success{border-color:color-mix(in srgb,var(--uid-color-success, #10b981) 35%,transparent);background:color-mix(in srgb,var(--uid-color-success, #10b981) 5%,transparent)}.admin-2fa__lead{margin:0;color:var(--uid-text-secondary);font-size:14px}.admin-2fa__steps{padding-left:20px;display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-2fa__steps li{font-size:14px;color:var(--uid-text-primary)}.admin-2fa__secret{display:inline-flex;align-items:center;gap:var(--uid-space-sm);margin-top:6px;padding:6px 10px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:13px}.admin-2fa__copy{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:0;background:transparent;border-radius:var(--uid-radius-sm);cursor:pointer;font-size:11px;color:var(--uid-text-secondary)}.admin-2fa__copy:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-2fa__uri{display:block;margin-top:6px;padding:6px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-sm);font-size:11px;word-break:break-all}.admin-2fa__hint{margin:6px 0 0;font-size:12px;color:var(--uid-text-tertiary)}.admin-2fa__qr{display:inline-block;margin-top:8px;padding:12px;background:#fff;border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md)}.admin-2fa__qr svg{display:block;width:200px;height:200px}.admin-2fa__code-row{display:inline-flex;align-items:center;gap:var(--uid-space-sm);margin-top:6px}.admin-2fa__code-input{width:140px}.admin-2fa__error{margin:0;color:var(--uid-color-danger, #dc2626);font-size:13px}.admin-2fa__codes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}.admin-2fa__codes-item{padding:6px 8px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-sm);font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:12px;text-align:center}.admin-2fa__manage{display:flex;flex-wrap:wrap;gap:var(--uid-space-sm);align-items:center}.admin-profile__layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:var(--uid-space-lg);align-items:start}.admin-profile__nav{display:flex;flex-direction:column;gap:2px}.admin-profile__nav-item{appearance:none;border:0;background:transparent;text-align:left;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-sm);border-radius:var(--uid-radius-md);font-size:13px;color:var(--uid-text-secondary);cursor:pointer}.admin-profile__nav-item:hover{background:var(--uid-surface-hover);color:var(--uid-text-primary)}.admin-profile__nav-item--active{background:var(--uid-surface-base);color:var(--uid-text-primary);font-weight:var(--uid-font-weight-medium)}.admin-profile__nav-icon{width:14px;height:14px;flex:none}.admin-profile__content{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-profile__card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--uid-space-md)}.admin-profile__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-profile__card-ft{margin-top:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-profile__hint{margin:0;font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary)}.admin-profile__hero{display:flex;align-items:center;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-profile__hero-text{display:flex;flex-direction:column;gap:4px}.admin-profile__hero-name{font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-profile__hero-meta{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-profile__form{display:grid;grid-template-columns:1fr 1fr;gap:var(--uid-space-md)}@media(max-width:720px){.admin-profile__form{grid-template-columns:1fr}.admin-profile__layout{grid-template-columns:minmax(0,1fr)}.admin-profile__nav{flex-direction:row;overflow-x:auto;gap:var(--uid-space-xs);padding-bottom:var(--uid-space-xs);scrollbar-width:thin}.admin-profile__nav-item{flex:none;white-space:nowrap}}.admin-notifs-page[data-v-4ef227b5]{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-notifs-page__head[data-v-4ef227b5]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);flex-wrap:wrap}.admin-notifs-page__sub[data-v-4ef227b5]{margin:4px 0 0;font-size:13px;color:var(--uid-color-text-secondary, #62686f)}.admin-notifs-page__tabs[data-v-4ef227b5]{display:flex;gap:4px}.admin-notifs-page__tab[data-v-4ef227b5]{padding:6px 12px;border:0;border-radius:6px;background:transparent;color:var(--uid-color-text-secondary, #62686f);font:inherit;font-size:13px;cursor:pointer}.admin-notifs-page__tab--active[data-v-4ef227b5]{background:var(--uid-color-surface-2, #f3f4f6);color:var(--uid-color-text, #1f2937);font-weight:500}.admin-notifs-page__item--unread[data-v-4ef227b5]{border-left:3px solid var(--uid-color-primary, #2dd4bf)}.admin-notifs-page__row[data-v-4ef227b5]{display:flex;align-items:flex-start;gap:10px}.admin-notifs-page__dot[data-v-4ef227b5]{width:8px;height:8px;margin-top:6px;border-radius:50%;flex:none;background:var(--uid-color-text-secondary, #9ca3af)}.admin-notifs-page__dot[data-kind=success][data-v-4ef227b5]{background:var(--uid-success, #10b981)}.admin-notifs-page__dot[data-kind=warning][data-v-4ef227b5]{background:var(--uid-warning, #f59e0b)}.admin-notifs-page__dot[data-kind=danger][data-v-4ef227b5]{background:var(--uid-danger, #ef4444)}.admin-notifs-page__body[data-v-4ef227b5]{flex:1;min-width:0}.admin-notifs-page__item-title[data-v-4ef227b5]{font-weight:500;color:var(--uid-color-text, #1f2937);text-decoration:none}a.admin-notifs-page__item-title[data-v-4ef227b5]:hover{text-decoration:underline}.admin-notifs-page__item-body[data-v-4ef227b5]{margin:2px 0 0;font-size:13px;color:var(--uid-color-text-secondary, #62686f)}.admin-notifs-page__time[data-v-4ef227b5]{display:block;margin-top:4px;font-size:12px;color:var(--uid-color-text-secondary, #9ca3af)}.admin-notifs-page__actions[data-v-4ef227b5]{display:flex;gap:4px;flex:none}.admin-notifs-page__empty[data-v-4ef227b5]{color:var(--uid-color-text-secondary, #62686f)}.admin-notifs-page__pager[data-v-4ef227b5]{display:flex;align-items:center;gap:var(--uid-space-md)}.admin-notifs-page__pager-info[data-v-4ef227b5]{font-size:13px;color:var(--uid-color-text-secondary, #62686f)}@media(max-width:640px){.admin-notifs-page__row[data-v-4ef227b5]{flex-wrap:wrap}.admin-notifs-page__actions[data-v-4ef227b5]{width:100%;justify-content:flex-end}}.admin-stats-widget{display:flex;flex-direction:column;gap:var(--uid-space-sm);min-width:0}.admin-stats-widget__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-stats-widget__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--uid-space-md)}.admin-chart-legend{list-style:none;margin:var(--uid-space-xs) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--uid-space-2xs) var(--uid-space-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary)}.admin-chart-legend__item{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);min-width:0}.admin-chart-legend__swatch{width:10px;height:10px;border-radius:3px;flex:none}.admin-chart-legend__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-chart-tooltip{position:absolute;z-index:2;pointer-events:none;min-width:120px;max-width:260px;padding:var(--uid-space-xs) var(--uid-space-sm);background:var(--uid-surface-overlay, var(--uid-surface-raised));border:1px solid var(--uid-border-default);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-primary)}.admin-chart-tooltip__title{margin-bottom:var(--uid-space-2xs);color:var(--uid-text-secondary);font-weight:var(--uid-font-weight-semibold)}.admin-chart-tooltip__row{display:flex;align-items:center;gap:var(--uid-space-xs);line-height:1.6}.admin-chart-tooltip__swatch{width:8px;height:8px;border-radius:2px;flex:none}.admin-chart-tooltip__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--uid-text-secondary)}.admin-chart-tooltip__value{font-variant-numeric:tabular-nums}.admin-chart__box{position:relative;flex:1 1 auto;min-width:0}.admin-chart__svg{position:absolute;inset:0;display:block;overflow:visible;touch-action:pan-y}.admin-chart__grid-line{stroke:var(--uid-border-subtle);stroke-width:1}.admin-chart__axis-line{stroke:var(--uid-border-default);stroke-width:1}.admin-chart__tick{font-size:11px;fill:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-chart__line{stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.admin-chart__point{stroke:var(--uid-surface-raised);stroke-width:2}.admin-chart__bar{stroke:var(--uid-surface-raised);stroke-width:0}.admin-chart--stacked .admin-chart__bar{stroke-width:1}.admin-chart__crosshair{stroke:var(--uid-border-hover, var(--uid-border-default));stroke-width:1;stroke-dasharray:3 3;pointer-events:none}.admin-chart__hover-band{fill:var(--uid-text-primary);fill-opacity:.05;pointer-events:none}.admin-chart__sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.admin-widget__hd{margin-bottom:var(--uid-space-sm)}.admin-widget__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-widget__desc{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-donut-widget__row{display:flex;align-items:center;gap:var(--uid-space-md);flex:1 1 auto;min-height:0}.admin-widget__empty{flex:1 1 auto;display:flex;align-items:center;justify-content:center;color:var(--uid-text-tertiary, #9ca3af);font-size:var(--uid-font-size-sm)}.admin-donut-widget__svg{width:120px;height:120px;flex:none}.admin-donut-widget__legend{list-style:none;margin:0;padding:0;flex:1;display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-donut-widget__legend li{display:flex;align-items:center;gap:var(--uid-space-sm);font-size:var(--uid-font-size-xs)}.admin-donut-widget__dot{width:10px;height:10px;border-radius:var(--uid-radius-full);flex:none}.admin-donut-widget__label{flex:1;color:var(--uid-text-primary)}.admin-donut-widget__value{color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-widget__table--clickable[data-v-c9bc6a1d] tbody tr{cursor:pointer}.admin-heatmap{display:flex;flex-direction:column;gap:2px;font-size:var(--uid-font-size-xs, 11px)}.admin-heatmap__cols-axis{display:grid;grid-template-columns:32px repeat(var(--admin-heatmap-cols),1fr);gap:2px;color:var(--uid-text-tertiary, #9ca3af);margin-bottom:4px}.admin-heatmap__cols-axis:before{content:""}.admin-heatmap__col-label{font-size:10px;text-align:center;white-space:nowrap}.admin-heatmap__row{display:grid;grid-template-columns:32px 1fr;gap:6px;align-items:center}.admin-heatmap__row-label{color:var(--uid-text-secondary, #6b7280);font-size:11px;text-align:right}.admin-heatmap__cells{display:grid;grid-template-columns:repeat(var(--admin-heatmap-cols),1fr);gap:2px}.admin-heatmap__cell{display:block;width:100%;height:14px;border-radius:2px;background:var(--uid-color-primary, #14b8a6);opacity:0;transition:transform 80ms ease}.admin-heatmap__cell:hover{transform:scale(1.4);z-index:1}.admin-heatmap__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-gauge-widget__body{flex:1 1 auto;display:flex;align-items:center;justify-content:center;min-height:0}.admin-markdown-widget{color:var(--uid-text-secondary)}.admin-chart__radar-shape{stroke-width:2;stroke-linejoin:round}.admin-chart__radar-label{fill:var(--uid-text-secondary)}.admin-widget__iframe[data-v-0dbdfc76]{width:100%;border:0;border-radius:var(--uid-radius-md, 8px);background:var(--uid-color-bg-subtle, transparent)}.admin-tags{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:36px;padding:4px 8px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);cursor:text}.admin-tags--focused{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-tags--disabled{opacity:.6;cursor:not-allowed}.admin-tags__chip{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 8px;background:color-mix(in srgb,var(--uid-accent) 14%,transparent);color:var(--uid-accent);border-radius:var(--uid-radius-sm);font-size:12px;font-weight:500;font-family:var(--uid-font-family-mono, ui-monospace, monospace)}.admin-tags__chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;background:transparent;color:inherit;border-radius:50%;cursor:pointer}.admin-tags__chip-remove:hover{background:color-mix(in srgb,var(--uid-accent) 28%,transparent)}.admin-tags__input{flex:1;min-width:80px;height:24px;padding:0 4px;border:0;background:transparent;outline:none;font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-tags__dropdown{z-index:var(--uid-z-popover, 1000);margin:0;padding:4px;display:flex;flex-direction:column;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);max-height:320px;overflow-y:auto}.admin-tags__group-label{padding:8px 10px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-semibold);position:sticky;top:0;background:var(--uid-surface-raised);z-index:1}.admin-tags__group-label:first-child{padding-top:4px}.admin-tags__option{display:block;width:100%;text-align:left;padding:6px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);font-size:13px;cursor:pointer;color:var(--uid-text-primary);font-family:var(--uid-font-family-mono, ui-monospace, monospace)}.admin-tags__option:hover,.admin-tags__option--active{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-translatable{display:flex;flex-direction:column;gap:6px}.admin-translatable__tabs{display:inline-flex;align-items:center;gap:2px;align-self:flex-start;padding:2px;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md)}.admin-translatable__tab{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);font-size:11px;font-weight:600;color:var(--uid-text-secondary);cursor:pointer;letter-spacing:.04em}.admin-translatable__tab:hover{color:var(--uid-text-primary)}.admin-translatable__tab--active{background:var(--uid-surface-raised);color:var(--uid-text-primary);box-shadow:0 1px 2px #0000000a}.admin-translatable__dot{width:5px;height:5px;border-radius:50%;background:var(--uid-color-success, #10b981)}.admin-translatable__textarea{width:100%;padding:8px 10px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font:inherit;font-size:13px;resize:vertical}.admin-translatable__textarea:focus{outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);border-color:var(--uid-accent)}.admin-wysiwyg-wrap[data-v-86c08b9f]{position:relative}.admin-wysiwyg__file-input[data-v-86c08b9f]{display:none}.admin-wysiwyg-img__handle[data-v-86c08b9f]{position:absolute;background:var(--uid-color-primary, #2dd4bf);border:2px solid #fff;border-radius:2px;cursor:nwse-resize;z-index:20;box-shadow:0 1px 3px #0003}.admin-wysiwyg-img__handle--ne[data-v-86c08b9f],.admin-wysiwyg-img__handle--sw[data-v-86c08b9f]{cursor:nesw-resize}.admin-wysiwyg-img__dropline[data-v-86c08b9f]{position:absolute;height:2px;background:var(--uid-color-primary, #2dd4bf);pointer-events:none;z-index:19;box-shadow:0 0 0 1px #2dd4bf66}.admin-wysiwyg-img--selected{outline:2px solid var(--uid-color-primary, #2dd4bf);outline-offset:1px;cursor:move}.admin-file-field[data-v-afcb2d73]{display:flex;flex-direction:column;gap:6px}.admin-file-field__label[data-v-afcb2d73]{font-size:13px;font-weight:500}.admin-file-field__required[data-v-afcb2d73]{color:var(--uid-color-danger, #dc2626);margin-left:2px}.admin-file-field__drop[data-v-afcb2d73]{border:2px dashed var(--uid-color-border, #d1d5db);border-radius:8px;padding:24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,border-color .12s ease;color:var(--uid-color-text-secondary, #62686f)}.admin-file-field__drop[data-v-afcb2d73]:hover,.admin-file-field__drop--over[data-v-afcb2d73]{border-color:var(--uid-color-primary, #2dd4bf);background:var(--uid-color-surface-2, #f3f4f6)}.admin-file-field__hint[data-v-afcb2d73]{margin:8px 0 0;font-size:13px}.admin-file-field__input[data-v-afcb2d73]{display:none}.admin-file-field__preview[data-v-afcb2d73]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:8px}.admin-file-field__preview-info[data-v-afcb2d73]{display:flex;flex-direction:column;gap:2px;font-size:13px}.admin-file-field__preview-meta[data-v-afcb2d73]{color:var(--uid-color-text-secondary, #62686f);font-size:12px}.admin-file-field__help[data-v-afcb2d73]{font-size:12px;color:var(--uid-color-text-secondary, #62686f);margin:0}.admin-file-field__error[data-v-afcb2d73]{font-size:12px;color:var(--uid-color-danger, #dc2626);margin:0}.admin-image-cropper[data-v-dd3b40d1]{display:flex;flex-direction:column;gap:6px}.admin-image-cropper__label[data-v-dd3b40d1]{font-size:13px;font-weight:500}.admin-image-cropper__required[data-v-dd3b40d1]{color:var(--uid-color-danger, #dc2626);margin-left:2px}.admin-image-cropper__drop[data-v-dd3b40d1]{border:2px dashed var(--uid-color-border, #d1d5db);border-radius:8px;padding:32px 16px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,border-color .12s ease;color:var(--uid-color-text-secondary, #62686f)}.admin-image-cropper__drop[data-v-dd3b40d1]:hover,.admin-image-cropper__drop--over[data-v-dd3b40d1]{border-color:var(--uid-color-primary, #2dd4bf);background:var(--uid-color-surface-2, #f3f4f6)}.admin-image-cropper__hint[data-v-dd3b40d1]{margin:8px 0 0;font-size:13px}.admin-image-cropper__hint-sub[data-v-dd3b40d1]{margin:4px 0 0;font-size:12px;opacity:.7}.admin-image-cropper__input[data-v-dd3b40d1]{display:none}.admin-image-cropper__crop[data-v-dd3b40d1]{display:flex;flex-direction:column;gap:12px;user-select:none}.admin-image-cropper__canvas-wrap[data-v-dd3b40d1]{position:relative;background:#f3f4f6;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:8px;overflow:hidden}.admin-image-cropper__img[data-v-dd3b40d1]{display:block;pointer-events:none}.admin-image-cropper__rect[data-v-dd3b40d1]{position:absolute;border:2px solid var(--uid-color-primary, #2dd4bf);box-shadow:0 0 0 9999px #00000059;cursor:move;box-sizing:border-box}.admin-image-cropper__handle[data-v-dd3b40d1]{position:absolute;width:12px;height:12px;background:var(--uid-color-primary, #2dd4bf);border:2px solid white;border-radius:2px}.admin-image-cropper__handle--nw[data-v-dd3b40d1]{top:-7px;left:-7px;cursor:nwse-resize}.admin-image-cropper__handle--ne[data-v-dd3b40d1]{top:-7px;right:-7px;cursor:nesw-resize}.admin-image-cropper__handle--sw[data-v-dd3b40d1]{bottom:-7px;left:-7px;cursor:nesw-resize}.admin-image-cropper__handle--se[data-v-dd3b40d1]{bottom:-7px;right:-7px;cursor:nwse-resize}.admin-image-cropper__actions[data-v-dd3b40d1]{display:flex;gap:8px}.admin-image-cropper__preview[data-v-dd3b40d1]{display:flex;gap:16px;padding:12px;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:8px;align-items:center}.admin-image-cropper__preview-img[data-v-dd3b40d1]{max-width:160px;max-height:100px;border-radius:4px;background:repeating-conic-gradient(#eee 0% 25%,transparent 25% 50%) 0 0/16px 16px}.admin-image-cropper__preview-info[data-v-dd3b40d1]{display:flex;flex-direction:column;gap:4px;flex:1}.admin-image-cropper__preview-name[data-v-dd3b40d1]{font-size:13px;font-weight:500}.admin-image-cropper__preview-meta[data-v-dd3b40d1]{font-size:12px;color:var(--uid-color-text-secondary, #62686f)}.admin-image-cropper__preview-actions[data-v-dd3b40d1]{display:flex;gap:8px;margin-top:6px}.admin-image-cropper__help[data-v-dd3b40d1]{font-size:12px;color:var(--uid-color-text-secondary, #62686f);margin:0}.admin-image-cropper__error[data-v-dd3b40d1]{font-size:12px;color:var(--uid-color-danger, #dc2626);margin:0}.admin-keyvalue__rows[data-v-4d208b6b]{display:flex;flex-direction:column;gap:var(--uid-space-xs, 6px)}.admin-keyvalue__head[data-v-4d208b6b],.admin-keyvalue__row[data-v-4d208b6b]{display:grid;grid-template-columns:1fr 1fr 36px;gap:var(--uid-space-sm, 8px);align-items:center}.admin-keyvalue__head[data-v-4d208b6b]{font-size:12px;color:var(--uid-color-text-subtle, #6b7280)}.admin-keyvalue__add[data-v-4d208b6b]{margin-top:var(--uid-space-sm, 8px);align-self:flex-start}.admin-nested-fields[data-v-df29c244]{display:flex;flex-direction:column;gap:var(--uid-space-md, 12px)}.admin-repeater[data-v-3ec68540]{display:flex;flex-direction:column;gap:var(--uid-space-sm, 8px)}.admin-repeater__item-hd[data-v-3ec68540]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--uid-space-sm, 8px)}.admin-repeater__item-no[data-v-3ec68540]{font-size:12px;color:var(--uid-color-text-subtle, #6b7280)}.admin-repeater__add[data-v-3ec68540]{align-self:flex-start}.admin-builder[data-v-4a91ea0a]{display:flex;flex-direction:column;gap:var(--uid-space-sm, 8px)}.admin-builder__block-hd[data-v-4a91ea0a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--uid-space-sm, 8px)}.admin-builder__block-type[data-v-4a91ea0a]{font-weight:600;font-size:13px}.admin-builder__add[data-v-4a91ea0a]{align-self:flex-start}.admin-generated__row{display:flex;gap:var(--uid-space-sm, 8px);align-items:flex-start}.admin-generated__input{flex:1}.admin-markdown-field{display:flex;flex-direction:column;gap:var(--uid-space-xs, 6px)}.admin-markdown-field__bar{display:flex;justify-content:space-between;align-items:center;gap:var(--uid-space-sm, 8px);flex-wrap:wrap}.admin-markdown-field__tools,.admin-markdown-field__modes{display:flex;gap:var(--uid-space-2xs, 2px)}.admin-markdown-field__modes{margin-left:auto}.admin-markdown-field__panes{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--uid-space-sm, 8px)}.admin-markdown-field--split .admin-markdown-field__panes{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-markdown-field__editor textarea{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-sm);min-height:var(--admin-md-height, auto)}.admin-markdown-field__preview{padding:var(--uid-space-sm, 8px) var(--uid-space-md, 12px);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);overflow:auto}@media(max-width:720px){.admin-markdown-field--split .admin-markdown-field__panes{grid-template-columns:minmax(0,1fr)}}.admin-code-field{--admin-code-line: 20px;--admin-code-pad: var(--uid-space-sm, 8px);border:1px solid var(--uid-border-default, var(--uid-border-subtle));border-radius:var(--uid-radius-md);overflow:auto;background:var(--uid-surface-sunken, var(--uid-surface-raised))}.admin-code-field:focus-within{border-color:var(--uid-accent)}.admin-code-field__lang{padding:var(--uid-space-2xs, 2px) var(--uid-space-sm, 8px);border-bottom:1px solid var(--uid-border-subtle);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);text-transform:lowercase}.admin-code-field__body{display:flex;align-items:stretch}.admin-code-field__gutter{margin:0;padding:var(--admin-code-pad) var(--uid-space-xs, 6px);min-width:2.5em;text-align:right;user-select:none;color:var(--uid-text-tertiary);border-right:1px solid var(--uid-border-subtle);font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs);line-height:var(--admin-code-line)}.admin-code-field__input{flex:1;min-width:0}.admin-code-field .admin-code-field__input textarea,.admin-code-field .admin-code-field__input textarea:focus-visible{padding:var(--admin-code-pad);border:0;border-radius:0;box-shadow:none;background:transparent;font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs);line-height:var(--admin-code-line);white-space:pre;overflow-x:auto;overflow-y:hidden;tab-size:4}.admin-slider-field__marks{position:relative;height:1.5em;margin-top:var(--uid-space-2xs, 2px);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-slider-field__mark{position:absolute;transform:translate(-50%);white-space:nowrap}.admin-slider-field__mark:first-child{transform:none}.admin-slider-field__mark:last-child:not(:first-child){transform:translate(-100%)}.admin-date-range-field{display:flex;flex-direction:column;gap:var(--uid-space-xs, 6px)}.admin-date-range-field__presets{display:flex;flex-wrap:wrap;gap:var(--uid-space-2xs, 2px)}.admin-morph-field{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--uid-space-sm, 8px)}@media(max-width:560px){.admin-morph-field{grid-template-columns:minmax(0,1fr)}}.admin-label-field{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);white-space:pre-wrap;word-break:break-word;padding:var(--uid-space-2xs, 2px) 0}.admin-group-field__set{margin:0;padding:var(--uid-space-md, 12px);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-lg);min-width:0}.admin-group-field__title{padding:0 var(--uid-space-2xs, 2px);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-group-field__note{margin:0 0 var(--uid-space-sm, 8px);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-group-field__body{display:flex;flex-direction:column;gap:var(--uid-space-md, 12px)}.admin-group-field--columns .admin-group-field__body{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.admin-group-field--inline .admin-group-field__body{flex-direction:row;flex-wrap:wrap;align-items:flex-start}.admin-group-field--inline .admin-group-field__body>*{flex:1 1 160px;min-width:0}.admin-group-field__error{margin:var(--uid-space-2xs, 2px) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-danger)}.admin-section{margin-bottom:var(--uid-space-md)}.admin-section__header{margin-bottom:var(--uid-space-sm)}.admin-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-embedded-table[data-v-dc0bb63a]{display:flex;flex-direction:column;gap:var(--uid-spacing-sm, 12px)}.admin-embedded-table__toolbar[data-v-dc0bb63a]{display:flex;align-items:center;gap:var(--uid-spacing-sm, 8px)}.admin-embedded-table__row-delete[data-v-dc0bb63a]{background:none;border:none;cursor:pointer;color:var(--uid-color-text-secondary, #62686f);padding:4px;border-radius:var(--uid-radius-sm, 4px)}.admin-embedded-table__row-delete[data-v-dc0bb63a]:hover{background:var(--uid-color-surface-2, #f3f4f6);color:var(--uid-color-danger, #dc2626)}.admin-embedded-table__draft[data-v-dc0bb63a]{background:var(--uid-color-surface-2, #f9fafb);border:1px dashed var(--uid-color-border, #e5e7eb);border-radius:var(--uid-radius-md, 8px);padding:var(--uid-spacing-md, 16px);display:flex;flex-direction:column;gap:var(--uid-spacing-sm, 12px)}.admin-embedded-table__draft-cells[data-v-dc0bb63a]{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--uid-spacing-sm, 12px)}.admin-embedded-table__draft-cell[data-v-dc0bb63a]{display:flex;flex-direction:column;gap:4px}.admin-embedded-table__draft-label[data-v-dc0bb63a]{font-size:var(--uid-font-size-sm, 12px);color:var(--uid-color-text-secondary, #62686f)}.admin-embedded-table__draft-input[data-v-dc0bb63a]{height:32px;padding:0 8px;border:1px solid var(--uid-color-border, #e5e7eb);border-radius:var(--uid-radius-sm, 4px);font:inherit;font-size:13px}.admin-embedded-table__draft-actions[data-v-dc0bb63a]{display:flex;gap:var(--uid-spacing-sm, 8px)}.admin-wizard-layout{--uid-layout-wizard-content-padding: var(--uid-space-lg) 0}.admin-wizard-layout .uid-layout-wizard__stepper,.admin-wizard-layout .uid-layout-wizard__nav{padding-left:0;padding-right:0}:where(.admin-wrapper-layout){display:flex;flex-direction:column;gap:var(--uid-space-md);min-width:0}.admin-listener{position:relative;min-width:0}.admin-listener--loading>:first-child{opacity:.6;transition:opacity .15s ease}.admin-listener__spinner{position:absolute;top:0;right:0;pointer-events:none}.admin-infolist-text{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);word-break:break-word;white-space:pre-wrap}.admin-infolist-text--mono{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs)}.admin-infolist-icon{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:var(--uid-font-size-sm)}.admin-infolist-icon--on{color:var(--uid-success)}.admin-infolist-icon--off{color:var(--uid-text-tertiary)}.admin-infolist-icon__glyph{flex:none}.admin-repeatable{display:flex;flex-direction:column;gap:8px;padding:8px 0}.admin-repeatable__lbl{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);text-transform:uppercase;letter-spacing:.04em;font-weight:var(--uid-font-weight-medium)}.admin-repeatable__empty{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm);margin:0}.admin-repeatable__tbl{border-collapse:collapse;width:100%;font-size:var(--uid-font-size-sm)}.admin-repeatable__tbl th,.admin-repeatable__tbl td{border:1px solid var(--uid-border-subtle, #e5e7eb);padding:6px 10px;text-align:left;vertical-align:top}.admin-repeatable__tbl th{background:var(--uid-surface-muted, #f9fafb);font-weight:var(--uid-font-weight-semibold, 600);color:var(--uid-text-secondary, #4b5563);font-size:var(--uid-font-size-xs, 12px);text-transform:uppercase;letter-spacing:.04em}.admin-repeatable__idx{width:40px;color:var(--uid-text-tertiary, #6b7280);text-align:center!important}.admin-repeatable__cards{display:flex;flex-direction:column;gap:8px}.admin-repeatable__card{border:1px solid var(--uid-border-subtle, #e5e7eb);border-radius:6px;padding:10px 14px}.admin-repeatable__card-hd{font-size:12px;font-weight:600;color:var(--uid-text-tertiary, #6b7280);margin-bottom:4px}.admin-repeatable__dl{display:grid;grid-template-columns:200px 1fr;gap:4px 12px;margin:0}.admin-repeatable__dl dt{color:var(--uid-text-tertiary, #6b7280);font-size:12px}.admin-repeatable__dl dd{margin:0;font-size:13px}.admin-repeatable__inline{display:flex;flex-wrap:wrap;gap:6px}.admin-repeatable__chip{padding:3px 10px;border:1px solid var(--uid-border-subtle, #e5e7eb);border-radius:999px;font-size:12px}.admin-infolist-color{display:inline-flex;align-items:center;gap:var(--uid-space-xs, 6px);font-size:var(--uid-font-size-sm);color:var(--uid-text-primary)}.admin-infolist-color__swatch{width:1.25em;height:1.25em;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle);flex:none}.admin-infolist-color__value{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs)}.admin-infolist-image{display:flex;flex-wrap:wrap;gap:var(--uid-space-xs, 6px)}.admin-infolist-image__item{display:inline-flex;padding:0;border:0;background:none}.admin-infolist-image__item--zoom{cursor:zoom-in}.admin-infolist-image__item--zoom:focus-visible{outline:2px solid var(--uid-accent);outline-offset:2px}.admin-infolist-image__img{display:block;object-fit:cover;border-radius:var(--uid-radius-md);border:1px solid var(--uid-border-subtle)}.admin-infolist-image__img--rounded{border-radius:50%}.admin-infolist-image__full{display:block;max-width:100%;max-height:75vh;margin:0 auto}.admin-infolist-map{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-xs, 6px);font-size:var(--uid-font-size-sm);color:var(--uid-text-primary)}.admin-infolist-map__coords{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs)}.admin-infolist-relation{display:inline-flex;flex-wrap:wrap;gap:var(--uid-space-2xs, 2px) var(--uid-space-sm, 8px);font-size:var(--uid-font-size-sm);color:var(--uid-text-primary)}.admin-infolist-markdown,.admin-infolist-code{width:100%}.admin-infolist-group{display:flex;flex-direction:column;width:100%;padding-left:var(--uid-space-md, 12px);border-left:2px solid var(--uid-border-subtle)}.admin-infolist-group--columns,.admin-infolist-group--inline{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 var(--uid-space-md, 12px)}.admin-status-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-status-page__hint{margin:0;color:var(--uid-text-secondary);font-size:var(--uid-font-size-sm)}.admin-import-wizard{max-width:1100px;margin:0 auto}.admin-import-wizard__card{margin-top:var(--uid-space-md)}.admin-import-wizard__card-hd{margin-bottom:var(--uid-space-md)}.admin-import-wizard__card-hd h3{margin:0 0 var(--uid-space-2xs);font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold)}.admin-import-wizard__card-hd p{margin:0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-import-wizard__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-import-wizard__mapping{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-import-wizard__map-row{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--uid-space-md);align-items:center}.admin-import-wizard__map-source{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-import-wizard__map-sample{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-xs);font-style:italic}.admin-import-wizard__map-arrow{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-md)}.admin-import-wizard__kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md);margin-top:var(--uid-space-md)}.admin-import-wizard__nav{display:flex;align-items:center;gap:var(--uid-space-sm);margin-top:var(--uid-space-md)}.admin-gallery__group{margin-bottom:var(--uid-space-2xl)}.admin-gallery__group-title{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md)}@media(max-width:960px){.admin-gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.admin-gallery__grid{grid-template-columns:1fr}}.admin-gallery__card{display:flex;flex-direction:column}.admin-gallery__card-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);margin-bottom:var(--uid-space-xs)}.admin-gallery__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-gallery__card-type{font-family:var(--uid-font-family-mono);font-size:11px;color:var(--uid-text-tertiary);background:var(--uid-surface-base);padding:1px 6px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle)}.admin-gallery__card-desc{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);line-height:var(--uid-line-height-normal)}.admin-gallery__card-demo{flex:1;display:flex;flex-direction:column;justify-content:flex-end}
package/dist/tinymce.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),c=require("./formState-yUTD6wAR.cjs"),u=require("./i18n-BCRWWhHE.cjs"),m={key:0,class:"admin-field__label"},p={key:0,class:"admin-field__required","aria-hidden":"true"},f={class:"admin-field__control"},g={key:1,class:"admin-field__error"},b={key:2,class:"admin-field__help"},y=e.defineComponent({__name:"TinymceField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},init:{default:()=>({})},apiKey:{default:null},imageUploadUrl:{default:"/api/admin/uploads"},disabled:{type:Boolean,default:!1}},setup(l){const a=l,t=c.useFormState(),o=e.computed(()=>t.getField(a.name)??""),i=e.computed(()=>t.errors[a.name]?.[0]);function d(n){t.setField(a.name,n)}const r=e.computed(()=>({height:400,menubar:!1,branding:!1,plugins:"advlist autolink lists link image charmap preview anchor pagebreak searchreplace wordcount visualblocks code fullscreen insertdatetime media table emoticons help paste",toolbar:"undo redo | styles | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media table | code preview fullscreen",language:"ru",paste_data_images:!0,images_upload_url:a.imageUploadUrl,...a.init??{}})),s=e.defineComponent({props:{modelValue:String,init:Object,apiKey:String,disabled:Boolean},setup(){return()=>e.h("textarea",{class:"tinymce-fallback",placeholder:u.trSafe("@tinymce/tinymce-vue не загружен — host передаёт actual Editor")})}});return(n,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":i.value!==void 0}])},[l.label?(e.openBlock(),e.createElementBlock("label",m,[e.createElementVNode("span",null,e.toDisplayString(l.label),1),l.required?(e.openBlock(),e.createElementBlock("span",p,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",f,[e.createVNode(e.unref(s),{"model-value":o.value,init:r.value,"api-key":l.apiKey??void 0,disabled:l.disabled,"onUpdate:modelValue":d},null,8,["model-value","init","api-key","disabled"])]),i.value?(e.openBlock(),e.createElementBlock("p",g,e.toDisplayString(i.value),1)):l.help?(e.openBlock(),e.createElementBlock("p",b,e.toDisplayString(l.help),1)):e.createCommentVNode("",!0)],2))}});exports.TinymceField=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),c=require("./formState-DqHe1Jgd.cjs"),u=require("./i18n-BCRWWhHE.cjs"),m={key:0,class:"admin-field__label"},p={key:0,class:"admin-field__required","aria-hidden":"true"},f={class:"admin-field__control"},g={key:1,class:"admin-field__error"},b={key:2,class:"admin-field__help"},y=e.defineComponent({__name:"TinymceField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},init:{default:()=>({})},apiKey:{default:null},imageUploadUrl:{default:"/api/admin/uploads"},disabled:{type:Boolean,default:!1}},setup(l){const a=l,t=c.useFormState(),o=e.computed(()=>t.getField(a.name)??""),i=e.computed(()=>t.errors[a.name]?.[0]);function d(n){t.setField(a.name,n)}const r=e.computed(()=>({height:400,menubar:!1,branding:!1,plugins:"advlist autolink lists link image charmap preview anchor pagebreak searchreplace wordcount visualblocks code fullscreen insertdatetime media table emoticons help paste",toolbar:"undo redo | styles | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media table | code preview fullscreen",language:"ru",paste_data_images:!0,images_upload_url:a.imageUploadUrl,...a.init??{}})),s=e.defineComponent({props:{modelValue:String,init:Object,apiKey:String,disabled:Boolean},setup(){return()=>e.h("textarea",{class:"tinymce-fallback",placeholder:u.trSafe("@tinymce/tinymce-vue не загружен — host передаёт actual Editor")})}});return(n,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":i.value!==void 0}])},[l.label?(e.openBlock(),e.createElementBlock("label",m,[e.createElementVNode("span",null,e.toDisplayString(l.label),1),l.required?(e.openBlock(),e.createElementBlock("span",p,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",f,[e.createVNode(e.unref(s),{"model-value":o.value,init:r.value,"api-key":l.apiKey??void 0,disabled:l.disabled,"onUpdate:modelValue":d},null,8,["model-value","init","api-key","disabled"])]),i.value?(e.openBlock(),e.createElementBlock("p",g,e.toDisplayString(i.value),1)):l.help?(e.openBlock(),e.createElementBlock("p",b,e.toDisplayString(l.help),1)):e.createCommentVNode("",!0)],2))}});exports.TinymceField=y;
2
2
  //# sourceMappingURL=tinymce.cjs.map
package/dist/tinymce.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as u, computed as d, h as b, openBlock as l, createElementBlock as i, normalizeClass as h, createElementVNode as c, toDisplayString as o, createCommentVNode as s, createVNode as y, unref as v } from "vue";
2
- import { u as _ } from "./formState-DeRZBwWH.js";
2
+ import { u as _ } from "./formState-DVU2igtT.js";
3
3
  import { t as k } from "./i18n-DXndsABq.js";
4
4
  const U = {
5
5
  key: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dskripchenko/laravel-admin",
3
- "version": "1.32.2",
3
+ "version": "1.34.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -69,6 +69,8 @@
69
69
  "scripts": {
70
70
  "dev": "vite build --watch",
71
71
  "build": "vite build && vue-tsc --emitDeclarationOnly",
72
+ "build:app": "vite build -c vite.app.config.ts && node scripts/app-source-hash.mjs --write",
73
+ "check:app": "node scripts/app-source-hash.mjs --check",
72
74
  "build:analyze": "ANALYZE=1 vite build && vue-tsc --emitDeclarationOnly",
73
75
  "test": "vitest run",
74
76
  "test:watch": "vitest",
@@ -113,7 +115,7 @@
113
115
  }
114
116
  ],
115
117
  "peerDependencies": {
116
- "@dskripchenko/ui": "^1.2.0",
118
+ "@dskripchenko/ui": "^1.4.0",
117
119
  "@dskripchenko/wysiwyg": "^0.2.0",
118
120
  "@tinymce/tinymce-vue": "^5",
119
121
  "@tiptap/starter-kit": "^2.4",
@@ -151,7 +153,7 @@
151
153
  }
152
154
  },
153
155
  "devDependencies": {
154
- "@dskripchenko/ui": "^1.2.0",
156
+ "@dskripchenko/ui": "^1.4.0",
155
157
  "@dskripchenko/wysiwyg": "^0.2.3",
156
158
  "@eslint/js": "^10.0.1",
157
159
  "@size-limit/preset-small-lib": "^12.1.0",
package/dist/.gitkeep DELETED
File without changes
@@ -1,41 +0,0 @@
1
- import { reactive as i, provide as d, inject as l } from "vue";
2
- const n = /* @__PURE__ */ Symbol("admin.form-state");
3
- function F(o = {}, f = {}, u) {
4
- const s = i(o), e = i({ ...f }), c = {
5
- state: s,
6
- errors: e,
7
- mode: u,
8
- setField(t, r) {
9
- s[t] = r, e[t] && delete e[t];
10
- },
11
- getField(t) {
12
- return s[t];
13
- },
14
- setError(t, r) {
15
- r === null || r.length === 0 ? delete e[t] : e[t] = r;
16
- },
17
- setErrors(t) {
18
- for (const r of Object.keys(e)) delete e[r];
19
- Object.assign(e, t);
20
- },
21
- clearErrors() {
22
- for (const t of Object.keys(e)) delete e[t];
23
- }
24
- };
25
- return d(n, c), c;
26
- }
27
- function p() {
28
- const o = l(n);
29
- if (!o)
30
- throw new Error("useFormState() called outside of provideFormState() scope");
31
- return o;
32
- }
33
- function y() {
34
- return l(n, null);
35
- }
36
- export {
37
- F as p,
38
- y as t,
39
- p as u
40
- };
41
- //# sourceMappingURL=formState-DeRZBwWH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formState-DeRZBwWH.js","sources":["../resources/ts/components/render/formState.ts"],"sourcesContent":["/**\n * The form-state composable: it exposes the state and the errors through\n * provide/inject.\n *\n * The container — a resource form, a settings page — calls\n * `provideFormState()`, and the field components in the tree call\n * `useFormState()` to read a value and change a field.\n *\n * The state is a reactive proxy that setField mutates by key; the errors are a\n * separate reactive map of field name → string[] messages.\n */\n\nimport { inject, provide, reactive, type InjectionKey } from 'vue'\n\nexport interface FormStateContext {\n state: Record<string, unknown>\n errors: Record<string, string[]>\n /** The form's context: FieldRenderer hides the fields with visibility[mode]=false. */\n mode?: 'create' | 'update' | 'view'\n setField: (name: string, value: unknown) => void\n getField: (name: string) => unknown\n setError: (name: string, messages: string[] | null) => void\n setErrors: (next: Record<string, string[]>) => void\n clearErrors: () => void\n}\n\nconst FormStateKey: InjectionKey<FormStateContext> = Symbol('admin.form-state')\n\n/**\n * Creates the form context and provides it to the descendants.\n *\n * The `initial` object given is wrapped into `reactive()`, so the mutations are\n * visible from outside too: the caller owns the state and may read it after a\n * submit.\n *\n * @param initial The state's initial values.\n * @param initialErrors The initial errors, for a re-render after a\n * ValidationError.\n */\nexport function provideFormState(\n initial: Record<string, unknown> = {},\n initialErrors: Record<string, string[]> = {},\n mode?: 'create' | 'update' | 'view',\n): FormStateContext {\n const state = reactive(initial)\n const errors = reactive<Record<string, string[]>>({ ...initialErrors })\n\n const ctx: FormStateContext = {\n state,\n errors,\n mode,\n setField(name, value) {\n ;(state as Record<string, unknown>)[name] = value\n // Clear that field's errors as it changes, as one expects.\n if (errors[name]) {\n delete errors[name]\n }\n },\n getField(name) {\n return (state as Record<string, unknown>)[name]\n },\n setError(name, messages) {\n if (messages === null || messages.length === 0) {\n delete errors[name]\n } else {\n errors[name] = messages\n }\n },\n setErrors(next) {\n for (const key of Object.keys(errors)) delete errors[key]\n Object.assign(errors, next)\n },\n clearErrors() {\n for (const key of Object.keys(errors)) delete errors[key]\n },\n }\n\n provide(FormStateKey, ctx)\n return ctx\n}\n\n/**\n * Returns the form context. It throws when called outside a\n * `provideFormState()`.\n */\nexport function useFormState(): FormStateContext {\n const ctx = inject(FormStateKey)\n if (!ctx) {\n throw new Error('useFormState() called outside of provideFormState() scope')\n }\n return ctx\n}\n\n/** The optional form: null when there is none. */\nexport function tryUseFormState(): FormStateContext | null {\n return inject(FormStateKey, null)\n}\n"],"names":["FormStateKey","provideFormState","initial","initialErrors","mode","state","reactive","errors","ctx","name","value","messages","next","key","provide","useFormState","inject","tryUseFormState"],"mappings":";AA0BA,MAAMA,2BAAsD,kBAAkB;AAavE,SAASC,EACdC,IAAmC,CAAA,GACnCC,IAA0C,CAAA,GAC1CC,GACkB;AAClB,QAAMC,IAAQC,EAASJ,CAAO,GACxBK,IAASD,EAAmC,EAAE,GAAGH,GAAe,GAEhEK,IAAwB;AAAA,IAC5B,OAAAH;AAAA,IACA,QAAAE;AAAA,IACA,MAAAH;AAAA,IACA,SAASK,GAAMC,GAAO;AAClB,MAAAL,EAAkCI,CAAI,IAAIC,GAExCH,EAAOE,CAAI,KACb,OAAOF,EAAOE,CAAI;AAAA,IAEtB;AAAA,IACA,SAASA,GAAM;AACb,aAAQJ,EAAkCI,CAAI;AAAA,IAChD;AAAA,IACA,SAASA,GAAME,GAAU;AACvB,MAAIA,MAAa,QAAQA,EAAS,WAAW,IAC3C,OAAOJ,EAAOE,CAAI,IAElBF,EAAOE,CAAI,IAAIE;AAAA,IAEnB;AAAA,IACA,UAAUC,GAAM;AACd,iBAAWC,KAAO,OAAO,KAAKN,CAAM,EAAG,QAAOA,EAAOM,CAAG;AACxD,aAAO,OAAON,GAAQK,CAAI;AAAA,IAC5B;AAAA,IACA,cAAc;AACZ,iBAAWC,KAAO,OAAO,KAAKN,CAAM,EAAG,QAAOA,EAAOM,CAAG;AAAA,IAC1D;AAAA,EAAA;AAGF,SAAAC,EAAQd,GAAcQ,CAAG,GAClBA;AACT;AAMO,SAASO,IAAiC;AAC/C,QAAMP,IAAMQ,EAAOhB,CAAY;AAC/B,MAAI,CAACQ;AACH,UAAM,IAAI,MAAM,2DAA2D;AAE7E,SAAOA;AACT;AAGO,SAASS,IAA2C;AACzD,SAAOD,EAAOhB,GAAc,IAAI;AAClC;"}
@@ -1,2 +0,0 @@
1
- "use strict";const o=require("vue"),n=Symbol("admin.form-state");function d(c={},l={},u){const s=o.reactive(c),t=o.reactive({...l}),i={state:s,errors:t,mode:u,setField(e,r){s[e]=r,t[e]&&delete t[e]},getField(e){return s[e]},setError(e,r){r===null||r.length===0?delete t[e]:t[e]=r},setErrors(e){for(const r of Object.keys(t))delete t[r];Object.assign(t,e)},clearErrors(){for(const e of Object.keys(t))delete t[e]}};return o.provide(n,i),i}function a(){const c=o.inject(n);if(!c)throw new Error("useFormState() called outside of provideFormState() scope");return c}function f(){return o.inject(n,null)}exports.provideFormState=d;exports.tryUseFormState=f;exports.useFormState=a;
2
- //# sourceMappingURL=formState-yUTD6wAR.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formState-yUTD6wAR.cjs","sources":["../resources/ts/components/render/formState.ts"],"sourcesContent":["/**\n * The form-state composable: it exposes the state and the errors through\n * provide/inject.\n *\n * The container — a resource form, a settings page — calls\n * `provideFormState()`, and the field components in the tree call\n * `useFormState()` to read a value and change a field.\n *\n * The state is a reactive proxy that setField mutates by key; the errors are a\n * separate reactive map of field name → string[] messages.\n */\n\nimport { inject, provide, reactive, type InjectionKey } from 'vue'\n\nexport interface FormStateContext {\n state: Record<string, unknown>\n errors: Record<string, string[]>\n /** The form's context: FieldRenderer hides the fields with visibility[mode]=false. */\n mode?: 'create' | 'update' | 'view'\n setField: (name: string, value: unknown) => void\n getField: (name: string) => unknown\n setError: (name: string, messages: string[] | null) => void\n setErrors: (next: Record<string, string[]>) => void\n clearErrors: () => void\n}\n\nconst FormStateKey: InjectionKey<FormStateContext> = Symbol('admin.form-state')\n\n/**\n * Creates the form context and provides it to the descendants.\n *\n * The `initial` object given is wrapped into `reactive()`, so the mutations are\n * visible from outside too: the caller owns the state and may read it after a\n * submit.\n *\n * @param initial The state's initial values.\n * @param initialErrors The initial errors, for a re-render after a\n * ValidationError.\n */\nexport function provideFormState(\n initial: Record<string, unknown> = {},\n initialErrors: Record<string, string[]> = {},\n mode?: 'create' | 'update' | 'view',\n): FormStateContext {\n const state = reactive(initial)\n const errors = reactive<Record<string, string[]>>({ ...initialErrors })\n\n const ctx: FormStateContext = {\n state,\n errors,\n mode,\n setField(name, value) {\n ;(state as Record<string, unknown>)[name] = value\n // Clear that field's errors as it changes, as one expects.\n if (errors[name]) {\n delete errors[name]\n }\n },\n getField(name) {\n return (state as Record<string, unknown>)[name]\n },\n setError(name, messages) {\n if (messages === null || messages.length === 0) {\n delete errors[name]\n } else {\n errors[name] = messages\n }\n },\n setErrors(next) {\n for (const key of Object.keys(errors)) delete errors[key]\n Object.assign(errors, next)\n },\n clearErrors() {\n for (const key of Object.keys(errors)) delete errors[key]\n },\n }\n\n provide(FormStateKey, ctx)\n return ctx\n}\n\n/**\n * Returns the form context. It throws when called outside a\n * `provideFormState()`.\n */\nexport function useFormState(): FormStateContext {\n const ctx = inject(FormStateKey)\n if (!ctx) {\n throw new Error('useFormState() called outside of provideFormState() scope')\n }\n return ctx\n}\n\n/** The optional form: null when there is none. */\nexport function tryUseFormState(): FormStateContext | null {\n return inject(FormStateKey, null)\n}\n"],"names":["FormStateKey","provideFormState","initial","initialErrors","mode","state","reactive","errors","ctx","name","value","messages","next","key","provide","useFormState","inject","tryUseFormState"],"mappings":"oCA0BMA,SAAsD,kBAAkB,EAavE,SAASC,EACdC,EAAmC,CAAA,EACnCC,EAA0C,CAAA,EAC1CC,EACkB,CAClB,MAAMC,EAAQC,EAAAA,SAASJ,CAAO,EACxBK,EAASD,EAAAA,SAAmC,CAAE,GAAGH,EAAe,EAEhEK,EAAwB,CAC5B,MAAAH,EACA,OAAAE,EACA,KAAAH,EACA,SAASK,EAAMC,EAAO,CAClBL,EAAkCI,CAAI,EAAIC,EAExCH,EAAOE,CAAI,GACb,OAAOF,EAAOE,CAAI,CAEtB,EACA,SAASA,EAAM,CACb,OAAQJ,EAAkCI,CAAI,CAChD,EACA,SAASA,EAAME,EAAU,CACnBA,IAAa,MAAQA,EAAS,SAAW,EAC3C,OAAOJ,EAAOE,CAAI,EAElBF,EAAOE,CAAI,EAAIE,CAEnB,EACA,UAAUC,EAAM,CACd,UAAWC,KAAO,OAAO,KAAKN,CAAM,EAAG,OAAOA,EAAOM,CAAG,EACxD,OAAO,OAAON,EAAQK,CAAI,CAC5B,EACA,aAAc,CACZ,UAAWC,KAAO,OAAO,KAAKN,CAAM,EAAG,OAAOA,EAAOM,CAAG,CAC1D,CAAA,EAGFC,OAAAA,EAAAA,QAAQd,EAAcQ,CAAG,EAClBA,CACT,CAMO,SAASO,GAAiC,CAC/C,MAAMP,EAAMQ,EAAAA,OAAOhB,CAAY,EAC/B,GAAI,CAACQ,EACH,MAAM,IAAI,MAAM,2DAA2D,EAE7E,OAAOA,CACT,CAGO,SAASS,GAA2C,CACzD,OAAOD,EAAAA,OAAOhB,EAAc,IAAI,CAClC"}