@bg-effects/debug-ui 1.0.3 → 1.0.5

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/Tabs.vue","../src/components/DraggablePanel.vue","../src/components/SettingsTab.vue","../src/components/AnimationTab.vue","../src/components/PresetsTab.vue","../src/composables/useDebugState.ts","../src/composables/useFpsMonitor.ts","../src/composables/useCodeExport.ts","../src/components/ExportTab.vue","../src/components/StatsTab.vue","../src/components/FloatingToggleButton.vue","../src/components/CopyToast.vue","../src/DebugShell.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends string\">\nexport interface TabItem<T> {\n id: T\n label: string\n icon?: any\n}\n\nconst props = defineProps<{\n tabs: TabItem<T>[]\n modelValue: T\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: T]\n}>()\n\nconst handleTabClick = (tabId: T) => {\n emit('update:modelValue', tabId)\n}\n</script>\n\n<template>\n <div class=\"tabs-container p-1.5 gap-2 bg-gradient-to-b from-black/50 to-black/30 rounded-2xl border border-white/10 shadow-2xl backdrop-blur-xl\">\n <div class=\"flex gap-1.5\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n @click=\"handleTabClick(tab.id)\"\n class=\"flex-1 flex flex-col items-center justify-center p-2 rounded-xl transition-all duration-300 relative group/tab pointer-events-auto cursor-pointer overflow-hidden\"\n :class=\"modelValue === tab.id \n ? 'bg-gradient-to-br from-blue-500 to-blue-600 text-white shadow-lg shadow-blue-500/30 scale-[1.02]' \n : 'bg-white/[0.04] text-white/50 hover:text-white hover:bg-white/10 hover:scale-[1.01] border border-white/5'\"\n >\n <!-- Active indicator -->\n <div \n v-if=\"modelValue === tab.id\"\n class=\"absolute inset-0 bg-gradient-to-br from-white/20 to-transparent opacity-50\"\n />\n \n <component \n v-if=\"tab.icon\" \n :is=\"tab.icon\" \n class=\"w-4 h-4 mb-1.5 relative z-10 transition-transform duration-300\" \n :class=\"[\n modelValue === tab.id ? 'text-white drop-shadow-lg' : 'text-white/30 group-hover/tab:text-white/60',\n modelValue === tab.id ? 'scale-110' : 'group-hover/tab:scale-105'\n ]\" \n />\n \n <span class=\"text-[8px] font-black uppercase tracking-[0.15em] text-center leading-tight relative z-10\">\n {{ tab.label }}\n </span>\n \n <!-- Hover glow effect -->\n <div \n class=\"absolute inset-0 bg-gradient-to-t from-blue-400/0 via-blue-400/5 to-blue-400/0 opacity-0 group-hover/tab:opacity-100 transition-opacity duration-300\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.tabs-container {\n position: relative;\n}\n\n.tabs-container::before {\n content: '';\n position: absolute;\n inset: -1px;\n border-radius: 1rem;\n padding: 1px;\n background: linear-gradient(135deg, rgba(255,255,255,0.1), rgba(255,255,255,0.05));\n -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n mask-composite: exclude;\n pointer-events: none;\n}\n</style>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}\n.absolute{position:absolute;}\n.relative{position:relative;}\n.inset-0{inset:0;}\n.z-10{z-index:10;}\n.mb-1\\.5{margin-bottom:0.375rem;}\n.h-4{height:1rem;}\n.w-4{width:1rem;}\n.flex{display:flex;}\n.flex-1{flex:1 1 0%;}\n.flex-col{flex-direction:column;}\n.scale-\\[1\\.02\\]{--un-scale-x:1.02;--un-scale-y:1.02;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.scale-110{--un-scale-x:1.1;--un-scale-y:1.1;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.group\\/tab:hover .group-hover\\/tab\\:scale-105{--un-scale-x:1.05;--un-scale-y:1.05;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.hover\\:scale-\\[1\\.01\\]:hover{--un-scale-x:1.01;--un-scale-y:1.01;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.cursor-pointer{cursor:pointer;}\n.items-center{align-items:center;}\n.justify-center{justify-content:center;}\n.gap-1\\.5{gap:0.375rem;}\n.gap-2{gap:0.5rem;}\n.overflow-hidden{overflow:hidden;}\n.border{border-width:1px;}\n.border-white\\/10{border-color:rgb(255 255 255 / 0.1);}\n.border-white\\/5{border-color:rgb(255 255 255 / 0.05);}\n.rounded-2xl{border-radius:1rem;}\n.rounded-xl{border-radius:0.75rem;}\n.bg-white\\/\\[0\\.04\\]{background-color:rgb(255 255 255 / 0.04) /* #fff */;}\n.hover\\:bg-white\\/10:hover{background-color:rgb(255 255 255 / 0.1) /* #fff */;}\n.from-black\\/50{--un-gradient-from-position:0%;--un-gradient-from:rgb(0 0 0 / 0.5) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(0 0 0 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);}\n.from-blue-400\\/0{--un-gradient-from-position:0%;--un-gradient-from:rgb(96 165 250 / 0) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(96 165 250 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);}\n.from-blue-500{--un-gradient-from-position:0%;--un-gradient-from:rgb(59 130 246 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(59 130 246 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);}\n.from-white\\/20{--un-gradient-from-position:0%;--un-gradient-from:rgb(255 255 255 / 0.2) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);}\n.via-blue-400\\/5{--un-gradient-via-position:50%;--un-gradient-to:rgb(96 165 250 / 0);--un-gradient-stops:var(--un-gradient-from), rgb(96 165 250 / 0.05) var(--un-gradient-via-position), var(--un-gradient-to);}\n.to-black\\/30{--un-gradient-to-position:100%;--un-gradient-to:rgb(0 0 0 / 0.3) var(--un-gradient-to-position);}\n.to-blue-400\\/0{--un-gradient-to-position:100%;--un-gradient-to:rgb(96 165 250 / 0) var(--un-gradient-to-position);}\n.to-blue-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(37 99 235 / var(--un-to-opacity, 1)) var(--un-gradient-to-position);}\n.to-transparent{--un-gradient-to-position:100%;--un-gradient-to:transparent var(--un-gradient-to-position);}\n.bg-gradient-to-b{--un-gradient-shape:to bottom in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient));}\n.bg-gradient-to-br{--un-gradient-shape:to bottom right in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient));}\n.bg-gradient-to-t{--un-gradient-shape:to top in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient));}\n.p-1\\.5{padding:0.375rem;}\n.p-2{padding:0.5rem;}\n.text-center{text-align:center;}\n.text-\\[8px\\]{font-size:8px;}\n.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.text-white\\/30{color:rgb(255 255 255 / 0.3) /* #fff */;}\n.text-white\\/50{color:rgb(255 255 255 / 0.5) /* #fff */;}\n.group\\/tab:hover .group-hover\\/tab\\:text-white\\/60{color:rgb(255 255 255 / 0.6) /* #fff */;}\n.hover\\:text-white:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.font-black{font-weight:900;}\n.leading-tight{line-height:1.25;}\n.tracking-\\[0\\.15em\\]{letter-spacing:0.15em;}\n.uppercase{text-transform:uppercase;}\n.tab{-moz-tab-size:4;-o-tab-size:4;tab-size:4;}\n.opacity-0{opacity:0;}\n.opacity-50{opacity:0.5;}\n.group\\/tab:hover .group-hover\\/tab\\:opacity-100{opacity:1;}\n.shadow-2xl{--un-shadow:var(--un-shadow-inset) 0 25px 50px -12px var(--un-shadow-color, rgb(0 0 0 / 0.25));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.shadow-blue-500\\/30{--un-shadow-color:rgb(59 130 246 / 0.3) /* #3b82f6 */;}\n.shadow-lg{--un-shadow:var(--un-shadow-inset) 0 10px 15px -3px var(--un-shadow-color, rgb(0 0 0 / 0.1)),var(--un-shadow-inset) 0 4px 6px -4px var(--un-shadow-color, rgb(0 0 0 / 0.1));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.backdrop-blur-xl{--un-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);}\n.drop-shadow-lg{--un-drop-shadow:drop-shadow(0 10px 8px var(--un-drop-shadow-color, rgb(0 0 0 / 0.04))) drop-shadow(0 4px 3px var(--un-drop-shadow-color, rgb(0 0 0 / 0.1)));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.duration-300{transition-duration:300ms;}</style>","<script setup lang=\"ts\">\n/**\n * DraggablePanel - 可拖拽面板容器\n */\nimport { ref } from 'vue'\nimport { useDraggable } from '@vueuse/core'\nimport { X, Languages } from 'lucide-vue-next'\n\ninterface Props {\n isOpen: boolean\n title: string\n lang?: 'zh-CN' | 'en'\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n 'update:isOpen': [value: boolean]\n 'toggleLang': []\n}>()\n\nconst el = ref<HTMLElement | null>(null)\nconst handle = ref<HTMLElement | null>(null)\n\nconst { x, y, style } = useDraggable(el, {\n handle,\n initialValue: { x: window.innerWidth - 320, y: 80 },\n})\n\nconst close = () => {\n emit('update:isOpen', false)\n}\n</script>\n\n<template>\n <Teleport to=\"body\">\n <div\n v-if=\"isOpen\"\n ref=\"el\"\n class=\"panel-base fixed z-[10000] w-80 flex flex-col text-white font-sans select-none overflow-hidden\"\n :style=\"style\"\n >\n <!-- Header / Drag Handle -->\n <div\n ref=\"handle\"\n class=\"panel-header h-12 flex items-center justify-between px-5 cursor-move group/handle active:cursor-grabbing border-b border-white/5 bg-white/5\"\n >\n <div class=\"flex items-center gap-3 overflow-hidden\">\n <div class=\"w-1.5 h-1.5 rounded-full bg-blue-500 shadow-[0_0_8px_rgba(59,130,246,0.6)]\" />\n <span class=\"text-[10px] font-bold uppercase tracking-[0.2em] text-white/40 truncate\">\n {{ title }}\n </span>\n </div>\n <div class=\"flex items-center gap-2\">\n <button\n v-if=\"lang\"\n class=\"w-7 h-7 flex items-center justify-center rounded-lg bg-white/5 border border-white/10 hover:bg-white/10 hover:border-blue-500/30 transition-all cursor-pointer\"\n :title=\"lang === 'zh-CN' ? '切换到英文' : 'Switch to Chinese'\"\n @click.stop=\"emit('toggleLang')\"\n >\n <Languages class=\"w-3.5 h-3.5 text-white/60\" />\n </button>\n <button\n class=\"w-7 h-7 rounded-lg flex items-center justify-center bg-white/5 border border-white/10 text-white/30 hover:text-white hover:bg-red-500/20 hover:border-red-500/30 transition-all pointer-events-auto cursor-pointer\"\n @click.stop=\"close\"\n >\n <X class=\"w-3.5 h-3.5\" />\n </button>\n </div>\n </div>\n\n <!-- Content -->\n <slot />\n </div>\n </Teleport>\n</template>\n\n<style scoped>\n.panel-base {\n background: rgba(10, 10, 12, 0.85);\n backdrop-filter: blur(32px);\n border-radius: 1rem;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 32px 64px -16px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.05);\n pointer-events: auto;\n}\n</style>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}\n.fixed{position:fixed;}\n.z-\\[10000\\]{z-index:10000;}\n.h-1\\.5{height:0.375rem;}\n.h-12{height:3rem;}\n.h-3\\.5{height:0.875rem;}\n.h-7{height:1.75rem;}\n.w-1\\.5{width:0.375rem;}\n.w-3\\.5{width:0.875rem;}\n.w-7{width:1.75rem;}\n.w-80{width:20rem;}\n.flex{display:flex;}\n.flex-col{flex-direction:column;}\n.cursor-pointer{cursor:pointer;}\n.cursor-move{cursor:move;}\n.active\\:cursor-grabbing:active{cursor:grabbing;}\n.select-none{-webkit-user-select:none;user-select:none;}\n.items-center{align-items:center;}\n.justify-center{justify-content:center;}\n.justify-between{justify-content:space-between;}\n.gap-2{gap:0.5rem;}\n.gap-3{gap:0.75rem;}\n.overflow-hidden{overflow:hidden;}\n.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n.border{border-width:1px;}\n.border-b{border-bottom-width:1px;}\n.border-white\\/10{border-color:rgb(255 255 255 / 0.1);}\n.border-white\\/5{border-color:rgb(255 255 255 / 0.05);}\n.hover\\:border-blue-500\\/30:hover{border-color:rgb(59 130 246 / 0.3);}\n.hover\\:border-red-500\\/30:hover{border-color:rgb(239 68 68 / 0.3);}\n.rounded-full{border-radius:9999px;}\n.rounded-lg{border-radius:0.5rem;}\n.bg-blue-500{--un-bg-opacity:1;background-color:rgb(59 130 246 / var(--un-bg-opacity)) /* #3b82f6 */;}\n.bg-white\\/5{background-color:rgb(255 255 255 / 0.05) /* #fff */;}\n.hover\\:bg-red-500\\/20:hover{background-color:rgb(239 68 68 / 0.2) /* #ef4444 */;}\n.hover\\:bg-white\\/10:hover{background-color:rgb(255 255 255 / 0.1) /* #fff */;}\n.px-5{padding-left:1.25rem;padding-right:1.25rem;}\n.text-\\[10px\\]{font-size:10px;}\n.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.text-white\\/30{color:rgb(255 255 255 / 0.3) /* #fff */;}\n.text-white\\/40{color:rgb(255 255 255 / 0.4) /* #fff */;}\n.text-white\\/60{color:rgb(255 255 255 / 0.6) /* #fff */;}\n.hover\\:text-white:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.font-bold{font-weight:700;}\n.tracking-\\[0\\.2em\\]{letter-spacing:0.2em;}\n.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";}\n.uppercase{text-transform:uppercase;}\n.shadow-\\[0_0_8px_rgba\\(59\\,130\\,246\\,0\\.6\\)\\]{--un-shadow:0 0 8px var(--un-shadow-color, rgba(59, 130, 246, 0.6));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.backdrop-filter{-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}</style>","<script setup lang=\"ts\">\n/**\n * SettingsTab - 设置标签内容\n */\n\ndefineProps<{\n configPanelRef?: any\n}>()\n</script>\n\n<template>\n <div class=\"settings-container pointer-events-auto\">\n <div ref=\"configPanelRef\">\n <slot />\n </div>\n </div>\n</template>\n\n<style scoped>\n.settings-container :deep(input[type=\"range\"]),\n.settings-container :deep(button),\n.settings-container :deep(select) {\n pointer-events: auto !important;\n}\n</style>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}</style>","<script setup lang=\"ts\">\n/**\n * AnimationTab - 动画控制标签\n */\nimport { Play, Settings, Activity } from 'lucide-vue-next'\n\ninterface Props {\n config?: any\n engine?: {\n pause: () => void\n resume: () => void\n restart: () => void\n }\n isPaused: boolean\n t: (key: string) => string\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n 'update:config': [value: any]\n togglePause: []\n restart: []\n}>()\n\nconst updateTimeSpeed = (value: number) => {\n emit('update:config', { ...props.config, timeSpeed: value })\n}\n</script>\n\n<template>\n <div class=\"flex flex-col gap-6 py-2\">\n <!-- Time Speed Control -->\n <div v-if=\"config?.timeSpeed !== undefined\" class=\"flex flex-col gap-4\">\n <label class=\"text-[9px] font-black uppercase tracking-[0.2em] text-white/20 px-1\">\n {{ t('timeSpeed') || '动画速度' }}\n </label>\n <div class=\"flex flex-col gap-3 group/item px-1\">\n <div class=\"flex justify-between items-center\">\n <span class=\"text-[9px] font-mono text-white/30 group-hover/item:text-white/50 transition-colors\">\n {{ t('timeSpeedValue') || '速度' }}\n </span>\n <span class=\"text-[11px] font-black font-mono text-white/40 group-hover/item:text-blue-400 transition-colors\">\n {{ config.timeSpeed.toFixed(1) }}x\n </span>\n </div>\n <input\n :value=\"config.timeSpeed\"\n type=\"range\"\n min=\"0.1\"\n max=\"5\"\n step=\"0.1\"\n class=\"w-full accent-blue-500 bg-white/5 hover:bg-white/10 h-1.5 rounded-full appearance-none cursor-pointer transition-all border border-white/5\"\n @input=\"updateTimeSpeed(Number(($event.target as HTMLInputElement).value))\"\n >\n </div>\n </div>\n\n <!-- Engine Controls -->\n <div class=\"flex flex-col gap-4\">\n <label class=\"text-[9px] font-black uppercase tracking-[0.2em] text-white/20 px-1\">\n {{ t('engine') }}\n </label>\n <div class=\"grid grid-cols-2 gap-3\">\n <button\n class=\"flex flex-col items-center justify-center gap-3 py-5 rounded-xl bg-white/[0.03] border border-white/5 hover:bg-white/10 transition-all text-white/30 hover:text-white pointer-events-auto shadow-sm cursor-pointer\"\n @click=\"emit('togglePause')\"\n >\n <div class=\"w-10 h-10 rounded-full bg-white/5 flex items-center justify-center mb-0.5 border border-white/5 group-hover:border-white/20\">\n <component\n :is=\"isPaused ? Play : Settings\"\n class=\"w-5 h-5 transition-all text-current\"\n :class=\"{ 'animate-spin-slow text-blue-400': !isPaused }\"\n />\n </div>\n <span class=\"text-[9px] font-black uppercase tracking-[0.1em]\">\n {{ isPaused ? t('resume') : t('active') }}\n </span>\n </button>\n <button\n class=\"flex flex-col items-center justify-center gap-3 py-5 rounded-xl bg-white/[0.03] border border-white/5 hover:bg-white/10 transition-all text-white/30 hover:text-white pointer-events-auto shadow-sm cursor-pointer\"\n @click=\"emit('restart')\"\n >\n <div class=\"w-10 h-10 rounded-full bg-white/5 flex items-center justify-center mb-0.5 border border-white/5\">\n <Activity class=\"w-5 h-5 text-green-400/60\" />\n </div>\n <span class=\"text-[9px] font-black uppercase tracking-[0.1em]\">\n {{ t('restart') }}\n </span>\n </button>\n </div>\n </div>\n\n <!-- Paused Hint -->\n <div v-if=\"isPaused\" class=\"p-4 rounded-xl bg-orange-500/5 border border-orange-500/10 shadow-inner text-center mx-1\">\n <p class=\"text-[9px] text-orange-400/60 leading-relaxed font-medium\">\n \"{{ t('pausedHint') }}\"\n </p>\n </div>\n </div>\n</template>\n\n<style scoped>\n@keyframes spin-slow {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin-slow {\n animation: spin-slow 8s linear infinite;\n}\n</style>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}\n.grid{display:grid;}\n.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr));}\n.mx-1{margin-left:0.25rem;margin-right:0.25rem;}\n.mb-0\\.5{margin-bottom:0.125rem;}\n.h-1\\.5{height:0.375rem;}\n.h-10{height:2.5rem;}\n.h-5{height:1.25rem;}\n.w-10{width:2.5rem;}\n.w-5{width:1.25rem;}\n.w-full{width:100%;}\n.flex{display:flex;}\n.flex-col{flex-direction:column;}\n.transform{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.cursor-pointer{cursor:pointer;}\n.appearance-none{-webkit-appearance:none;appearance:none;}\n.items-center{align-items:center;}\n.justify-center{justify-content:center;}\n.justify-between{justify-content:space-between;}\n.gap-3{gap:0.75rem;}\n.gap-4{gap:1rem;}\n.gap-6{gap:1.5rem;}\n.border{border-width:1px;}\n.border-orange-500\\/10{border-color:rgb(249 115 22 / 0.1);}\n.border-white\\/5{border-color:rgb(255 255 255 / 0.05);}\n.group:hover .group-hover\\:border-white\\/20{border-color:rgb(255 255 255 / 0.2);}\n.rounded-full{border-radius:9999px;}\n.rounded-xl{border-radius:0.75rem;}\n.bg-orange-500\\/5{background-color:rgb(249 115 22 / 0.05) /* #f97316 */;}\n.bg-white\\/\\[0\\.03\\]{background-color:rgb(255 255 255 / 0.03) /* #fff */;}\n.bg-white\\/5{background-color:rgb(255 255 255 / 0.05) /* #fff */;}\n.hover\\:bg-white\\/10:hover{background-color:rgb(255 255 255 / 0.1) /* #fff */;}\n.p-4{padding:1rem;}\n.px-1{padding-left:0.25rem;padding-right:0.25rem;}\n.py-2{padding-top:0.5rem;padding-bottom:0.5rem;}\n.py-5{padding-top:1.25rem;padding-bottom:1.25rem;}\n.text-center{text-align:center;}\n.text-\\[11px\\]{font-size:11px;}\n.text-\\[9px\\]{font-size:9px;}\n.text-blue-400,\n.group\\/item:hover .group-hover\\/item\\:text-blue-400{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity)) /* #60a5fa */;}\n.text-current{color:currentColor /* currentColor */;}\n.text-green-400\\/60{color:rgb(74 222 128 / 0.6) /* #4ade80 */;}\n.text-orange-400\\/60{color:rgb(251 146 60 / 0.6) /* #fb923c */;}\n.text-white\\/20{color:rgb(255 255 255 / 0.2) /* #fff */;}\n.text-white\\/30{color:rgb(255 255 255 / 0.3) /* #fff */;}\n.text-white\\/40{color:rgb(255 255 255 / 0.4) /* #fff */;}\n.group\\/item:hover .group-hover\\/item\\:text-white\\/50{color:rgb(255 255 255 / 0.5) /* #fff */;}\n.hover\\:text-white:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.font-black{font-weight:900;}\n.font-medium{font-weight:500;}\n.leading-relaxed{line-height:1.625;}\n.tracking-\\[0\\.1em\\]{letter-spacing:0.1em;}\n.tracking-\\[0\\.2em\\]{letter-spacing:0.2em;}\n.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;}\n.uppercase{text-transform:uppercase;}\n.accent-blue-500{--un-accent-opacity:1;accent-color:rgb(59 130 246 / var(--un-accent-opacity)) /* #3b82f6 */;}\n.shadow-inner{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}</style>","<script setup lang=\"ts\">\n/**\n * PresetsTab - 预设标签\n */\nimport { Bookmark } from 'lucide-vue-next'\nimport type { EffectPreset } from '@bg-effects/core'\n\ninterface Props {\n presets: EffectPreset[]\n config: any\n t: (key: string) => string\n tObj: (item: Record<string, string>) => string\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n 'update:config': [value: any]\n}>()\n\nconst applyPreset = (preset: EffectPreset) => {\n emit('update:config', { ...props.config, ...preset.config })\n}\n</script>\n\n<template>\n <div class=\"flex flex-col gap-5\">\n <div class=\"flex flex-col gap-3\">\n <label class=\"text-[9px] font-black uppercase tracking-widest text-white/25 px-1\">\n {{ t('presets') }}\n </label>\n <div class=\"grid grid-cols-1 gap-2.5\">\n <button\n v-for=\"preset in presets\"\n :key=\"preset.id\"\n class=\"group flex flex-col p-4 rounded-xl bg-white/[0.03] hover:bg-white/10 border border-white/5 transition-all text-left relative overflow-hidden active:scale-[0.98] pointer-events-auto cursor-pointer\"\n @click=\"applyPreset(preset)\"\n >\n <div class=\"flex items-center justify-between mb-2\">\n <span class=\"text-xs font-black text-white/40 group-hover:text-white transition-colors\">\n {{ tObj(preset.name) }}\n </span>\n <Bookmark class=\"w-3.5 h-3.5 text-white/10 group-hover:text-blue-400 transition-colors\" />\n </div>\n <div class=\"flex flex-wrap gap-1.5 opacity-20 group-hover:opacity-60 transition-opacity\">\n <span\n v-for=\"(val, key) in preset.config\"\n :key=\"String(key)\"\n class=\"text-[8px] px-1.5 py-0.5 rounded bg-white/5 text-white/50 font-mono tracking-tighter\"\n >\n {{ key }}:{{ typeof val === 'number' ? val.toFixed(1) : val }}\n </span>\n </div>\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}\n.relative{position:relative;}\n.grid{display:grid;}\n.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr));}\n.mb-2{margin-bottom:0.5rem;}\n.h-3\\.5{height:0.875rem;}\n.w-3\\.5{width:0.875rem;}\n.flex{display:flex;}\n.flex-col{flex-direction:column;}\n.flex-wrap{flex-wrap:wrap;}\n.active\\:scale-\\[0\\.98\\]:active{--un-scale-x:0.98;--un-scale-y:0.98;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.cursor-pointer{cursor:pointer;}\n.items-center{align-items:center;}\n.justify-between{justify-content:space-between;}\n.gap-1\\.5{gap:0.375rem;}\n.gap-2\\.5{gap:0.625rem;}\n.gap-3{gap:0.75rem;}\n.gap-5{gap:1.25rem;}\n.overflow-hidden{overflow:hidden;}\n.border{border-width:1px;}\n.border-white\\/5{border-color:rgb(255 255 255 / 0.05);}\n.rounded{border-radius:0.25rem;}\n.rounded-xl{border-radius:0.75rem;}\n.bg-white\\/\\[0\\.03\\]{background-color:rgb(255 255 255 / 0.03) /* #fff */;}\n.bg-white\\/5{background-color:rgb(255 255 255 / 0.05) /* #fff */;}\n.hover\\:bg-white\\/10:hover{background-color:rgb(255 255 255 / 0.1) /* #fff */;}\n.p-4{padding:1rem;}\n.px-1{padding-left:0.25rem;padding-right:0.25rem;}\n.px-1\\.5{padding-left:0.375rem;padding-right:0.375rem;}\n.py-0\\.5{padding-top:0.125rem;padding-bottom:0.125rem;}\n.text-left{text-align:left;}\n.text-\\[8px\\]{font-size:8px;}\n.text-\\[9px\\]{font-size:9px;}\n.text-xs{font-size:0.75rem;line-height:1rem;}\n.text-white\\/10{color:rgb(255 255 255 / 0.1) /* #fff */;}\n.text-white\\/25{color:rgb(255 255 255 / 0.25) /* #fff */;}\n.text-white\\/40{color:rgb(255 255 255 / 0.4) /* #fff */;}\n.text-white\\/50{color:rgb(255 255 255 / 0.5) /* #fff */;}\n.group:hover .group-hover\\:text-blue-400{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity)) /* #60a5fa */;}\n.group:hover .group-hover\\:text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.font-black{font-weight:900;}\n.tracking-tighter{letter-spacing:-0.05em;}\n.tracking-widest{letter-spacing:0.1em;}\n.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;}\n.uppercase{text-transform:uppercase;}\n.opacity-20{opacity:0.2;}\n.group:hover .group-hover\\:opacity-60{opacity:0.6;}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}</style>","/**\n * useDebugState - 调试状态管理\n */\n\nimport { ref, computed } from 'vue'\nimport type { TabType } from '../types'\n\nexport function useDebugState() {\n const isOpen = ref(true)\n const activeTab = ref<TabType>('settings')\n const isPaused = ref(false)\n\n const toggleOpen = () => {\n isOpen.value = !isOpen.value\n }\n\n const setTab = (tab: TabType) => {\n activeTab.value = tab\n }\n\n const togglePause = (engine?: { pause: () => void; resume: () => void }) => {\n if (!engine) return\n \n if (isPaused.value) {\n engine.resume()\n isPaused.value = false\n } else {\n engine.pause()\n isPaused.value = true\n }\n }\n\n const restart = (engine?: { restart: () => void; resume: () => void }) => {\n if (!engine) return\n \n engine.restart()\n if (isPaused.value) {\n engine.resume()\n isPaused.value = false\n }\n }\n\n return {\n isOpen,\n activeTab,\n isPaused,\n toggleOpen,\n setTab,\n togglePause,\n restart,\n }\n}\n","/**\n * useFpsMonitor - FPS监控\n */\n\nimport { ref, onMounted, onUnmounted } from 'vue'\nimport { useFps } from '@vueuse/core'\n\nexport function useFpsMonitor() {\n const fps = useFps()\n const fpsHistory = ref<number[]>([])\n let fpsInterval: any = null\n\n onMounted(() => {\n fpsInterval = setInterval(() => {\n // Ensure fps.value is a valid number\n const currentFps = (typeof fps.value === 'number' && !isNaN(fps.value)) ? fps.value : 0\n fpsHistory.value.push(currentFps)\n if (fpsHistory.value.length > 30) {\n fpsHistory.value.shift()\n }\n }, 500)\n })\n\n onUnmounted(() => {\n if (fpsInterval) {\n clearInterval(fpsInterval)\n }\n })\n\n return {\n fps,\n fpsHistory,\n }\n}\n","/**\n * useCodeExport - 代码导出功能\n */\n\nimport { ref, onUnmounted } from 'vue'\n\nexport type ExportType = 'config' | 'sfc' | 'props'\n\nexport interface UseCodeExportOptions {\n config: any\n metaId: string\n onSuccess?: (message: string) => void\n}\n\nexport function useCodeExport(options: UseCodeExportOptions) {\n const copyToast = ref('')\n const copyToastTimer = ref<any>(null)\n\n const getComponentName = () => {\n return options.metaId\n .charAt(0).toUpperCase() + \n options.metaId.slice(1).replace(/-([a-z])/g, (g) => g[1].toUpperCase())\n }\n\n const generateCode = (type: ExportType): string => {\n const componentName = getComponentName()\n \n if (type === 'config') {\n return JSON.stringify(options.config, null, 2)\n }\n \n if (type === 'props') {\n const propsStr = Object.entries(options.config || {})\n .filter(([key]) => !['debug', 'lang', 'className'].includes(key))\n .map(([key, value]) => {\n if (typeof value === 'string') {\n return `${key}=\"${value}\"`\n }\n return `:${key}=\"${value}\"`\n })\n .join('\\n ')\n return `<${componentName}\\n ${propsStr}\\n/>`\n }\n \n // type === 'sfc'\n return `<script setup>\nimport { ${componentName} } from '@bg-effects/${options.metaId}'\n\nconst config = ${JSON.stringify(options.config, null, 2)}\n<\\/script>\n\n<template>\n <${componentName} v-bind=\"config\" />\n</template>`\n }\n\n const copyCode = async (type: ExportType) => {\n const code = generateCode(type)\n \n try {\n await navigator.clipboard.writeText(code)\n showCopyToast('复制成功!')\n options.onSuccess?.('复制成功!')\n } catch (err) {\n console.error('复制失败:', err)\n }\n }\n\n const showCopyToast = (message: string) => {\n copyToast.value = message\n if (copyToastTimer.value) {\n clearTimeout(copyToastTimer.value)\n }\n copyToastTimer.value = setTimeout(() => {\n copyToast.value = ''\n }, 2000)\n }\n\n onUnmounted(() => {\n if (copyToastTimer.value) {\n clearTimeout(copyToastTimer.value)\n }\n })\n\n return {\n copyCode,\n copyToast,\n generateCode,\n getComponentName,\n }\n}\n","<script setup lang=\"ts\">\n/**\n * ExportTab - 导出代码标签\n */\nimport { Code } from 'lucide-vue-next'\nimport { useCodeExport } from '../composables'\n\ninterface Props {\n config: any\n metaId: string\n t: (key: string) => string\n}\n\nconst props = defineProps<Props>()\n\nconst { copyCode, getComponentName } = useCodeExport({\n config: props.config,\n metaId: props.metaId,\n})\n\nconst componentName = getComponentName()\n</script>\n\n<template>\n <div class=\"flex flex-col gap-6\">\n <!-- Import Statement -->\n <div class=\"flex flex-col gap-3\">\n <label class=\"text-[9px] font-black uppercase tracking-widest text-white/25 px-1\">\n {{ t('vueComponent') }}\n </label>\n <div class=\"relative group\">\n <pre class=\"bg-black/40 rounded-xl p-4 text-[9px] font-mono text-white/40 overflow-hidden whitespace-pre-wrap leading-relaxed border border-white/5 shadow-inner italic\">import { {{ componentName }} } from '@bg-effects/{{ metaId }}'</pre>\n <button\n class=\"absolute top-3 right-3 p-2 rounded-lg bg-white/5 hover:bg-blue-600 opacity-0 group-hover:opacity-100 transition-all active:bg-blue-700 pointer-events-auto border border-white/10 cursor-pointer\"\n @click=\"copyCode('sfc')\"\n >\n <Code class=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n <!-- Component Props -->\n <div class=\"flex flex-col gap-3\">\n <label class=\"text-[9px] font-black uppercase tracking-widest text-white/25 px-1\">\n {{ t('componentProps') }}\n </label>\n <div class=\"relative group\">\n <pre class=\"bg-black/40 rounded-xl p-4 text-[9px] font-mono text-white/30 max-h-32 overflow-y-auto custom-scrollbar border border-white/5 shadow-inner leading-relaxed\">&lt;{{ componentName }} ... /&gt;</pre>\n <button\n class=\"absolute top-3 right-3 p-2 rounded-lg bg-white/5 hover:bg-blue-600 opacity-0 group-hover:opacity-100 transition-all active:bg-blue-700 pointer-events-auto border border-white/10 cursor-pointer\"\n @click=\"copyCode('props')\"\n >\n <Code class=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n <!-- Config JSON -->\n <div class=\"flex flex-col gap-3\">\n <div class=\"flex justify-between items-center px-1\">\n <label class=\"text-[9px] font-black uppercase tracking-widest text-white/25\">\n {{ t('configJson') }}\n </label>\n </div>\n <div class=\"relative group\">\n <div class=\"bg-black/40 rounded-xl p-4 text-[9px] font-mono text-white/30 max-h-48 overflow-y-auto custom-scrollbar border border-white/5 shadow-inner\">\n <pre>{{ JSON.stringify(config, null, 2) }}</pre>\n </div>\n <button\n class=\"absolute top-3 right-3 p-2 rounded-lg bg-white/5 hover:bg-blue-600 opacity-0 group-hover:opacity-100 transition-all active:bg-blue-700 pointer-events-auto border border-white/10 cursor-pointer\"\n @click=\"copyCode('config')\"\n >\n <Code class=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.custom-scrollbar::-webkit-scrollbar {\n width: 4px;\n}\n\n.custom-scrollbar::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.custom-scrollbar::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.08);\n border-radius: 10px;\n}\n\n.custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n</style>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}\n.absolute{position:absolute;}\n.relative{position:relative;}\n.right-3{right:0.75rem;}\n.top-3{top:0.75rem;}\n.h-4{height:1rem;}\n.max-h-32{max-height:8rem;}\n.max-h-48{max-height:12rem;}\n.w-4{width:1rem;}\n.flex{display:flex;}\n.flex-col{flex-direction:column;}\n.cursor-pointer{cursor:pointer;}\n.items-center{align-items:center;}\n.justify-between{justify-content:space-between;}\n.gap-3{gap:0.75rem;}\n.gap-6{gap:1.5rem;}\n.overflow-hidden{overflow:hidden;}\n.overflow-y-auto{overflow-y:auto;}\n.whitespace-pre-wrap{white-space:pre-wrap;}\n.border{border-width:1px;}\n.border-white\\/10{border-color:rgb(255 255 255 / 0.1);}\n.border-white\\/5{border-color:rgb(255 255 255 / 0.05);}\n.rounded-lg{border-radius:0.5rem;}\n.rounded-xl{border-radius:0.75rem;}\n.bg-black\\/40{background-color:rgb(0 0 0 / 0.4) /* #000 */;}\n.bg-white\\/5{background-color:rgb(255 255 255 / 0.05) /* #fff */;}\n.hover\\:bg-blue-600:hover{--un-bg-opacity:1;background-color:rgb(37 99 235 / var(--un-bg-opacity)) /* #2563eb */;}\n.active\\:bg-blue-700:active{--un-bg-opacity:1;background-color:rgb(29 78 216 / var(--un-bg-opacity)) /* #1d4ed8 */;}\n.p-2{padding:0.5rem;}\n.p-4{padding:1rem;}\n.px-1{padding-left:0.25rem;padding-right:0.25rem;}\n.text-\\[9px\\]{font-size:9px;}\n.text-white\\/25{color:rgb(255 255 255 / 0.25) /* #fff */;}\n.text-white\\/30{color:rgb(255 255 255 / 0.3) /* #fff */;}\n.text-white\\/40{color:rgb(255 255 255 / 0.4) /* #fff */;}\n.font-black{font-weight:900;}\n.leading-relaxed{line-height:1.625;}\n.tracking-widest{letter-spacing:0.1em;}\n.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;}\n.uppercase{text-transform:uppercase;}\n.italic{font-style:italic;}\n.opacity-0{opacity:0;}\n.group:hover .group-hover\\:opacity-100{opacity:1;}\n.shadow-inner{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}</style>","<script setup lang=\"ts\">\n/**\n * StatsTab - 性能统计标签\n */\nimport { Monitor } from 'lucide-vue-next'\nimport { useFpsMonitor } from '../composables'\n\ninterface Props {\n t: (key: string) => string\n}\n\ndefineProps<Props>()\n\nconst { fps, fpsHistory } = useFpsMonitor()\n</script>\n\n<template>\n <div class=\"flex flex-col gap-6 py-2\">\n <!-- FPS Display -->\n <div class=\"bg-gradient-to-br from-white/[0.05] to-white/[0.02] rounded-2xl p-6 border border-white/10 flex flex-col gap-3 items-center justify-center shadow-xl group/stat hover:from-white/[0.08] hover:to-white/[0.04] transition-all\">\n <div class=\"flex items-center gap-3 text-blue-400/40 mb-1 group-hover/stat:text-blue-400/70 transition-colors\">\n <Monitor class=\"w-5 h-5\" />\n <span class=\"text-[11px] font-black uppercase tracking-[0.2em]\">\n {{ t('frameRate') }}\n </span>\n </div>\n <span\n class=\"text-6xl font-black tracking-tighter transition-all duration-300\"\n :class=\"\n fps > 55\n ? 'text-green-400 drop-shadow-[0_0_20px_rgba(34,197,94,0.5)]'\n : fps > 30\n ? 'text-yellow-400 drop-shadow-[0_0_20px_rgba(234,179,8,0.5)]'\n : 'text-red-400 drop-shadow-[0_0_20px_rgba(239,68,68,0.5)]'\n \"\n >\n {{ fps }}\n </span>\n <span class=\"text-[10px] uppercase tracking-[0.15em] text-white/30 font-bold\">\n {{ t('framesPerSecond') }}\n </span>\n </div>\n\n <!-- FPS History Chart -->\n <div class=\"flex flex-col gap-3\">\n <div class=\"flex justify-between items-center px-1\">\n <label class=\"text-[9px] font-black uppercase tracking-widest text-white/25\">\n {{ t('stats') }}\n </label>\n <span class=\"text-[8px] font-mono uppercase text-white/15 tracking-tighter\">\n {{ t('rolling') }}\n </span>\n </div>\n <div class=\"bg-black/40 border border-white/10 h-24 rounded-xl relative overflow-hidden flex items-end ring-1 ring-inset ring-white/5 shadow-inner\">\n <svg class=\"w-full h-full\" viewBox=\"0 0 100 80\" preserveAspectRatio=\"none\">\n <path\n :d=\"`M -10 100 ${fpsHistory.map((v, i) => `L ${(i / (fpsHistory.length - 1)) * 100} ${80 - (Math.min(v, 60) / 60) * 60}`).join(' ')} L 110 100 Z`\"\n fill=\"url(#fps-gradient)\"\n stroke=\"none\"\n />\n <path\n :d=\"fpsHistory.map((v, i) => `${i === 0 ? 'M' : 'L'} ${(i / (fpsHistory.length - 1)) * 100} ${80 - (Math.min(v, 60) / 60) * 60}`).join(' ')\"\n fill=\"none\"\n class=\"stroke-blue-400/40\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n <defs>\n <linearGradient id=\"fps-gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"rgba(59, 130, 246, 0.3)\" />\n <stop offset=\"100%\" stop-color=\"rgba(59, 130, 246, 0)\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.relative{position:relative;}\n.mb-1{margin-bottom:0.25rem;}\n.h-24{height:6rem;}\n.h-5{height:1.25rem;}\n.h-full{height:100%;}\n.w-5{width:1.25rem;}\n.w-full{width:100%;}\n.flex{display:flex;}\n.flex-col{flex-direction:column;}\n.items-end{align-items:flex-end;}\n.items-center{align-items:center;}\n.justify-center{justify-content:center;}\n.justify-between{justify-content:space-between;}\n.gap-3{gap:0.75rem;}\n.gap-6{gap:1.5rem;}\n.overflow-hidden{overflow:hidden;}\n.border{border-width:1px;}\n.border-white\\/10{border-color:rgb(255 255 255 / 0.1);}\n.rounded-2xl{border-radius:1rem;}\n.rounded-xl{border-radius:0.75rem;}\n.bg-black\\/40{background-color:rgb(0 0 0 / 0.4) /* #000 */;}\n.from-white\\/\\[0\\.05\\]{--un-gradient-from-position:0%;--un-gradient-from:rgb(255 255 255 / 0.05) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);}\n.hover\\:from-white\\/\\[0\\.08\\]:hover{--un-gradient-from-position:0%;--un-gradient-from:rgb(255 255 255 / 0.08) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);}\n.to-white\\/\\[0\\.02\\]{--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0.02) var(--un-gradient-to-position);}\n.hover\\:to-white\\/\\[0\\.04\\]:hover{--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0.04) var(--un-gradient-to-position);}\n.bg-gradient-to-br{--un-gradient-shape:to bottom right in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient));}\n[stroke-width~=\"\\32 \"]{stroke-width:2px;}\n.stroke-blue-400\\/40{stroke:rgb(96 165 250 / 0.4) /* #60a5fa */;}\n[stroke~=\"none\"]{stroke:none;}\n.p-6{padding:1.5rem;}\n.px-1{padding-left:0.25rem;padding-right:0.25rem;}\n.py-2{padding-top:0.5rem;padding-bottom:0.5rem;}\n.text-\\[10px\\]{font-size:10px;}\n.text-\\[11px\\]{font-size:11px;}\n.text-\\[8px\\]{font-size:8px;}\n.text-\\[9px\\]{font-size:9px;}\n.text-6xl{font-size:3.75rem;line-height:1;}\n.text-blue-400\\/40{color:rgb(96 165 250 / 0.4) /* #60a5fa */;}\n.text-green-400{--un-text-opacity:1;color:rgb(74 222 128 / var(--un-text-opacity)) /* #4ade80 */;}\n.text-red-400{--un-text-opacity:1;color:rgb(248 113 113 / var(--un-text-opacity)) /* #f87171 */;}\n.text-white\\/15{color:rgb(255 255 255 / 0.15) /* #fff */;}\n.text-white\\/25{color:rgb(255 255 255 / 0.25) /* #fff */;}\n.text-white\\/30{color:rgb(255 255 255 / 0.3) /* #fff */;}\n.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity)) /* #facc15 */;}\n.group\\/stat:hover .group-hover\\/stat\\:text-blue-400\\/70{color:rgb(96 165 250 / 0.7) /* #60a5fa */;}\n.font-black{font-weight:900;}\n.font-bold{font-weight:700;}\n.tracking-\\[0\\.15em\\]{letter-spacing:0.15em;}\n.tracking-\\[0\\.2em\\]{letter-spacing:0.2em;}\n.tracking-tighter{letter-spacing:-0.05em;}\n.tracking-widest{letter-spacing:0.1em;}\n.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;}\n.uppercase{text-transform:uppercase;}\n.shadow-inner{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.shadow-xl{--un-shadow:var(--un-shadow-inset) 0 20px 25px -5px var(--un-shadow-color, rgb(0 0 0 / 0.1)),var(--un-shadow-inset) 0 8px 10px -6px var(--un-shadow-color, rgb(0 0 0 / 0.1));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.ring-1{--un-ring-width:1px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.ring-white\\/5{--un-ring-color:rgb(255 255 255 / 0.05) /* #fff */;}\n.ring-inset{--un-ring-inset:inset;}\n.drop-shadow-\\[0_0_20px_rgba\\(234\\,179\\,8\\,0\\.5\\)\\]{--un-drop-shadow:drop-shadow(0 0 20px rgba(234,179,8,0.5));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}\n.drop-shadow-\\[0_0_20px_rgba\\(239\\,68\\,68\\,0\\.5\\)\\]{--un-drop-shadow:drop-shadow(0 0 20px rgba(239,68,68,0.5));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}\n.drop-shadow-\\[0_0_20px_rgba\\(34\\,197\\,94\\,0\\.5\\)\\]{--un-drop-shadow:drop-shadow(0 0 20px rgba(34,197,94,0.5));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.duration-300{transition-duration:300ms;}</style>","<script setup lang=\"ts\">\n/**\n * FloatingToggleButton - 浮动切换按钮\n */\nimport { Settings } from 'lucide-vue-next'\n\ninterface Props {\n isOpen: boolean\n isPaused: boolean\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n toggle: []\n}>()\n</script>\n\n<template>\n <Teleport to=\"body\">\n <button\n class=\"fixed bottom-8 right-8 z-[10001] w-14 h-14 bg-[#121212]/90 border border-white/20 backdrop-blur-2xl rounded-full flex items-center justify-center text-white/50 hover:text-white hover:bg-black transition-all shadow-[0_20px_40px_-8px_rgba(0,0,0,0.5)] active:scale-90 group pointer-events-auto ring-4 ring-white/5\"\n @click=\"emit('toggle')\"\n >\n <Settings\n class=\"w-6 h-6 transition-transform duration-500\"\n :class=\"{ 'rotate-180 text-blue-400 scale-110': isOpen }\"\n />\n <!-- Status Dot -->\n <div\n v-if=\"!isPaused\"\n class=\"absolute top-3 right-3 w-2.5 h-2.5 bg-green-500 rounded-full border-2 border-[#121212] shadow-[0_0_8px_rgba(34,197,94,0.6)]\"\n />\n </button>\n </Teleport>\n</template>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}\n.absolute{position:absolute;}\n.fixed{position:fixed;}\n.bottom-8{bottom:2rem;}\n.right-3{right:0.75rem;}\n.right-8{right:2rem;}\n.top-3{top:0.75rem;}\n.z-\\[10001\\]{z-index:10001;}\n.h-14{height:3.5rem;}\n.h-2\\.5{height:0.625rem;}\n.h-6{height:1.5rem;}\n.w-14{width:3.5rem;}\n.w-2\\.5{width:0.625rem;}\n.w-6{width:1.5rem;}\n.flex{display:flex;}\n.rotate-180{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:180deg;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.scale-110{--un-scale-x:1.1;--un-scale-y:1.1;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.active\\:scale-90:active{--un-scale-x:0.9;--un-scale-y:0.9;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.items-center{align-items:center;}\n.justify-center{justify-content:center;}\n.border{border-width:1px;}\n.border-2{border-width:2px;}\n.border-\\[\\#121212\\]{--un-border-opacity:1;border-color:rgb(18 18 18 / var(--un-border-opacity));}\n.border-white\\/20{border-color:rgb(255 255 255 / 0.2);}\n.rounded-full{border-radius:9999px;}\n.bg-\\[\\#121212\\]\\/90{background-color:rgb(18 18 18 / 0.9) /* #121212 */;}\n.bg-green-500{--un-bg-opacity:1;background-color:rgb(34 197 94 / var(--un-bg-opacity)) /* #22c55e */;}\n.hover\\:bg-black:hover{--un-bg-opacity:1;background-color:rgb(0 0 0 / var(--un-bg-opacity)) /* #000 */;}\n.text-blue-400{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity)) /* #60a5fa */;}\n.text-white\\/50{color:rgb(255 255 255 / 0.5) /* #fff */;}\n.hover\\:text-white:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.shadow-\\[0_0_8px_rgba\\(34\\,197\\,94\\,0\\.6\\)\\]{--un-shadow:0 0 8px var(--un-shadow-color, rgba(34, 197, 94, 0.6));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.shadow-\\[0_20px_40px_-8px_rgba\\(0\\,0\\,0\\,0\\.5\\)\\]{--un-shadow:0 20px 40px -8px var(--un-shadow-color, rgba(0, 0, 0, 0.5));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.ring-4{--un-ring-width:4px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.ring-white\\/5{--un-ring-color:rgb(255 255 255 / 0.05) /* #fff */;}\n.backdrop-blur-2xl{--un-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.duration-500{transition-duration:500ms;}</style>","<script setup lang=\"ts\">\n/**\n * CopyToast - 复制成功提示\n */\n\ninterface Props {\n message: string\n}\n\ndefineProps<Props>()\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition\n enter-active-class=\"transition-all duration-300\"\n leave-active-class=\"transition-all duration-300\"\n enter-from-class=\"opacity-0 translate-y-4\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-4\"\n >\n <div\n v-if=\"message\"\n class=\"fixed bottom-24 right-8 z-[10002] px-5 py-3 bg-green-600/90 backdrop-blur-xl rounded-xl border border-green-400/30 shadow-2xl text-white text-sm font-bold flex items-center gap-2\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\" />\n </svg>\n {{ message }}\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.fixed{position:fixed;}\n.bottom-24{bottom:6rem;}\n.right-8{right:2rem;}\n.z-\\[10002\\]{z-index:10002;}\n.h-4{height:1rem;}\n.w-4{width:1rem;}\n.flex{display:flex;}\n.translate-y-0{--un-translate-y:0;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.translate-y-4{--un-translate-y:1rem;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.items-center{align-items:center;}\n.gap-2{gap:0.5rem;}\n.border{border-width:1px;}\n.border-green-400\\/30{border-color:rgb(74 222 128 / 0.3);}\n.rounded-xl{border-radius:0.75rem;}\n.bg-green-600\\/90{background-color:rgb(22 163 74 / 0.9) /* #16a34a */;}\n[stroke-width~=\"\\32 \"]{stroke-width:2px;}\n.px-5{padding-left:1.25rem;padding-right:1.25rem;}\n.py-3{padding-top:0.75rem;padding-bottom:0.75rem;}\n.text-sm{font-size:0.875rem;line-height:1.25rem;}\n.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.font-bold{font-weight:700;}\n.opacity-0{opacity:0;}\n.opacity-100{opacity:1;}\n.shadow-2xl{--un-shadow:var(--un-shadow-inset) 0 25px 50px -12px var(--un-shadow-color, rgb(0 0 0 / 0.25));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.backdrop-blur-xl{--un-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.duration-300{transition-duration:300ms;}</style>","<script setup lang=\"ts\">\n/**\n * DebugShell - 调试面板主容器\n * 职责:布局、标签切换、事件协调\n */\nimport { ref, computed } from 'vue'\nimport { Activity, Settings, Bookmark, Play, Code } from 'lucide-vue-next'\nimport type { DebugUIProps, TabType } from './types'\nimport type { EffectMeta } from '@bg-effects/core'\nimport zhCN from './locales/zh-CN.json'\nimport en from './locales/en.json'\nimport Tabs from './components/Tabs.vue'\nimport DraggablePanel from './components/DraggablePanel.vue'\nimport SettingsTab from './components/SettingsTab.vue'\nimport AnimationTab from './components/AnimationTab.vue'\nimport PresetsTab from './components/PresetsTab.vue'\nimport ExportTab from './components/ExportTab.vue'\nimport StatsTab from './components/StatsTab.vue'\nimport FloatingToggleButton from './components/FloatingToggleButton.vue'\nimport CopyToast from './components/CopyToast.vue'\nimport { useDebugState, useCodeExport } from './composables'\n\nconst props = defineProps<DebugUIProps>()\nconst emit = defineEmits(['update:config', 'update:lang', 'randomize'])\n\nconst internalLang = computed({\n get: () => props.lang || 'zh-CN',\n set: (value) => emit('update:lang', value)\n})\n\n// 状态管理\nconst { isOpen, activeTab, isPaused, toggleOpen, togglePause, restart } = useDebugState()\nconst configPanelRef = ref<any>(null)\n\n// 代码导出\nconst { copyToast } = useCodeExport({\n config: props.config,\n metaId: props.meta.id,\n})\n\n// 国际化\nconst shellI18n: Record<string, any> = {\n 'zh-CN': zhCN,\n 'en': en,\n}\n\nconst currentLang = computed(() => internalLang.value)\nconst t = (path: string) => {\n const dict = shellI18n[currentLang.value]\n return path.split('.').reduce((obj: any, key) => obj?.[key], dict) || path\n}\nconst tObj = (item: any) => item[currentLang.value] || item.en\n\nconst toggleLang = () => {\n internalLang.value = internalLang.value === 'zh-CN' ? 'en' : 'zh-CN'\n}\n\n// 标签配置\ninterface TabItem {\n id: TabType\n icon: any\n label: string\n}\n\nconst tabs = computed((): TabItem[] => {\n const allTabs = [\n { id: 'settings' as TabType, icon: Settings, label: t('tabs.settings') },\n { id: 'presets' as TabType, icon: Bookmark, label: t('tabs.presets') },\n { id: 'animation' as TabType, icon: Play, label: t('tabs.animation') },\n { id: 'export' as TabType, icon: Code, label: t('tabs.export') },\n { id: 'stats' as TabType, icon: Activity, label: t('tabs.stats') },\n ]\n return allTabs\n})\n\n// 事件处理\nconst handleRandomize = () => {\n emit('randomize')\n}\n\nconst handleTogglePause = () => {\n togglePause(props.engine)\n}\n\nconst handleRestart = () => {\n restart(props.engine)\n}\n\nconst handleUpdateConfig = (newConfig: any) => {\n emit('update:config', newConfig)\n}\n</script>\n\n<template>\n <!-- 主面板 -->\n <DraggablePanel\n v-model:isOpen=\"isOpen\"\n :title=\"meta.name[currentLang] || meta.name.en\"\n :lang=\"currentLang\"\n @toggle-lang=\"toggleLang\"\n >\n <!-- 标签导航 -->\n <div class=\"px-5 py-3\">\n <Tabs v-model=\"activeTab\" :tabs=\"tabs\" />\n </div>\n\n <!-- 内容区域 -->\n <div class=\"flex-1 overflow-y-auto max-h-[480px] custom-scrollbar px-5 py-2 pointer-events-auto\">\n <!-- 设置标签 -->\n <SettingsTab v-if=\"activeTab === 'settings'\" :config-panel-ref=\"configPanelRef\">\n <div ref=\"configPanelRef\">\n <slot name=\"settings\" />\n </div>\n </SettingsTab>\n\n <!-- 动画控制标签 -->\n <AnimationTab\n v-else-if=\"activeTab === 'animation'\"\n :config=\"config\"\n :engine=\"engine\"\n :is-paused=\"isPaused\"\n :t=\"t\"\n @update:config=\"handleUpdateConfig\"\n @toggle-pause=\"handleTogglePause\"\n @restart=\"handleRestart\"\n />\n\n <!-- 预设标签 -->\n <PresetsTab\n v-else-if=\"activeTab === 'presets'\"\n :presets=\"(meta as EffectMeta).presets\"\n :config=\"config\"\n :t=\"t\"\n :t-obj=\"tObj\"\n @update:config=\"handleUpdateConfig\"\n />\n\n <!-- 导出标签 -->\n <ExportTab\n v-else-if=\"activeTab === 'export'\"\n :config=\"config\"\n :meta-id=\"meta.id\"\n :t=\"t\"\n />\n\n <!-- 统计标签 -->\n <StatsTab\n v-else-if=\"activeTab === 'stats'\"\n :t=\"t\"\n />\n </div>\n\n <!-- 底部操作按钮 -->\n <div v-if=\"activeTab === 'settings'\" class=\"px-5 pb-5 pt-3\">\n <button\n class=\"w-full h-11 flex items-center justify-center gap-3 bg-white/[0.03] hover:bg-white/10 rounded-xl border border-white/5 text-[10px] font-bold uppercase tracking-[0.25em] transition-all active:scale-[0.98] pointer-events-auto shadow-sm group/btn cursor-pointer\"\n @click=\"handleRandomize\"\n >\n <Activity class=\"w-3.5 h-3.5 text-white/30 group-hover/btn:text-blue-400 group-hover/btn:rotate-12 transition-all\" />\n <span class=\"text-white/50 group-hover/btn:text-white transition-colors\">\n {{ t('randomize') }}\n </span>\n </button>\n </div>\n </DraggablePanel>\n\n <!-- 浮动切换按钮 -->\n <FloatingToggleButton\n :is-open=\"isOpen\"\n :is-paused=\"isPaused\"\n @toggle=\"toggleOpen\"\n />\n\n <!-- 复制成功提示 -->\n <CopyToast :message=\"copyToast\" />\n</template>\n\n<style scoped>\n.custom-scrollbar::-webkit-scrollbar {\n width: 4px;\n}\n\n.custom-scrollbar::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.custom-scrollbar::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.08);\n border-radius: 10px;\n}\n\n.custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n</style>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.pointer-events-auto{pointer-events:auto;}\n.h-11{height:2.75rem;}\n.h-3\\.5{height:0.875rem;}\n.max-h-\\[480px\\]{max-height:480px;}\n.w-3\\.5{width:0.875rem;}\n.w-full{width:100%;}\n.flex{display:flex;}\n.flex-1{flex:1 1 0%;}\n.group\\/btn:hover .group-hover\\/btn\\:rotate-12{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:12deg;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.active\\:scale-\\[0\\.98\\]:active{--un-scale-x:0.98;--un-scale-y:0.98;transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}\n.cursor-pointer{cursor:pointer;}\n.items-center{align-items:center;}\n.justify-center{justify-content:center;}\n.gap-3{gap:0.75rem;}\n.overflow-y-auto{overflow-y:auto;}\n.border{border-width:1px;}\n.border-white\\/5{border-color:rgb(255 255 255 / 0.05);}\n.rounded-xl{border-radius:0.75rem;}\n.bg-white\\/\\[0\\.03\\]{background-color:rgb(255 255 255 / 0.03) /* #fff */;}\n.hover\\:bg-white\\/10:hover{background-color:rgb(255 255 255 / 0.1) /* #fff */;}\n.px-5{padding-left:1.25rem;padding-right:1.25rem;}\n.py-2{padding-top:0.5rem;padding-bottom:0.5rem;}\n.py-3{padding-top:0.75rem;padding-bottom:0.75rem;}\n.pb-5{padding-bottom:1.25rem;}\n.pt-3{padding-top:0.75rem;}\n.text-\\[10px\\]{font-size:10px;}\n.text-white\\/30{color:rgb(255 255 255 / 0.3) /* #fff */;}\n.text-white\\/50{color:rgb(255 255 255 / 0.5) /* #fff */;}\n.group\\/btn:hover .group-hover\\/btn\\:text-blue-400{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity)) /* #60a5fa */;}\n.group\\/btn:hover .group-hover\\/btn\\:text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity)) /* #fff */;}\n.font-bold{font-weight:700;}\n.tracking-\\[0\\.25em\\]{letter-spacing:0.25em;}\n.uppercase{text-transform:uppercase;}\n.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}\n.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}\n.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}</style>"],"names":["emit","__emit","handleTabClick","tabId","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_Fragment","_renderList","__props","tab","$event","_hoisted_4","_createBlock","_resolveDynamicComponent","_hoisted_5","_toDisplayString","el","ref","handle","x","y","style","useDraggable","close","_Teleport","_unref","_hoisted_3","_createVNode","Languages","X","_renderSlot","_ctx","props","updateTimeSpeed","value","_a","_hoisted_6","_hoisted_7","_cache","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","Play","Settings","_normalizeClass","_hoisted_13","_hoisted_14","Activity","_hoisted_15","_hoisted_16","_hoisted_17","applyPreset","preset","Bookmark","_hoisted_8","val","key","useDebugState","isOpen","activeTab","isPaused","engine","useFpsMonitor","fps","useFps","fpsHistory","fpsInterval","onMounted","currentFps","onUnmounted","useCodeExport","options","copyToast","copyToastTimer","getComponentName","g","generateCode","type","componentName","propsStr","copyCode","code","showCopyToast","err","message","Code","Monitor","v","i","_Transition","_createTextVNode","internalLang","computed","toggleOpen","togglePause","restart","configPanelRef","shellI18n","zhCN","en","currentLang","t","path","dict","obj","tObj","item","toggleLang","tabs","handleRandomize","handleTogglePause","handleRestart","handleUpdateConfig","newConfig","DraggablePanel","Tabs","SettingsTab","AnimationTab","PresetsTab","ExportTab","StatsTab","FloatingToggleButton","CopyToast"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode('.tabs-container[data-v-883d4db1]{position:relative}.tabs-container[data-v-883d4db1]:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:1rem;padding:1px;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none}[data-v-883d4db1],[data-v-883d4db1]:before,[data-v-883d4db1]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-883d4db1]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-883d4db1]{pointer-events:auto}.absolute[data-v-883d4db1]{position:absolute}.relative[data-v-883d4db1]{position:relative}.inset-0[data-v-883d4db1]{top:0;right:0;bottom:0;left:0}.z-10[data-v-883d4db1]{z-index:10}.mb-1\\.5[data-v-883d4db1]{margin-bottom:.375rem}.h-4[data-v-883d4db1]{height:1rem}.w-4[data-v-883d4db1]{width:1rem}.flex[data-v-883d4db1]{display:flex}.flex-1[data-v-883d4db1]{flex:1 1 0%}.flex-col[data-v-883d4db1]{flex-direction:column}.scale-\\[1\\.02\\][data-v-883d4db1]{--un-scale-x:1.02;--un-scale-y:1.02;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.scale-110[data-v-883d4db1]{--un-scale-x:1.1;--un-scale-y:1.1;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.group\\/tab:hover .group-hover\\/tab\\:scale-105[data-v-883d4db1]{--un-scale-x:1.05;--un-scale-y:1.05;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.hover\\:scale-\\[1\\.01\\][data-v-883d4db1]:hover{--un-scale-x:1.01;--un-scale-y:1.01;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.cursor-pointer[data-v-883d4db1]{cursor:pointer}.items-center[data-v-883d4db1]{align-items:center}.justify-center[data-v-883d4db1]{justify-content:center}.gap-1\\.5[data-v-883d4db1]{gap:.375rem}.gap-2[data-v-883d4db1]{gap:.5rem}.overflow-hidden[data-v-883d4db1]{overflow:hidden}.border[data-v-883d4db1]{border-width:1px}.border-white\\/10[data-v-883d4db1]{border-color:#ffffff1a}.border-white\\/5[data-v-883d4db1]{border-color:#ffffff0d}.rounded-2xl[data-v-883d4db1]{border-radius:1rem}.rounded-xl[data-v-883d4db1]{border-radius:.75rem}.bg-white\\/\\[0\\.04\\][data-v-883d4db1]{background-color:#ffffff0a}.hover\\:bg-white\\/10[data-v-883d4db1]:hover{background-color:#ffffff1a}.from-black\\/50[data-v-883d4db1]{--un-gradient-from-position:0%;--un-gradient-from:rgb(0 0 0 / .5) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(0 0 0 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.from-blue-400\\/0[data-v-883d4db1]{--un-gradient-from-position:0%;--un-gradient-from:rgb(96 165 250 / 0) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(96 165 250 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.from-blue-500[data-v-883d4db1]{--un-gradient-from-position:0%;--un-gradient-from:rgb(59 130 246 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(59 130 246 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.from-white\\/20[data-v-883d4db1]{--un-gradient-from-position:0%;--un-gradient-from:rgb(255 255 255 / .2) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.via-blue-400\\/5[data-v-883d4db1]{--un-gradient-via-position:50%;--un-gradient-to:rgb(96 165 250 / 0);--un-gradient-stops:var(--un-gradient-from), rgb(96 165 250 / .05) var(--un-gradient-via-position), var(--un-gradient-to)}.to-black\\/30[data-v-883d4db1]{--un-gradient-to-position:100%;--un-gradient-to:rgb(0 0 0 / .3) var(--un-gradient-to-position)}.to-blue-400\\/0[data-v-883d4db1]{--un-gradient-to-position:100%;--un-gradient-to:rgb(96 165 250 / 0) var(--un-gradient-to-position)}.to-blue-600[data-v-883d4db1]{--un-gradient-to-position:100%;--un-gradient-to:rgb(37 99 235 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.to-transparent[data-v-883d4db1]{--un-gradient-to-position:100%;--un-gradient-to:transparent var(--un-gradient-to-position)}.bg-gradient-to-b[data-v-883d4db1]{--un-gradient-shape:to bottom in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.bg-gradient-to-br[data-v-883d4db1]{--un-gradient-shape:to bottom right in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.bg-gradient-to-t[data-v-883d4db1]{--un-gradient-shape:to top in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.p-1\\.5[data-v-883d4db1]{padding:.375rem}.p-2[data-v-883d4db1]{padding:.5rem}.text-center[data-v-883d4db1]{text-align:center}.text-\\[8px\\][data-v-883d4db1]{font-size:8px}.text-white[data-v-883d4db1]{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-white\\/30[data-v-883d4db1]{color:#ffffff4d}.text-white\\/50[data-v-883d4db1]{color:#ffffff80}.group\\/tab:hover .group-hover\\/tab\\:text-white\\/60[data-v-883d4db1]{color:#fff9}.hover\\:text-white[data-v-883d4db1]:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.font-black[data-v-883d4db1]{font-weight:900}.leading-tight[data-v-883d4db1]{line-height:1.25}.tracking-\\[0\\.15em\\][data-v-883d4db1]{letter-spacing:.15em}.uppercase[data-v-883d4db1]{text-transform:uppercase}.tab[data-v-883d4db1]{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.opacity-0[data-v-883d4db1]{opacity:0}.opacity-50[data-v-883d4db1]{opacity:.5}.group\\/tab:hover .group-hover\\/tab\\:opacity-100[data-v-883d4db1]{opacity:1}.shadow-2xl[data-v-883d4db1]{--un-shadow:var(--un-shadow-inset) 0 25px 50px -12px var(--un-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-blue-500\\/30[data-v-883d4db1]{--un-shadow-color:rgb(59 130 246 / .3) }.shadow-lg[data-v-883d4db1]{--un-shadow:var(--un-shadow-inset) 0 10px 15px -3px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 4px 6px -4px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.backdrop-blur-xl[data-v-883d4db1]{--un-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.drop-shadow-lg[data-v-883d4db1]{--un-drop-shadow:drop-shadow(0 10px 8px var(--un-drop-shadow-color, rgb(0 0 0 / .04))) drop-shadow(0 4px 3px var(--un-drop-shadow-color, rgb(0 0 0 / .1)));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition-all[data-v-883d4db1]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity[data-v-883d4db1]{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform[data-v-883d4db1]{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300[data-v-883d4db1]{transition-duration:.3s}.panel-base[data-v-29a974c4]{background:#0a0a0cd9;-webkit-backdrop-filter:blur(32px);backdrop-filter:blur(32px);border-radius:1rem;border:1px solid rgba(255,255,255,.1);box-shadow:0 32px 64px -16px #000000b3,0 0 0 1px #ffffff0d;pointer-events:auto}[data-v-29a974c4],[data-v-29a974c4]:before,[data-v-29a974c4]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-29a974c4]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-29a974c4]{pointer-events:auto}.fixed[data-v-29a974c4]{position:fixed}.z-\\[10000\\][data-v-29a974c4]{z-index:10000}.h-1\\.5[data-v-29a974c4]{height:.375rem}.h-12[data-v-29a974c4]{height:3rem}.h-3\\.5[data-v-29a974c4]{height:.875rem}.h-7[data-v-29a974c4]{height:1.75rem}.w-1\\.5[data-v-29a974c4]{width:.375rem}.w-3\\.5[data-v-29a974c4]{width:.875rem}.w-7[data-v-29a974c4]{width:1.75rem}.w-80[data-v-29a974c4]{width:20rem}.flex[data-v-29a974c4]{display:flex}.flex-col[data-v-29a974c4]{flex-direction:column}.cursor-pointer[data-v-29a974c4]{cursor:pointer}.cursor-move[data-v-29a974c4]{cursor:move}.active\\:cursor-grabbing[data-v-29a974c4]:active{cursor:grabbing}.select-none[data-v-29a974c4]{-webkit-user-select:none;user-select:none}.items-center[data-v-29a974c4]{align-items:center}.justify-center[data-v-29a974c4]{justify-content:center}.justify-between[data-v-29a974c4]{justify-content:space-between}.gap-2[data-v-29a974c4]{gap:.5rem}.gap-3[data-v-29a974c4]{gap:.75rem}.overflow-hidden[data-v-29a974c4]{overflow:hidden}.truncate[data-v-29a974c4]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.border[data-v-29a974c4]{border-width:1px}.border-b[data-v-29a974c4]{border-bottom-width:1px}.border-white\\/10[data-v-29a974c4]{border-color:#ffffff1a}.border-white\\/5[data-v-29a974c4]{border-color:#ffffff0d}.hover\\:border-blue-500\\/30[data-v-29a974c4]:hover{border-color:#3b82f64d}.hover\\:border-red-500\\/30[data-v-29a974c4]:hover{border-color:#ef44444d}.rounded-full[data-v-29a974c4]{border-radius:9999px}.rounded-lg[data-v-29a974c4]{border-radius:.5rem}.bg-blue-500[data-v-29a974c4]{--un-bg-opacity:1;background-color:rgb(59 130 246 / var(--un-bg-opacity))}.bg-white\\/5[data-v-29a974c4]{background-color:#ffffff0d}.hover\\:bg-red-500\\/20[data-v-29a974c4]:hover{background-color:#ef444433}.hover\\:bg-white\\/10[data-v-29a974c4]:hover{background-color:#ffffff1a}.px-5[data-v-29a974c4]{padding-left:1.25rem;padding-right:1.25rem}.text-\\[10px\\][data-v-29a974c4]{font-size:10px}.text-white[data-v-29a974c4]{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-white\\/30[data-v-29a974c4]{color:#ffffff4d}.text-white\\/40[data-v-29a974c4]{color:#fff6}.text-white\\/60[data-v-29a974c4]{color:#fff9}.hover\\:text-white[data-v-29a974c4]:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.font-bold[data-v-29a974c4]{font-weight:700}.tracking-\\[0\\.2em\\][data-v-29a974c4]{letter-spacing:.2em}.font-sans[data-v-29a974c4]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.uppercase[data-v-29a974c4]{text-transform:uppercase}.shadow-\\[0_0_8px_rgba\\(59\\,130\\,246\\,0\\.6\\)\\][data-v-29a974c4]{--un-shadow:0 0 8px var(--un-shadow-color, rgba(59, 130, 246, .6));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.backdrop-filter[data-v-29a974c4]{-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.transition-all[data-v-29a974c4]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.settings-container[data-v-47dffb90] input[type=range],.settings-container[data-v-47dffb90] button,.settings-container[data-v-47dffb90] select{pointer-events:auto!important}[data-v-47dffb90],[data-v-47dffb90]:before,[data-v-47dffb90]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-47dffb90]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-47dffb90]{pointer-events:auto}@keyframes spin-slow-6c1a0d2f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin-slow[data-v-6c1a0d2f]{animation:spin-slow-6c1a0d2f 8s linear infinite}[data-v-6c1a0d2f],[data-v-6c1a0d2f]:before,[data-v-6c1a0d2f]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-6c1a0d2f]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-6c1a0d2f]{pointer-events:auto}.grid[data-v-6c1a0d2f]{display:grid}.grid-cols-2[data-v-6c1a0d2f]{grid-template-columns:repeat(2,minmax(0,1fr))}.mx-1[data-v-6c1a0d2f]{margin-left:.25rem;margin-right:.25rem}.mb-0\\.5[data-v-6c1a0d2f]{margin-bottom:.125rem}.h-1\\.5[data-v-6c1a0d2f]{height:.375rem}.h-10[data-v-6c1a0d2f]{height:2.5rem}.h-5[data-v-6c1a0d2f]{height:1.25rem}.w-10[data-v-6c1a0d2f]{width:2.5rem}.w-5[data-v-6c1a0d2f]{width:1.25rem}.w-full[data-v-6c1a0d2f]{width:100%}.flex[data-v-6c1a0d2f]{display:flex}.flex-col[data-v-6c1a0d2f]{flex-direction:column}.transform[data-v-6c1a0d2f]{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.cursor-pointer[data-v-6c1a0d2f]{cursor:pointer}.appearance-none[data-v-6c1a0d2f]{-webkit-appearance:none;-moz-appearance:none;appearance:none}.items-center[data-v-6c1a0d2f]{align-items:center}.justify-center[data-v-6c1a0d2f]{justify-content:center}.justify-between[data-v-6c1a0d2f]{justify-content:space-between}.gap-3[data-v-6c1a0d2f]{gap:.75rem}.gap-4[data-v-6c1a0d2f]{gap:1rem}.gap-6[data-v-6c1a0d2f]{gap:1.5rem}.border[data-v-6c1a0d2f]{border-width:1px}.border-orange-500\\/10[data-v-6c1a0d2f]{border-color:#f973161a}.border-white\\/5[data-v-6c1a0d2f]{border-color:#ffffff0d}.group:hover .group-hover\\:border-white\\/20[data-v-6c1a0d2f]{border-color:#fff3}.rounded-full[data-v-6c1a0d2f]{border-radius:9999px}.rounded-xl[data-v-6c1a0d2f]{border-radius:.75rem}.bg-orange-500\\/5[data-v-6c1a0d2f]{background-color:#f973160d}.bg-white\\/\\[0\\.03\\][data-v-6c1a0d2f]{background-color:#ffffff08}.bg-white\\/5[data-v-6c1a0d2f]{background-color:#ffffff0d}.hover\\:bg-white\\/10[data-v-6c1a0d2f]:hover{background-color:#ffffff1a}.p-4[data-v-6c1a0d2f]{padding:1rem}.px-1[data-v-6c1a0d2f]{padding-left:.25rem;padding-right:.25rem}.py-2[data-v-6c1a0d2f]{padding-top:.5rem;padding-bottom:.5rem}.py-5[data-v-6c1a0d2f]{padding-top:1.25rem;padding-bottom:1.25rem}.text-center[data-v-6c1a0d2f]{text-align:center}.text-\\[11px\\][data-v-6c1a0d2f]{font-size:11px}.text-\\[9px\\][data-v-6c1a0d2f]{font-size:9px}.text-blue-400[data-v-6c1a0d2f],.group\\/item:hover .group-hover\\/item\\:text-blue-400[data-v-6c1a0d2f]{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity))}.text-current[data-v-6c1a0d2f]{color:currentColor}.text-green-400\\/60[data-v-6c1a0d2f]{color:#4ade8099}.text-orange-400\\/60[data-v-6c1a0d2f]{color:#fb923c99}.text-white\\/20[data-v-6c1a0d2f]{color:#fff3}.text-white\\/30[data-v-6c1a0d2f]{color:#ffffff4d}.text-white\\/40[data-v-6c1a0d2f]{color:#fff6}.group\\/item:hover .group-hover\\/item\\:text-white\\/50[data-v-6c1a0d2f]{color:#ffffff80}.hover\\:text-white[data-v-6c1a0d2f]:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.font-black[data-v-6c1a0d2f]{font-weight:900}.font-medium[data-v-6c1a0d2f]{font-weight:500}.leading-relaxed[data-v-6c1a0d2f]{line-height:1.625}.tracking-\\[0\\.1em\\][data-v-6c1a0d2f]{letter-spacing:.1em}.tracking-\\[0\\.2em\\][data-v-6c1a0d2f]{letter-spacing:.2em}.font-mono[data-v-6c1a0d2f]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.uppercase[data-v-6c1a0d2f]{text-transform:uppercase}.accent-blue-500[data-v-6c1a0d2f]{--un-accent-opacity:1;accent-color:rgb(59 130 246 / var(--un-accent-opacity))}.shadow-inner[data-v-6c1a0d2f]{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-sm[data-v-6c1a0d2f]{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-all[data-v-6c1a0d2f]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors[data-v-6c1a0d2f]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}[data-v-b19e2d94],[data-v-b19e2d94]:before,[data-v-b19e2d94]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-b19e2d94]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-b19e2d94]{pointer-events:auto}.relative[data-v-b19e2d94]{position:relative}.grid[data-v-b19e2d94]{display:grid}.grid-cols-1[data-v-b19e2d94]{grid-template-columns:repeat(1,minmax(0,1fr))}.mb-2[data-v-b19e2d94]{margin-bottom:.5rem}.h-3\\.5[data-v-b19e2d94]{height:.875rem}.w-3\\.5[data-v-b19e2d94]{width:.875rem}.flex[data-v-b19e2d94]{display:flex}.flex-col[data-v-b19e2d94]{flex-direction:column}.flex-wrap[data-v-b19e2d94]{flex-wrap:wrap}.active\\:scale-\\[0\\.98\\][data-v-b19e2d94]:active{--un-scale-x:.98;--un-scale-y:.98;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.cursor-pointer[data-v-b19e2d94]{cursor:pointer}.items-center[data-v-b19e2d94]{align-items:center}.justify-between[data-v-b19e2d94]{justify-content:space-between}.gap-1\\.5[data-v-b19e2d94]{gap:.375rem}.gap-2\\.5[data-v-b19e2d94]{gap:.625rem}.gap-3[data-v-b19e2d94]{gap:.75rem}.gap-5[data-v-b19e2d94]{gap:1.25rem}.overflow-hidden[data-v-b19e2d94]{overflow:hidden}.border[data-v-b19e2d94]{border-width:1px}.border-white\\/5[data-v-b19e2d94]{border-color:#ffffff0d}.rounded[data-v-b19e2d94]{border-radius:.25rem}.rounded-xl[data-v-b19e2d94]{border-radius:.75rem}.bg-white\\/\\[0\\.03\\][data-v-b19e2d94]{background-color:#ffffff08}.bg-white\\/5[data-v-b19e2d94]{background-color:#ffffff0d}.hover\\:bg-white\\/10[data-v-b19e2d94]:hover{background-color:#ffffff1a}.p-4[data-v-b19e2d94]{padding:1rem}.px-1[data-v-b19e2d94]{padding-left:.25rem;padding-right:.25rem}.px-1\\.5[data-v-b19e2d94]{padding-left:.375rem;padding-right:.375rem}.py-0\\.5[data-v-b19e2d94]{padding-top:.125rem;padding-bottom:.125rem}.text-left[data-v-b19e2d94]{text-align:left}.text-\\[8px\\][data-v-b19e2d94]{font-size:8px}.text-\\[9px\\][data-v-b19e2d94]{font-size:9px}.text-xs[data-v-b19e2d94]{font-size:.75rem;line-height:1rem}.text-white\\/10[data-v-b19e2d94]{color:#ffffff1a}.text-white\\/25[data-v-b19e2d94]{color:#ffffff40}.text-white\\/40[data-v-b19e2d94]{color:#fff6}.text-white\\/50[data-v-b19e2d94]{color:#ffffff80}.group:hover .group-hover\\:text-blue-400[data-v-b19e2d94]{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity))}.group:hover .group-hover\\:text-white[data-v-b19e2d94]{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.font-black[data-v-b19e2d94]{font-weight:900}.tracking-tighter[data-v-b19e2d94]{letter-spacing:-.05em}.tracking-widest[data-v-b19e2d94]{letter-spacing:.1em}.font-mono[data-v-b19e2d94]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.uppercase[data-v-b19e2d94]{text-transform:uppercase}.opacity-20[data-v-b19e2d94]{opacity:.2}.group:hover .group-hover\\:opacity-60[data-v-b19e2d94]{opacity:.6}.transition-all[data-v-b19e2d94]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors[data-v-b19e2d94]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity[data-v-b19e2d94]{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.custom-scrollbar[data-v-bc42beda]::-webkit-scrollbar{width:4px}.custom-scrollbar[data-v-bc42beda]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-bc42beda]::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:10px}.custom-scrollbar[data-v-bc42beda]::-webkit-scrollbar-thumb:hover{background:#fff3}[data-v-bc42beda],[data-v-bc42beda]:before,[data-v-bc42beda]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-bc42beda]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-bc42beda]{pointer-events:auto}.absolute[data-v-bc42beda]{position:absolute}.relative[data-v-bc42beda]{position:relative}.right-3[data-v-bc42beda]{right:.75rem}.top-3[data-v-bc42beda]{top:.75rem}.h-4[data-v-bc42beda]{height:1rem}.max-h-32[data-v-bc42beda]{max-height:8rem}.max-h-48[data-v-bc42beda]{max-height:12rem}.w-4[data-v-bc42beda]{width:1rem}.flex[data-v-bc42beda]{display:flex}.flex-col[data-v-bc42beda]{flex-direction:column}.cursor-pointer[data-v-bc42beda]{cursor:pointer}.items-center[data-v-bc42beda]{align-items:center}.justify-between[data-v-bc42beda]{justify-content:space-between}.gap-3[data-v-bc42beda]{gap:.75rem}.gap-6[data-v-bc42beda]{gap:1.5rem}.overflow-hidden[data-v-bc42beda]{overflow:hidden}.overflow-y-auto[data-v-bc42beda]{overflow-y:auto}.whitespace-pre-wrap[data-v-bc42beda]{white-space:pre-wrap}.border[data-v-bc42beda]{border-width:1px}.border-white\\/10[data-v-bc42beda]{border-color:#ffffff1a}.border-white\\/5[data-v-bc42beda]{border-color:#ffffff0d}.rounded-lg[data-v-bc42beda]{border-radius:.5rem}.rounded-xl[data-v-bc42beda]{border-radius:.75rem}.bg-black\\/40[data-v-bc42beda]{background-color:#0006}.bg-white\\/5[data-v-bc42beda]{background-color:#ffffff0d}.hover\\:bg-blue-600[data-v-bc42beda]:hover{--un-bg-opacity:1;background-color:rgb(37 99 235 / var(--un-bg-opacity))}.active\\:bg-blue-700[data-v-bc42beda]:active{--un-bg-opacity:1;background-color:rgb(29 78 216 / var(--un-bg-opacity))}.p-2[data-v-bc42beda]{padding:.5rem}.p-4[data-v-bc42beda]{padding:1rem}.px-1[data-v-bc42beda]{padding-left:.25rem;padding-right:.25rem}.text-\\[9px\\][data-v-bc42beda]{font-size:9px}.text-white\\/25[data-v-bc42beda]{color:#ffffff40}.text-white\\/30[data-v-bc42beda]{color:#ffffff4d}.text-white\\/40[data-v-bc42beda]{color:#fff6}.font-black[data-v-bc42beda]{font-weight:900}.leading-relaxed[data-v-bc42beda]{line-height:1.625}.tracking-widest[data-v-bc42beda]{letter-spacing:.1em}.font-mono[data-v-bc42beda]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.uppercase[data-v-bc42beda]{text-transform:uppercase}.italic[data-v-bc42beda]{font-style:italic}.opacity-0[data-v-bc42beda]{opacity:0}.group:hover .group-hover\\:opacity-100[data-v-bc42beda]{opacity:1}.shadow-inner[data-v-bc42beda]{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-all[data-v-bc42beda]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}[data-v-63239024],[data-v-63239024]:before,[data-v-63239024]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-63239024]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.relative[data-v-63239024]{position:relative}.mb-1[data-v-63239024]{margin-bottom:.25rem}.h-24[data-v-63239024]{height:6rem}.h-5[data-v-63239024]{height:1.25rem}.h-full[data-v-63239024]{height:100%}.w-5[data-v-63239024]{width:1.25rem}.w-full[data-v-63239024]{width:100%}.flex[data-v-63239024]{display:flex}.flex-col[data-v-63239024]{flex-direction:column}.items-end[data-v-63239024]{align-items:flex-end}.items-center[data-v-63239024]{align-items:center}.justify-center[data-v-63239024]{justify-content:center}.justify-between[data-v-63239024]{justify-content:space-between}.gap-3[data-v-63239024]{gap:.75rem}.gap-6[data-v-63239024]{gap:1.5rem}.overflow-hidden[data-v-63239024]{overflow:hidden}.border[data-v-63239024]{border-width:1px}.border-white\\/10[data-v-63239024]{border-color:#ffffff1a}.rounded-2xl[data-v-63239024]{border-radius:1rem}.rounded-xl[data-v-63239024]{border-radius:.75rem}.bg-black\\/40[data-v-63239024]{background-color:#0006}.from-white\\/\\[0\\.05\\][data-v-63239024]{--un-gradient-from-position:0%;--un-gradient-from:rgb(255 255 255 / .05) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.hover\\:from-white\\/\\[0\\.08\\][data-v-63239024]:hover{--un-gradient-from-position:0%;--un-gradient-from:rgb(255 255 255 / .08) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-white\\/\\[0\\.02\\][data-v-63239024]{--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / .02) var(--un-gradient-to-position)}.hover\\:to-white\\/\\[0\\.04\\][data-v-63239024]:hover{--un-gradient-to-position:100%;--un-gradient-to:rgb(255 255 255 / .04) var(--un-gradient-to-position)}.bg-gradient-to-br[data-v-63239024]{--un-gradient-shape:to bottom right in oklch;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}[stroke-width~="2"][data-v-63239024]{stroke-width:2px}.stroke-blue-400\\/40[data-v-63239024]{stroke:#60a5fa66}[stroke~=none][data-v-63239024]{stroke:none}.p-6[data-v-63239024]{padding:1.5rem}.px-1[data-v-63239024]{padding-left:.25rem;padding-right:.25rem}.py-2[data-v-63239024]{padding-top:.5rem;padding-bottom:.5rem}.text-\\[10px\\][data-v-63239024]{font-size:10px}.text-\\[11px\\][data-v-63239024]{font-size:11px}.text-\\[8px\\][data-v-63239024]{font-size:8px}.text-\\[9px\\][data-v-63239024]{font-size:9px}.text-6xl[data-v-63239024]{font-size:3.75rem;line-height:1}.text-blue-400\\/40[data-v-63239024]{color:#60a5fa66}.text-green-400[data-v-63239024]{--un-text-opacity:1;color:rgb(74 222 128 / var(--un-text-opacity))}.text-red-400[data-v-63239024]{--un-text-opacity:1;color:rgb(248 113 113 / var(--un-text-opacity))}.text-white\\/15[data-v-63239024]{color:#ffffff26}.text-white\\/25[data-v-63239024]{color:#ffffff40}.text-white\\/30[data-v-63239024]{color:#ffffff4d}.text-yellow-400[data-v-63239024]{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.group\\/stat:hover .group-hover\\/stat\\:text-blue-400\\/70[data-v-63239024]{color:#60a5fab3}.font-black[data-v-63239024]{font-weight:900}.font-bold[data-v-63239024]{font-weight:700}.tracking-\\[0\\.15em\\][data-v-63239024]{letter-spacing:.15em}.tracking-\\[0\\.2em\\][data-v-63239024]{letter-spacing:.2em}.tracking-tighter[data-v-63239024]{letter-spacing:-.05em}.tracking-widest[data-v-63239024]{letter-spacing:.1em}.font-mono[data-v-63239024]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.uppercase[data-v-63239024]{text-transform:uppercase}.shadow-inner[data-v-63239024]{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-xl[data-v-63239024]{--un-shadow:var(--un-shadow-inset) 0 20px 25px -5px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 8px 10px -6px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.ring-1[data-v-63239024]{--un-ring-width:1px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.ring-white\\/5[data-v-63239024]{--un-ring-color:rgb(255 255 255 / .05) }.ring-inset[data-v-63239024]{--un-ring-inset:inset}.drop-shadow-\\[0_0_20px_rgba\\(234\\,179\\,8\\,0\\.5\\)\\][data-v-63239024]{--un-drop-shadow:drop-shadow(0 0 20px rgba(234,179,8,.5));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.drop-shadow-\\[0_0_20px_rgba\\(239\\,68\\,68\\,0\\.5\\)\\][data-v-63239024]{--un-drop-shadow:drop-shadow(0 0 20px rgba(239,68,68,.5));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.drop-shadow-\\[0_0_20px_rgba\\(34\\,197\\,94\\,0\\.5\\)\\][data-v-63239024]{--un-drop-shadow:drop-shadow(0 0 20px rgba(34,197,94,.5));filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition-all[data-v-63239024]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors[data-v-63239024]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300[data-v-63239024]{transition-duration:.3s}[data-v-eb6add23],[data-v-eb6add23]:before,[data-v-eb6add23]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-eb6add23]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-eb6add23]{pointer-events:auto}.absolute[data-v-eb6add23]{position:absolute}.fixed[data-v-eb6add23]{position:fixed}.bottom-8[data-v-eb6add23]{bottom:2rem}.right-3[data-v-eb6add23]{right:.75rem}.right-8[data-v-eb6add23]{right:2rem}.top-3[data-v-eb6add23]{top:.75rem}.z-\\[10001\\][data-v-eb6add23]{z-index:10001}.h-14[data-v-eb6add23]{height:3.5rem}.h-2\\.5[data-v-eb6add23]{height:.625rem}.h-6[data-v-eb6add23]{height:1.5rem}.w-14[data-v-eb6add23]{width:3.5rem}.w-2\\.5[data-v-eb6add23]{width:.625rem}.w-6[data-v-eb6add23]{width:1.5rem}.flex[data-v-eb6add23]{display:flex}.rotate-180[data-v-eb6add23]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:180deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.scale-110[data-v-eb6add23]{--un-scale-x:1.1;--un-scale-y:1.1;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.active\\:scale-90[data-v-eb6add23]:active{--un-scale-x:.9;--un-scale-y:.9;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.items-center[data-v-eb6add23]{align-items:center}.justify-center[data-v-eb6add23]{justify-content:center}.border[data-v-eb6add23]{border-width:1px}.border-2[data-v-eb6add23]{border-width:2px}.border-\\[\\#121212\\][data-v-eb6add23]{--un-border-opacity:1;border-color:rgb(18 18 18 / var(--un-border-opacity))}.border-white\\/20[data-v-eb6add23]{border-color:#fff3}.rounded-full[data-v-eb6add23]{border-radius:9999px}.bg-\\[\\#121212\\]\\/90[data-v-eb6add23]{background-color:#121212e6}.bg-green-500[data-v-eb6add23]{--un-bg-opacity:1;background-color:rgb(34 197 94 / var(--un-bg-opacity))}.hover\\:bg-black[data-v-eb6add23]:hover{--un-bg-opacity:1;background-color:rgb(0 0 0 / var(--un-bg-opacity))}.text-blue-400[data-v-eb6add23]{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity))}.text-white\\/50[data-v-eb6add23]{color:#ffffff80}.hover\\:text-white[data-v-eb6add23]:hover{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.shadow-\\[0_0_8px_rgba\\(34\\,197\\,94\\,0\\.6\\)\\][data-v-eb6add23]{--un-shadow:0 0 8px var(--un-shadow-color, rgba(34, 197, 94, .6));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-\\[0_20px_40px_-8px_rgba\\(0\\,0\\,0\\,0\\.5\\)\\][data-v-eb6add23]{--un-shadow:0 20px 40px -8px var(--un-shadow-color, rgba(0, 0, 0, .5));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.ring-4[data-v-eb6add23]{--un-ring-width:4px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.ring-white\\/5[data-v-eb6add23]{--un-ring-color:rgb(255 255 255 / .05) }.backdrop-blur-2xl[data-v-eb6add23]{--un-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.transition-all[data-v-eb6add23]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform[data-v-eb6add23]{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-500[data-v-eb6add23]{transition-duration:.5s}[data-v-7e780824],[data-v-7e780824]:before,[data-v-7e780824]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-7e780824]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.fixed[data-v-7e780824]{position:fixed}.bottom-24[data-v-7e780824]{bottom:6rem}.right-8[data-v-7e780824]{right:2rem}.z-\\[10002\\][data-v-7e780824]{z-index:10002}.h-4[data-v-7e780824]{height:1rem}.w-4[data-v-7e780824]{width:1rem}.flex[data-v-7e780824]{display:flex}.translate-y-0[data-v-7e780824]{--un-translate-y:0;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.translate-y-4[data-v-7e780824]{--un-translate-y:1rem;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.items-center[data-v-7e780824]{align-items:center}.gap-2[data-v-7e780824]{gap:.5rem}.border[data-v-7e780824]{border-width:1px}.border-green-400\\/30[data-v-7e780824]{border-color:#4ade804d}.rounded-xl[data-v-7e780824]{border-radius:.75rem}.bg-green-600\\/90[data-v-7e780824]{background-color:#16a34ae6}[stroke-width~="2"][data-v-7e780824]{stroke-width:2px}.px-5[data-v-7e780824]{padding-left:1.25rem;padding-right:1.25rem}.py-3[data-v-7e780824]{padding-top:.75rem;padding-bottom:.75rem}.text-sm[data-v-7e780824]{font-size:.875rem;line-height:1.25rem}.text-white[data-v-7e780824]{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.font-bold[data-v-7e780824]{font-weight:700}.opacity-0[data-v-7e780824]{opacity:0}.opacity-100[data-v-7e780824]{opacity:1}.shadow-2xl[data-v-7e780824]{--un-shadow:var(--un-shadow-inset) 0 25px 50px -12px var(--un-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.backdrop-blur-xl[data-v-7e780824]{--un-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.transition-all[data-v-7e780824]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300[data-v-7e780824]{transition-duration:.3s}.custom-scrollbar[data-v-e0f091f2]::-webkit-scrollbar{width:4px}.custom-scrollbar[data-v-e0f091f2]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-e0f091f2]::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:10px}.custom-scrollbar[data-v-e0f091f2]::-webkit-scrollbar-thumb:hover{background:#fff3}[data-v-e0f091f2],[data-v-e0f091f2]:before,[data-v-e0f091f2]:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }[data-v-e0f091f2]::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.pointer-events-auto[data-v-e0f091f2]{pointer-events:auto}.h-11[data-v-e0f091f2]{height:2.75rem}.h-3\\.5[data-v-e0f091f2]{height:.875rem}.max-h-\\[480px\\][data-v-e0f091f2]{max-height:480px}.w-3\\.5[data-v-e0f091f2]{width:.875rem}.w-full[data-v-e0f091f2]{width:100%}.flex[data-v-e0f091f2]{display:flex}.flex-1[data-v-e0f091f2]{flex:1 1 0%}.group\\/btn:hover .group-hover\\/btn\\:rotate-12[data-v-e0f091f2]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:12deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.active\\:scale-\\[0\\.98\\][data-v-e0f091f2]:active{--un-scale-x:.98;--un-scale-y:.98;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.cursor-pointer[data-v-e0f091f2]{cursor:pointer}.items-center[data-v-e0f091f2]{align-items:center}.justify-center[data-v-e0f091f2]{justify-content:center}.gap-3[data-v-e0f091f2]{gap:.75rem}.overflow-y-auto[data-v-e0f091f2]{overflow-y:auto}.border[data-v-e0f091f2]{border-width:1px}.border-white\\/5[data-v-e0f091f2]{border-color:#ffffff0d}.rounded-xl[data-v-e0f091f2]{border-radius:.75rem}.bg-white\\/\\[0\\.03\\][data-v-e0f091f2]{background-color:#ffffff08}.hover\\:bg-white\\/10[data-v-e0f091f2]:hover{background-color:#ffffff1a}.px-5[data-v-e0f091f2]{padding-left:1.25rem;padding-right:1.25rem}.py-2[data-v-e0f091f2]{padding-top:.5rem;padding-bottom:.5rem}.py-3[data-v-e0f091f2]{padding-top:.75rem;padding-bottom:.75rem}.pb-5[data-v-e0f091f2]{padding-bottom:1.25rem}.pt-3[data-v-e0f091f2]{padding-top:.75rem}.text-\\[10px\\][data-v-e0f091f2]{font-size:10px}.text-white\\/30[data-v-e0f091f2]{color:#ffffff4d}.text-white\\/50[data-v-e0f091f2]{color:#ffffff80}.group\\/btn:hover .group-hover\\/btn\\:text-blue-400[data-v-e0f091f2]{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity))}.group\\/btn:hover .group-hover\\/btn\\:text-white[data-v-e0f091f2]{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.font-bold[data-v-e0f091f2]{font-weight:700}.tracking-\\[0\\.25em\\][data-v-e0f091f2]{letter-spacing:.25em}.uppercase[data-v-e0f091f2]{text-transform:uppercase}.shadow-sm[data-v-e0f091f2]{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-all[data-v-e0f091f2]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors[data-v-e0f091f2]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}')),document.head.appendChild(a)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
+ (function(b,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("lucide-vue-next"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","lucide-vue-next","@vueuse/core"],e):(b=typeof globalThis<"u"?globalThis:b||self,e(b.BgEffectsDebugUI={},b.Vue,b.LucideVueNext,b.VueUse))})(this,function(b,e,d,k){"use strict";const V={tabs:{settings:"配置",animation:"动画",presets:"预设",export:"导出",stats:"性能"},engine:"播放引擎",resume:"继续",active:"运行中",restart:"重置",pausedHint:"引擎当前已暂停。配置更改仍会生效,但可能在恢复前无法即时预览。",presets:"内置预设",vueComponent:"Vue 组件 (SFC)",componentProps:"组件属性用法",configJson:"配置数据 (JSON)",copyAll:"全选复制",copySuccess:"复制成功",stats:"实时性能统计",rolling:"滚动 30 个采样点",randomize:"随机生成",frameRate:"帧率",framesPerSecond:"帧每秒",timeSpeed:"动画速度",timeSpeedValue:"速度值"},N={tabs:{settings:"Config",animation:"Anim",presets:"Presets",export:"Export",stats:"Stats"},engine:"Playback Engine",resume:"Resume",active:"Active",restart:"Restart",pausedHint:"Engine is currently paused. Configuration updates will take effect but may not be visually updated until resumed.",presets:"Built-in Presets",vueComponent:"Vue Component (SFC)",componentProps:"Component Props Usage",configJson:"Configuration JSON",copyAll:"COPY ALL",copySuccess:"Copied Successfully",stats:"Live Performance Stats",rolling:"Rolling 30 Samples",randomize:"Randomize",frameRate:"Frame Rate",framesPerSecond:"frames per second",timeSpeed:"Animation Speed",timeSpeedValue:"Speed"},E={class:"tabs-container p-1.5 gap-2 bg-gradient-to-b from-black/50 to-black/30 rounded-2xl border border-white/10 shadow-2xl backdrop-blur-xl"},S={class:"flex gap-1.5"},C=["onClick"],B={key:0,class:"absolute inset-0 bg-gradient-to-br from-white/20 to-transparent opacity-50"},P={class:"text-[8px] font-black uppercase tracking-[0.15em] text-center leading-tight relative z-10"},T=e.defineComponent({__name:"Tabs",props:{tabs:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:s}){const o=s,l=r=>{o("update:modelValue",r)};return(r,i)=>(e.openBlock(),e.createElementBlock("div",E,[e.createElementVNode("div",S,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tabs,n=>(e.openBlock(),e.createElementBlock("button",{key:n.id,onClick:a=>l(n.id),class:e.normalizeClass(["flex-1 flex flex-col items-center justify-center p-2 rounded-xl transition-all duration-300 relative group/tab pointer-events-auto cursor-pointer overflow-hidden",t.modelValue===n.id?"bg-gradient-to-br from-blue-500 to-blue-600 text-white shadow-lg shadow-blue-500/30 scale-[1.02]":"bg-white/[0.04] text-white/50 hover:text-white hover:bg-white/10 hover:scale-[1.01] border border-white/5"])},[t.modelValue===n.id?(e.openBlock(),e.createElementBlock("div",B)):e.createCommentVNode("",!0),n.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.icon),{key:1,class:e.normalizeClass(["w-4 h-4 mb-1.5 relative z-10 transition-transform duration-300",[t.modelValue===n.id?"text-white drop-shadow-lg":"text-white/30 group-hover/tab:text-white/60",t.modelValue===n.id?"scale-110":"group-hover/tab:scale-105"]])},null,8,["class"])):e.createCommentVNode("",!0),e.createElementVNode("span",P,e.toDisplayString(n.label),1),i[0]||(i[0]=e.createElementVNode("div",{class:"absolute inset-0 bg-gradient-to-t from-blue-400/0 via-blue-400/5 to-blue-400/0 opacity-0 group-hover/tab:opacity-100 transition-opacity duration-300"},null,-1))],10,C))),128))])]))}}),f=(t,s)=>{const o=t.__vccOpts||t;for(const[l,r]of s)o[l]=r;return o},D=f(T,[["__scopeId","data-v-883d4db1"]]),z={class:"flex items-center gap-3 overflow-hidden"},O={class:"text-[10px] font-bold uppercase tracking-[0.2em] text-white/40 truncate"},I={class:"flex items-center gap-2"},j=["title"],R=f(e.defineComponent({__name:"DraggablePanel",props:{isOpen:{type:Boolean},title:{},lang:{}},emits:["update:isOpen","toggleLang"],setup(t,{emit:s}){const o=s,l=e.ref(null),r=e.ref(null),{x:i,y:n,style:a}=k.useDraggable(l,{handle:r,initialValue:{x:window.innerWidth-320,y:80}}),c=()=>{o("update:isOpen",!1)};return(g,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[t.isOpen?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"el",ref:l,class:"panel-base fixed z-[10000] w-80 flex flex-col text-white font-sans select-none overflow-hidden",style:e.normalizeStyle(e.unref(a))},[e.createElementVNode("div",{ref_key:"handle",ref:r,class:"panel-header h-12 flex items-center justify-between px-5 cursor-move group/handle active:cursor-grabbing border-b border-white/5 bg-white/5"},[e.createElementVNode("div",z,[p[1]||(p[1]=e.createElementVNode("div",{class:"w-1.5 h-1.5 rounded-full bg-blue-500 shadow-[0_0_8px_rgba(59,130,246,0.6)]"},null,-1)),e.createElementVNode("span",O,e.toDisplayString(t.title),1)]),e.createElementVNode("div",I,[t.lang?(e.openBlock(),e.createElementBlock("button",{key:0,class:"w-7 h-7 flex items-center justify-center rounded-lg bg-white/5 border border-white/10 hover:bg-white/10 hover:border-blue-500/30 transition-all cursor-pointer",title:t.lang==="zh-CN"?"切换到英文":"Switch to Chinese",onClick:p[0]||(p[0]=e.withModifiers(x=>o("toggleLang"),["stop"]))},[e.createVNode(e.unref(d.Languages),{class:"w-3.5 h-3.5 text-white/60"})],8,j)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"w-7 h-7 rounded-lg flex items-center justify-center bg-white/5 border border-white/10 text-white/30 hover:text-white hover:bg-red-500/20 hover:border-red-500/30 transition-all pointer-events-auto cursor-pointer",onClick:e.withModifiers(c,["stop"])},[e.createVNode(e.unref(d.X),{class:"w-3.5 h-3.5"})])])],512),e.renderSlot(g.$slots,"default",{},void 0,!0)],4)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-29a974c4"]]),F={class:"settings-container pointer-events-auto"},L={ref:"configPanelRef"},A=f(e.defineComponent({__name:"SettingsTab",props:{configPanelRef:{}},setup(t){return(s,o)=>(e.openBlock(),e.createElementBlock("div",F,[e.createElementVNode("div",L,[e.renderSlot(s.$slots,"default",{},void 0,!0)],512)]))}}),[["__scopeId","data-v-47dffb90"]]),J={class:"flex flex-col gap-6 py-2"},U={key:0,class:"flex flex-col gap-4"},M={class:"text-[9px] font-black uppercase tracking-[0.2em] text-white/20 px-1"},H={class:"flex flex-col gap-3 group/item px-1"},q={class:"flex justify-between items-center"},G={class:"text-[9px] font-mono text-white/30 group-hover/item:text-white/50 transition-colors"},W={class:"text-[11px] font-black font-mono text-white/40 group-hover/item:text-blue-400 transition-colors"},X=["value"],Y={class:"flex flex-col gap-4"},Z={class:"text-[9px] font-black uppercase tracking-[0.2em] text-white/20 px-1"},K={class:"grid grid-cols-2 gap-3"},Q={class:"w-10 h-10 rounded-full bg-white/5 flex items-center justify-center mb-0.5 border border-white/5 group-hover:border-white/20"},v={class:"text-[9px] font-black uppercase tracking-[0.1em]"},ee={class:"w-10 h-10 rounded-full bg-white/5 flex items-center justify-center mb-0.5 border border-white/5"},te={class:"text-[9px] font-black uppercase tracking-[0.1em]"},oe={key:1,class:"p-4 rounded-xl bg-orange-500/5 border border-orange-500/10 shadow-inner text-center mx-1"},ne={class:"text-[9px] text-orange-400/60 leading-relaxed font-medium"},se=f(e.defineComponent({__name:"AnimationTab",props:{config:{},engine:{},isPaused:{type:Boolean},t:{type:Function}},emits:["update:config","togglePause","restart"],setup(t,{emit:s}){const o=t,l=s,r=i=>{l("update:config",{...o.config,timeSpeed:i})};return(i,n)=>{var a;return e.openBlock(),e.createElementBlock("div",J,[((a=t.config)==null?void 0:a.timeSpeed)!==void 0?(e.openBlock(),e.createElementBlock("div",U,[e.createElementVNode("label",M,e.toDisplayString(t.t("timeSpeed")||"动画速度"),1),e.createElementVNode("div",H,[e.createElementVNode("div",q,[e.createElementVNode("span",G,e.toDisplayString(t.t("timeSpeedValue")||"速度"),1),e.createElementVNode("span",W,e.toDisplayString(t.config.timeSpeed.toFixed(1))+"x ",1)]),e.createElementVNode("input",{value:t.config.timeSpeed,type:"range",min:"0.1",max:"5",step:"0.1",class:"w-full accent-blue-500 bg-white/5 hover:bg-white/10 h-1.5 rounded-full appearance-none cursor-pointer transition-all border border-white/5",onInput:n[0]||(n[0]=c=>r(Number(c.target.value)))},null,40,X)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Y,[e.createElementVNode("label",Z,e.toDisplayString(t.t("engine")),1),e.createElementVNode("div",K,[e.createElementVNode("button",{class:"flex flex-col items-center justify-center gap-3 py-5 rounded-xl bg-white/[0.03] border border-white/5 hover:bg-white/10 transition-all text-white/30 hover:text-white pointer-events-auto shadow-sm cursor-pointer",onClick:n[1]||(n[1]=c=>l("togglePause"))},[e.createElementVNode("div",Q,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.isPaused?e.unref(d.Play):e.unref(d.Settings)),{class:e.normalizeClass(["w-5 h-5 transition-all text-current",{"animate-spin-slow text-blue-400":!t.isPaused}])},null,8,["class"]))]),e.createElementVNode("span",v,e.toDisplayString(t.isPaused?t.t("resume"):t.t("active")),1)]),e.createElementVNode("button",{class:"flex flex-col items-center justify-center gap-3 py-5 rounded-xl bg-white/[0.03] border border-white/5 hover:bg-white/10 transition-all text-white/30 hover:text-white pointer-events-auto shadow-sm cursor-pointer",onClick:n[2]||(n[2]=c=>l("restart"))},[e.createElementVNode("div",ee,[e.createVNode(e.unref(d.Activity),{class:"w-5 h-5 text-green-400/60"})]),e.createElementVNode("span",te,e.toDisplayString(t.t("restart")),1)])])]),t.isPaused?(e.openBlock(),e.createElementBlock("div",oe,[e.createElementVNode("p",ne,' "'+e.toDisplayString(t.t("pausedHint"))+'" ',1)])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-6c1a0d2f"]]),ae={class:"flex flex-col gap-5"},re={class:"flex flex-col gap-3"},le={class:"text-[9px] font-black uppercase tracking-widest text-white/25 px-1"},ie={class:"grid grid-cols-1 gap-2.5"},ce=["onClick"],de={class:"flex items-center justify-between mb-2"},pe={class:"text-xs font-black text-white/40 group-hover:text-white transition-colors"},me={class:"flex flex-wrap gap-1.5 opacity-20 group-hover:opacity-60 transition-opacity"},ge=f(e.defineComponent({__name:"PresetsTab",props:{presets:{},config:{},t:{type:Function},tObj:{type:Function}},emits:["update:config"],setup(t,{emit:s}){const o=t,l=s,r=i=>{l("update:config",{...o.config,...i.config})};return(i,n)=>(e.openBlock(),e.createElementBlock("div",ae,[e.createElementVNode("div",re,[e.createElementVNode("label",le,e.toDisplayString(t.t("presets")),1),e.createElementVNode("div",ie,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.presets,a=>(e.openBlock(),e.createElementBlock("button",{key:a.id,class:"group flex flex-col p-4 rounded-xl bg-white/[0.03] hover:bg-white/10 border border-white/5 transition-all text-left relative overflow-hidden active:scale-[0.98] pointer-events-auto cursor-pointer",onClick:c=>r(a)},[e.createElementVNode("div",de,[e.createElementVNode("span",pe,e.toDisplayString(t.tObj(a.name)),1),e.createVNode(e.unref(d.Bookmark),{class:"w-3.5 h-3.5 text-white/10 group-hover:text-blue-400 transition-colors"})]),e.createElementVNode("div",me,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.config,(c,g)=>(e.openBlock(),e.createElementBlock("span",{key:String(g),class:"text-[8px] px-1.5 py-0.5 rounded bg-white/5 text-white/50 font-mono tracking-tighter"},e.toDisplayString(g)+":"+e.toDisplayString(typeof c=="number"?c.toFixed(1):c),1))),128))])],8,ce))),128))])])]))}}),[["__scopeId","data-v-b19e2d94"]]);function fe(){const t=e.ref(!0),s=e.ref("settings"),o=e.ref(!1);return{isOpen:t,activeTab:s,isPaused:o,toggleOpen:()=>{t.value=!t.value},setTab:a=>{s.value=a},togglePause:a=>{a&&(o.value?(a.resume(),o.value=!1):(a.pause(),o.value=!0))},restart:a=>{a&&(a.restart(),o.value&&(a.resume(),o.value=!1))}}}function he(){const t=k.useFps(),s=e.ref([]);let o=null;return e.onMounted(()=>{o=setInterval(()=>{const l=typeof t.value=="number"&&!isNaN(t.value)?t.value:0;s.value.push(l),s.value.length>30&&s.value.shift()},500)}),e.onUnmounted(()=>{o&&clearInterval(o)}),{fps:t,fpsHistory:s}}function _(t){const s=e.ref(""),o=e.ref(null),l=()=>t.metaId.charAt(0).toUpperCase()+t.metaId.slice(1).replace(/-([a-z])/g,a=>a[1].toUpperCase()),r=a=>{const c=l();if(a==="config")return JSON.stringify(t.config,null,2);if(a==="props"){const g=Object.entries(t.config||{}).filter(([p])=>!["debug","lang","className"].includes(p)).map(([p,x])=>typeof x=="string"?`${p}="${x}"`:`:${p}="${x}"`).join(`
3
+ `);return`<${c}
4
+ ${g}
5
+ />`}return`<script setup>
6
+ import { ${c} } from '@bg-effects/${t.metaId}'
7
+
8
+ const config = ${JSON.stringify(t.config,null,2)}
9
+ <\/script>
10
+
11
+ <template>
12
+ <${c} v-bind="config" />
13
+ </template>`},i=async a=>{var g;const c=r(a);try{await navigator.clipboard.writeText(c),n("复制成功!"),(g=t.onSuccess)==null||g.call(t,"复制成功!")}catch(p){console.error("复制失败:",p)}},n=a=>{s.value=a,o.value&&clearTimeout(o.value),o.value=setTimeout(()=>{s.value=""},2e3)};return e.onUnmounted(()=>{o.value&&clearTimeout(o.value)}),{copyCode:i,copyToast:s,generateCode:r,getComponentName:l}}const be={class:"flex flex-col gap-6"},xe={class:"flex flex-col gap-3"},ue={class:"text-[9px] font-black uppercase tracking-widest text-white/25 px-1"},we={class:"relative group"},ye={class:"bg-black/40 rounded-xl p-4 text-[9px] font-mono text-white/40 overflow-hidden whitespace-pre-wrap leading-relaxed border border-white/5 shadow-inner italic"},ke={class:"flex flex-col gap-3"},_e={class:"text-[9px] font-black uppercase tracking-widest text-white/25 px-1"},$e={class:"relative group"},Ve={class:"bg-black/40 rounded-xl p-4 text-[9px] font-mono text-white/30 max-h-32 overflow-y-auto custom-scrollbar border border-white/5 shadow-inner leading-relaxed"},Ne={class:"flex flex-col gap-3"},Ee={class:"flex justify-between items-center px-1"},Se={class:"text-[9px] font-black uppercase tracking-widest text-white/25"},Ce={class:"relative group"},Be={class:"bg-black/40 rounded-xl p-4 text-[9px] font-mono text-white/30 max-h-48 overflow-y-auto custom-scrollbar border border-white/5 shadow-inner"},Pe=f(e.defineComponent({__name:"ExportTab",props:{config:{},metaId:{},t:{type:Function}},setup(t){const s=t,{copyCode:o,getComponentName:l}=_({config:s.config,metaId:s.metaId}),r=l();return(i,n)=>(e.openBlock(),e.createElementBlock("div",be,[e.createElementVNode("div",xe,[e.createElementVNode("label",ue,e.toDisplayString(t.t("vueComponent")),1),e.createElementVNode("div",we,[e.createElementVNode("pre",ye,"import { "+e.toDisplayString(e.unref(r))+" } from '@bg-effects/"+e.toDisplayString(t.metaId)+"'",1),e.createElementVNode("button",{class:"absolute top-3 right-3 p-2 rounded-lg bg-white/5 hover:bg-blue-600 opacity-0 group-hover:opacity-100 transition-all active:bg-blue-700 pointer-events-auto border border-white/10 cursor-pointer",onClick:n[0]||(n[0]=a=>e.unref(o)("sfc"))},[e.createVNode(e.unref(d.Code),{class:"w-4 h-4"})])])]),e.createElementVNode("div",ke,[e.createElementVNode("label",_e,e.toDisplayString(t.t("componentProps")),1),e.createElementVNode("div",$e,[e.createElementVNode("pre",Ve,"<"+e.toDisplayString(e.unref(r))+" ... />",1),e.createElementVNode("button",{class:"absolute top-3 right-3 p-2 rounded-lg bg-white/5 hover:bg-blue-600 opacity-0 group-hover:opacity-100 transition-all active:bg-blue-700 pointer-events-auto border border-white/10 cursor-pointer",onClick:n[1]||(n[1]=a=>e.unref(o)("props"))},[e.createVNode(e.unref(d.Code),{class:"w-4 h-4"})])])]),e.createElementVNode("div",Ne,[e.createElementVNode("div",Ee,[e.createElementVNode("label",Se,e.toDisplayString(t.t("configJson")),1)]),e.createElementVNode("div",Ce,[e.createElementVNode("div",Be,[e.createElementVNode("pre",null,e.toDisplayString(JSON.stringify(t.config,null,2)),1)]),e.createElementVNode("button",{class:"absolute top-3 right-3 p-2 rounded-lg bg-white/5 hover:bg-blue-600 opacity-0 group-hover:opacity-100 transition-all active:bg-blue-700 pointer-events-auto border border-white/10 cursor-pointer",onClick:n[2]||(n[2]=a=>e.unref(o)("config"))},[e.createVNode(e.unref(d.Code),{class:"w-4 h-4"})])])])]))}}),[["__scopeId","data-v-bc42beda"]]),Te={class:"flex flex-col gap-6 py-2"},De={class:"bg-gradient-to-br from-white/[0.05] to-white/[0.02] rounded-2xl p-6 border border-white/10 flex flex-col gap-3 items-center justify-center shadow-xl group/stat hover:from-white/[0.08] hover:to-white/[0.04] transition-all"},ze={class:"flex items-center gap-3 text-blue-400/40 mb-1 group-hover/stat:text-blue-400/70 transition-colors"},Oe={class:"text-[11px] font-black uppercase tracking-[0.2em]"},Ie={class:"text-[10px] uppercase tracking-[0.15em] text-white/30 font-bold"},je={class:"flex flex-col gap-3"},Re={class:"flex justify-between items-center px-1"},Fe={class:"text-[9px] font-black uppercase tracking-widest text-white/25"},Le={class:"text-[8px] font-mono uppercase text-white/15 tracking-tighter"},Ae={class:"bg-black/40 border border-white/10 h-24 rounded-xl relative overflow-hidden flex items-end ring-1 ring-inset ring-white/5 shadow-inner"},Je={class:"w-full h-full",viewBox:"0 0 100 80",preserveAspectRatio:"none"},Ue=["d"],Me=["d"],He=f(e.defineComponent({__name:"StatsTab",props:{t:{type:Function}},setup(t){const{fps:s,fpsHistory:o}=he();return(l,r)=>(e.openBlock(),e.createElementBlock("div",Te,[e.createElementVNode("div",De,[e.createElementVNode("div",ze,[e.createVNode(e.unref(d.Monitor),{class:"w-5 h-5"}),e.createElementVNode("span",Oe,e.toDisplayString(t.t("frameRate")),1)]),e.createElementVNode("span",{class:e.normalizeClass(["text-6xl font-black tracking-tighter transition-all duration-300",e.unref(s)>55?"text-green-400 drop-shadow-[0_0_20px_rgba(34,197,94,0.5)]":e.unref(s)>30?"text-yellow-400 drop-shadow-[0_0_20px_rgba(234,179,8,0.5)]":"text-red-400 drop-shadow-[0_0_20px_rgba(239,68,68,0.5)]"])},e.toDisplayString(e.unref(s)),3),e.createElementVNode("span",Ie,e.toDisplayString(t.t("framesPerSecond")),1)]),e.createElementVNode("div",je,[e.createElementVNode("div",Re,[e.createElementVNode("label",Fe,e.toDisplayString(t.t("stats")),1),e.createElementVNode("span",Le,e.toDisplayString(t.t("rolling")),1)]),e.createElementVNode("div",Ae,[(e.openBlock(),e.createElementBlock("svg",Je,[e.createElementVNode("path",{d:`M -10 100 ${e.unref(o).map((i,n)=>`L ${n/(e.unref(o).length-1)*100} ${80-Math.min(i,60)/60*60}`).join(" ")} L 110 100 Z`,fill:"url(#fps-gradient)",stroke:"none"},null,8,Ue),e.createElementVNode("path",{d:e.unref(o).map((i,n)=>`${n===0?"M":"L"} ${n/(e.unref(o).length-1)*100} ${80-Math.min(i,60)/60*60}`).join(" "),fill:"none",class:"stroke-blue-400/40","stroke-width":"2","stroke-linecap":"round"},null,8,Me),r[0]||(r[0]=e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:"fps-gradient",x1:"0",y1:"0",x2:"0",y2:"1"},[e.createElementVNode("stop",{offset:"0%","stop-color":"rgba(59, 130, 246, 0.3)"}),e.createElementVNode("stop",{offset:"100%","stop-color":"rgba(59, 130, 246, 0)"})])],-1))]))])])]))}}),[["__scopeId","data-v-63239024"]]),qe={key:0,class:"absolute top-3 right-3 w-2.5 h-2.5 bg-green-500 rounded-full border-2 border-[#121212] shadow-[0_0_8px_rgba(34,197,94,0.6)]"},Ge=f(e.defineComponent({__name:"FloatingToggleButton",props:{isOpen:{type:Boolean},isPaused:{type:Boolean}},emits:["toggle"],setup(t,{emit:s}){const o=s;return(l,r)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createElementVNode("button",{class:"fixed bottom-8 right-8 z-[10001] w-14 h-14 bg-[#121212]/90 border border-white/20 backdrop-blur-2xl rounded-full flex items-center justify-center text-white/50 hover:text-white hover:bg-black transition-all shadow-[0_20px_40px_-8px_rgba(0,0,0,0.5)] active:scale-90 group pointer-events-auto ring-4 ring-white/5",onClick:r[0]||(r[0]=i=>o("toggle"))},[e.createVNode(e.unref(d.Settings),{class:e.normalizeClass(["w-6 h-6 transition-transform duration-500",{"rotate-180 text-blue-400 scale-110":t.isOpen}])},null,8,["class"]),t.isPaused?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",qe))])]))}}),[["__scopeId","data-v-eb6add23"]]),We={key:0,class:"fixed bottom-24 right-8 z-[10002] px-5 py-3 bg-green-600/90 backdrop-blur-xl rounded-xl border border-green-400/30 shadow-2xl text-white text-sm font-bold flex items-center gap-2"},Xe=f(e.defineComponent({__name:"CopyToast",props:{message:{}},setup(t){return(s,o)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"transition-all duration-300","leave-active-class":"transition-all duration-300","enter-from-class":"opacity-0 translate-y-4","enter-to-class":"opacity-100 translate-y-0","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-4"},{default:e.withCtx(()=>[t.message?(e.openBlock(),e.createElementBlock("div",We,[o[0]||(o[0]=e.createElementVNode("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)),e.createTextVNode(" "+e.toDisplayString(t.message),1)])):e.createCommentVNode("",!0)]),_:1})]))}}),[["__scopeId","data-v-7e780824"]]),Ye={class:"px-5 py-3"},Ze={class:"flex-1 overflow-y-auto max-h-[480px] custom-scrollbar px-5 py-2 pointer-events-auto"},Ke={key:0,class:"px-5 pb-5 pt-3"},Qe={class:"text-white/50 group-hover/btn:text-white transition-colors"},ve=f(e.defineComponent({__name:"DebugShell",props:{config:{},meta:{},engine:{},lang:{}},emits:["update:config","update:lang","randomize"],setup(t,{emit:s}){const o=t,l=s,r=e.computed({get:()=>o.lang||"zh-CN",set:m=>l("update:lang",m)}),{isOpen:i,activeTab:n,isPaused:a,toggleOpen:c,togglePause:g,restart:p}=fe(),x=e.ref(null),{copyToast:et}=_({config:o.config,metaId:o.meta.id}),tt={"zh-CN":V,en:N},y=e.computed(()=>r.value),h=m=>{const w=tt[y.value];return m.split(".").reduce((u,it)=>u==null?void 0:u[it],w)||m},ot=m=>m[y.value]||m.en,nt=()=>{r.value=r.value==="zh-CN"?"en":"zh-CN"},st=e.computed(()=>[{id:"settings",icon:d.Settings,label:h("tabs.settings")},{id:"presets",icon:d.Bookmark,label:h("tabs.presets")},{id:"animation",icon:d.Play,label:h("tabs.animation")},{id:"export",icon:d.Code,label:h("tabs.export")},{id:"stats",icon:d.Activity,label:h("tabs.stats")}]),at=()=>{l("randomize")},rt=()=>{g(o.engine)},lt=()=>{p(o.engine)},$=m=>{l("update:config",m)};return(m,w)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(R,{isOpen:e.unref(i),"onUpdate:isOpen":w[1]||(w[1]=u=>e.isRef(i)?i.value=u:null),title:t.meta.name[y.value]||t.meta.name.en,lang:y.value,onToggleLang:nt},{default:e.withCtx(()=>[e.createElementVNode("div",Ye,[e.createVNode(D,{modelValue:e.unref(n),"onUpdate:modelValue":w[0]||(w[0]=u=>e.isRef(n)?n.value=u:null),tabs:st.value},null,8,["modelValue","tabs"])]),e.createElementVNode("div",Ze,[e.unref(n)==="settings"?(e.openBlock(),e.createBlock(A,{key:0,"config-panel-ref":x.value},{default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"configPanelRef",ref:x},[e.renderSlot(m.$slots,"settings",{},void 0,!0)],512)]),_:3},8,["config-panel-ref"])):e.unref(n)==="animation"?(e.openBlock(),e.createBlock(se,{key:1,config:t.config,engine:t.engine,"is-paused":e.unref(a),t:h,"onUpdate:config":$,onTogglePause:rt,onRestart:lt},null,8,["config","engine","is-paused"])):e.unref(n)==="presets"?(e.openBlock(),e.createBlock(ge,{key:2,presets:t.meta.presets,config:t.config,t:h,"t-obj":ot,"onUpdate:config":$},null,8,["presets","config"])):e.unref(n)==="export"?(e.openBlock(),e.createBlock(Pe,{key:3,config:t.config,"meta-id":t.meta.id,t:h},null,8,["config","meta-id"])):e.unref(n)==="stats"?(e.openBlock(),e.createBlock(He,{key:4,t:h})):e.createCommentVNode("",!0)]),e.unref(n)==="settings"?(e.openBlock(),e.createElementBlock("div",Ke,[e.createElementVNode("button",{class:"w-full h-11 flex items-center justify-center gap-3 bg-white/[0.03] hover:bg-white/10 rounded-xl border border-white/5 text-[10px] font-bold uppercase tracking-[0.25em] transition-all active:scale-[0.98] pointer-events-auto shadow-sm group/btn cursor-pointer",onClick:at},[e.createVNode(e.unref(d.Activity),{class:"w-3.5 h-3.5 text-white/30 group-hover/btn:text-blue-400 group-hover/btn:rotate-12 transition-all"}),e.createElementVNode("span",Qe,e.toDisplayString(h("randomize")),1)])])):e.createCommentVNode("",!0)]),_:3},8,["isOpen","title","lang"]),e.createVNode(Ge,{"is-open":e.unref(i),"is-paused":e.unref(a),onToggle:e.unref(c)},null,8,["is-open","is-paused","onToggle"]),e.createVNode(Xe,{message:e.unref(et)},null,8,["message"])],64))}}),[["__scopeId","data-v-e0f091f2"]]);b.DebugShell=ve,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})});
14
+ //# sourceMappingURL=index.umd.cjs.map