@oxiaom/adoremix 1.0.15 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/package.json +3 -2
  2. package/src/cli.js +15 -0
  3. package/src/config/defaults.js +2 -1
  4. package/src/config/webui.js +118 -0
  5. package/src/install.js +17 -0
  6. package/webui/high/assets/AdminLayout-BeGqmJmh.js +1 -0
  7. package/webui/high/assets/AdminLayout-Dg0cblhW.css +1 -0
  8. package/webui/high/assets/Announce-2364DXIw.css +1 -0
  9. package/webui/high/assets/Announce-BxOu3PDa.js +1 -0
  10. package/webui/high/assets/Billing-9pkW40cw.css +1 -0
  11. package/webui/high/assets/Billing-DkKexnBS.js +1 -0
  12. package/webui/high/assets/Gallery-BUO8AayT.js +1 -0
  13. package/webui/high/assets/Gallery-CvDy0BG_.css +1 -0
  14. package/webui/high/assets/Info-BRpM9vrH.css +1 -0
  15. package/webui/high/assets/Info-jgxOyI48.js +1 -0
  16. package/webui/high/assets/LanguageSwitcher-wcRpxcC2.css +1 -0
  17. package/webui/high/assets/LanguageSwitcher.vue_vue_type_style_index_0_lang-7lwszLYh.js +1 -0
  18. package/webui/high/assets/MainLayout-Cg9w3D6H.js +1 -0
  19. package/webui/high/assets/MainLayout-CtxzU51m.css +1 -0
  20. package/webui/high/assets/Upload-BUllX3F9.css +1 -0
  21. package/webui/high/assets/Upload-BhZe08V8.js +1 -0
  22. package/webui/high/assets/Users-BajKphJ2.css +1 -0
  23. package/webui/high/assets/Users-C-uvafHe.js +1 -0
  24. package/webui/high/assets/_plugin-vue_export-helper-BCo6x5W8.js +1 -0
  25. package/webui/high/assets/api-C3Fyph-A.js +1 -0
  26. package/webui/high/assets/index-6wTg37PL.js +1 -0
  27. package/webui/high/assets/index-BU_CDG5n.js +1 -0
  28. package/webui/high/assets/index-B_eXN_Ka.css +1 -0
  29. package/webui/high/assets/index-BeMdB8li.css +1 -0
  30. package/webui/high/assets/index-BeyjdvRw.css +1 -0
  31. package/webui/high/assets/index-Bqlp4X7Z.css +1 -0
  32. package/webui/high/assets/index-BwGOSVLU.css +1 -0
  33. package/webui/high/assets/index-C0plBGGv.js +1 -0
  34. package/webui/high/assets/index-CG0Cxnu7.js +1 -0
  35. package/webui/high/assets/index-CGTbAKLR.css +1 -0
  36. package/webui/high/assets/index-CTbFCtHG.js +1 -0
  37. package/webui/high/assets/index-CTtQ-PJh.css +1 -0
  38. package/webui/high/assets/index-Ci-5piG7.css +1 -0
  39. package/webui/high/assets/index-DPlPWsqM.js +1 -0
  40. package/webui/high/assets/index-DbeENJC3.css +1 -0
  41. package/webui/high/assets/index-DdwHcYZD.js +1 -0
  42. package/webui/high/assets/index-KMJ_Zaix.js +1 -0
  43. package/webui/high/assets/index-LP7k5pkh.js +1 -0
  44. package/webui/high/assets/index-MthettIa.css +1 -0
  45. package/webui/high/assets/index-_3H0q9yh.css +1 -0
  46. package/webui/high/assets/index-npdYRXyk.js +18 -0
  47. package/webui/high/assets/index-ptOpmqku.js +1 -0
  48. package/webui/high/assets/index-r_gAV5lM.css +1 -0
  49. package/webui/high/assets/index-u4IuHZw8.js +1 -0
  50. package/webui/high/assets/test-BQUWlKVf.css +1 -0
  51. package/webui/high/assets/test-Bt3E-Okh.js +1 -0
  52. package/webui/high/assets/useDeviceScan-CM8xsf7h.js +1 -0
  53. package/webui/high/assets/vue-vendor-BaBirIg_.js +38 -0
  54. package/webui/high/index.html +23 -0
  55. package/webui/high/js/lame.min.js +308 -0
  56. package/webui/high/js/worker-realtime.js +81 -0
  57. package/webui/low/assets/AdminLayout-Dg0cblhW.css +1 -0
  58. package/webui/low/assets/AdminLayout-Dio6Q0f_.js +1 -0
  59. package/webui/low/assets/Announce-2364DXIw.css +1 -0
  60. package/webui/low/assets/Announce-DiogX_-D.js +1 -0
  61. package/webui/low/assets/Billing-9pkW40cw.css +1 -0
  62. package/webui/low/assets/Billing-C42F8wIt.js +1 -0
  63. package/webui/low/assets/Gallery-CvDy0BG_.css +1 -0
  64. package/webui/low/assets/Gallery-DGUAhDtI.js +1 -0
  65. package/webui/low/assets/Info-BRpM9vrH.css +1 -0
  66. package/webui/low/assets/Info-BolVapGU.js +1 -0
  67. package/webui/low/assets/LanguageSwitcher-wcRpxcC2.css +1 -0
  68. package/webui/low/assets/LanguageSwitcher.vue_vue_type_style_index_0_lang-BUO99DZc.js +1 -0
  69. package/webui/low/assets/MainLayout-BmBcNVVu.js +1 -0
  70. package/webui/low/assets/MainLayout-CtxzU51m.css +1 -0
  71. package/webui/low/assets/Upload-BUllX3F9.css +1 -0
  72. package/webui/low/assets/Upload-B_Cx6QMR.js +1 -0
  73. package/webui/low/assets/Users-BajKphJ2.css +1 -0
  74. package/webui/low/assets/Users-an7uFkx4.js +1 -0
  75. package/webui/low/assets/_plugin-vue_export-helper-BCo6x5W8.js +1 -0
  76. package/webui/low/assets/api-C3Fyph-A.js +1 -0
  77. package/webui/low/assets/index-2JKvpOh3.js +1 -0
  78. package/webui/low/assets/index-B_eXN_Ka.css +1 -0
  79. package/webui/low/assets/index-BeMdB8li.css +1 -0
  80. package/webui/low/assets/index-BeyjdvRw.css +1 -0
  81. package/webui/low/assets/index-BoV0S81L.js +1 -0
  82. package/webui/low/assets/index-Bqlp4X7Z.css +1 -0
  83. package/webui/low/assets/index-BuEwLgbU.js +18 -0
  84. package/webui/low/assets/index-BwGOSVLU.css +1 -0
  85. package/webui/low/assets/index-CGTbAKLR.css +1 -0
  86. package/webui/low/assets/index-CSahVaR0.js +1 -0
  87. package/webui/low/assets/index-CTtQ-PJh.css +1 -0
  88. package/webui/low/assets/index-CgyUlqk5.js +1 -0
  89. package/webui/low/assets/index-Ci-5piG7.css +1 -0
  90. package/webui/low/assets/index-Cjg2XVty.js +1 -0
  91. package/webui/low/assets/index-D-BJ_vlf.js +1 -0
  92. package/webui/low/assets/index-D0uan-_I.js +1 -0
  93. package/webui/low/assets/index-DWP2gbuh.js +1 -0
  94. package/webui/low/assets/index-DbeENJC3.css +1 -0
  95. package/webui/low/assets/index-DdPisNCE.js +1 -0
  96. package/webui/low/assets/index-F-Qi4toA.js +1 -0
  97. package/webui/low/assets/index-FUUYrqc8.js +1 -0
  98. package/webui/low/assets/index-MthettIa.css +1 -0
  99. package/webui/low/assets/index-_3H0q9yh.css +1 -0
  100. package/webui/low/assets/index-r_gAV5lM.css +1 -0
  101. package/webui/low/assets/test-BQUWlKVf.css +1 -0
  102. package/webui/low/assets/test-DI2hJTQF.js +1 -0
  103. package/webui/low/assets/useDeviceScan-CM8xsf7h.js +1 -0
  104. package/webui/low/assets/vue-vendor-BaBirIg_.js +38 -0
  105. package/webui/low/index.html +23 -0
  106. package/webui/low/js/lame.min.js +308 -0
  107. package/webui/low/js/worker-realtime.js +81 -0
@@ -0,0 +1 @@
1
+ function e(e,t){return function(){return e.apply(t,arguments)}}const{toString:t}=Object.prototype,{getPrototypeOf:n}=Object,{iterator:r,toStringTag:o}=Symbol,s=(e=>n=>{const r=t.call(n);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),a=e=>(e=e.toLowerCase(),t=>s(t)===e),i=e=>t=>typeof t===e,{isArray:c}=Array,u=i("undefined");function l(e){return null!==e&&!u(e)&&null!==e.constructor&&!u(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const d=a("ArrayBuffer");const p=i("string"),f=i("function"),h=i("number"),m=e=>null!==e&&"object"==typeof e,g=e=>{if("object"!==s(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||o in e||r in e)},w=a("Date"),b=a("File"),y=a("Blob"),S=a("FileList");const E="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},R=void 0!==E.FormData?E.FormData:void 0,O=a("URLSearchParams"),[v,k,T,F]=["ReadableStream","Request","Response","Headers"].map(a);function D(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),c(e))for(r=0,o=e.length;r<o;r++)t.call(null,e[r],r,e);else{if(l(e))return;const o=n?Object.getOwnPropertyNames(e):Object.keys(e),s=o.length;let a;for(r=0;r<s;r++)a=o[r],t.call(null,e[a],a,e)}}function A(e,t){if(l(e))return null;t=t.toLowerCase();const n=Object.keys(e);let r,o=n.length;for(;o-- >0;)if(r=n[o],t===r.toLowerCase())return r;return null}const _="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,C=e=>!u(e)&&e!==_;const j=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&n(Uint8Array)),x=a("HTMLFormElement"),N=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),P=a("RegExp"),U=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};D(n,(n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)}),Object.defineProperties(e,r)};const L=a("AsyncFunction"),B=(I="function"==typeof setImmediate,z=f(_.postMessage),I?setImmediate:z?(q=`axios@${Math.random()}`,M=[],_.addEventListener("message",({source:e,data:t})=>{e===_&&t===q&&M.length&&M.shift()()},!1),e=>{M.push(e),_.postMessage(q,"*")}):e=>setTimeout(e));var I,z,q,M;const H="undefined"!=typeof queueMicrotask?queueMicrotask.bind(_):"undefined"!=typeof process&&process.nextTick||B,J={isArray:c,isArrayBuffer:d,isBuffer:l,isFormData:e=>{let t;return e&&(R&&e instanceof R||f(e.append)&&("formdata"===(t=s(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&d(e.buffer),t},isString:p,isNumber:h,isBoolean:e=>!0===e||!1===e,isObject:m,isPlainObject:g,isEmptyObject:e=>{if(!m(e)||l(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(t){return!1}},isReadableStream:v,isRequest:k,isResponse:T,isHeaders:F,isUndefined:u,isDate:w,isFile:b,isReactNativeBlob:e=>!(!e||void 0===e.uri),isReactNative:e=>e&&void 0!==e.getParts,isBlob:y,isRegExp:P,isFunction:f,isStream:e=>m(e)&&f(e.pipe),isURLSearchParams:O,isTypedArray:j,isFileList:S,forEach:D,merge:function e(){const{caseless:t,skipUndefined:n}=C(this)&&this||{},r={},o=(o,s)=>{if("__proto__"===s||"constructor"===s||"prototype"===s)return;const a=t&&A(r,s)||s;g(r[a])&&g(o)?r[a]=e(r[a],o):g(o)?r[a]=e({},o):c(o)?r[a]=o.slice():n&&u(o)||(r[a]=o)};for(let s=0,a=arguments.length;s<a;s++)arguments[s]&&D(arguments[s],o);return r},extend:(t,n,r,{allOwnKeys:o}={})=>(D(n,(n,o)=>{r&&f(n)?Object.defineProperty(t,o,{value:e(n,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,o,{value:n,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:o}),t),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,r,o)=>{let s,a,i;const c={};if(t=t||{},null==e)return t;do{for(s=Object.getOwnPropertyNames(e),a=s.length;a-- >0;)i=s[a],o&&!o(i,e,t)||c[i]||(t[i]=e[i],c[i]=!0);e=!1!==r&&n(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:a,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(c(e))return e;let t=e.length;if(!h(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[r]).call(e);let o;for(;(o=n.next())&&!o.done;){const n=o.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:x,hasOwnProperty:N,hasOwnProp:N,reduceDescriptors:U,freezeMethods:e=>{U(e,(t,n)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];f(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach(e=>{n[e]=!0})};return c(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:A,global:_,isContextDefined:C,isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[o]&&e[r])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(m(e)){if(t.indexOf(e)>=0)return;if(l(e))return e;if(!("toJSON"in e)){t[r]=e;const o=c(e)?[]:{};return D(e,(e,t)=>{const s=n(e,r+1);!u(s)&&(o[t]=s)}),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:L,isThenable:e=>e&&(m(e)||f(e))&&f(e.then)&&f(e.catch),setImmediate:B,asap:H,isIterable:e=>null!=e&&f(e[r])};let $=class e extends Error{static from(t,n,r,o,s,a){const i=new e(t.message,n||t.code,r,o,s);return i.cause=t,i.name=t.name,null!=t.status&&null==i.status&&(i.status=t.status),a&&Object.assign(i,a),i}constructor(e,t,n,r,o){super(e),Object.defineProperty(this,"message",{value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:J.toJSONObject(this.config),code:this.code,status:this.status}}};$.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",$.ERR_BAD_OPTION="ERR_BAD_OPTION",$.ECONNABORTED="ECONNABORTED",$.ETIMEDOUT="ETIMEDOUT",$.ERR_NETWORK="ERR_NETWORK",$.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",$.ERR_DEPRECATED="ERR_DEPRECATED",$.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",$.ERR_BAD_REQUEST="ERR_BAD_REQUEST",$.ERR_CANCELED="ERR_CANCELED",$.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",$.ERR_INVALID_URL="ERR_INVALID_URL";function W(e){return J.isPlainObject(e)||J.isArray(e)}function V(e){return J.endsWith(e,"[]")?e.slice(0,-2):e}function K(e,t,n){return e?e.concat(t).map(function(e,t){return e=V(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const X=J.toFlatObject(J,{},null,function(e){return/^is[A-Z]/.test(e)});function G(e,t,n){if(!J.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=J.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!J.isUndefined(t[e])})).metaTokens,o=n.visitor||u,s=n.dots,a=n.indexes,i=(n.Blob||"undefined"!=typeof Blob&&Blob)&&J.isSpecCompliantForm(t);if(!J.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(J.isDate(e))return e.toISOString();if(J.isBoolean(e))return e.toString();if(!i&&J.isBlob(e))throw new $("Blob is not supported. Use a Buffer instead.");return J.isArrayBuffer(e)||J.isTypedArray(e)?i&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,o){let i=e;if(J.isReactNative(t)&&J.isReactNativeBlob(e))return t.append(K(o,n,s),c(e)),!1;if(e&&!o&&"object"==typeof e)if(J.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(J.isArray(e)&&function(e){return J.isArray(e)&&!e.some(W)}(e)||(J.isFileList(e)||J.endsWith(n,"[]"))&&(i=J.toArray(e)))return n=V(n),i.forEach(function(e,r){!J.isUndefined(e)&&null!==e&&t.append(!0===a?K([n],r,s):null===a?n:n+"[]",c(e))}),!1;return!!W(e)||(t.append(K(o,n,s),c(e)),!1)}const l=[],d=Object.assign(X,{defaultVisitor:u,convertValue:c,isVisitable:W});if(!J.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!J.isUndefined(n)){if(-1!==l.indexOf(n))throw Error("Circular reference detected in "+r.join("."));l.push(n),J.forEach(n,function(n,s){!0===(!(J.isUndefined(n)||null===n)&&o.call(t,n,J.isString(s)?s.trim():s,r,d))&&e(n,r?r.concat(s):[s])}),l.pop()}}(e),t}function Q(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function Y(e,t){this._pairs=[],e&&G(e,this,t)}const Z=Y.prototype;function ee(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function te(e,t,n){if(!t)return e;const r=n&&n.encode||ee,o=J.isFunction(n)?{serialize:n}:n,s=o&&o.serialize;let a;if(a=s?s(t,o):J.isURLSearchParams(t)?t.toString():new Y(t,o).toString(r),a){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e}Z.append=function(e,t){this._pairs.push([e,t])},Z.toString=function(e){const t=e?function(t){return e.call(this,t,Q)}:Q;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class ne{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){J.forEach(this.handlers,function(t){null!==t&&e(t)})}}const re={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},oe={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Y,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},se="undefined"!=typeof window&&"undefined"!=typeof document,ae="object"==typeof navigator&&navigator||void 0,ie=se&&(!ae||["ReactNative","NativeScript","NS"].indexOf(ae.product)<0),ce="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ue=se&&window.location.href||"http://localhost",le={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:se,hasStandardBrowserEnv:ie,hasStandardBrowserWebWorkerEnv:ce,navigator:ae,origin:ue},Symbol.toStringTag,{value:"Module"})),...oe};function de(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),i=o>=e.length;if(s=!s&&J.isArray(r)?r.length:s,i)return J.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!a;r[s]&&J.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],o)&&J.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r<o;r++)s=n[r],t[s]=e[s];return t}(r[s])),!a}if(J.isFormData(e)&&J.isFunction(e.entries)){const n={};return J.forEachEntry(e,(e,r)=>{t(function(e){return J.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),r,n,0)}),n}return null}const pe={transitional:re,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=J.isObject(e);o&&J.isHTMLForm(e)&&(e=new FormData(e));if(J.isFormData(e))return r?JSON.stringify(de(e)):e;if(J.isArrayBuffer(e)||J.isBuffer(e)||J.isStream(e)||J.isFile(e)||J.isBlob(e)||J.isReadableStream(e))return e;if(J.isArrayBufferView(e))return e.buffer;if(J.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return G(e,new le.classes.URLSearchParams,{visitor:function(e,t,n,r){return le.isNode&&J.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((s=J.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return G(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(J.isString(e))try{return(t||JSON.parse)(e),J.trim(e)}catch(r){if("SyntaxError"!==r.name)throw r}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||pe.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(J.isResponse(e)||J.isReadableStream(e))return e;if(e&&J.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e,this.parseReviver)}catch(o){if(n){if("SyntaxError"===o.name)throw $.from(o,$.ERR_BAD_RESPONSE,this,null,this.response);throw o}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:le.classes.FormData,Blob:le.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};J.forEach(["delete","get","head","post","put","patch"],e=>{pe.headers[e]={}});const fe=J.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),he=Symbol("internals");function me(e){return e&&String(e).trim().toLowerCase()}function ge(e){return!1===e||null==e?e:J.isArray(e)?e.map(ge):String(e)}function we(e,t,n,r,o){return J.isFunction(r)?r.call(this,t,n):(o&&(t=n),J.isString(t)?J.isString(r)?-1!==t.indexOf(r):J.isRegExp(r)?r.test(t):void 0:void 0)}let be=class{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=me(t);if(!o)throw new Error("header name must be a non-empty string");const s=J.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=ge(e))}const s=(e,t)=>J.forEach(e,(e,n)=>o(e,n,t));if(J.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(J.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach(function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&fe[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t})(e),t);else if(J.isObject(e)&&J.isIterable(e)){let n,r,o={};for(const t of e){if(!J.isArray(t))throw TypeError("Object iterator must return a key-value pair");o[r=t[0]]=(n=o[r])?J.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}s(o,t)}else null!=e&&o(t,e,n);return this}get(e,t){if(e=me(e)){const n=J.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(J.isFunction(t))return t.call(this,e,n);if(J.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=me(e)){const n=J.findKey(this,e);return!(!n||void 0===this[n]||t&&!we(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=me(e)){const o=J.findKey(n,e);!o||t&&!we(0,n[o],o,t)||(delete n[o],r=!0)}}return J.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!we(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return J.forEach(this,(r,o)=>{const s=J.findKey(n,o);if(s)return t[s]=ge(r),void delete t[o];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(o):String(o).trim();a!==o&&delete t[o],t[a]=ge(r),n[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return J.forEach(this,(n,r)=>{null!=n&&!1!==n&&(t[r]=e&&J.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[he]=this[he]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=me(e);t[r]||(!function(e,t){const n=J.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})})}(n,e),t[r]=!0)}return J.isArray(e)?e.forEach(r):r(e),this}};function ye(e,t){const n=this||pe,r=t||n,o=be.from(r.headers);let s=r.data;return J.forEach(e,function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)}),o.normalize(),s}function Se(e){return!(!e||!e.__CANCEL__)}be.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),J.reduceDescriptors(be.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),J.freezeMethods(be);let Ee=class extends ${constructor(e,t,n){super(null==e?"canceled":e,$.ERR_CANCELED,t,n),this.name="CanceledError",this.__CANCEL__=!0}};function Re(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new $("Request failed with status code "+n.status,[$.ERR_BAD_REQUEST,$.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}const Oe=(e,t,n=3)=>{let r=0;const o=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,a=0;return t=void 0!==t?t:1e3,function(i){const c=Date.now(),u=r[a];o||(o=c),n[s]=i,r[s]=c;let l=a,d=0;for(;l!==s;)d+=n[l++],l%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-o<t)return;const p=u&&c-u;return p?Math.round(1e3*d/p):void 0}}(50,250);return function(e,t){let n,r,o=0,s=1e3/t;const a=(t,s=Date.now())=>{o=s,n=null,r&&(clearTimeout(r),r=null),e(...t)};return[(...e)=>{const t=Date.now(),i=t-o;i>=s?a(e,t):(n=e,r||(r=setTimeout(()=>{r=null,a(n)},s-i)))},()=>n&&a(n)]}(n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,i=s-r,c=o(i);r=s;e({loaded:s,total:a,progress:a?s/a:void 0,bytes:i,rate:c||void 0,estimated:c&&a&&s<=a?(a-s)/c:void 0,event:n,lengthComputable:null!=a,[t?"download":"upload"]:!0})},n)},ve=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},ke=e=>(...t)=>J.asap(()=>e(...t)),Te=le.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,le.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(le.origin),le.navigator&&/(msie|trident)/i.test(le.navigator.userAgent)):()=>!0,Fe=le.hasStandardBrowserEnv?{write(e,t,n,r,o,s,a){if("undefined"==typeof document)return;const i=[`${e}=${encodeURIComponent(t)}`];J.isNumber(n)&&i.push(`expires=${new Date(n).toUTCString()}`),J.isString(r)&&i.push(`path=${r}`),J.isString(o)&&i.push(`domain=${o}`),!0===s&&i.push("secure"),J.isString(a)&&i.push(`SameSite=${a}`),document.cookie=i.join("; ")},read(e){if("undefined"==typeof document)return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read:()=>null,remove(){}};function De(e,t,n){let r=!("string"==typeof(o=t)&&/^([a-z][a-z\d+\-.]*:)?\/\//i.test(o));var o;return e&&(r||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ae=e=>e instanceof be?{...e}:e;function _e(e,t){t=t||{};const n={};function r(e,t,n,r){return J.isPlainObject(e)&&J.isPlainObject(t)?J.merge.call({caseless:r},e,t):J.isPlainObject(t)?J.merge({},t):J.isArray(t)?t.slice():t}function o(e,t,n,o){return J.isUndefined(t)?J.isUndefined(e)?void 0:r(void 0,e,0,o):r(e,t,0,o)}function s(e,t){if(!J.isUndefined(t))return r(void 0,t)}function a(e,t){return J.isUndefined(t)?J.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function i(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:i,headers:(e,t,n)=>o(Ae(e),Ae(t),0,!0)};return J.forEach(Object.keys({...e,...t}),function(r){if("__proto__"===r||"constructor"===r||"prototype"===r)return;const s=J.hasOwnProp(c,r)?c[r]:o,a=s(e[r],t[r],r);J.isUndefined(a)&&s!==i||(n[r]=a)}),n}const Ce=e=>{const t=_e({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:s,headers:a,auth:i}=t;if(t.headers=a=be.from(a),t.url=te(De(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),i&&a.set("Authorization","Basic "+btoa((i.username||"")+":"+(i.password?unescape(encodeURIComponent(i.password)):""))),J.isFormData(n))if(le.hasStandardBrowserEnv||le.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(J.isFunction(n.getHeaders)){const e=n.getHeaders(),t=["content-type","content-length"];Object.entries(e).forEach(([e,n])=>{t.includes(e.toLowerCase())&&a.set(e,n)})}if(le.hasStandardBrowserEnv&&(r&&J.isFunction(r)&&(r=r(t)),r||!1!==r&&Te(t.url))){const e=o&&s&&Fe.read(s);e&&a.set(o,e)}return t},je="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const r=Ce(e);let o=r.data;const s=be.from(r.headers).normalize();let a,i,c,u,l,{responseType:d,onUploadProgress:p,onDownloadProgress:f}=r;function h(){u&&u(),l&&l(),r.cancelToken&&r.cancelToken.unsubscribe(a),r.signal&&r.signal.removeEventListener("abort",a)}let m=new XMLHttpRequest;function g(){if(!m)return;const r=be.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());Re(function(e){t(e),h()},function(e){n(e),h()},{data:d&&"text"!==d&&"json"!==d?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:r,config:e,request:m}),m=null}m.open(r.method.toUpperCase(),r.url,!0),m.timeout=r.timeout,"onloadend"in m?m.onloadend=g:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(g)},m.onabort=function(){m&&(n(new $("Request aborted",$.ECONNABORTED,e,m)),m=null)},m.onerror=function(t){const r=t&&t.message?t.message:"Network Error",o=new $(r,$.ERR_NETWORK,e,m);o.event=t||null,n(o),m=null},m.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const o=r.transitional||re;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new $(t,o.clarifyTimeoutError?$.ETIMEDOUT:$.ECONNABORTED,e,m)),m=null},void 0===o&&s.setContentType(null),"setRequestHeader"in m&&J.forEach(s.toJSON(),function(e,t){m.setRequestHeader(t,e)}),J.isUndefined(r.withCredentials)||(m.withCredentials=!!r.withCredentials),d&&"json"!==d&&(m.responseType=r.responseType),f&&([c,l]=Oe(f,!0),m.addEventListener("progress",c)),p&&m.upload&&([i,u]=Oe(p),m.upload.addEventListener("progress",i),m.upload.addEventListener("loadend",u)),(r.cancelToken||r.signal)&&(a=t=>{m&&(n(!t||t.type?new Ee(null,e,m):t),m.abort(),m=null)},r.cancelToken&&r.cancelToken.subscribe(a),r.signal&&(r.signal.aborted?a():r.signal.addEventListener("abort",a)));const w=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);w&&-1===le.protocols.indexOf(w)?n(new $("Unsupported protocol "+w+":",$.ERR_BAD_REQUEST,e)):m.send(o||null)})},xe=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const o=function(e){if(!n){n=!0,a();const t=e instanceof Error?e:this.reason;r.abort(t instanceof $?t:new Ee(t instanceof Error?t.message:t))}};let s=t&&setTimeout(()=>{s=null,o(new $(`timeout of ${t}ms exceeded`,$.ETIMEDOUT))},t);const a=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>e.addEventListener("abort",o));const{signal:i}=r;return i.unsubscribe=()=>J.asap(a),i}},Ne=function*(e,t){let n=e.byteLength;if(n<t)return void(yield e);let r,o=0;for(;o<n;)r=o+t,yield e.slice(o,r),o=r},Pe=async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)break;yield n}}finally{await t.cancel()}},Ue=(e,t,n,r)=>{const o=async function*(e,t){for await(const n of Pe(e))yield*Ne(n,t)}(e,t);let s,a=0,i=e=>{s||(s=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await o.next();if(t)return i(),void e.close();let s=r.byteLength;if(n){let e=a+=s;n(e)}e.enqueue(new Uint8Array(r))}catch(t){throw i(t),t}},cancel:e=>(i(e),o.return())},{highWaterMark:2})},{isFunction:Le}=J,Be=(({Request:e,Response:t})=>({Request:e,Response:t}))(J.global),{ReadableStream:Ie,TextEncoder:ze}=J.global,qe=(e,...t)=>{try{return!!e(...t)}catch(n){return!1}},Me=e=>{e=J.merge.call({skipUndefined:!0},Be,e);const{fetch:t,Request:n,Response:r}=e,o=t?Le(t):"function"==typeof fetch,s=Le(n),a=Le(r);if(!o)return!1;const i=o&&Le(Ie),c=o&&("function"==typeof ze?(e=>t=>e.encode(t))(new ze):async e=>new Uint8Array(await new n(e).arrayBuffer())),u=s&&i&&qe(()=>{let e=!1;const t=new n(le.origin,{body:new Ie,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),l=a&&i&&qe(()=>J.isReadableStream(new r("").body)),d={stream:l&&(e=>e.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!d[e]&&(d[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new $(`Response type '${e}' is not supported`,$.ERR_NOT_SUPPORT,n)})});const p=async(e,t)=>{const r=J.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(J.isBlob(e))return e.size;if(J.isSpecCompliantForm(e)){const t=new n(le.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return J.isArrayBufferView(e)||J.isArrayBuffer(e)?e.byteLength:(J.isURLSearchParams(e)&&(e+=""),J.isString(e)?(await c(e)).byteLength:void 0)})(t):r};return async e=>{let{url:o,method:a,data:i,signal:c,cancelToken:f,timeout:h,onDownloadProgress:m,onUploadProgress:g,responseType:w,headers:b,withCredentials:y="same-origin",fetchOptions:S}=Ce(e),E=t||fetch;w=w?(w+"").toLowerCase():"text";let R=xe([c,f&&f.toAbortSignal()],h),O=null;const v=R&&R.unsubscribe&&(()=>{R.unsubscribe()});let k;try{if(g&&u&&"get"!==a&&"head"!==a&&0!==(k=await p(b,i))){let e,t=new n(o,{method:"POST",body:i,duplex:"half"});if(J.isFormData(i)&&(e=t.headers.get("content-type"))&&b.setContentType(e),t.body){const[e,n]=ve(k,Oe(ke(g)));i=Ue(t.body,65536,e,n)}}J.isString(y)||(y=y?"include":"omit");const t=s&&"credentials"in n.prototype,c={...S,signal:R,method:a.toUpperCase(),headers:b.normalize().toJSON(),body:i,duplex:"half",credentials:t?y:void 0};O=s&&new n(o,c);let f=await(s?E(O,S):E(o,c));const h=l&&("stream"===w||"response"===w);if(l&&(m||h&&v)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=f[t]});const t=J.toFiniteNumber(f.headers.get("content-length")),[n,o]=m&&ve(t,Oe(ke(m),!0))||[];f=new r(Ue(f.body,65536,n,()=>{o&&o(),v&&v()}),e)}w=w||"text";let T=await d[J.findKey(d,w)||"text"](f,e);return!h&&v&&v(),await new Promise((t,n)=>{Re(t,n,{data:T,headers:be.from(f.headers),status:f.status,statusText:f.statusText,config:e,request:O})})}catch(T){if(v&&v(),T&&"TypeError"===T.name&&/Load failed|fetch/i.test(T.message))throw Object.assign(new $("Network Error",$.ERR_NETWORK,e,O,T&&T.response),{cause:T.cause||T});throw $.from(T,T&&T.code,e,O,T&&T.response)}}},He=new Map,Je=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:o}=t,s=[r,o,n];let a,i,c=s.length,u=He;for(;c--;)a=s[c],i=u.get(a),void 0===i&&u.set(a,i=c?new Map:Me(t)),u=i;return i};Je();const $e={http:null,xhr:je,fetch:{get:Je}};J.forEach($e,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}});const We=e=>`- ${e}`,Ve=e=>J.isFunction(e)||null===e||!1===e;const Ke={getAdapter:function(e,t){e=J.isArray(e)?e:[e];const{length:n}=e;let r,o;const s={};for(let a=0;a<n;a++){let n;if(r=e[a],o=r,!Ve(r)&&(o=$e[(n=String(r)).toLowerCase()],void 0===o))throw new $(`Unknown adapter '${n}'`);if(o&&(J.isFunction(o)||(o=o.get(t))))break;s[n||"#"+a]=o}if(!o){const e=Object.entries(s).map(([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));let t=n?e.length>1?"since :\n"+e.map(We).join("\n"):" "+We(e[0]):"as no adapter specified";throw new $("There is no suitable adapter to dispatch the request "+t,"ERR_NOT_SUPPORT")}return o},adapters:$e};function Xe(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ee(null,e)}function Ge(e){Xe(e),e.headers=be.from(e.headers),e.data=ye.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Ke.getAdapter(e.adapter||pe.adapter,e)(e).then(function(t){return Xe(e),t.data=ye.call(e,e.transformResponse,t),t.headers=be.from(t.headers),t},function(t){return Se(t)||(Xe(e),t&&t.response&&(t.response.data=ye.call(e,e.transformResponse,t.response),t.response.headers=be.from(t.response.headers))),Promise.reject(t)})}const Qe="1.13.6",Ye={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Ye[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const Ze={};Ye.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Qe+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new $(r(o," has been removed"+(t?" in "+t:"")),$.ERR_DEPRECATED);return t&&!Ze[o]&&(Ze[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}},Ye.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};const et={assertOptions:function(e,t,n){if("object"!=typeof e)throw new $("options must be an object",$.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],a=t[s];if(a){const t=e[s],n=void 0===t||a(t,s,e);if(!0!==n)throw new $("option "+s+" must be "+n,$.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new $("Unknown option "+s,$.ERR_BAD_OPTION)}},validators:Ye},tt=et.validators;let nt=class{constructor(e){this.defaults=e||{},this.interceptors={request:new ne,response:new ne}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(r){}}throw n}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=_e(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&et.assertOptions(n,{silentJSONParsing:tt.transitional(tt.boolean),forcedJSONParsing:tt.transitional(tt.boolean),clarifyTimeoutError:tt.transitional(tt.boolean),legacyInterceptorReqResOrdering:tt.transitional(tt.boolean)},!1),null!=r&&(J.isFunction(r)?t.paramsSerializer={serialize:r}:et.assertOptions(r,{encode:tt.function,serialize:tt.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),et.assertOptions(t,{baseUrl:tt.spelling("baseURL"),withXsrfToken:tt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&J.merge(o.common,o[t.method]);o&&J.forEach(["delete","get","head","post","put","patch","common"],e=>{delete o[e]}),t.headers=be.concat(s,o);const a=[];let i=!0;this.interceptors.request.forEach(function(e){if("function"==typeof e.runWhen&&!1===e.runWhen(t))return;i=i&&e.synchronous;const n=t.transitional||re;n&&n.legacyInterceptorReqResOrdering?a.unshift(e.fulfilled,e.rejected):a.push(e.fulfilled,e.rejected)});const c=[];let u;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,d=0;if(!i){const e=[Ge.bind(this),void 0];for(e.unshift(...a),e.push(...c),l=e.length,u=Promise.resolve(t);d<l;)u=u.then(e[d++],e[d++]);return u}l=a.length;let p=t;for(;d<l;){const e=a[d++],t=a[d++];try{p=e(p)}catch(f){t.call(this,f);break}}try{u=Ge.call(this,p)}catch(f){return Promise.reject(f)}for(d=0,l=c.length;d<l;)u=u.then(c[d++],c[d++]);return u}getUri(e){return te(De((e=_e(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}};J.forEach(["delete","get","head","options"],function(e){nt.prototype[e]=function(t,n){return this.request(_e(n||{},{method:e,url:t,data:(n||{}).data}))}}),J.forEach(["post","put","patch"],function(e){function t(t){return function(n,r,o){return this.request(_e(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}nt.prototype[e]=t(),nt.prototype[e+"Form"]=t(!0)});const rt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(rt).forEach(([e,t])=>{rt[t]=e});const ot=function t(n){const r=new nt(n),o=e(nt.prototype.request,r);return J.extend(o,nt.prototype,r,{allOwnKeys:!0}),J.extend(o,r,null,{allOwnKeys:!0}),o.create=function(e){return t(_e(n,e))},o}(pe);ot.Axios=nt,ot.CanceledError=Ee,ot.CancelToken=class e{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,o){n.reason||(n.reason=new Ee(e,r,o),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}},ot.isCancel=Se,ot.VERSION=Qe,ot.toFormData=G,ot.AxiosError=$,ot.Cancel=ot.CanceledError,ot.all=function(e){return Promise.all(e)},ot.spread=function(e){return function(t){return e.apply(null,t)}},ot.isAxiosError=function(e){return J.isObject(e)&&!0===e.isAxiosError},ot.mergeConfig=_e,ot.AxiosHeaders=be,ot.formToJSON=e=>de(J.isHTMLForm(e)?new FormData(e):e),ot.getAdapter=Ke.getAdapter,ot.HttpStatusCode=rt,ot.default=ot;const{Axios:st,AxiosError:at,CanceledError:it,isCancel:ct,CancelToken:ut,VERSION:lt,all:dt,Cancel:pt,isAxiosError:ft,spread:ht,toFormData:mt,AxiosHeaders:gt,HttpStatusCode:wt,formToJSON:bt,getAdapter:yt,mergeConfig:St}=ot,Et=Object.freeze(Object.defineProperty({__proto__:null,Axios:st,AxiosError:at,AxiosHeaders:gt,Cancel:pt,CancelToken:ut,CanceledError:it,HttpStatusCode:wt,VERSION:lt,all:dt,default:ot,formToJSON:bt,getAdapter:yt,isAxiosError:ft,isCancel:ct,mergeConfig:St,spread:ht,toFormData:mt},Symbol.toStringTag,{value:"Module"}));function Rt(){const e=localStorage.getItem("serverHost");return e?e.replace(/\/+$/,""):""}const Ot=ot.create({baseURL:Rt(),timeout:3e4,headers:{"Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache"}});function vt(e){void 0!==e&&localStorage.setItem("serverHost",e),Ot.defaults.baseURL=Rt()}function kt(){var e,t;localStorage.removeItem("token"),localStorage.removeItem("userInfo"),localStorage.removeItem("userId");const n=!!window.electronAPI,r=!!(null==(t=null==(e=window.Capacitor)?void 0:e.isNativePlatform)?void 0:t.call(e));n||r?window.location.hash="#/client-login":window.location.href="/login"}window.addEventListener("storage",()=>{Ot.defaults.baseURL=Rt()}),Ot.interceptors.request.use(e=>{const t=localStorage.getItem("token"),n=localStorage.getItem("userId");return t&&e.headers&&(e.headers.Authorization=`Bearer ${t}`),e.data instanceof FormData&&(!e.data.has("token")&&t&&e.data.append("token",t),!e.data.has("id")&&n&&e.data.append("id",n),console.log("======== 请求数据详情 ========"),console.log("请求 URL:",e.url),console.log("FormData 内容:"),e.data.forEach((e,t)=>{console.log(` ${t}: ${e}`)}),console.log("==============================")),e.data instanceof FormData&&delete e.headers["Content-Type"],e},e=>(console.error("请求错误:",e),Promise.reject(e))),Ot.interceptors.response.use(e=>{const t=e.data;if(console.log("API 响应:",{url:e.config.url,status:e.status,data:t}),"blob"===e.config.responseType)return e;if(!0===t.res||!1===t.res||8200===t.code)return t;const n=t.msg||"请求失败";return console.error("业务错误:",n),console.error("响应详情:",t),401===t.code&&kt(),Promise.reject(new Error(n))},e=>{var t;if(console.error("响应错误:",e),e.config&&console.error("请求配置:",{url:e.config.url,method:e.config.method,baseURL:e.config.baseURL}),e.response)switch(console.error("响应状态:",e.response.status),console.error("响应数据:",e.response.data),e.response.status){case 401:kt();break;case 403:console.error("没有权限访问");break;case 404:console.error("请求的资源不存在");break;case 500:console.error("服务器内部错误");break;default:console.error("未知错误")}else e.request?(console.error("网络错误,请检查网络连接"),console.error("请求目标:",null==(t=e.config)?void 0:t.url)):console.error("请求配置错误");return Promise.reject(e)});const Tt={get:(e,t)=>Ot.get(e,t),post:(e,t,n)=>Ot.post(e,t,n),put:(e,t,n)=>Ot.put(e,t,n),delete:(e,t)=>Ot.delete(e,t),upload:(e,t,n)=>Ot.post(e,t,{...n,headers:{"Content-Type":"multipart/form-data"}})};function Ft(e){const t=new FormData;return t.append("username",e.username),t.append("passwd",e.passwd),Tt.post("/user/fnkukei/gtoken",t)}function Dt(){return Tt.post("/user/logout")}function At(){const e=new FormData;return Tt.post("/user/fnckukei/listmydevice",e)}function _t(e){const t=new FormData;return Object.keys(e).forEach(n=>{void 0!==e[n]&&t.append(n,String(e[n]))}),Tt.post("/user/deviceadd",t)}function Ct(e){const t=new FormData;return t.append("snid",String(e.snid)),Tt.post("/user/deldevs",t)}function jt(e){const t=new FormData;return Object.keys(e).forEach(n=>{void 0!==e[n]&&t.append(n,String(e[n]))}),Tt.post("/user/sndebug",t)}function xt(e){const t=new FormData;return t.append("newname",e.newname),t.append("devid",String(e.devid)),Tt.post("/user/redevname",t)}function Nt(e){const t=new FormData;return t.append("newsn",e.newsn),t.append("devid",String(e.devid)),Tt.post("/user/resn",t)}function Pt(e){const t=new FormData;return t.append("dsv",String(e.dsv)),t.append("sn",e.sn),Tt.post("/user/sndebug",t)}function Ut(e){const t=new FormData;return t.append("vol",String(e.vol)),e.snlist&&t.append("snlist",e.snlist),Tt.post("/user/editvols",t)}function Lt(e){const t=new FormData;return t.append("vol",String(e.vol)),e.snlist&&t.append("snlist",e.snlist),Tt.post("/user/editvols",t)}function Bt(e){const t=new FormData;return t.append("ziusername",e.ziusername),t.append("zipasswd",e.zipasswd),t.append("nickname",e.nickname),t.append("beizhu",e.beizhu),t.append("level",String(e.level)),t.append("mask",e.mask),Tt.post("/user/fnckukei/addziuser",t)}function It(){const e=new FormData;return Tt.post("/user/fnckukei/listziuser",e)}function zt(e){const t=new FormData;return t.append("userid",String(e.userid)),t.append("zdex",String(e.zdex)),t.append("zcase",String(e.zcase)),Tt.post("/user/fnckukei/changezimask",t)}function qt(e){const t=new FormData;return t.append("zid",String(e)),Tt.post("/user/fnckukei/delziuser",t)}function Mt(e){const t=new FormData;return t.append("zid",String(e.zid)),t.append("ztoken",e.ztoken),Tt.post("/user/fnckukei/info_edit_listziuser",t)}function Ht(e){const t=new FormData;return t.append("gid",String(e.gid)),t.append("pus_idstr",e.pus_idstr),t.append("dis_idstr",e.dis_idstr),Tt.post("/user/fnckukei/changezidevices",t)}function Jt(e){const t=new FormData;return t.append("username",e.username),t.append("passwd",e.passwd),Tt.post("/user/gtoken",t)}function $t(e){const t=new FormData;return t.append("id",String(e.id)),t.append("token",e.token),t.append("newpass",e.newpass),Tt.post("/user/fnkukei/newpasswdnick",t)}function Wt(){const e=new FormData;return Tt.post("/user/listplant",e)}function Vt(){const e=new FormData;return Tt.post("/user/listdetailgroups",e)}function Kt(e){const t=new FormData;return t.append("gname",e.gname),Tt.post("/user/addgname",t)}function Xt(e){const t=new FormData;return t.append("gid",String(e.gid)),Tt.post("/user/delgroup",t)}function Gt(e){const t=new FormData;return t.append("gid",String(e.gid)),Tt.post("/user/fnckukei/getonegdevs",t)}function Qt(e){const t=new FormData;return t.append("gid",String(e.gid)),t.append("devids",e.devids),Tt.post("/user/editgdevs",t)}function Yt(e){const t=new FormData;return t.append("gid",String(e.gid)),t.append("msurl",e.msurl),Tt.post("/user/fnckukei/savemu38_info",t)}function Zt(e){const t=new FormData;return t.append("playmode",String(e.playmode)),t.append("len",String(e.len)),t.append("jiange",String(e.jiange)),t.append("fileids",e.fileids),t.append("snids",e.snids),Tt.post("/user/tmpstartpl",t)}function en(e){const t=new FormData;return void 0!==e.id&&t.append("id",String(e.id)),void 0!==e.token&&t.append("token",e.token),void 0!==e.tpid&&t.append("tpid",String(e.tpid)),Tt.post("/user/tmpstoppl",t)}function tn(){const e=new FormData;return Tt.post("/user/tmplistpl",e)}function nn(){const e=new FormData;return Tt.post("/user/listfile",e)}function rn(e,t){const n=new FormData;return n.append("file",e),Tt.post("/user/uploadfile",n,{headers:{"Content-Type":"multipart/form-data"}})}function on(e){const t=new FormData;return t.append("fileid",String(e.id)),Tt.post("/user/delfile",t)}function sn(e){const t=new FormData;return t.append("text",e.text),e.fileName&&t.append("filename",e.fileName),e.voice&&t.append("shengyin",e.voice),void 0!==e.speed&&t.append("speed",String(e.speed)),t.append("vol",String(e.vol)),Tt.post("/user/savettsfile",t)}function an(){const e=new FormData;return Tt.post("/user/getwbinfo",e)}function cn(e){const t=new FormData;return t.append("name",e.name),t.append("url",e.url),t.append("len",String(e.len)),Tt.post("/user/uploader_fordiantai.php",t)}function un(){const e=new FormData;return Tt.post("/user/list_task",e)}function ln(e){const t=new FormData;return t.append("taskid",String(e.taskid)),Tt.post("/user/getone_task",t)}function dn(e){const t=new FormData;return Object.keys(e).forEach(n=>{const r=e[n];void 0!==r&&""!==r&&t.append(n,String(r))}),Tt.post("/user/add_task",t)}function pn(e){const t=new FormData;return Object.keys(e).forEach(n=>{const r=e[n];void 0!==r&&""!==r&&t.append(n,String(r))}),Tt.post("/user/edit_task",t)}function fn(e){const t=new FormData;return t.append("taskid",String(e.taskid)),e.deviceIds&&t.append("snids",e.deviceIds.join("|")),Tt.post("/user/editsns_task",t)}function hn(e){const t=new FormData;return t.append("taskid",String(e.taskid)),e.fileIds&&t.append("fileids",e.fileIds.join("|")),Tt.post("/user/editfiles_task",t)}function mn(e){const t=new FormData;return t.append("taskid",String(e.id)),t.append("value","1"),Tt.post("/user/starttask",t)}function gn(e){const t=new FormData;return t.append("taskid",String(e.id)),Tt.post("/user/stoptask",t)}function wn(e){const t=new FormData;return t.append("taskid",String(e.id)),Tt.post("/user/enabletask",t)}function bn(e){const t=new FormData;return t.append("taskid",String(e.id)),Tt.post("/user/disabletask",t)}function yn(){const e=new FormData;return Tt.post("/user/listplant",e)}function Sn(e){const t=new FormData;return t.append("pname",e.pname),Tt.post("/user/addplant",t)}function En(e){const t=new FormData;return t.append("pid",String(e.pid)),Tt.post("/user/deleteplant",t)}function Rn(e){const t=new FormData;return t.append("pid",String(e.pid)),t.append("taskid",String(e.taskid)),Tt.post("/user/plantedittask",t)}function On(e){const t=new FormData;return t.append("taskids",e.taskids),t.append("snids",e.snids),Tt.post("/user/piliangxiugaisnids.php",t)}function vn(e){const t=new FormData;return t.append("taskids",e.taskids),t.append("fileids",e.fileids),Tt.post("/user/piliangxiugaiwenjian.php",t)}function kn(e){const t=new FormData;return t.append("taskids",e.taskids),t.append("fanganid",String(e.fanganid)),Tt.post("/user/piliangshezhifangan.php",t)}function Tn(e){const t=new FormData;return t.append("taskids",e.taskids),t.append("tasktimestr",e.tasktimestr),Tt.post("/user/piliangxiugaishijian.php",t)}function Fn(e){const t=new FormData;return t.append("taskids",e.taskids),t.append("kind",String(e.kind)),Tt.post("/user/piliangxunhuancishu.php",t)}function Dn(e){const t=new FormData;return t.append("taskids",e.taskids),t.append("len",String(e.len)),Tt.post("/user/piliangxiugaishichang.php",t)}function An(e){const t=new FormData;return t.append("taskidstr",e.taskidstr),Tt.post("/user/piliangshanchurenwu.php",t)}function _n(e){const t=new FormData;return t.append("tasknamestr",e.tasknamestr),t.append("tasktimestr",e.tasktimestr),t.append("cptskid",String(e.cptskid)),Tt.post("/user/piliangfuzhirenwu.php",t)}function Cn(){const e=new FormData;return Tt.post("/user/wfilelistrg",e)}function jn(e){const t=new FormData;return t.append("url",e.url),t.append("filename",e.filename),t.append("sn",e.sn),t.append("dname",e.dname),e.fb&&t.append("fb",e.fb),Tt.post("/user/wfilerg",t)}function xn(e){const t=new FormData;return t.append("sn",e.sn),e.fb&&t.append("fb",e.fb),t.append("rgid",String(e.rgid)),Tt.post("/user/wfileunrg",t)}function Nn(e){const t=new FormData;return t.append("url",e.url),t.append("plantname",e.plantname),t.append("snlist",e.snlist),Tt.post("/user/wplantadd",t)}function Pn(){const e=new FormData;return Tt.post("/user/wplantlist",e)}function Un(e){const t=new FormData;return t.append("pltid",String(e)),Tt.post("/user/wplantrm",t)}function Ln(e){const t=new FormData;return t.append("pltid",String(e.pltid)),t.append("sn",e.sn),t.append("dname",e.dname),e.fb&&t.append("fb",e.fb),Tt.post("/user/wplantrg",t)}function Bn(e){const t=new FormData;return t.append("sn",e.sn),t.append("fb",e.fb||"1"),Tt.post("/user/wfileforceunrg",t)}export{Pn as $,pn as A,fn as B,hn as C,dn as D,bn as E,wn as F,Sn as G,Rn as H,En as I,_n as J,On as K,vn as L,kn as M,Tn as N,Fn as O,Dn as P,An as Q,ln as R,mn as S,gn as T,rn as U,on as V,sn as W,cn as X,an as Y,jn as Z,Cn as _,Dt as a,Nn as a0,Ln as a1,Bn as a2,xn as a3,Un as a4,It as a5,Bt as a6,Ht as a7,zt as a8,qt as a9,Mt as aa,Jt as ab,Tt as ac,Et as ad,_t as b,$t as c,jt as d,Nt as e,Ut as f,At as g,Lt as h,Pt as i,Ct as j,Vt as k,Ft as l,Kt as m,Qt as n,Gt as o,Zt as p,tn as q,xt as r,Yt as s,nn as t,vt as u,Xt as v,en as w,Wt as x,un as y,yn as z};
@@ -0,0 +1 @@
1
+ import{f as e,o as a,n as l,y as s,A as c,u as n,B as t,C as o,W as i,G as u,F as d,z as r,E as v,R as h,N as p,S as m,r as k,c as b,t as g,H as f}from"./vue-vendor-BaBirIg_.js";import{u as w}from"./index-npdYRXyk.js";import{a5 as y,a6 as C,a7 as z,a8 as x,a9 as _,aa as S,ab as M}from"./api-C3Fyph-A.js";import{_ as D}from"./_plugin-vue_export-helper-BCo6x5W8.js";const U={class:"account-page"},I={class:"page-header"},A={class:"page-title"},F={class:"glass-section"},V={class:"section-title"},B={class:"config-grid"},T={class:"config-field"},j=["placeholder"],E={class:"config-field"},L=["placeholder"],N={class:"config-field"},P=["placeholder"],H={class:"config-field"},R=["placeholder"],q={class:"config-field"},G={class:"config-field"},O={class:"perm-grid"},W={class:"perm-item"},J={class:"perm-item"},K={class:"perm-item"},Q={class:"register-area"},X=["disabled"],Y={class:"glass-section"},Z={class:"section-header"},$={class:"section-title"},ee={key:0,class:"table-wrap desktop-table"},ae={class:"data-table"},le={class:"td-pass"},se={class:"pass-cell"},ce={class:"pass-text"},ne=["onClick","title"],te={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},oe={key:1,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},ie={class:"perm-toggle"},ue=["checked","onChange"],de={class:"perm-toggle"},re=["checked","onChange"],ve={class:"perm-toggle"},he=["checked","onChange"],pe={class:"td-time"},me={class:"action-btns"},ke=["onClick"],be=["onClick"],ge=["onClick"],fe={key:1,class:"mobile-card-list"},we={class:"user-card-header"},ye={class:"user-card-name"},Ce={class:"user-card-id"},ze={class:"user-card-body"},xe={class:"user-card-row"},_e={class:"user-card-label"},Se={class:"user-card-value pass-cell"},Me={class:"pass-text"},De=["onClick"],Ue={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},Ie={key:1,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},Ae={key:0,class:"user-card-row"},Fe={class:"user-card-label"},Ve={class:"user-card-value"},Be={key:1,class:"user-card-row"},Te={class:"user-card-label"},je={class:"user-card-value"},Ee={class:"user-card-row"},Le={class:"user-card-label"},Ne={class:"user-card-value user-card-time"},Pe={class:"user-card-perms"},He={class:"perm-item"},Re=["checked","onChange"],qe={class:"perm-item"},Ge=["checked","onChange"],Oe={class:"perm-item"},We=["checked","onChange"],Je={class:"user-card-actions"},Ke=["onClick"],Qe=["onClick"],Xe=["onClick"],Ye={key:2,class:"empty-state"},Ze={class:"modal-box"},$e={class:"modal-body"},ea={class:"modal-actions"},aa={class:"modal-box device-modal-box"},la={class:"modal-title"},sa={key:0,class:"modal-body"},ca={key:1,class:"device-list-modal"},na={class:"device-search-row"},ta=["placeholder"],oa={class:"device-list-scroll"},ia=["checked","onChange"],ua={key:0,class:"empty-state small"},da={class:"modal-actions"},ra=["disabled"],va=D(e({__name:"index",setup(e){const{t:D}=w(),va=k({ziusername:"",zipasswd:"",nickname:"",beizhu:"",level:8}),ha=k(!1),pa=k(!1),ma=k(!1);function ka(){const e=Array(40).fill("0");return ha.value&&(e[0]="1"),pa.value&&(e[1]="1"),ma.value&&(e[2]="1"),e.join("")}const ba=k(!1),ga=k([]),fa=k(new Set);function wa(e){fa.value.has(e)?fa.value.delete(e):fa.value.add(e)}function ya(e){return fa.value.has(e)}function Ca(e){return"•".repeat(Math.min(e.length,12))}const za=k({show:!1,message:""});function xa(e){za.value={show:!0,message:e}}async function _a(){try{const e=await y();!0===e.res&&Array.isArray(e.results)&&(ga.value=e.results)}catch(e){console.error("获取子账户列表失败:",e)}}async function Sa(){if(va.value.ziusername.trim())if(va.value.zipasswd.trim()){ba.value=!0;try{const e=await C({ziusername:va.value.ziusername.trim(),zipasswd:va.value.zipasswd,nickname:va.value.nickname.trim(),beizhu:va.value.beizhu.trim(),level:va.value.level,mask:ka()});!0===e.res?(xa(D("account.addSuccess")),va.value.ziusername="",va.value.zipasswd="",va.value.nickname="",va.value.beizhu="",_a()):xa(e.msg||e.info||D("account.addFailed"))}catch{xa(D("account.addFailed"))}ba.value=!1}else xa(D("account.passwordRequired"));else xa(D("account.usernameRequired"))}function Ma(e,a){return!(!e||a>=e.length)&&"1"===e[a]}async function Da(e,a){const l=!Ma(e.mask,a);try{const s=await x({userid:e.id,zdex:a,zcase:l});if(!0===s.res){const s=e.mask.split("");s[a]=l?"1":"0",e.mask=s.join("")}else xa(s.msg||s.info||D("account.permChangeFailed"))}catch{xa(D("account.permChangeFailed"))}}async function Ua(e){if(confirm(D("account.deleteConfirm",{name:e.user_name})))try{const a=await _(e.id);!0===a.res?(xa(D("account.deleteSuccess")),_a()):xa(a.msg||a.info||D("account.deleteFailed"))}catch{xa(D("account.deleteFailed"))}}const Ia=k({show:!1,loading:!1,saving:!1,ziUserId:0,ziUserToken:"",userName:"",allDevices:[],originalSeeds:[],selectedIds:[],zsIdMap:{}}),Aa=k(""),Fa=b(()=>{if(!Aa.value.trim())return Ia.value.allDevices;const e=Aa.value.toLowerCase();return Ia.value.allDevices.filter(a=>a.label.toLowerCase().includes(e)||String(a.id).includes(e))});async function Va(e){Ia.value={show:!0,loading:!0,saving:!1,ziUserId:e.id,ziUserToken:e.token,userName:e.user_name,allDevices:[],originalSeeds:[],selectedIds:[],zsIdMap:{}},Aa.value="";try{const a=await S({zid:e.id,ztoken:e.token});if(!0===a.res&&Array.isArray(a.dev_info)){Ia.value.allDevices=a.dev_info.map(e=>({id:e.id,label:e.label,key:e.key}));const e=new Set,l={};Array.isArray(a.dev_info_zS)&&a.dev_info_zS.forEach(a=>{e.add(a.device_seed),l[a.device_seed]=a.id}),Ia.value.zsIdMap=l;const s=[];Ia.value.allDevices.forEach(a=>{e.has(a.key)&&s.push(a.id)}),Ia.value.originalSeeds=Array.isArray(a.dev_info_S)?a.dev_info_S:[],Ia.value.selectedIds=s}}catch(a){console.error("获取设备列表失败:",a),xa(D("account.loadDevicesFailed")),Ia.value.show=!1}Ia.value.loading=!1}async function Ba(){Ia.value.saving=!0;const e=new Set;Ia.value.selectedIds.forEach(a=>{const l=Ia.value.allDevices.find(e=>e.id===a);l&&e.add(l.key)});const a=new Set(Ia.value.originalSeeds),l=[];e.forEach(e=>{if(!a.has(e)){const a=Ia.value.allDevices.find(a=>a.key===e);a&&l.push(a.id)}});const s=[],c=Ia.value.zsIdMap;a.forEach(a=>{!e.has(a)&&c[a]&&s.push(c[a])});try{const e=await z({gid:Ia.value.ziUserId,pus_idstr:l.length>0?l.join("|"):"null",dis_idstr:s.length>0?s.join("|"):"null"});!0===e.res?(xa(D("account.editDevicesSuccess")),Ia.value.show=!1):xa(e.msg||e.info||D("account.editDevicesFailed"))}catch{xa(D("account.editDevicesFailed"))}Ia.value.saving=!1}async function Ta(e){if(confirm(D("account.resetTokenConfirm",{name:e.user_name})))try{const a=await M({username:e.user_name,passwd:e.user_pass});!0===a.res?(xa(D("account.resetTokenSuccess")+"\n"+D("account.newToken")+": "+a.token),_a()):xa(a.msg||a.info||D("account.resetTokenFailed"))}catch{xa(D("account.resetTokenFailed"))}}return a(()=>{_a()}),(e,a)=>(g(),l("div",U,[s("div",I,[s("h2",A,c(n(D)("account.title")),1)]),s("div",F,[s("h3",V,c(n(D)("account.addSubUser")),1),s("div",B,[s("div",T,[s("label",null,c(n(D)("account.username")),1),t(s("input",{"onUpdate:modelValue":a[0]||(a[0]=e=>va.value.ziusername=e),class:"form-input",placeholder:n(D)("account.usernamePlaceholder")},null,8,j),[[o,va.value.ziusername]])]),s("div",E,[s("label",null,c(n(D)("account.password")),1),t(s("input",{"onUpdate:modelValue":a[1]||(a[1]=e=>va.value.zipasswd=e),type:"password",class:"form-input",placeholder:n(D)("account.passwordPlaceholder")},null,8,L),[[o,va.value.zipasswd]])]),s("div",N,[s("label",null,c(n(D)("account.nickname")),1),t(s("input",{"onUpdate:modelValue":a[2]||(a[2]=e=>va.value.nickname=e),class:"form-input",placeholder:n(D)("account.nicknamePlaceholder")},null,8,P),[[o,va.value.nickname]])]),s("div",H,[s("label",null,c(n(D)("account.beizhu")),1),t(s("input",{"onUpdate:modelValue":a[3]||(a[3]=e=>va.value.beizhu=e),class:"form-input",placeholder:n(D)("account.beizhuPlaceholder")},null,8,R),[[o,va.value.beizhu]])]),s("div",q,[s("label",null,c(n(D)("account.levelLabel")),1),t(s("select",{"onUpdate:modelValue":a[4]||(a[4]=e=>va.value.level=e),class:"form-input"},[...a[13]||(a[13]=[s("option",{value:8},"8",-1),s("option",{value:6},"6",-1),s("option",{value:4},"4",-1),s("option",{value:2},"2",-1)])],512),[[i,va.value.level]])])]),s("div",G,[s("label",null,c(n(D)("account.permissions")),1),s("div",O,[s("label",W,[t(s("input",{type:"checkbox","onUpdate:modelValue":a[5]||(a[5]=e=>ha.value=e)},null,512),[[u,ha.value]]),s("span",null,c(n(D)("account.permCreateSub")),1)]),s("label",J,[t(s("input",{type:"checkbox","onUpdate:modelValue":a[6]||(a[6]=e=>pa.value=e)},null,512),[[u,pa.value]]),s("span",null,c(n(D)("account.permManageDevice")),1)]),s("label",K,[t(s("input",{type:"checkbox","onUpdate:modelValue":a[7]||(a[7]=e=>ma.value=e)},null,512),[[u,ma.value]]),s("span",null,c(n(D)("account.permUploadFile")),1)])])]),s("div",Q,[s("button",{class:"register-btn",disabled:ba.value,onClick:Sa},c(ba.value?n(D)("account.adding"):n(D)("account.addSubUser")),9,X)])]),s("div",Y,[s("div",Z,[s("h3",$,c(n(D)("account.subAccounts")),1),s("button",{class:"toolbar-btn",onClick:_a},c(n(D)("account.refreshList")),1)]),ga.value.length>0?(g(),l("div",ee,[s("table",ae,[s("thead",null,[s("tr",null,[a[14]||(a[14]=s("th",null,"ID",-1)),s("th",null,c(n(D)("account.username")),1),s("th",null,c(n(D)("account.passwordShow")),1),s("th",null,c(n(D)("account.nickname")),1),s("th",null,c(n(D)("account.beizhu")),1),s("th",null,c(n(D)("account.permCreateSub")),1),s("th",null,c(n(D)("account.permManageDevice")),1),s("th",null,c(n(D)("account.permUploadFile")),1),s("th",null,c(n(D)("account.createTime")),1),s("th",null,c(n(D)("common.actions")),1)])]),s("tbody",null,[(g(!0),l(d,null,r(ga.value,e=>(g(),l("tr",{key:e.id},[s("td",null,c(e.id),1),s("td",null,c(e.user_name),1),s("td",le,[s("span",se,[s("span",ce,c(ya(e.id)?e.user_pass:Ca(e.user_pass)),1),s("button",{class:"eye-btn",onClick:a=>wa(e.id),title:ya(e.id)?"隐藏":"显示"},[ya(e.id)?(g(),l("svg",oe,[...a[16]||(a[16]=[s("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"},null,-1),s("line",{x1:"1",y1:"1",x2:"23",y2:"23"},null,-1)])])):(g(),l("svg",te,[...a[15]||(a[15]=[s("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"},null,-1),s("circle",{cx:"12",cy:"12",r:"3"},null,-1)])]))],8,ne)])]),s("td",null,c(e.nickname),1),s("td",null,c(e.beizhu),1),s("td",null,[s("label",ie,[s("input",{type:"checkbox",checked:Ma(e.mask,0),onChange:a=>Da(e,0)},null,40,ue)])]),s("td",null,[s("label",de,[s("input",{type:"checkbox",checked:Ma(e.mask,1),onChange:a=>Da(e,1)},null,40,re)])]),s("td",null,[s("label",ve,[s("input",{type:"checkbox",checked:Ma(e.mask,2),onChange:a=>Da(e,2)},null,40,he)])]),s("td",pe,c(e.ctime),1),s("td",null,[s("div",me,[s("button",{class:"act-btn act-btn-blue",onClick:a=>Va(e)},[a[17]||(a[17]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"13",height:"13"},[s("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2"}),s("path",{d:"M8 21h8M12 17v4"})],-1)),f(" "+c(n(D)("account.editDevices")),1)],8,ke),s("button",{class:"act-btn act-btn-orange",onClick:a=>Ta(e)},[a[18]||(a[18]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"13",height:"13"},[s("path",{d:"M1 4v6h6"}),s("path",{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"})],-1)),f(" "+c(n(D)("account.resetToken")),1)],8,be),s("button",{class:"act-btn act-btn-red",onClick:a=>Ua(e)},[a[19]||(a[19]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"13",height:"13"},[s("polyline",{points:"3 6 5 6 21 6"}),s("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)),f(" "+c(n(D)("common.delete")),1)],8,ge)])])]))),128))])])])):v("",!0),ga.value.length>0?(g(),l("div",fe,[(g(!0),l(d,null,r(ga.value,e=>(g(),l("div",{key:e.id,class:"user-card"},[s("div",we,[s("div",ye,c(e.user_name),1),s("span",Ce,"ID: "+c(e.id),1)]),s("div",ze,[s("div",xe,[s("span",_e,c(n(D)("account.passwordShow")),1),s("span",Se,[s("span",Me,c(ya(e.id)?e.user_pass:Ca(e.user_pass)),1),s("button",{class:"eye-btn",onClick:a=>wa(e.id)},[ya(e.id)?(g(),l("svg",Ie,[...a[21]||(a[21]=[s("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"},null,-1),s("line",{x1:"1",y1:"1",x2:"23",y2:"23"},null,-1)])])):(g(),l("svg",Ue,[...a[20]||(a[20]=[s("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"},null,-1),s("circle",{cx:"12",cy:"12",r:"3"},null,-1)])]))],8,De)])]),e.nickname?(g(),l("div",Ae,[s("span",Fe,c(n(D)("account.nickname")),1),s("span",Ve,c(e.nickname),1)])):v("",!0),e.beizhu?(g(),l("div",Be,[s("span",Te,c(n(D)("account.beizhu")),1),s("span",je,c(e.beizhu),1)])):v("",!0),s("div",Ee,[s("span",Le,c(n(D)("account.createTime")),1),s("span",Ne,c(e.ctime),1)])]),s("div",Pe,[s("label",He,[s("input",{type:"checkbox",checked:Ma(e.mask,0),onChange:a=>Da(e,0)},null,40,Re),s("span",null,c(n(D)("account.permCreateSub")),1)]),s("label",qe,[s("input",{type:"checkbox",checked:Ma(e.mask,1),onChange:a=>Da(e,1)},null,40,Ge),s("span",null,c(n(D)("account.permManageDevice")),1)]),s("label",Oe,[s("input",{type:"checkbox",checked:Ma(e.mask,2),onChange:a=>Da(e,2)},null,40,We),s("span",null,c(n(D)("account.permUploadFile")),1)])]),s("div",Je,[s("button",{class:"act-btn act-btn-blue",onClick:a=>Va(e)},[a[22]||(a[22]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"13",height:"13"},[s("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2"}),s("path",{d:"M8 21h8M12 17v4"})],-1)),f(" "+c(n(D)("account.editDevices")),1)],8,Ke),s("button",{class:"act-btn act-btn-orange",onClick:a=>Ta(e)},[a[23]||(a[23]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"13",height:"13"},[s("path",{d:"M1 4v6h6"}),s("path",{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"})],-1)),f(" "+c(n(D)("account.resetToken")),1)],8,Qe),s("button",{class:"act-btn act-btn-red",onClick:a=>Ua(e)},[a[24]||(a[24]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"13",height:"13"},[s("polyline",{points:"3 6 5 6 21 6"}),s("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)),f(" "+c(n(D)("common.delete")),1)],8,Xe)])]))),128))])):v("",!0),0===ga.value.length?(g(),l("div",Ye,c(n(D)("account.noSubUsers")),1)):v("",!0)]),(g(),h(m,{to:"body"},[za.value.show?(g(),l("div",{key:0,class:"modal-overlay",onClick:a[9]||(a[9]=p(e=>za.value.show=!1,["self"]))},[s("div",Ze,[s("div",$e,c(za.value.message),1),s("div",ea,[s("button",{class:"modal-btn modal-btn-confirm",onClick:a[8]||(a[8]=e=>za.value.show=!1)},c(n(D)("common.confirm")),1)])])])):v("",!0)])),(g(),h(m,{to:"body"},[Ia.value.show?(g(),l("div",{key:0,class:"modal-overlay",onClick:a[12]||(a[12]=p(e=>Ia.value.show=!1,["self"]))},[s("div",aa,[s("div",la,c(n(D)("account.editDevices"))+" - "+c(Ia.value.userName),1),Ia.value.loading?(g(),l("div",sa,c(n(D)("common.loading")),1)):(g(),l("div",ca,[s("div",na,[t(s("input",{"onUpdate:modelValue":a[10]||(a[10]=e=>Aa.value=e),class:"form-input",placeholder:n(D)("account.searchDevice")},null,8,ta),[[o,Aa.value]])]),s("div",oa,[(g(!0),l(d,null,r(Fa.value,e=>(g(),l("label",{key:e.id,class:"device-check-item"},[s("input",{type:"checkbox",checked:Ia.value.selectedIds.includes(e.id),onChange:a=>function(e){const a=Ia.value.selectedIds.indexOf(e);-1===a?Ia.value.selectedIds.push(e):Ia.value.selectedIds.splice(a,1)}(e.id)},null,40,ia),s("span",null,c(e.label),1)]))),128)),0===Fa.value.length?(g(),l("div",ua,c(n(D)("account.noDevices")),1)):v("",!0)])])),s("div",da,[s("button",{class:"modal-btn",onClick:a[11]||(a[11]=e=>Ia.value.show=!1)},c(n(D)("common.cancel")),1),s("button",{class:"modal-btn modal-btn-confirm",disabled:Ia.value.saving,onClick:Ba},c(Ia.value.saving?n(D)("common.loading"):n(D)("common.save")),9,ra)])])])):v("",!0)]))]))}}),[["__scopeId","data-v-c678c4d8"]]);export{va as default};
@@ -0,0 +1 @@
1
+ import{f as e,o as a,n as l,y as s,F as o,z as n,A as i,u as t,m as c,M as d,p as r,B as v,C as u,D as m,E as p,G as g,H as h,N as b,r as y,I as f,J as w,K as k,t as x,L as P}from"./vue-vendor-BaBirIg_.js";import{u as I,a as C,b as M}from"./index-npdYRXyk.js";import{u as S}from"./api-C3Fyph-A.js";import{_ as H}from"./LanguageSwitcher.vue_vue_type_style_index_0_lang-7lwszLYh.js";import{u as B}from"./useDeviceScan-CM8xsf7h.js";import{_ as U}from"./_plugin-vue_export-helper-BCo6x5W8.js";const _={class:"login-container"},V={class:"particles"},D={class:"login-card diablo-card diablo-corner"},F={class:"login-header"},L={class:"logo-container"},E={class:"diablo-logo"},j={class:"logo-particles"},q={class:"login-title diablo-title"},z={class:"subtitle"},A={class:"language-selector"},G=["data-theme","title"],R={class:"login-form"},K={class:"form-group"},N=["placeholder"],O={class:"field-hint"},T={class:"form-group"},J=["placeholder"],$={class:"form-group"},Q=["placeholder"],W={key:0,class:"diablo-error"},X={class:"form-footer"},Y={class:"remember-me"},Z=["disabled"],ee={key:0},ae={key:1,class:"loading-text"},le={class:"login-footer"},se={class:"footer-text"},oe={class:"footer-version"},ne={class:"fire-effect"},ie=["title"],te={class:"dialog-header"},ce={class:"dialog-body"},de={class:"scan-top-bar"},re={class:"scan-hint"},ve=["disabled"],ue={key:0,class:"scan-error"},me={class:"scan-main-layout"},pe={class:"scan-main-left"},ge={key:0,class:"scan-results"},he={class:"scan-results-header"},be={class:"scan-count"},ye={class:"scan-device-table"},fe={class:"scan-table-header"},we={class:"col-media"},ke={class:"col-port"},xe={class:"col-flag"},Pe={class:"col-flag"},Ie={class:"col-dns"},Ce={class:"scan-table-body"},Me={class:"col-idx"},Se={class:"col-ip"},He={class:"col-seed mono"},Be={class:"col-media"},Ue={class:"col-port"},_e={class:"col-flag"},Ve={class:"col-flag"},De={class:"col-dns"},Fe={class:"col-action"},Le=["onClick"],Ee={key:1,class:"scan-empty"},je={class:"scan-console-side"},qe={class:"console-header"},ze={class:"console-body"},Ae={key:0,class:"console-empty"},Ge={class:"dialog-header"},Re={class:"dialog-body"},Ke={class:"config-seed-display"},Ne={class:"config-seed-label"},Oe={class:"config-seed-value mono"},Te={class:"form-group"},Je={class:"toggle-label"},$e={key:0,class:"config-ip-fields"},Qe={class:"form-group"},We={class:"form-group"},Xe={class:"form-group"},Ye={class:"config-row-2col"},Ze={class:"form-group"},ea={class:"form-group"},aa={class:"config-row-2col"},la={class:"form-group"},sa=["placeholder"],oa={class:"form-group"},na={class:"toggle-label"},ia={class:"console-section"},ta={class:"console-header"},ca={class:"console-body"},da={key:0,class:"console-empty"},ra={class:"dialog-footer"},va=U(e({__name:"index",setup(e){const{t:U}=I(),va=w(),ua=k(),ma=C(),pa=M(),{scannedDevices:ga,isScanning:ha,scanError:ba,isElectron:ya,udpLogs:fa,startScan:wa,configureDevice:ka,clearLogs:xa}=B(),Pa=y(!1),Ia=y(!1),Ca=y(!1),Ma=y({seed:"",deviceIP:"",mask:"255.255.255.0",gateway:"",mediaIP:"",mediaPort:12080,autoIP:!0,warmMode:!1,dns:"0.0.0.0"});async function Sa(){Ca.value=!0,await wa()}async function Ha(){await ka({...Ma.value})&&(Ia.value=!1)}const Ba=f({serverHost:"",username:"",passwd:""}),Ua=y(!1),_a=y(""),Va=y(!1),Da=y(""),Fa=y(null),La=y(null);function Ea(e){var a,l;"username"===e?null==(a=Fa.value)||a.focus():"password"===e&&(null==(l=La.value)||l.focus())}function ja(e){let a=e.trim().replace(/\/+$/,"");return a?(/^https?:\/\//i.test(a)||(a="http://"+a),a):""}async function qa(){if(_a.value="",!Ba.serverHost.trim())return void(_a.value=U("clientLogin.hostRequired"));if(!Ba.username)return void(_a.value=U("login.usernameRequired"));if(!Ba.passwd)return void(_a.value=U("login.passwordRequired"));const e=ja(Ba.serverHost),a=window.electronAPI;(null==a?void 0:a.storeSet)?a.storeSet("serverHost",e):localStorage.setItem("serverHost",e),S(e),Ua.value=!0;try{if(await ma.loginUser({username:Ba.username,passwd:Ba.passwd})){Va.value?(null==a?void 0:a.storeSet)?(a.storeSet("rememberedUsername",Ba.username),a.storeSet("rememberedHost",Ba.serverHost),a.storeSet("rememberedPassword",Ba.passwd)):(localStorage.setItem("rememberedUsername",Ba.username),localStorage.setItem("rememberedHost",Ba.serverHost),localStorage.setItem("rememberedPassword",Ba.passwd)):(null==a?void 0:a.storeDelete)?(a.storeDelete("rememberedUsername"),a.storeDelete("rememberedHost"),a.storeDelete("rememberedPassword")):(localStorage.removeItem("rememberedUsername"),localStorage.removeItem("rememberedHost"),localStorage.removeItem("rememberedPassword"));const e=ua.query.redirect||(ma.isAdmin?"/admin":"/");va.push(e)}else _a.value=U("login.invalidCredentials")}catch(l){console.error("登录失败:",l),_a.value=U("login.loginFailed")}finally{Ua.value=!1}}return a(async()=>{const e=window.electronAPI;let a=null,l=null,s=null;(null==e?void 0:e.storeGet)?(a=await e.storeGet("rememberedUsername"),l=await e.storeGet("rememberedHost"),s=await e.storeGet("rememberedPassword")):(a=localStorage.getItem("rememberedUsername"),l=localStorage.getItem("rememberedHost"),s=localStorage.getItem("rememberedPassword")),a&&(Ba.username=a,Va.value=!0),l&&(Ba.serverHost=l,localStorage.setItem("serverHost",ja(l))),s&&(Ba.passwd=s)}),(e,a)=>(x(),l("div",_,[a[51]||(a[51]=s("div",{class:"diablo-bg"},null,-1)),s("div",V,[(x(),l(o,null,n(20,e=>s("div",{key:e,class:"particle",style:P({animationDelay:.2*e+"s"})},null,4)),64))]),s("div",D,[s("div",F,[s("div",L,[s("div",E,[a[31]||(a[31]=s("div",{class:"logo-core"},null,-1)),a[32]||(a[32]=s("div",{class:"logo-ring"},null,-1)),s("div",j,[(x(),l(o,null,n(12,e=>s("div",{key:e,class:"logo-particle",style:P({"--delay":.2*e+"s","--angle":30*e+"deg"})},null,4)),64))])])]),s("h1",q,i(t(U)("login.title")),1),s("div",z,i(t(U)("clientLogin.subtitle")),1)]),a[39]||(a[39]=s("div",{class:"diablo-gold-line"},null,-1)),s("div",A,[c(H),s("div",{class:"theme-toggle","data-theme":t(pa).theme,onClick:a[0]||(a[0]=(...e)=>t(pa).toggleTheme&&t(pa).toggleTheme(...e)),title:"diablo"===t(pa).theme?"切换到白色调":"切换到暗色调"},[...a[33]||(a[33]=[d('<div class="theme-toggle-track" data-v-02aa6d08><svg class="theme-toggle-icon sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-02aa6d08><circle cx="12" cy="12" r="5" data-v-02aa6d08></circle><line x1="12" y1="1" x2="12" y2="3" data-v-02aa6d08></line><line x1="12" y1="21" x2="12" y2="23" data-v-02aa6d08></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64" data-v-02aa6d08></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78" data-v-02aa6d08></line><line x1="1" y1="12" x2="3" y2="12" data-v-02aa6d08></line><line x1="21" y1="12" x2="23" y2="12" data-v-02aa6d08></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36" data-v-02aa6d08></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22" data-v-02aa6d08></line></svg><svg class="theme-toggle-icon moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-02aa6d08><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" data-v-02aa6d08></path></svg><div class="theme-toggle-thumb" data-v-02aa6d08></div></div>',1)])],8,G)]),s("div",R,[s("div",K,[s("div",{class:r(["diablo-input-wrapper",{"input-focused":"host"===Da.value}])},[a[34]||(a[34]=d('<div class="diablo-input-icon" data-v-02aa6d08><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-02aa6d08><rect x="2" y="3" width="20" height="14" rx="2" ry="2" data-v-02aa6d08></rect><line x1="8" y1="21" x2="16" y2="21" data-v-02aa6d08></line><line x1="12" y1="17" x2="12" y2="21" data-v-02aa6d08></line></svg></div>',1)),v(s("input",{"onUpdate:modelValue":a[1]||(a[1]=e=>Ba.serverHost=e),type:"text",class:"diablo-input",placeholder:t(U)("clientLogin.hostPlaceholder"),onFocus:a[2]||(a[2]=e=>Da.value="host"),onBlur:a[3]||(a[3]=e=>Da.value=""),onKeyup:a[4]||(a[4]=m(e=>Ea("username"),["enter"]))},null,40,N),[[u,Ba.serverHost]])],2),s("div",O,i(t(U)("clientLogin.hostHint")),1)]),s("div",T,[s("div",{class:r(["diablo-input-wrapper",{"input-focused":"username"===Da.value}])},[a[35]||(a[35]=s("div",{class:"diablo-input-icon"},[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"8",r:"4"}),s("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"})])],-1)),v(s("input",{ref_key:"usernameRef",ref:Fa,"onUpdate:modelValue":a[5]||(a[5]=e=>Ba.username=e),type:"text",class:"diablo-input",placeholder:t(U)("login.usernamePlaceholder"),autocomplete:"username",onFocus:a[6]||(a[6]=e=>Da.value="username"),onBlur:a[7]||(a[7]=e=>Da.value=""),onKeyup:a[8]||(a[8]=m(e=>Ea("password"),["enter"]))},null,40,J),[[u,Ba.username]])],2)]),s("div",$,[s("div",{class:r(["diablo-input-wrapper",{"input-focused":"password"===Da.value}])},[a[36]||(a[36]=s("div",{class:"diablo-input-icon"},[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),s("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})])],-1)),v(s("input",{ref_key:"passwordRef",ref:La,"onUpdate:modelValue":a[9]||(a[9]=e=>Ba.passwd=e),type:"password",class:"diablo-input",placeholder:t(U)("login.passwordPlaceholder"),autocomplete:"current-password",onFocus:a[10]||(a[10]=e=>Da.value="password"),onBlur:a[11]||(a[11]=e=>Da.value=""),onKeyup:m(qa,["enter"])},null,40,Q),[[u,Ba.passwd]])],2)]),_a.value?(x(),l("div",W,i(_a.value),1)):p("",!0),s("div",X,[s("label",Y,[v(s("input",{"onUpdate:modelValue":a[12]||(a[12]=e=>Va.value=e),type:"checkbox"},null,512),[[g,Va.value]]),s("span",null,i(t(U)("login.rememberMe")),1)])]),s("button",{class:"diablo-btn login-btn",disabled:Ua.value,onClick:qa},[Ua.value?(x(),l("span",ae,[a[37]||(a[37]=s("span",{class:"diablo-loading"},null,-1)),h(" "+i(t(U)("login.logging")),1)])):(x(),l("span",ee,i(t(U)("login.loginButton")),1))],8,Z)]),s("div",le,[s("div",se," © 2024 "+i(t(U)("common.appName")),1),a[38]||(a[38]=s("div",{class:"footer-divider"},[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("path",{d:"M6 2l-4 4h4l-4 4h4l-4 4h4l-4 4h4l-4 4"}),s("path",{d:"M18 22l4-4h-4l4-4h-4l4-4h-4l4-4h-4l4-4h-4z"})])],-1)),s("div",oe,i(t(U)("settings.version"))+" "+i(t("2.0.40")),1)])]),s("div",ne,[(x(),l(o,null,n(10,e=>s("div",{key:e,class:"flame",style:P({animationDelay:.3*e+"s"})},null,4)),64))]),t(ya)?(x(),l("button",{key:0,class:"login-scan-btn",onClick:a[13]||(a[13]=e=>Pa.value=!0),title:t(U)("devices.scanDevices")},[...a[40]||(a[40]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"11",cy:"11",r:"8"}),s("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})],-1)])],8,ie)):p("",!0),Pa.value?(x(),l("div",{key:1,class:"dialog-overlay",onClick:a[17]||(a[17]=e=>Pa.value=!1)},[s("div",{class:"dialog scan-dialog",onClick:a[16]||(a[16]=b(()=>{},["stop"]))},[s("div",te,[a[41]||(a[41]=s("div",{class:"scan-header-icon"},[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("circle",{cx:"12",cy:"12",r:"3"}),s("path",{d:"M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83"})])],-1)),s("h3",null,i(t(U)("devices.deviceScan")),1),s("button",{class:"close-btn",onClick:a[14]||(a[14]=e=>Pa.value=!1)},"×")]),s("div",ce,[s("div",de,[s("p",re,i(t(U)("devices.scanHint")),1),s("button",{class:"diablo-button scan-action-btn",onClick:Sa,disabled:t(ha)},i(t(ha)?t(U)("devices.scanning"):t(U)("devices.scanButton")),9,ve)]),t(ba)?(x(),l("div",ue,i(t(ba)),1)):p("",!0),s("div",me,[s("div",pe,[t(ga).length>0?(x(),l("div",ge,[s("div",he,[s("h4",null,[h(i(t(U)("devices.scannedDevices"))+" ",1),s("span",be,i(t(ga).length),1)])]),s("div",ye,[s("div",fe,[a[42]||(a[42]=s("span",{class:"col-idx"},"#",-1)),a[43]||(a[43]=s("span",{class:"col-ip"},"IP",-1)),a[44]||(a[44]=s("span",{class:"col-seed"},"SEED",-1)),s("span",we,i(t(U)("devices.mediaServer")),1),s("span",ke,i(t(U)("devices.mediaPort")),1),s("span",xe,i(t(U)("devices.autoIP")),1),s("span",Pe,i(t(U)("devices.warmMode")),1),s("span",Ie,i(t(U)("devices.dns")),1),a[45]||(a[45]=s("span",{class:"col-action"},null,-1))]),s("div",Ce,[(x(!0),l(o,null,n(t(ga),(e,o)=>(x(),l("div",{key:e.seed,class:"scan-table-row"},[s("span",Me,i(o+1),1),s("span",Se,i(e.ip),1),s("span",He,i(e.seed),1),s("span",Be,i(e.mediaIP),1),s("span",Ue,i(e.mediaPort),1),s("span",_e,[s("span",{class:r(["tag",e.autoIP?"tag-on":"tag-off"])},i(e.autoIP?"ON":"OFF"),3)]),s("span",Ve,[s("span",{class:r(["tag",e.warmMode?"tag-on":"tag-off"])},i(e.warmMode?"ON":"OFF"),3)]),s("span",De,i(e.dns),1),s("span",Fe,[s("button",{class:"config-btn",onClick:b(a=>function(e){Ma.value={seed:e.seed,deviceIP:e.ip,mask:e.mask||"255.255.255.0",gateway:e.gateway||"",mediaIP:e.mediaIP||"",mediaPort:e.mediaPort||12080,autoIP:e.autoIP,warmMode:e.warmMode,dns:e.dns||"0.0.0.0"},Ia.value=!0}(e),["stop"])},[...a[46]||(a[46]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"12",height:"12"},[s("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),s("circle",{cx:"12",cy:"12",r:"3"})],-1)])],8,Le)])]))),128))])])])):(x(),l("div",Ee,[a[47]||(a[47]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",width:"32",height:"32"},[s("circle",{cx:"11",cy:"11",r:"8"}),s("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})],-1)),s("p",null,i(t(U)("devices.noDeviceFound")),1)]))]),s("div",je,[s("div",qe,[s("h4",null,i(t(U)("devices.console")),1),s("button",{class:"console-clear-btn",onClick:a[15]||(a[15]=(...e)=>t(xa)&&t(xa)(...e))},i(t(U)("devices.clearConsole")),1)]),s("div",ze,[0===t(fa).length?(x(),l("div",Ae,i(t(U)("devices.consoleEmpty")),1)):p("",!0),(x(!0),l(o,null,n(t(fa),(e,a)=>(x(),l("div",{key:a,class:r(["console-line","log-"+e.type])},i(e.msg),3))),128))])])])])])])):p("",!0),Ia.value?(x(),l("div",{key:2,class:"dialog-overlay",onClick:a[30]||(a[30]=e=>Ia.value=!1)},[s("div",{class:"dialog scan-config-dialog",onClick:a[29]||(a[29]=b(()=>{},["stop"]))},[s("div",Ge,[a[48]||(a[48]=s("div",{class:"scan-header-icon config-icon"},[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),s("circle",{cx:"12",cy:"12",r:"3"})])],-1)),s("h3",null,i(t(U)("devices.scanConfigTitle")),1),s("button",{class:"close-btn",onClick:a[18]||(a[18]=e=>Ia.value=!1)},"×")]),s("div",Re,[s("div",Ke,[s("span",Ne,i(t(U)("devices.seed")),1),s("span",Oe,i(Ma.value.seed),1)]),s("div",Te,[s("label",Je,[s("span",null,i(t(U)("devices.autoIP")),1),s("span",{class:r(["toggle-switch",{on:Ma.value.autoIP}]),onClick:a[19]||(a[19]=e=>Ma.value.autoIP=!Ma.value.autoIP)},[...a[49]||(a[49]=[s("span",{class:"toggle-knob"},null,-1)])],2)])]),Ma.value.autoIP?p("",!0):(x(),l("div",$e,[s("div",Qe,[s("label",null,i(t(U)("devices.deviceIP")),1),v(s("input",{class:"form-input","onUpdate:modelValue":a[20]||(a[20]=e=>Ma.value.deviceIP=e),placeholder:"192.168.1.100"},null,512),[[u,Ma.value.deviceIP]])]),s("div",We,[s("label",null,i(t(U)("devices.subnetMask")),1),v(s("input",{class:"form-input","onUpdate:modelValue":a[21]||(a[21]=e=>Ma.value.mask=e),placeholder:"255.255.255.0"},null,512),[[u,Ma.value.mask]])]),s("div",Xe,[s("label",null,i(t(U)("devices.gateway")),1),v(s("input",{class:"form-input","onUpdate:modelValue":a[22]||(a[22]=e=>Ma.value.gateway=e),placeholder:"192.168.1.1"},null,512),[[u,Ma.value.gateway]])])])),s("div",Ye,[s("div",Ze,[s("label",null,i(t(U)("devices.mediaServer")),1),v(s("input",{class:"form-input","onUpdate:modelValue":a[23]||(a[23]=e=>Ma.value.mediaIP=e),placeholder:"192.168.1.100"},null,512),[[u,Ma.value.mediaIP]])]),s("div",ea,[s("label",null,i(t(U)("devices.mediaPort")),1),v(s("input",{class:"form-input","onUpdate:modelValue":a[24]||(a[24]=e=>Ma.value.mediaPort=e),type:"number",min:"1",max:"65535"},null,512),[[u,Ma.value.mediaPort,void 0,{number:!0}]])])]),s("div",aa,[s("div",la,[s("label",null,i(t(U)("devices.dns")),1),v(s("input",{class:"form-input","onUpdate:modelValue":a[25]||(a[25]=e=>Ma.value.dns=e),placeholder:t(U)("devices.dnsPlaceholder")},null,8,sa),[[u,Ma.value.dns]])]),s("div",oa,[s("label",na,[s("span",null,i(t(U)("devices.warmMode")),1),s("span",{class:r(["toggle-switch",{on:Ma.value.warmMode}]),onClick:a[26]||(a[26]=e=>Ma.value.warmMode=!Ma.value.warmMode)},[...a[50]||(a[50]=[s("span",{class:"toggle-knob"},null,-1)])],2)])])]),s("div",ia,[s("div",ta,[s("h4",null,i(t(U)("devices.console")),1),s("button",{class:"console-clear-btn",onClick:a[27]||(a[27]=(...e)=>t(xa)&&t(xa)(...e))},i(t(U)("devices.clearConsole")),1)]),s("div",ca,[0===t(fa).length?(x(),l("div",da,i(t(U)("devices.consoleEmpty")),1)):p("",!0),(x(!0),l(o,null,n(t(fa),(e,a)=>(x(),l("div",{key:a,class:r(["console-line","log-"+e.type])},i(e.msg),3))),128))])])]),s("div",ra,[s("button",{class:"cancel-btn diablo-button-secondary",onClick:a[28]||(a[28]=e=>Ia.value=!1)},i(t(U)("common.cancel")),1),s("button",{class:"confirm-btn diablo-button",onClick:Ha},i(t(U)("devices.applyConfig")),1)])])])):p("",!0)]))}}),[["__scopeId","data-v-02aa6d08"]]);export{va as default};
@@ -0,0 +1 @@
1
+ .device-manage[data-v-ffaf74a6]{padding:20px;background:transparent;flex:1;display:flex;flex-direction:column;min-height:0}.content-area[data-v-ffaf74a6]{flex:1;display:flex;flex-direction:column;min-height:0;overflow:auto;max-height:calc(100vh - 140px)}.list-layout[data-v-ffaf74a6]{width:fit-content;max-width:100%}.page-header[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-shrink:0}.device-search-bar[data-v-ffaf74a6]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:12px;margin-bottom:16px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.device-search-bar .search-icon[data-v-ffaf74a6]{width:18px;height:18px;flex-shrink:0;color:var(--diablo-text-muted)}.device-search-bar .search-input[data-v-ffaf74a6]{flex:1;background:none;border:none;outline:none;color:var(--diablo-text);font-size:14px;font-family:inherit}.device-search-bar .search-input[data-v-ffaf74a6]::placeholder{color:var(--diablo-text-muted);opacity:.6}.device-search-bar .search-clear[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:50%;width:24px;height:24px;color:var(--diablo-text-muted);cursor:pointer;flex-shrink:0;padding:0}.device-search-bar .search-clear[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text)}.header-actions[data-v-ffaf74a6]{display:flex;gap:8px;align-items:center}.refresh-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:8px;background:transparent;border:1px solid transparent;border-radius:8px;color:var(--diablo-text-muted);cursor:pointer;transition:all .2s ease}.refresh-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border)}.refresh-btn[data-v-ffaf74a6]:disabled{opacity:.5;cursor:not-allowed}.page-title[data-v-ffaf74a6]{font-size:20px;font-weight:600;color:var(--diablo-text);margin:0;letter-spacing:-.3px}.add-btn[data-v-ffaf74a6]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.add-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.add-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.batch-volume-btn[data-v-ffaf74a6]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.batch-volume-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow);transform:translateY(-1px)}.batch-volume-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.device-list[data-v-ffaf74a6]{flex:1;overflow-y:auto;min-height:0}.view-mode-toggle[data-v-ffaf74a6]{display:flex;gap:4px;border:1px solid var(--glass-border);border-radius:12px;padding:4px;margin-right:12px;background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.view-mode-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:6px;background:transparent;border:none;border-radius:8px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.view-mode-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)}.view-mode-btn.active[data-v-ffaf74a6]{background:var(--glass-bg-active);color:var(--diablo-text);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.view-mode-btn.active[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover)}.view-mode-btn svg[data-v-ffaf74a6]{width:18px;height:18px}.list-view[data-v-ffaf74a6]{max-width:100%}.device-table-grid[data-v-ffaf74a6]{display:grid;grid-template-columns:repeat(13,auto);gap:0;padding:0;align-items:stretch}.device-row[data-v-ffaf74a6]{display:contents}.cell[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:flex-start;white-space:nowrap}.device-header-row .cell[data-v-ffaf74a6]{font-size:11px;font-weight:600;color:var(--diablo-text-muted);letter-spacing:-.2px;background:var(--diablo-bg-dark);border-bottom:1px solid var(--glass-border);padding:10px 16px;backdrop-filter:blur(var(--glass-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);position:sticky;top:0;z-index:10}.device-header-row .cell[data-v-ffaf74a6]:first-child{border-radius:8px 0 0}.device-header-row .cell[data-v-ffaf74a6]:last-child{border-radius:0 8px 0 0}.device-data-row .cell[data-v-ffaf74a6]{font-size:13px;color:var(--diablo-text);background:transparent;border-bottom:1px solid var(--glass-border);padding:8px 16px;transition:background .15s ease}.device-data-row:hover .cell[data-v-ffaf74a6]{background:var(--glass-bg-hover)}.device-data-row.selected .cell[data-v-ffaf74a6]{background:var(--glass-bg-active)}.device-data-row.offline .cell[data-v-ffaf74a6]{opacity:.6}.device-data-row.playing .cell[data-v-ffaf74a6]{background:#0a84ff0d}.cell-select input[type=checkbox][data-v-ffaf74a6]{width:16px;height:16px;cursor:pointer;accent-color:var(--diablo-primary)}.field-value{@keyframes indicatorPulse-ffaf74a6{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 12px #2ecc71cc}50%{opacity:.7;transform:scale(1.3);box-shadow:0 0 16px #2ecc71}}@keyframes particleOrbit-ffaf74a6{0%{transform:rotate(0) scale(1);opacity:.8}25%{transform:rotate(90deg) scale(1.1);opacity:.6}50%{transform:rotate(180deg) scale(1);opacity:1}75%{transform:rotate(270deg) scale(1.1);opacity:.6}to{transform:rotate(360deg) scale(1);opacity:.8}}@keyframes rippleEffect-ffaf74a6{0%{transform:translate(-50%,-50%) scale(.5);opacity:1}50%{transform:translate(-50%,-50%) scale(1.5);opacity:.5}to{transform:translate(-50%,-50%) scale(2);opacity:0}}@keyframes onlineGlow-ffaf74a6{0%,to{box-shadow:0 0 4px #2ecc7133}50%{box-shadow:0 0 8px #2ecc7166}}@keyframes pulse-ffaf74a6{0%,to{opacity:1}50%{opacity:.6}}@keyframes playingPulse-ffaf74a6{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.2)}}}.field-value[data-v-ffaf74a6]{font-size:13px;color:var(--diablo-text);font-weight:500}.field-value.status-badge[data-v-ffaf74a6]{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap;min-width:fit-content;transition:all .4s cubic-bezier(.25,.46,.45,.94);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-inner-glow)}.field-value.status-badge .status-indicator[data-v-ffaf74a6]{width:8px;height:8px;border-radius:50%;display:inline-block}.field-value.status-badge.online[data-v-ffaf74a6]{background:#2ecc7133;color:#2ecc71;border:1px solid rgba(46,204,113,.5);animation:onlineGlow-ffaf74a6 2s ease-in-out infinite}.field-value.status-badge.online .status-indicator[data-v-ffaf74a6]{background:#2ecc71;box-shadow:0 0 12px #2ecc71cc;animation:indicatorPulse-ffaf74a6 1.5s ease-in-out infinite}.field-value.status-badge.playing[data-v-ffaf74a6]{background:#3498db33;color:#3498db;border:1px solid rgba(52,152,219,.5);position:relative;overflow:visible}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]{background:#3498db;box-shadow:0 0 12px #3498dbcc;animation:playingPulse-ffaf74a6 1.2s ease-in-out infinite;position:relative}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:before,.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:after{content:"";position:absolute;border-radius:50%;background:#3498db;animation:particleOrbit-ffaf74a6 3s linear infinite}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:before{width:4px;height:4px;top:-8px;left:-8px;opacity:.8}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:after{width:3px;height:3px;top:-6px;right:-6px;opacity:.6;animation-delay:1s}.field-value.status-badge.playing[data-v-ffaf74a6]:before{content:"";position:absolute;width:20px;height:20px;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);border:1px solid rgba(52,152,219,.3);animation:rippleEffect-ffaf74a6 2s ease-out infinite;pointer-events:none}.field-value.status-badge.offline[data-v-ffaf74a6]{background:#95a5a626;color:#95a5a6;border:1px solid rgba(149,165,166,.3)}.field-value.status-badge.offline .status-indicator[data-v-ffaf74a6]{background:#95a5a6;animation:none}.field-value.status-badge.never[data-v-ffaf74a6]{background:#7f8c8d26;color:#7f8c8d;border:1px solid rgba(127,140,141,.3)}.field-value.status-badge.never .status-indicator[data-v-ffaf74a6]{background:#7f8c8d;animation:none}.field-value.status-badge.expired[data-v-ffaf74a6]{background:#e74c3c26;color:#e74c3c;border:1px solid rgba(231,76,60,.3)}.field-value.status-badge.expired .status-indicator[data-v-ffaf74a6]{background:#e74c3c;animation:none}.field-value.status-badge.unknown[data-v-ffaf74a6]{background:#bdc3c726;color:#bdc3c7;border:1px solid rgba(189,195,199,.3)}.field-value.status-badge.unknown .status-indicator[data-v-ffaf74a6]{background:#bdc3c7;animation:none}.field-value.serial-text[data-v-ffaf74a6]{font-family:Courier New,monospace;font-size:12px;color:var(--glass-border-glow)}.device-select input[type=checkbox][data-v-ffaf74a6]{width:18px;height:18px;cursor:pointer;accent-color:var(--glass-border-glow)}.device-actions[data-v-ffaf74a6]{display:flex;gap:4px}.sort-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:4px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.sort-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-hover);color:var(--glass-border-glow);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-2px)}.sort-btn[data-v-ffaf74a6]:active:not(:disabled){transform:translateY(0)}.sort-btn:disabled[data-v-ffaf74a6]{opacity:.3;cursor:not-allowed}.sort-btn:disabled[data-v-ffaf74a6]:hover{transform:none}.sort-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.action-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:8px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);white-space:nowrap}.action-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-1px)}.action-btn svg[data-v-ffaf74a6]{width:20px;height:20px}.action-btn.volume-btn[data-v-ffaf74a6]:hover{border-color:var(--glass-border-glow);color:var(--glass-border-glow);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.action-btn.rename-btn[data-v-ffaf74a6]:hover{border-color:var(--glass-border-hover);color:var(--glass-border-glow);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.action-btn.delete-btn[data-v-ffaf74a6]:hover{border-color:var(--glass-border-hover);color:#e74c3c;background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.action-btn.delete-btn[data-v-ffaf74a6]{z-index:1;position:relative}.debug-sound-btn[data-v-ffaf74a6]{display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;border:1px solid var(--glass-border);border-radius:10px;font-size:12px;font-weight:500;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);white-space:nowrap;background:var(--glass-bg)}.debug-sound-btn.open[data-v-ffaf74a6]{border-color:#e74c3c;background:var(--glass-bg-hover);color:#e74c3c;box-shadow:var(--glass-shadow-hover),0 0 12px #e74c3c4d}.debug-sound-btn.open[data-v-ffaf74a6]:hover{background:var(--glass-bg-active);transform:translateY(-1px);box-shadow:var(--glass-shadow-hover),0 0 16px #e74c3c66}.debug-sound-btn.close[data-v-ffaf74a6]{border-color:var(--glass-border);background:var(--glass-bg);color:var(--diablo-text-muted);opacity:.6}.debug-sound-btn.close[data-v-ffaf74a6]:hover{opacity:1}.dialog-overlay[data-v-ffaf74a6]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.dialog[data-v-ffaf74a6]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;width:100%;max-width:480px;-webkit-backdrop-filter:blur(var(--glass-blur-heavy));backdrop-filter:blur(var(--glass-blur-heavy));box-shadow:var(--glass-shadow),var(--glass-inner-glow),0 20px 60px #0000004d;animation:dialogSlideIn-ffaf74a6 .3s ease}@keyframes dialogSlideIn-ffaf74a6{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.dialog-header[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--glass-border)}.dialog-header h3[data-v-ffaf74a6]{margin:0;font-size:18px;color:var(--diablo-text)}.close-btn[data-v-ffaf74a6]{background:transparent;border:none;color:var(--diablo-text-muted);cursor:pointer;padding:4px;border-radius:8px;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.close-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);box-shadow:var(--glass-inner-glow)}.dialog-body[data-v-ffaf74a6]{padding:24px}.form-group[data-v-ffaf74a6]{margin-bottom:20px}.form-group label[data-v-ffaf74a6]{display:block;margin-bottom:8px;font-size:14px;color:var(--diablo-text);font-weight:500}.form-group input[data-v-ffaf74a6]{width:100%;padding:12px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text);font-size:14px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);box-sizing:border-box}.form-group input[data-v-ffaf74a6]::placeholder{color:var(--diablo-text-muted)}.form-group input[data-v-ffaf74a6]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow)}.form-group input.error[data-v-ffaf74a6]{border-color:#e74c3c}.form-group input.error[data-v-ffaf74a6]:focus{border-color:#e74c3c;box-shadow:0 0 0 3px #e74c3c33,var(--glass-inner-glow)}.form-group .error-text[data-v-ffaf74a6]{display:block;margin-top:6px;font-size:12px;color:#e74c3c}.form-group .form-hint[data-v-ffaf74a6]{margin:8px 0 0;font-size:12px;color:var(--diablo-text-muted);line-height:1.5}.form-group .hint-detail[data-v-ffaf74a6]{display:block;margin-top:4px;color:var(--glass-border-glow);font-style:italic}.form-group .test-fill-btn[data-v-ffaf74a6]{margin-top:8px;padding:8px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--glass-border-glow);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.form-group .test-fill-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-1px)}.dialog-footer[data-v-ffaf74a6]{display:flex;justify-content:flex-end;gap:12px;padding:20px;border-top:1px solid var(--glass-border)}.cancel-btn[data-v-ffaf74a6],.confirm-btn[data-v-ffaf74a6]{padding:12px 24px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.cancel-btn[data-v-ffaf74a6]:disabled,.confirm-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}.cancel-btn[data-v-ffaf74a6]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.cancel-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)}.confirm-btn[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.confirm-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.volume-dialog[data-v-ffaf74a6]{max-width:400px}.batch-volume-dialog[data-v-ffaf74a6]{max-width:500px}.selected-devices-info[data-v-ffaf74a6]{display:flex;align-items:center;gap:12px;padding:15px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;margin-bottom:20px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-inner-glow)}.info-label[data-v-ffaf74a6]{font-size:14px;color:var(--diablo-text);font-weight:500}.info-count[data-v-ffaf74a6]{font-size:18px;font-weight:700;color:var(--glass-border-glow)}.volume-control[data-v-ffaf74a6]{padding:20px 0}.volume-display[data-v-ffaf74a6]{display:flex;flex-direction:column;align-items:center;margin-bottom:20px}.volume-value[data-v-ffaf74a6]{font-size:48px;font-weight:700;color:var(--glass-border-glow)}.volume-range[data-v-ffaf74a6]{font-size:14px;color:var(--diablo-text-muted);margin-top:8px}.volume-slider[data-v-ffaf74a6]{width:100%;height:8px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:4px;outline:none;-webkit-appearance:none}:is()[data-v-ffaf74a6]{-webkit-appearance:none;width:20px;height:20px;background:var(--glass-border-glow);border-radius:50%;cursor:pointer;transition:all .2s ease;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)}:is()[data-v-ffaf74a6]:hover{transform:scale(1.2);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow)}.volume-slider[data-v-ffaf74a6]::-moz-range-thumb{width:20px;height:20px;background:var(--glass-border-glow);border-radius:50%;cursor:pointer;border:none;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)}.volume-labels[data-v-ffaf74a6]{display:flex;justify-content:space-between;margin-top:12px;color:var(--diablo-text-muted);font-size:12px}.volume-input[data-v-ffaf74a6]{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid var(--glass-border)}.volume-input label[data-v-ffaf74a6]{font-size:14px;color:var(--diablo-text);font-weight:500}.volume-number-input[data-v-ffaf74a6]{flex:1;padding:10px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text);font-size:16px;font-weight:600;text-align:center;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.volume-number-input[data-v-ffaf74a6]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow)}.loading-mask[data-v-ffaf74a6]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.loading-spinner[data-v-ffaf74a6]{width:40px;height:40px;border:3px solid var(--glass-border);border-top-color:var(--glass-border-glow);border-radius:50%;animation:spin-ffaf74a6 1s linear infinite;box-shadow:0 0 16px var(--glass-border-glow)}@keyframes spin-ffaf74a6{to{transform:rotate(360deg)}}.custom-message[data-v-ffaf74a6]{position:fixed;top:24px;left:50%;transform:translate(-50%) translateY(-20px);padding:12px 24px;border-radius:12px;font-size:14px;font-weight:500;z-index:9999;opacity:0;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));transition:all .4s cubic-bezier(.25,.46,.45,.94);box-shadow:var(--glass-shadow),var(--glass-inner-glow);border:1px solid var(--glass-border)}.custom-message.show[data-v-ffaf74a6]{opacity:1;transform:translate(-50%) translateY(0)}.custom-message.custom-message-success[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:#2ecc71;border-color:#2ecc7180}.custom-message.custom-message-error[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:#e74c3c;border-color:#e74c3c80}.custom-message.custom-message-warning[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:var(--glass-border-glow);border-color:var(--glass-border-hover)}.confirm-overlay[data-v-ffaf74a6]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.confirm-dialog[data-v-ffaf74a6]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;width:90%;max-width:420px;-webkit-backdrop-filter:blur(var(--glass-blur-heavy));backdrop-filter:blur(var(--glass-blur-heavy));box-shadow:var(--glass-shadow),var(--glass-inner-glow),0 20px 60px #0000004d;animation:dialogSlideIn-ffaf74a6 .3s ease}.confirm-header[data-v-ffaf74a6]{padding:20px;border-bottom:1px solid var(--glass-border)}.confirm-header h3[data-v-ffaf74a6]{margin:0;font-size:18px;color:var(--diablo-text)}.confirm-body[data-v-ffaf74a6]{padding:24px}.confirm-body p[data-v-ffaf74a6]{margin:0;font-size:15px;color:var(--diablo-text);line-height:1.6}.confirm-footer[data-v-ffaf74a6]{display:flex;gap:12px;justify-content:flex-end;padding:20px;border-top:1px solid var(--glass-border)}.confirm-cancel[data-v-ffaf74a6],.confirm-ok[data-v-ffaf74a6]{padding:10px 20px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.confirm-cancel[data-v-ffaf74a6]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.confirm-cancel[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)}.confirm-ok[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.confirm-ok[data-v-ffaf74a6]:hover{background:var(--glass-bg-active);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.debug-option-btn[data-v-ffaf74a6]{padding:12px 24px;margin:0 8px 8px 0;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--diablo-text);border-radius:10px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);font-size:14px;font-weight:500}.debug-option-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow)}.debug-option-btn.active[data-v-ffaf74a6]{background:var(--glass-bg-active);color:var(--diablo-text);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.debug-option-btn.active[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.debug-option-btn.error[data-v-ffaf74a6]{border-color:#e74c3c;color:#e74c3c}.debug-option-btn.error[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover)}.card-view[data-v-ffaf74a6]{display:block;margin-top:16px}.card-grid[data-v-ffaf74a6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.device-card[data-v-ffaf74a6]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;overflow:hidden;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow),var(--glass-inner-glow);transition:all .4s cubic-bezier(.25,.46,.45,.94);cursor:pointer}.device-card[data-v-ffaf74a6]:hover{border-color:var(--glass-border-hover);transform:translateY(-4px);box-shadow:var(--glass-shadow-hover),0 0 20px var(--glass-border-glow)}.device-card.offline[data-v-ffaf74a6]{opacity:.6}.device-card.playing[data-v-ffaf74a6]{border-color:var(--glass-border-glow);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.device-card.selected[data-v-ffaf74a6]{border-color:var(--glass-border-hover);background:var(--glass-bg-active);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow)}.card-header[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--glass-bg);border-bottom:1px solid var(--glass-border)}.card-select input[type=checkbox][data-v-ffaf74a6]{width:18px;height:18px;cursor:pointer;accent-color:var(--glass-border-glow)}.card-actions[data-v-ffaf74a6]{display:flex;gap:4px}.card-body[data-v-ffaf74a6]{padding:16px}.card-info-row[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.card-info-row[data-v-ffaf74a6]:last-child{margin-bottom:0}.info-label[data-v-ffaf74a6]{font-size:12px;color:var(--diablo-text-muted);font-weight:500}.info-value[data-v-ffaf74a6]{font-size:13px;color:var(--diablo-text);font-weight:600;word-break:break-all}.info-value.serial-text[data-v-ffaf74a6]{font-family:Courier New,monospace;font-size:12px;color:var(--glass-border-glow)}.info-value.serial-text.serial-highlight[data-v-ffaf74a6]{font-size:13px;font-weight:700;color:#0a84ff;background:#0a84ff1a;padding:2px 8px;border-radius:6px;letter-spacing:.3px}.card-footer[data-v-ffaf74a6]{display:flex;gap:8px;padding:12px 16px;background:var(--glass-bg);border-top:1px solid var(--glass-border);justify-content:flex-end}.card-action-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:8px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.card-action-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-2px)}.card-action-btn.delete-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:#e74c3c;border-color:#e74c3c80;box-shadow:var(--glass-shadow-hover),0 0 16px #e74c3c4d}.card-action-btn svg[data-v-ffaf74a6]{width:16px;height:16px}@media (max-width: 768px){.device-manage[data-v-ffaf74a6]{padding:12px}.page-header[data-v-ffaf74a6]{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:12px}.header-actions[data-v-ffaf74a6]{flex-wrap:wrap;width:100%;gap:6px}.view-mode-toggle[data-v-ffaf74a6]{margin-right:6px}.list-view[data-v-ffaf74a6]{display:none!important}.card-view[data-v-ffaf74a6]{display:block!important}.card-grid[data-v-ffaf74a6]{grid-template-columns:1fr;gap:12px}.device-card[data-v-ffaf74a6]{cursor:default}.add-btn[data-v-ffaf74a6],.batch-volume-btn[data-v-ffaf74a6]{padding:8px 12px;font-size:12px}.add-btn svg[data-v-ffaf74a6],.batch-volume-btn svg[data-v-ffaf74a6]{width:14px;height:14px}.page-title[data-v-ffaf74a6]{font-size:17px}.dialog[data-v-ffaf74a6]{max-width:95vw;max-height:90vh;margin:auto}.dialog-body[data-v-ffaf74a6]{padding:16px;max-height:calc(90vh - 140px);overflow-y:auto}.dialog-header[data-v-ffaf74a6],.dialog-footer[data-v-ffaf74a6]{padding:14px 16px}.volume-value[data-v-ffaf74a6]{font-size:36px}.batch-volume-dialog[data-v-ffaf74a6],.volume-dialog[data-v-ffaf74a6]{max-width:95vw}}@media (max-width: 480px){.device-manage[data-v-ffaf74a6]{padding:8px}.header-actions[data-v-ffaf74a6]{gap:4px}.batch-volume-btn span[data-v-ffaf74a6]:not(.diablo-button svg){display:none}.device-card[data-v-ffaf74a6]{padding:0}.card-body[data-v-ffaf74a6]{padding:12px}.card-header[data-v-ffaf74a6],.card-footer[data-v-ffaf74a6]{padding:10px 12px}.confirm-ok[data-v-ffaf74a6],.confirm-cancel[data-v-ffaf74a6]{padding:10px 16px!important;font-size:13px!important}}.confirm-overlay{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;background:#00000080!important;display:flex!important;align-items:center!important;justify-content:center!important;z-index:9999!important;padding:20px!important;-webkit-backdrop-filter:blur(var(--glass-blur))!important;backdrop-filter:blur(var(--glass-blur))!important}.confirm-dialog{background:var(--glass-bg-card)!important;border:1px solid var(--glass-border)!important;border-radius:16px!important;width:90%!important;max-width:420px!important;-webkit-backdrop-filter:blur(var(--glass-blur-heavy))!important;backdrop-filter:blur(var(--glass-blur-heavy))!important;box-shadow:var(--glass-shadow),var(--glass-inner-glow),0 20px 60px #0000004d!important;animation:dialogSlideIn .3s ease!important}.confirm-header{padding:20px!important;border-bottom:1px solid var(--glass-border)!important}.confirm-header h3{margin:0!important;font-size:18px!important;color:var(--diablo-text)!important}.confirm-body{padding:24px!important}.confirm-body p{margin:0!important;font-size:15px!important;color:var(--diablo-text)!important;line-height:1.6!important}.confirm-footer{display:flex!important;gap:12px!important;justify-content:flex-end!important;padding:20px!important;border-top:1px solid var(--glass-border)!important}.confirm-cancel,.confirm-ok{padding:10px 20px!important;border-radius:10px!important;font-size:14px!important;font-weight:500!important;cursor:pointer!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important;transition:all .4s cubic-bezier(.25,.46,.45,.94)!important}.confirm-cancel{background:var(--glass-bg)!important;border:1px solid var(--glass-border)!important;color:var(--diablo-text)!important}.confirm-cancel:hover{background:var(--glass-bg-hover)!important;color:var(--diablo-text)!important;border-color:var(--glass-border-hover)!important;box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)!important}.confirm-ok{background:var(--glass-bg-hover)!important;color:var(--diablo-text)!important;border:1px solid var(--glass-border-hover)!important;box-shadow:var(--glass-shadow),var(--glass-inner-glow)!important}.confirm-ok:hover{background:var(--glass-bg-active)!important;box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)!important}@keyframes dialogSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.volume-slider{background:var(--glass-bg)!important;border-color:var(--glass-border)!important}.volume-slider::-webkit-slider-thumb{background:var(--glass-border-glow)!important;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)!important}.volume-slider::-moz-range-thumb{background:var(--glass-border-glow)!important;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)!important}.volume-number-input{background:var(--glass-bg)!important;border-color:var(--glass-border)!important;color:var(--diablo-text)!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important}.theme-light .volume-slider{background:#e0e0e0!important;border-color:#d0d0d0!important}.theme-light .volume-slider::-webkit-slider-thumb,.theme-light .volume-slider::-moz-range-thumb{background:#ff9800!important}.theme-light .volume-number-input{background:#f5f7fa!important;border-color:#d0d0d0!important;color:#333!important}.theme-light .scan-table-header{background:#0000000a}.theme-light .scan-table-row{border-top-color:#0000000f}.theme-light .scan-table-row:hover{background:#0000000a}.theme-light .scan-table-row.selected{background:#ff980014}.theme-light .scan-device-table{border-color:#0000001a;background:#00000005}.theme-light .scan-sort-btn{background:#0000000a;border-color:#0000001a}.theme-light .scan-sort-btn:hover{background:#00000014;border-color:#00000026}.theme-light .scan-sort-btn.active{background:#ff98001f;border-color:#ff98004d;color:#e68a00}.theme-light .scan-count{background:#ff98001f;color:#e68a00}.theme-light .mono{color:#000000b3}.theme-light .tag-off{background:#0000000f}.theme-light .config-btn{border-color:#0000001f;background:#0000000a}.theme-light .config-btn:hover{background:#ff98001f;border-color:#ff98004d;color:#e68a00}.theme-light .config-seed-display{background:#0000000a;border-color:#00000014}.theme-light .config-seed-value{color:#00000080}.theme-light .config-ip-fields{border-left-color:#ff98004d}.theme-light .toggle-switch{background:#00000026}.theme-light .toggle-switch.on{background:#e68a00}.theme-light .test-comm-section{border-top-color:#00000014}.theme-light .console-body{background:#0000000a;border-color:#00000014}.theme-light .console-body::-webkit-scrollbar-thumb{background:#0000001f}.theme-light .console-empty{color:#00000040}.theme-light .scan-table-body::-webkit-scrollbar-thumb{background:#0000001f}.theme-light .console-clear-btn:hover{background:#0000000f}.theme-light .scan-error{background:#d32f2f14;border-color:#d32f2f26}.theme-light .scan-empty svg{opacity:.5}.theme-light .tag-on{background:#2e7d321f;color:#2e7d32}.theme-light .scan-results-header h4{color:#333}.theme-light .field-error{color:#d32f2f}.theme-light .scan-config-dialog .form-input.input-error{border-color:#d32f2f80!important;box-shadow:0 0 8px #d32f2f26}.device-field .status-badge{display:inline-flex!important;align-items:center!important;gap:6px!important;padding:4px 10px!important;border-radius:12px!important;font-size:12px!important;font-weight:600!important;white-space:nowrap!important;min-width:fit-content!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important;box-shadow:var(--glass-inner-glow)!important;transition:all .4s cubic-bezier(.25,.46,.45,.94)!important}.device-field .status-badge .status-indicator{width:8px!important;height:8px!important;border-radius:50%!important;display:inline-block!important}.device-field .status-badge.status-online{background:#2ecc7133!important;color:#2ecc71!important;border:1px solid rgba(46,204,113,.5)!important;animation:onlineGlow 2s ease-in-out infinite!important}.device-field .status-badge.status-online .status-indicator{background:#2ecc71!important;box-shadow:0 0 12px #2ecc71cc!important;animation:indicatorPulse 1.5s ease-in-out infinite!important}.device-field .status-badge.status-playing{background:#3498db33!important;color:#3498db!important;border:1px solid rgba(52,152,219,.5)!important;position:relative!important;overflow:visible!important}.device-field .status-badge.status-playing .status-indicator{background:#3498db!important;box-shadow:0 0 12px #3498dbcc!important;animation:playingPulse 1.2s ease-in-out infinite!important;position:relative!important}.device-field .status-badge.status-playing .status-indicator:before,.device-field .status-badge.status-playing .status-indicator:after{content:""!important;position:absolute!important;border-radius:50%!important;background:#3498db!important;animation:particleOrbit 3s linear infinite!important}.device-field .status-badge.status-playing .status-indicator:before{width:4px!important;height:4px!important;top:-8px!important;left:-8px!important;opacity:.8!important}.device-field .status-badge.status-playing .status-indicator:after{width:3px!important;height:3px!important;top:-6px!important;right:-6px!important;opacity:.6!important;animation-delay:1s!important}.device-field .status-badge.status-playing:before{content:""!important;position:absolute!important;width:20px!important;height:20px!important;border-radius:50%!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;border:1px solid rgba(52,152,219,.3)!important;animation:rippleEffect 2s ease-out infinite!important;pointer-events:none!important}.device-field .status-badge.status-offline{background:#95a5a626!important;color:#95a5a6!important;border:1px solid rgba(149,165,166,.3)!important}.device-field .status-badge.status-offline .status-indicator{background:#95a5a6!important;animation:none!important}.device-field .status-badge.status-never{background:#7f8c8d26!important;color:#7f8c8d!important;border:1px solid rgba(127,140,141,.3)!important}.device-field .status-badge.status-never .status-indicator{background:#7f8c8d!important;animation:none!important}.device-field .status-badge.status-expired{background:#e74c3c26!important;color:#e74c3c!important;border:1px solid rgba(231,76,60,.3)!important}.device-field .status-badge.status-expired .status-indicator{background:#e74c3c!important;animation:none!important}.device-field .status-badge.status-unknown{background:#bdc3c726!important;color:#bdc3c7!important;border:1px solid rgba(189,195,199,.3)!important}.device-field .status-badge.status-unknown .status-indicator{background:#bdc3c7!important;animation:none!important}.card-info-row .status-badge{display:inline-flex!important;align-items:center!important;gap:6px!important;padding:4px 10px!important;border-radius:12px!important;font-size:12px!important;font-weight:600!important;white-space:nowrap!important;min-width:fit-content!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important;box-shadow:var(--glass-inner-glow)!important;transition:all .4s cubic-bezier(.25,.46,.45,.94)!important}.card-info-row .status-badge .status-indicator{width:8px!important;height:8px!important;border-radius:50%!important;display:inline-block!important}.card-info-row .status-badge.status-online{background:#2ecc7133!important;color:#2ecc71!important;border:1px solid rgba(46,204,113,.5)!important;animation:onlineGlow 2s ease-in-out infinite!important}.card-info-row .status-badge.status-online .status-indicator{background:#2ecc71!important;box-shadow:0 0 12px #2ecc71cc!important;animation:indicatorPulse 1.5s ease-in-out infinite!important}.card-info-row .status-badge.status-playing{background:#3498db33!important;color:#3498db!important;border:1px solid rgba(52,152,219,.5)!important;position:relative!important;overflow:visible!important}.card-info-row .status-badge.status-playing .status-indicator{background:#3498db!important;box-shadow:0 0 12px #3498dbcc!important;animation:playingPulse 1.2s ease-in-out infinite!important;position:relative!important}.card-info-row .status-badge.status-playing .status-indicator:before,.card-info-row .status-badge.status-playing .status-indicator:after{content:""!important;position:absolute!important;border-radius:50%!important;background:#3498db!important;animation:particleOrbit 3s linear infinite!important}.card-info-row .status-badge.status-playing .status-indicator:before{width:4px!important;height:4px!important;top:-8px!important;left:-8px!important;opacity:.8!important}.card-info-row .status-badge.status-playing .status-indicator:after{width:3px!important;height:3px!important;top:-6px!important;right:-6px!important;opacity:.6!important;animation-delay:1s!important}.card-info-row .status-badge.status-playing:before{content:""!important;position:absolute!important;width:20px!important;height:20px!important;border-radius:50%!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;border:1px solid rgba(52,152,219,.3)!important;animation:rippleEffect 2s ease-out infinite!important;pointer-events:none!important}.card-info-row .status-badge.status-offline{background:#95a5a626!important;color:#95a5a6!important;border:1px solid rgba(149,165,166,.3)!important}.card-info-row .status-badge.status-offline .status-indicator{background:#95a5a6!important;animation:none!important}.card-info-row .status-badge.status-never{background:#7f8c8d26!important;color:#7f8c8d!important;border:1px solid rgba(127,140,141,.3)!important}.card-info-row .status-badge.status-never .status-indicator{background:#7f8c8d!important;animation:none!important}.card-info-row .status-badge.status-expired{background:#e74c3c26!important;color:#e74c3c!important;border:1px solid rgba(231,76,60,.3)!important}.card-info-row .status-badge.status-expired .status-indicator{background:#e74c3c!important;animation:none!important}.card-info-row .status-badge.status-unknown{background:#bdc3c726!important;color:#bdc3c7!important;border:1px solid rgba(189,195,199,.3)!important}.card-info-row .status-badge.status-unknown .status-indicator{background:#bdc3c7!important;animation:none!important}@keyframes indicatorPulse{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 12px #2ecc71cc}50%{opacity:.7;transform:scale(1.3);box-shadow:0 0 16px #2ecc71}}@keyframes particleOrbit{0%{transform:rotate(0) scale(1);opacity:.8}25%{transform:rotate(90deg) scale(1.1);opacity:.6}50%{transform:rotate(180deg) scale(1);opacity:1}75%{transform:rotate(270deg) scale(1.1);opacity:.6}to{transform:rotate(360deg) scale(1);opacity:.8}}@keyframes rippleEffect{0%{transform:translate(-50%,-50%) scale(.5);opacity:1}50%{transform:translate(-50%,-50%) scale(1.5);opacity:.5}to{transform:translate(-50%,-50%) scale(2);opacity:0}}@keyframes onlineGlow{0%,to{box-shadow:0 0 4px #2ecc7133}50%{box-shadow:0 0 8px #2ecc7166}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes playingPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.2)}}@media (max-width: 768px){.dialog-overlay{padding:10px!important}.dialog{max-width:95vw!important;max-height:90vh!important}.dialog-body{max-height:calc(90vh - 140px);overflow-y:auto}.dialog-header h3{font-size:15px!important}.volume-dialog .volume-value{font-size:36px!important}.confirm-overlay{padding:10px!important}.confirm-dialog{width:95%!important;max-width:95%!important}.confirm-header h3{font-size:15px!important}.confirm-body p{font-size:14px!important}.confirm-cancel,.confirm-ok{padding:8px 14px!important;font-size:13px!important}.custom-message{font-size:13px;padding:10px 16px;max-width:90vw}}.scan-dialog[data-v-ffaf74a6]{max-width:1100px;max-height:85vh;display:flex;flex-direction:column}.scan-dialog .dialog-body[data-v-ffaf74a6]{overflow-y:auto;flex:1;min-height:0}.scan-main-layout[data-v-ffaf74a6]{display:flex;gap:12px;min-height:0}.scan-main-left[data-v-ffaf74a6]{flex:1;min-width:0;display:flex;flex-direction:column}.scan-console-side[data-v-ffaf74a6]{width:260px;flex-shrink:0;display:flex;flex-direction:column}.scan-console-side .console-body[data-v-ffaf74a6]{flex:1;max-height:50vh;min-height:120px}.scan-config-dialog[data-v-ffaf74a6]{max-width:560px;max-height:85vh;display:flex;flex-direction:column}.scan-config-dialog .dialog-body[data-v-ffaf74a6]{overflow-y:auto;flex:1;min-height:0}.scan-config-dialog .dialog-footer[data-v-ffaf74a6]{flex-shrink:0}.scan-config-dialog .console-section[data-v-ffaf74a6]{margin-top:12px}.scan-config-dialog .console-body[data-v-ffaf74a6]{max-height:120px;overflow-y:auto}.scan-config-dialog .form-group[data-v-ffaf74a6]{margin-bottom:12px}.scan-config-dialog .config-ip-fields[data-v-ffaf74a6],.scan-config-dialog .config-row-2col[data-v-ffaf74a6]{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.scan-header-icon[data-v-ffaf74a6]{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#5856d6,#0a84ff);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.scan-header-icon.config-icon[data-v-ffaf74a6]{background:linear-gradient(135deg,#ff9f0a,#ff6723)}.scan-top-bar[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.scan-hint[data-v-ffaf74a6]{color:var(--text-muted, #86868b);font-size:13px;margin:0;flex:1}.scan-action-btn[data-v-ffaf74a6]{white-space:nowrap;padding:8px 20px;font-size:13px;border-radius:10px;display:flex;align-items:center;gap:6px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);cursor:pointer;transition:all .2s}.scan-action-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:0 0 12px var(--glass-border-glow)}.scan-action-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}@keyframes spin-ffaf74a6{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.scan-spinner[data-v-ffaf74a6]{animation:spin-ffaf74a6 1s linear infinite}.scan-error[data-v-ffaf74a6]{color:var(--danger, #ff453a);font-size:13px;margin-bottom:12px;display:flex;align-items:center;gap:6px;padding:8px 12px;background:#ff453a1a;border-radius:8px;border:1px solid rgba(255,69,58,.2)}.scan-empty[data-v-ffaf74a6]{text-align:center;color:var(--text-muted, #86868b);padding:32px 24px;display:flex;flex-direction:column;align-items:center;gap:8px}.scan-empty svg[data-v-ffaf74a6]{opacity:.3}.scan-empty p[data-v-ffaf74a6]{margin:0;font-size:14px}.scan-results[data-v-ffaf74a6]{margin-top:4px}.scan-results-header[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.scan-results-header h4[data-v-ffaf74a6]{font-size:14px;color:var(--text-primary, #f5f5f7);margin:0;font-weight:600}.scan-count[data-v-ffaf74a6]{font-size:12px;font-weight:500;color:var(--primary, #0a84ff);background:#0a84ff1f;padding:2px 8px;border-radius:10px;margin-left:6px}.scan-sort-btns[data-v-ffaf74a6]{display:flex;gap:4px}.scan-sort-btn[data-v-ffaf74a6]{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:var(--text-muted, #86868b);font-size:11px;padding:4px 10px;border-radius:6px;cursor:pointer;transition:all .15s;font-weight:500}.scan-sort-btn[data-v-ffaf74a6]:hover{background:#ffffff14;border-color:#ffffff26}.scan-sort-btn.active[data-v-ffaf74a6]{background:#0a84ff26;border-color:#0a84ff59;color:var(--primary, #0a84ff)}.sort-arrow[data-v-ffaf74a6]{font-size:10px}.scan-device-table[data-v-ffaf74a6]{border:1px solid rgba(255,255,255,.08);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;background:#0003}.scan-table-body[data-v-ffaf74a6]{max-height:45vh;overflow-y:auto}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar{width:5px}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar-track{background:transparent}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb:hover{background:#fff3}.scan-table-header[data-v-ffaf74a6],.scan-table-row[data-v-ffaf74a6]{display:grid;grid-template-columns:36px 100px 1fr 90px 48px 44px 44px 80px 40px;gap:2px;padding:7px 10px;font-size:11px;align-items:center}.scan-table-header[data-v-ffaf74a6]{background:#ffffff0a;font-weight:600;color:var(--text-muted, #86868b);flex-shrink:0;text-transform:uppercase;letter-spacing:.3px;font-size:10px}.scan-table-row[data-v-ffaf74a6]{border-top:1px solid rgba(255,255,255,.06);cursor:pointer;transition:all .15s;color:var(--diablo-text, rgba(255,255,255,.85))}.scan-table-row[data-v-ffaf74a6]:hover{background:#ffffff0a}.scan-table-row.selected[data-v-ffaf74a6]{background:#0a84ff1a}.col-idx[data-v-ffaf74a6]{text-align:center;color:var(--text-muted, #86868b);font-size:10px}.col-port[data-v-ffaf74a6],.col-flag[data-v-ffaf74a6]{text-align:center}.mono[data-v-ffaf74a6]{font-family:SF Mono,Cascadia Code,monospace;font-size:10px;color:var(--diablo-text, rgba(255,255,255,.85));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag[data-v-ffaf74a6]{display:inline-block;padding:1px 6px;border-radius:4px;font-size:9px;font-weight:700;letter-spacing:.5px}.tag-on[data-v-ffaf74a6]{background:#30d15826;color:#30d158}.tag-off[data-v-ffaf74a6]{background:#ffffff0f;color:var(--text-muted, #86868b)}.scan-add-btn[data-v-ffaf74a6]{width:26px;height:26px;border-radius:6px;border:1px solid rgba(48,209,88,.2);background:#30d15814;color:#30d158;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.scan-add-btn[data-v-ffaf74a6]:hover{background:#30d15833;border-color:#30d15866}.theme-light .scan-add-btn[data-v-ffaf74a6]{border-color:#00780026;background:#0078000d;color:#1b8a1b}.theme-light .scan-add-btn[data-v-ffaf74a6]:hover{background:#0078001f;border-color:#0078004d}.config-btn[data-v-ffaf74a6]{width:26px;height:26px;border-radius:6px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:var(--text-muted, #86868b);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.config-btn[data-v-ffaf74a6]:hover{background:#0a84ff26;border-color:#0a84ff4d;color:var(--primary, #0a84ff)}.config-seed-display[data-v-ffaf74a6]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#00000040;border-radius:8px;margin-bottom:16px;border:1px solid rgba(255,255,255,.06)}.config-seed-label[data-v-ffaf74a6]{font-size:11px;color:var(--text-muted, #86868b);flex-shrink:0;font-weight:600}.config-seed-value[data-v-ffaf74a6]{font-family:SF Mono,Cascadia Code,monospace;font-size:11px;color:#ffffff80;overflow:hidden;text-overflow:ellipsis}.toggle-label[data-v-ffaf74a6]{display:flex!important;align-items:center;justify-content:space-between;cursor:pointer}.toggle-switch[data-v-ffaf74a6]{width:36px;height:20px;border-radius:10px;background:#ffffff1f;position:relative;transition:background .2s;flex-shrink:0}.toggle-switch.on[data-v-ffaf74a6]{background:var(--primary, #0a84ff)}.toggle-knob[data-v-ffaf74a6]{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0000004d}.toggle-switch.on .toggle-knob[data-v-ffaf74a6]{transform:translate(16px)}.config-ip-fields[data-v-ffaf74a6]{border-left:2px solid rgba(10,132,255,.3);padding-left:12px;margin-left:4px}.diablo-button-danger[data-v-ffaf74a6]{background:linear-gradient(135deg,#ff453a,#ff6723)!important;border:none!important;color:#fff!important;display:flex;align-items:center;gap:4px}.diablo-button-danger[data-v-ffaf74a6]:hover{opacity:.9}.scan-btn[data-v-ffaf74a6]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.scan-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.scan-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.test-comm-section[data-v-ffaf74a6]{margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}.test-comm-section h4[data-v-ffaf74a6]{font-size:13px;color:var(--text-primary, #f5f5f7);margin:0 0 8px;font-weight:600}.test-comm-bar[data-v-ffaf74a6]{display:flex;gap:8px}.test-seed-input[data-v-ffaf74a6]{flex:1;font-family:SF Mono,Cascadia Code,monospace!important;font-size:12px!important;letter-spacing:.5px}.test-comm-btn[data-v-ffaf74a6]{white-space:nowrap;padding:8px 16px;font-size:12px;border-radius:8px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);cursor:pointer;transition:all .2s}.test-comm-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:0 0 10px var(--glass-border-glow)}.test-comm-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}.console-section[data-v-ffaf74a6]{margin-top:16px}.console-header[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.console-header h4[data-v-ffaf74a6]{font-size:13px;color:var(--text-primary, #f5f5f7);margin:0;font-weight:600}.console-clear-btn[data-v-ffaf74a6]{background:none;border:none;color:var(--text-muted, #86868b);font-size:11px;cursor:pointer;padding:2px 6px;border-radius:4px}.console-clear-btn[data-v-ffaf74a6]:hover{color:var(--text-primary, #f5f5f7);background:#ffffff0f}.console-body[data-v-ffaf74a6]{background:#00000059;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px 10px;max-height:180px;overflow-y:auto;font-family:SF Mono,Cascadia Code,monospace;font-size:11px;line-height:1.6}.console-body[data-v-ffaf74a6]::-webkit-scrollbar{width:4px}.console-body[data-v-ffaf74a6]::-webkit-scrollbar-track{background:transparent}.console-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.console-empty[data-v-ffaf74a6]{color:#fff3;font-style:italic}.console-line[data-v-ffaf74a6]{white-space:pre-wrap;word-break:break-all}.log-send[data-v-ffaf74a6]{color:#ff9f0acc}.log-recv[data-v-ffaf74a6]{color:#30d158cc}.log-info[data-v-ffaf74a6]{color:#fff6}.log-error[data-v-ffaf74a6]{color:#ff453acc}.field-error[data-v-ffaf74a6]{display:block;font-size:12px;color:#ff453ae6;margin-top:4px}.scan-config-dialog .form-input.input-error[data-v-ffaf74a6]{border-color:#ff453ab3!important;box-shadow:0 0 8px #ff453a33}.advanced-btn[data-v-ffaf74a6]{margin-right:auto;padding:8px 16px;font-size:12px;border-radius:8px;cursor:pointer;transition:all .2s;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.advanced-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow)}.amixer-dialog[data-v-ffaf74a6]{width:640px;max-height:90vh}.amixer-dialog .dialog-header h3[data-v-ffaf74a6]{color:var(--diablo-text)}.amixer-body[data-v-ffaf74a6]{max-height:calc(90vh - 120px);overflow-y:auto;padding:16px}.amixer-body[data-v-ffaf74a6]::-webkit-scrollbar{width:4px}.amixer-body[data-v-ffaf74a6]::-webkit-scrollbar-track{background:transparent}.amixer-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.amixer-toolbar[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.06)}.amixer-seed-display[data-v-ffaf74a6]{font-size:11px;color:var(--text-muted, #86868b);letter-spacing:.5px}.amixer-get-btn[data-v-ffaf74a6]{padding:6px 14px;font-size:12px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);border-radius:8px;cursor:pointer;transition:all .2s}.amixer-get-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:0 0 10px var(--glass-border-glow)}.amixer-get-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}.amixer-groups[data-v-ffaf74a6]{display:flex;flex-direction:column;gap:12px}.amixer-group[data-v-ffaf74a6]{background:var(--glass-bg, rgba(255,255,255,.03));border:1px solid var(--glass-border, rgba(255,255,255,.06));border-radius:10px;padding:12px}.amixer-group-title[data-v-ffaf74a6]{font-size:12px;font-weight:600;color:var(--diablo-text, #f5f5f7);margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.04)}.amixer-controls[data-v-ffaf74a6]{display:flex;flex-direction:column;gap:8px}.amixer-row[data-v-ffaf74a6]{display:flex;align-items:center;gap:8px}.amixer-label[data-v-ffaf74a6]{flex:0 0 140px;font-size:12px;color:var(--diablo-text, rgba(255,255,255,.85));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.amixer-slider[data-v-ffaf74a6]{flex:1;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff1a;border-radius:2px;outline:none}.amixer-slider[data-v-ffaf74a6]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--glass-border-glow, #ff6b35);cursor:pointer;box-shadow:0 0 6px #ff6b3566}.amixer-value[data-v-ffaf74a6]{flex:0 0 28px;font-size:12px;font-family:SF Mono,Cascadia Code,monospace;color:var(--text-muted, #86868b);text-align:right}.amixer-select[data-v-ffaf74a6]{flex:0 0 80px;background:#0000004d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:var(--diablo-text, #f5f5f7);padding:4px 8px;font-size:12px;cursor:pointer;outline:none}.amixer-select[data-v-ffaf74a6]:focus{border-color:var(--glass-border-glow, #ff6b35)}.amixer-apply-btn[data-v-ffaf74a6]{flex:0 0 auto;padding:3px 10px;font-size:11px;border-radius:6px;background:#ffffff0f;color:var(--text-muted, #86868b);border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:all .2s;white-space:nowrap}.amixer-apply-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover, rgba(255,255,255,.08));color:var(--diablo-text, #f5f5f7);border-color:var(--glass-border-hover, rgba(255,255,255,.15))}.theme-light .amixer-group[data-v-ffaf74a6]{background:#00000005;border-color:#00000014}.theme-light .amixer-group-title[data-v-ffaf74a6]{color:var(--diablo-text);border-bottom-color:#0000000f}.theme-light .amixer-label[data-v-ffaf74a6]{color:var(--diablo-text)}.theme-light .amixer-slider[data-v-ffaf74a6]{background:#0000001a}.theme-light .amixer-select[data-v-ffaf74a6]{background:#fffc;border-color:#0000001f;color:#1d1d1f}.theme-light .amixer-apply-btn[data-v-ffaf74a6]{background:#0000000a;border-color:#0000001a;color:#6e6e73}.theme-light .amixer-apply-btn[data-v-ffaf74a6]:hover{background:#00000014;color:#1d1d1f;border-color:#0003}.theme-light .amixer-toolbar[data-v-ffaf74a6]{border-bottom-color:#0000000f}
@@ -0,0 +1 @@
1
+ .login-container[data-v-02aa6d08]{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden}.particles[data-v-02aa6d08]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.particle[data-v-02aa6d08]{position:absolute;width:4px;height:4px;background:var(--diablo-primary);border-radius:50%;opacity:.6;animation:particle-float-02aa6d08 10s infinite ease-in-out}@keyframes particle-float-02aa6d08{0%,to{transform:translate(0) scale(1);opacity:.6}50%{transform:translate(100px,-100px) scale(.5);opacity:0}}.login-card[data-v-02aa6d08]{width:100%;max-width:440px;padding:48px 40px;background:var(--glass-bg-card);-webkit-backdrop-filter:blur(var(--glass-blur-heavy));backdrop-filter:blur(var(--glass-blur-heavy));border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow),var(--glass-inner-glow);position:relative;z-index:1;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.login-header[data-v-02aa6d08]{text-align:center;margin-bottom:32px}.logo-container[data-v-02aa6d08]{display:flex;justify-content:center;margin-bottom:20px}.diablo-logo[data-v-02aa6d08]{position:relative;width:80px;height:80px;display:flex;align-items:center;justify-content:center}.logo-core[data-v-02aa6d08]{position:absolute;width:20px;height:20px;background:var(--diablo-primary);border-radius:50%;box-shadow:0 0 30px var(--diablo-primary),0 0 60px #0a84ff80;animation:core-pulse-02aa6d08 2s infinite ease-in-out}.logo-ring[data-v-02aa6d08]{position:absolute;width:50px;height:50px;border:2px solid var(--diablo-accent);border-radius:50%;box-shadow:0 0 20px #ff95004d,inset 0 0 20px #ff95001a;animation:ring-rotate-02aa6d08 8s infinite linear}.logo-particles[data-v-02aa6d08]{position:absolute;width:100%;height:100%}.logo-particle[data-v-02aa6d08]{position:absolute;top:50%;left:50%;width:6px;height:6px;background:var(--diablo-primary);border-radius:50%;opacity:.8;transform-origin:center;animation:particle-orbit-02aa6d08 4s infinite ease-in-out;animation-delay:var(--delay)}@keyframes core-pulse-02aa6d08{0%,to{transform:scale(1);box-shadow:0 0 30px var(--diablo-primary),0 0 60px #0a84ff80}50%{transform:scale(1.2);box-shadow:0 0 40px var(--diablo-primary),0 0 80px #0a84ffcc}}@keyframes ring-rotate-02aa6d08{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes particle-orbit-02aa6d08{0%,to{transform:translate(-50%,-50%) rotate(var(--angle)) translate(30px);opacity:.8}50%{transform:translate(-50%,-50%) rotate(var(--angle)) translate(40px);opacity:.4}}.login-title[data-v-02aa6d08]{margin-bottom:8px;font-size:32px}.subtitle[data-v-02aa6d08]{font-family:var(--diablo-font-family-ui);font-size:12px;color:var(--diablo-text-muted);letter-spacing:4px;text-transform:uppercase}.diablo-gold-line[data-v-02aa6d08]{margin:24px 0;width:100%;height:1px;background:linear-gradient(90deg,transparent,var(--diablo-accent),transparent);opacity:.5}.language-selector[data-v-02aa6d08]{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:24px}.theme-toggle[data-v-02aa6d08]{position:relative;width:48px;height:26px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:13px;cursor:pointer;transition:all .3s ease;box-shadow:var(--glass-inner-glow);flex-shrink:0}.theme-toggle-track[data-v-02aa6d08]{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 5px}.theme-toggle-icon[data-v-02aa6d08]{width:13px;height:13px;color:var(--diablo-text-muted);transition:all .3s ease;flex-shrink:0;opacity:.3}.theme-toggle[data-theme=diablo] .theme-toggle-icon.sun[data-v-02aa6d08]{opacity:.6;color:#ff9500}.theme-toggle[data-theme=light] .theme-toggle-icon.moon[data-v-02aa6d08]{opacity:.6;color:#5856d6}.theme-toggle-thumb[data-v-02aa6d08]{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;transition:all .3s cubic-bezier(.25,.46,.45,.94);box-shadow:0 1px 3px #00000026;z-index:1}.theme-toggle[data-theme=diablo] .theme-toggle-thumb[data-v-02aa6d08]{transform:translate(0);background:#ff9500}.theme-toggle[data-theme=light] .theme-toggle-thumb[data-v-02aa6d08]{transform:translate(22px);background:#5856d6}.theme-toggle[data-v-02aa6d08]:hover{border-color:var(--glass-border-hover)}.login-form[data-v-02aa6d08]{margin-top:32px}.form-group[data-v-02aa6d08]{margin-bottom:20px}.field-hint[data-v-02aa6d08]{font-size:11px;color:var(--diablo-text-muted);margin-top:6px;opacity:.7;padding-left:4px}.input-focused[data-v-02aa6d08]{border-color:var(--diablo-primary)!important;box-shadow:0 0 12px #0a84ff26!important}.login-btn[data-v-02aa6d08]{width:100%;margin-top:24px;font-size:16px;letter-spacing:3px}.loading-text[data-v-02aa6d08]{display:flex;align-items:center;justify-content:center;gap:10px}.form-footer[data-v-02aa6d08]{display:flex;justify-content:center;align-items:center;margin-top:20px;font-size:14px}.remember-me[data-v-02aa6d08]{display:flex;align-items:center;gap:8px;color:var(--diablo-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.remember-me input[data-v-02aa6d08]{cursor:pointer}.login-footer[data-v-02aa6d08]{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:32px;padding-top:24px;border-top:1px solid rgba(255,255,255,.1);font-size:12px;color:var(--diablo-text-muted)}.footer-divider[data-v-02aa6d08]{color:var(--diablo-accent);width:24px;height:24px;display:flex;align-items:center;justify-content:center}.footer-divider [data-v-02aa6d08] svg{width:100%;height:100%;stroke:var(--diablo-accent)}.fire-effect[data-v-02aa6d08]{position:absolute;bottom:0;left:50%;transform:translate(-50%);display:flex;gap:4px;pointer-events:none}.flame[data-v-02aa6d08]{width:3px;height:60px;background:linear-gradient(to top,var(--diablo-fire),transparent);border-radius:50%/60% 60% 40% 40%;animation:flame-dance-02aa6d08 2s infinite ease-in-out;opacity:.6}@keyframes flame-dance-02aa6d08{0%,to{height:40px;opacity:.4}50%{height:80px;opacity:.8}}@media (max-width: 480px){.login-card[data-v-02aa6d08]{padding:32px 24px}.login-title[data-v-02aa6d08]{font-size:24px}.diablo-logo[data-v-02aa6d08]{width:60px;height:60px}.logo-ring[data-v-02aa6d08]{width:40px;height:40px}}.login-scan-btn[data-v-02aa6d08]{position:fixed;top:20px;right:20px;z-index:100;width:40px;height:40px;border-radius:10px;background:var(--glass-bg, rgba(255,255,255,.05));border:1px solid var(--glass-border, rgba(255,255,255,.1));color:var(--diablo-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-scan-btn[data-v-02aa6d08]:hover{background:var(--glass-bg-hover, rgba(255,255,255,.1));border-color:var(--glass-border-hover, rgba(255,255,255,.2));color:var(--diablo-text, #f5f5f7);box-shadow:0 0 12px var(--glass-border-glow, rgba(255,107,53,.3))}.login-scan-btn svg[data-v-02aa6d08]{width:18px;height:18px}.dialog-overlay[data-v-02aa6d08]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog[data-v-02aa6d08]{background:var(--glass-bg-card, rgba(20,20,30,.95));border:1px solid var(--glass-border, rgba(255,255,255,.1));border-radius:16px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 20px 60px #00000080;overflow:hidden}.dialog-header[data-v-02aa6d08]{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--glass-border, rgba(255,255,255,.06))}.dialog-header h3[data-v-02aa6d08]{flex:1;font-size:16px;font-weight:600;color:var(--diablo-text, #f5f5f7);margin:0}.close-btn[data-v-02aa6d08]{width:28px;height:28px;border:none;background:#ffffff0f;border-radius:6px;color:var(--diablo-text-muted);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.close-btn[data-v-02aa6d08]:hover{background:#ff453a33;color:#ff453a}.scan-header-icon[data-v-02aa6d08]{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,var(--diablo-primary),var(--diablo-accent));display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.scan-header-icon.config-icon[data-v-02aa6d08]{background:linear-gradient(135deg,#ff6b35,#ff453a)}.scan-dialog[data-v-02aa6d08]{width:1100px;max-height:85vh}.scan-dialog .dialog-body[data-v-02aa6d08]{max-height:calc(85vh - 70px);overflow-y:auto;padding:20px}.scan-top-bar[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.scan-hint[data-v-02aa6d08]{margin:0;font-size:13px;color:var(--diablo-text-muted)}.scan-action-btn[data-v-02aa6d08]{white-space:nowrap;padding:8px 16px;font-size:12px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);border-radius:8px;cursor:pointer}.scan-error[data-v-02aa6d08]{color:#ff453ae6;font-size:13px;margin-bottom:12px}.scan-main-layout[data-v-02aa6d08]{display:flex;gap:16px}.scan-main-left[data-v-02aa6d08]{flex:1;min-width:0}.scan-console-side[data-v-02aa6d08]{width:280px;flex-shrink:0;display:flex;flex-direction:column}.scan-results-header[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.scan-results-header h4[data-v-02aa6d08]{font-size:13px;color:var(--diablo-text, #f5f5f7);margin:0}.scan-count[data-v-02aa6d08]{color:var(--diablo-accent);font-weight:700}.scan-device-table[data-v-02aa6d08]{font-size:12px}.scan-table-header[data-v-02aa6d08],.scan-table-row[data-v-02aa6d08]{display:flex;align-items:center;gap:6px;padding:8px 10px}.scan-table-header[data-v-02aa6d08]{color:var(--diablo-text-muted);font-weight:600;border-bottom:1px solid rgba(255,255,255,.06);font-size:11px}.scan-table-row[data-v-02aa6d08]{border-bottom:1px solid rgba(255,255,255,.03);transition:background .2s;color:var(--diablo-text, rgba(255,255,255,.85))}.scan-table-row[data-v-02aa6d08]:hover{background:#ffffff0a}.col-idx[data-v-02aa6d08]{flex:0 0 24px;text-align:center}.col-ip[data-v-02aa6d08]{flex:0 0 110px}.col-seed[data-v-02aa6d08]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:11px}.col-media[data-v-02aa6d08]{flex:0 0 100px}.col-port[data-v-02aa6d08],.col-flag[data-v-02aa6d08]{flex:0 0 50px;text-align:center}.col-dns[data-v-02aa6d08]{flex:0 0 85px}.col-action[data-v-02aa6d08]{flex:0 0 32px;text-align:center}.tag[data-v-02aa6d08]{font-size:10px;padding:1px 6px;border-radius:4px;font-weight:600}.tag-on[data-v-02aa6d08]{background:#30d15826;color:#30d158e6}.tag-off[data-v-02aa6d08]{background:#ffffff0d;color:#ffffff4d}.config-btn[data-v-02aa6d08]{width:24px;height:24px;border:none;background:#ffffff0f;border-radius:5px;color:var(--diablo-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.config-btn[data-v-02aa6d08]:hover{background:#ff6b3526;color:var(--diablo-accent)}.scan-empty[data-v-02aa6d08]{text-align:center;color:var(--diablo-text-muted);padding:32px 0;display:flex;flex-direction:column;align-items:center;gap:8px}.scan-empty p[data-v-02aa6d08]{margin:0;font-size:13px}.console-header[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.console-header h4[data-v-02aa6d08]{font-size:13px;color:var(--diablo-text, #f5f5f7);margin:0;font-weight:600}.console-clear-btn[data-v-02aa6d08]{background:none;border:none;color:var(--diablo-text-muted);font-size:11px;cursor:pointer;padding:2px 6px;border-radius:4px}.console-clear-btn[data-v-02aa6d08]:hover{color:var(--diablo-text, #f5f5f7);background:#ffffff0f}.console-body[data-v-02aa6d08]{background:#00000059;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px 10px;max-height:50vh;overflow-y:auto;font-family:SF Mono,Cascadia Code,monospace;font-size:11px;line-height:1.6;flex:1}.console-body[data-v-02aa6d08]::-webkit-scrollbar{width:4px}.console-body[data-v-02aa6d08]::-webkit-scrollbar-track{background:transparent}.console-body[data-v-02aa6d08]::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.console-empty[data-v-02aa6d08]{color:#fff3;font-style:italic}.console-line[data-v-02aa6d08]{white-space:pre-wrap;word-break:break-all}.log-send[data-v-02aa6d08]{color:#ff9f0acc}.log-recv[data-v-02aa6d08]{color:#30d158cc}.log-info[data-v-02aa6d08]{color:#fff6}.log-error[data-v-02aa6d08]{color:#ff453acc}.scan-config-dialog[data-v-02aa6d08]{width:500px;max-height:85vh}.scan-config-dialog .dialog-body[data-v-02aa6d08]{max-height:calc(85vh - 130px);overflow-y:auto;padding:20px}.config-seed-display[data-v-02aa6d08]{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px 12px;background:#0003;border-radius:8px;border:1px solid rgba(255,255,255,.06)}.config-seed-label[data-v-02aa6d08]{font-size:12px;color:var(--diablo-text-muted)}.config-seed-value[data-v-02aa6d08]{font-size:11px;color:var(--diablo-text, #f5f5f7)}.form-group[data-v-02aa6d08]{margin-bottom:4px}.form-group label[data-v-02aa6d08]{display:block;font-size:12px;color:var(--diablo-text-muted);margin-bottom:4px}.form-input[data-v-02aa6d08]{width:100%;padding:8px 12px;background:#0003;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:var(--diablo-text, #f5f5f7);font-size:13px;outline:none;transition:border-color .2s;box-sizing:border-box}.form-input[data-v-02aa6d08]:focus{border-color:var(--glass-border-glow, #ff6b35)}.toggle-label[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.config-ip-fields[data-v-02aa6d08]{display:flex;flex-direction:column;gap:8px;padding:12px;background:#0000001a;border-radius:8px;border:1px solid rgba(255,255,255,.04);margin-bottom:8px}.config-row-2col[data-v-02aa6d08]{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.console-section[data-v-02aa6d08]{margin-top:16px}.dialog-footer[data-v-02aa6d08]{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid var(--glass-border, rgba(255,255,255,.06))}.cancel-btn[data-v-02aa6d08],.confirm-btn[data-v-02aa6d08]{padding:8px 20px;border-radius:8px;font-size:13px;cursor:pointer;transition:all .2s}.cancel-btn[data-v-02aa6d08]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.confirm-btn[data-v-02aa6d08]{background:var(--glass-bg-hover);border:1px solid var(--glass-border-hover);color:var(--diablo-text);box-shadow:var(--glass-inner-glow)}.cancel-btn[data-v-02aa6d08]:hover{background:var(--glass-bg-hover)}.confirm-btn[data-v-02aa6d08]:hover{background:var(--glass-bg-active)}.mono[data-v-02aa6d08]{font-family:SF Mono,Cascadia Code,Consolas,monospace}.theme-light .login-card{background:var(--glass-bg-card)!important;border-color:var(--glass-border)!important;-webkit-backdrop-filter:blur(var(--glass-blur-heavy))!important;backdrop-filter:blur(var(--glass-blur-heavy))!important}.theme-light .toggle-switch{background:#0003!important;border-color:#00000026!important}.theme-light .toggle-switch.on{background:#e68a00!important;border-color:transparent!important}.login-container .toggle-switch{width:36px;height:20px;border-radius:10px;background:#ffffff40;border:1px solid rgba(255,255,255,.2);position:relative;transition:background .2s;flex-shrink:0;display:inline-block}.login-container .toggle-switch.on{background:#0a84ff;border-color:transparent}.login-container .toggle-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0000004d}.login-container .toggle-switch.on .toggle-knob{transform:translate(16px)}
@@ -0,0 +1 @@
1
+ .log-page[data-v-4f8703bd]{max-width:1400px;margin:0 auto;width:100%;display:flex;flex-direction:column}.page-header[data-v-4f8703bd]{margin-bottom:16px;flex-shrink:0}.page-title[data-v-4f8703bd]{font-family:var(--diablo-font-family);font-size:22px;font-weight:600;color:var(--diablo-text);letter-spacing:-.3px}.glass-section[data-v-4f8703bd]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:12px;padding:16px 20px;margin-bottom:16px;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));flex-shrink:0}.log-table-section[data-v-4f8703bd]{display:flex;flex-direction:column;margin-bottom:0;padding:0;overflow:hidden}.table-scroll-wrap[data-v-4f8703bd]{max-height:calc(100vh - 280px);min-height:300px;overflow:auto;padding:0 20px}.toolbar-row[data-v-4f8703bd]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.toolbar-left[data-v-4f8703bd]{display:flex;align-items:center;gap:12px}.toolbar-right[data-v-4f8703bd]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.select-input[data-v-4f8703bd]{min-width:200px}.cache-size[data-v-4f8703bd]{font-size:13px;color:var(--diablo-text-muted);white-space:nowrap}.diablo-btn[data-v-4f8703bd]{padding:8px 18px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--diablo-text);transition:all .2s}.diablo-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.primary-btn[data-v-4f8703bd]{background:var(--diablo-primary);color:#fff;border-color:var(--diablo-primary)}.primary-btn[data-v-4f8703bd]:hover{filter:brightness(1.15)}.toolbar-btn[data-v-4f8703bd]{padding:6px 14px;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--glass-border);background:transparent;color:var(--diablo-text-muted);transition:all .2s}.toolbar-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover)}.danger-btn[data-v-4f8703bd]:hover{background:#ff3b301a;border-color:#ff3b304d;color:#ff3b30}.table-wrap[data-v-4f8703bd]{overflow-x:auto}.data-table[data-v-4f8703bd]{width:100%;border-collapse:collapse;font-size:13px}.data-table thead[data-v-4f8703bd]{position:sticky;top:0;background:var(--glass-bg-card);z-index:1}.data-table th[data-v-4f8703bd]{text-align:left;padding:12px;font-weight:600;color:var(--diablo-text-muted);border-bottom:1px solid var(--glass-border);white-space:nowrap;background:var(--glass-bg-card)}.data-table td[data-v-4f8703bd]{padding:10px 12px;border-bottom:1px solid var(--glass-border);color:var(--diablo-text)}.data-table tbody tr[data-v-4f8703bd]:hover{background:var(--glass-bg-hover)}.td-time[data-v-4f8703bd]{white-space:nowrap;font-size:12px;color:var(--diablo-text-muted)}.td-num[data-v-4f8703bd]{text-align:right;font-variant-numeric:tabular-nums}.td-filename[data-v-4f8703bd]{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.td-action[data-v-4f8703bd]{text-align:center}.act-btn[data-v-4f8703bd]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;background:transparent;border:1px solid var(--glass-border);color:var(--diablo-text-muted);transition:all .2s}.act-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover);color:var(--diablo-text)}.act-btn-play[data-v-4f8703bd]:hover{background:#0a84ff1a;border-color:#0a84ff4d;color:var(--diablo-primary)}.empty-state[data-v-4f8703bd]{text-align:center;padding:40px;color:var(--diablo-text-muted);font-size:14px}.pagination-row[data-v-4f8703bd]{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px 20px;border-top:1px solid var(--glass-border);flex-shrink:0;background:var(--glass-bg-card);border-radius:0 0 12px 12px}.page-btn[data-v-4f8703bd]{padding:6px 16px;border-radius:6px;font-size:13px;cursor:pointer;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text);transition:all .2s}.page-btn[data-v-4f8703bd]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.page-btn[data-v-4f8703bd]:disabled{opacity:.4;cursor:not-allowed}.page-info[data-v-4f8703bd]{font-size:13px;color:var(--diablo-text-muted)}.modal-overlay[data-v-4f8703bd]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-box[data-v-4f8703bd]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;padding:24px;min-width:300px;max-width:500px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 8px 32px #0006}.audio-modal-box[data-v-4f8703bd]{width:420px}.modal-title[data-v-4f8703bd]{font-size:15px;font-weight:600;color:var(--diablo-text);margin-bottom:16px}.modal-body[data-v-4f8703bd]{font-size:14px;color:var(--diablo-text-muted);line-height:1.5;margin-bottom:20px}.modal-actions[data-v-4f8703bd]{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.modal-btn[data-v-4f8703bd]{padding:8px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text-muted)}.modal-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover);color:var(--diablo-text)}.audio-player-wrap[data-v-4f8703bd]{display:flex;justify-content:center;padding:12px 0}.audio-player[data-v-4f8703bd]{width:100%;height:40px}.form-input[data-v-4f8703bd]{padding:8px 12px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;color:var(--diablo-text);font-size:13px;transition:all .2s}.form-input[data-v-4f8703bd]:focus{outline:none;border-color:var(--glass-border-glow);box-shadow:0 0 8px var(--glass-border-glow)}@media (max-width: 768px){.toolbar-row[data-v-4f8703bd]{flex-direction:column;align-items:stretch}.toolbar-left[data-v-4f8703bd],.toolbar-right[data-v-4f8703bd]{flex-wrap:wrap}.select-input[data-v-4f8703bd]{min-width:0;flex:1}.audio-modal-box[data-v-4f8703bd]{width:90%}.td-filename[data-v-4f8703bd]{max-width:120px}}
@@ -0,0 +1 @@
1
+ @keyframes glassEnter-ca949926{0%{opacity:0;transform:translateY(20px) scale(.98);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}to{opacity:1;transform:translateY(0) scale(1);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}}@keyframes glassGlowPulse-ca949926{0%,to{box-shadow:0 0 0 0 var(--glass-border-glow)}50%{box-shadow:0 0 16px var(--glass-border-glow)}}@keyframes spinGlow-ca949926{to{transform:rotate(360deg)}}@keyframes slideIn-ca949926{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn-ca949926{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp-ca949926{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pulse-ca949926{0%,to{opacity:1}50%{opacity:.6}}.group-manage[data-v-ca949926]{padding:20px;min-height:100vh;background:transparent;animation:glassEnter-ca949926 .6s cubic-bezier(.25,.46,.45,.94)}[data-v-ca949926] .message-toast{position:fixed;top:20px;right:20px;padding:12px 20px;border-radius:12px;color:#fff;font-weight:500;z-index:9999;animation:slideIn-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));border:1px solid var(--glass-border)}[data-v-ca949926] .message-toast.success{background:#4caf50d9}[data-v-ca949926] .message-toast.error{background:#0a84ffd9}[data-v-ca949926] .message-toast.info{background:#2196f3d9}.page-header[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:nowrap}.page-title[data-v-ca949926]{font-size:24px;color:var(--diablo-text);margin:0;flex-shrink:0;text-shadow:0 0 20px var(--glass-border-glow),0 0 40px rgba(10,132,255,.15)}.header-actions[data-v-ca949926]{display:flex;gap:8px;align-items:center;flex-shrink:0}.form-input[data-v-ca949926]{padding:8px 12px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:13px;outline:none;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.form-input[data-v-ca949926]:focus{border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow);background:var(--glass-bg-active)}.form-input[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.input-name[data-v-ca949926]{width:200px}.input-name[data-v-ca949926]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow);background:var(--glass-bg-active)}.add-btn[data-v-ca949926],.group-play-btn[data-v-ca949926],.play-list-btn[data-v-ca949926]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.add-btn[data-v-ca949926]:hover:not(:disabled),.group-play-btn[data-v-ca949926]:hover:not(:disabled),.play-list-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.add-btn svg[data-v-ca949926],.group-play-btn svg[data-v-ca949926],.play-list-btn svg[data-v-ca949926]{width:16px;height:16px}button[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.loading-container[data-v-ca949926]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.loading-spinner[data-v-ca949926]{width:40px;height:40px;border:3px solid var(--glass-border);border-top-color:var(--diablo-primary);border-radius:50%;animation:spinGlow-ca949926 .8s linear infinite;box-shadow:0 0 12px var(--glass-border-glow)}.empty-state[data-v-ca949926]{text-align:center;padding:60px 20px;color:var(--diablo-text-muted)}.group-list-container[data-v-ca949926]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;overflow:auto;max-height:calc(100vh - 160px);backdrop-filter:blur(var(--glass-blur)) saturate(1.2);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.2);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.list-header[data-v-ca949926]{display:grid;grid-template-columns:60px 1fr 100px auto;background:var(--glass-bg);border-bottom:1px solid var(--glass-border);padding:12px 16px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.header-cell[data-v-ca949926]{font-weight:600;color:var(--diablo-text);font-size:13px}.group-item[data-v-ca949926]{display:grid;grid-template-columns:60px 1fr 100px auto;padding:12px 16px;border-bottom:1px solid var(--glass-border);background:var(--glass-bg);border-radius:12px;margin:4px 8px;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.group-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.cell[data-v-ca949926]{display:flex;align-items:center;color:var(--diablo-text);font-size:13px}.cell-name[data-v-ca949926]{font-weight:500}.cell-device-count[data-v-ca949926]{justify-content:center}.cell-actions[data-v-ca949926]{gap:8px;display:flex;flex-wrap:wrap}.action-btn[data-v-ca949926]{padding:6px 12px;border:1px solid var(--glass-border);border-radius:8px;background:transparent;color:var(--diablo-text);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.action-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);color:#fff;transform:translateY(-1px);box-shadow:0 0 12px var(--glass-border-glow)}.action-btn[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.btn-delete[data-v-ca949926]:hover:not(:disabled){background:#0a84ff4d;border-color:#0a84ff80;box-shadow:0 0 12px #0a84ff4d}.view-mode-bar[data-v-ca949926]{display:flex;justify-content:flex-end;padding:12px 16px;border-bottom:1px solid var(--glass-border)}.view-mode-toggle[data-v-ca949926]{display:flex;border:1px solid var(--glass-border);border-radius:8px;overflow:hidden;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.view-mode-btn[data-v-ca949926]{display:flex;align-items:center;justify-content:center;padding:6px 10px;background:transparent;border:none;color:var(--diablo-text-muted);cursor:pointer;transition:all .2s ease}.view-mode-btn.active[data-v-ca949926]{background:var(--glass-bg-hover);color:var(--diablo-primary)}.view-mode-btn[data-v-ca949926]:hover:not(.active){color:var(--diablo-text);background:var(--glass-bg)}.group-card-grid[data-v-ca949926]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;padding:16px}.group-card[data-v-ca949926]{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:14px;padding:16px;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow);display:flex;flex-direction:column;gap:12px}.group-card[data-v-ca949926]:hover{border-color:var(--glass-border-hover);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.group-card-header[data-v-ca949926]{display:flex;align-items:center;justify-content:space-between}.group-card-index[data-v-ca949926]{font-size:12px;color:var(--diablo-text-muted);font-weight:600}.group-card-count[data-v-ca949926]{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--diablo-primary);padding:2px 8px;background:#0a84ff1a;border-radius:10px;border:1px solid rgba(10,132,255,.2)}.group-card-name[data-v-ca949926]{font-size:15px;font-weight:600;color:var(--diablo-text);word-break:break-all;line-height:1.4}.group-card-actions[data-v-ca949926]{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}.card-action-btn[data-v-ca949926]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;color:var(--diablo-text-muted);cursor:pointer;transition:all .2s ease}.card-action-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);transform:translateY(-1px)}.card-action-btn[data-v-ca949926]:disabled{opacity:.4;cursor:not-allowed}.card-action-btn.card-action-play[data-v-ca949926]{color:#27ae60}.card-action-btn.card-action-play[data-v-ca949926]:hover:not(:disabled){background:#27ae6026;border-color:#27ae60;color:#27ae60}.card-action-btn.card-action-delete[data-v-ca949926]{color:#e74c3c}.card-action-btn.card-action-delete[data-v-ca949926]:hover:not(:disabled){background:#e74c3c26;border-color:#e74c3c}.modal-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-ca949926]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;width:90%;max-width:800px;max-height:90vh;overflow-y:auto;animation:fadeIn-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow)}.dialog-header[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-bg);border-bottom:1px solid var(--glass-border);border-radius:16px 16px 0 0;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.dialog-header h3[data-v-ca949926]{margin:0;font-size:18px;font-weight:600;color:var(--diablo-text)}.close-btn[data-v-ca949926]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text);cursor:pointer;padding:4px;border-radius:8px;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.close-btn[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 12px var(--glass-border-glow),var(--glass-inner-glow);color:var(--diablo-primary)}.modal-body[data-v-ca949926]{padding:20px;background:transparent}.device-search-container[data-v-ca949926]{margin-bottom:16px}.device-search-input[data-v-ca949926]{width:100%}.search-stats[data-v-ca949926]{margin-top:8px;font-size:12px;color:var(--diablo-text-muted)}.search-stats span[data-v-ca949926]{font-weight:500;color:var(--diablo-accent)}.modal-footer[data-v-ca949926]{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid var(--glass-border);background:var(--glass-bg);border-radius:0 0 16px 16px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.modal-footer .btn[data-v-ca949926]{padding:8px 20px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.modal-footer .btn[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.modal-footer .btn-primary[data-v-ca949926],.modal-footer .btn-save[data-v-ca949926]{background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border)}.modal-footer .btn-primary[data-v-ca949926]:hover:not(:disabled),.modal-footer .btn-save[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.modal-footer .btn-cancel[data-v-ca949926]{background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border)}.modal-footer .btn-cancel[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.device-selector[data-v-ca949926]{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-height:500px}.device-list[data-v-ca949926],.selected-devices[data-v-ca949926]{border:1px solid var(--glass-border);border-radius:12px;padding:16px;background:var(--glass-bg);display:flex;flex-direction:column;max-height:500px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.device-list h4[data-v-ca949926],.selected-devices h4[data-v-ca949926]{margin:0 0 12px;color:var(--diablo-text);font-size:14px;flex-shrink:0}.device-list-content[data-v-ca949926],.selected-devices-content[data-v-ca949926]{flex:1;overflow-y:auto;overflow-x:hidden;padding-right:8px;min-height:100px;max-height:400px}.device-list-content[data-v-ca949926]::-webkit-scrollbar,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar{width:8px}.device-list-content[data-v-ca949926]::-webkit-scrollbar-track,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar-track{background:transparent;border-radius:4px}.device-list-content[data-v-ca949926]::-webkit-scrollbar-thumb,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:4px}.device-list-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover{background:var(--glass-border-hover)}.device-item[data-v-ca949926]{padding:8px;margin-bottom:6px;border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:13px;border:1px solid var(--glass-border);transition:all .4s cubic-bezier(.25,.46,.45,.94)}.device-item label[data-v-ca949926]{cursor:pointer;display:flex;align-items:center;gap:8px}.device-item.selected[data-v-ca949926]{background:var(--glass-bg-hover);display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-color:var(--glass-border-hover)}.remove-btn[data-v-ca949926]{background:#0a84ff33;border:none;color:var(--diablo-text);width:20px;height:20px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.remove-btn[data-v-ca949926]:hover{background:#0a84ff66;color:#fff;box-shadow:0 0 8px #0a84ff4d}.no-search-result[data-v-ca949926],.empty-selected[data-v-ca949926]{padding:40px 20px;text-align:center;color:var(--diablo-text-muted);font-size:14px}.device-item label[data-v-ca949926]{cursor:pointer;padding:8px 12px;border-radius:8px;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;gap:8px;margin:-8px -12px;width:calc(100% + 24px)}.device-item label[data-v-ca949926]:hover{background:var(--glass-tint-hover)}.device-item input[type=checkbox][data-v-ca949926]{cursor:pointer;margin:0;width:16px;height:16px}.device-list-content[data-v-ca949926]:after,.selected-devices-content[data-v-ca949926]:after{content:"";position:sticky;bottom:0;left:0;right:0;height:30px;background:linear-gradient(transparent,var(--glass-bg));pointer-events:none;display:none}.device-list-content[style*="overflow-y: scroll"][data-v-ca949926]:after,.device-list-content[style*="overflow-y: auto"][data-v-ca949926]:after,.selected-devices-content[style*="overflow-y: scroll"][data-v-ca949926]:after,.selected-devices-content[style*="overflow-y: auto"][data-v-ca949926]:after{display:block}.form-group[data-v-ca949926]{margin-bottom:16px}.form-group label[data-v-ca949926]{display:block;margin-bottom:8px;color:var(--diablo-text);font-size:14px;font-weight:500}.form-group-inline[data-v-ca949926]{display:flex;align-items:center;gap:12px}.form-group-inline label[data-v-ca949926]{display:inline;margin-bottom:0;flex-shrink:0;white-space:nowrap}.video-url-input[data-v-ca949926]{flex:1;min-width:400px}.input-field[data-v-ca949926]{width:100%;padding:10px 12px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.input-field[data-v-ca949926]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow);background:var(--glass-bg-active)}.video-container[data-v-ca949926]{display:flex;justify-content:center;background:var(--glass-bg);border-radius:12px;padding:20px;border:1px solid var(--glass-border)}.video-container video[data-v-ca949926]{max-width:100%;border-radius:12px}.no-video[data-v-ca949926]{text-align:center;padding:40px;color:var(--diablo-text-muted)}.drawer-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:1000}.drawer-content[data-v-ca949926]{position:absolute;bottom:0;left:0;right:0;background:var(--glass-bg-card);border:1px solid var(--glass-border);border-top-left-radius:16px;border-top-right-radius:16px;max-height:50vh;overflow-y:auto;animation:slideUp-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow)}.drawer-title[data-v-ca949926]{padding:16px 20px;font-size:18px;font-weight:600;color:var(--diablo-text);border-bottom:1px solid var(--glass-border);margin:0;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.drawer-body[data-v-ca949926]{padding:20px}.drawer-footer[data-v-ca949926]{padding:16px 20px;border-top:1px solid var(--glass-border);text-align:right;background:var(--glass-bg)}.play-items[data-v-ca949926]{max-height:300px;overflow-y:auto}.play-item[data-v-ca949926]{padding:12px;border:1px solid var(--glass-border);border-radius:12px;margin-bottom:8px;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.play-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.play-item p[data-v-ca949926]{margin:4px 0;color:var(--diablo-text);font-size:13px}.btn-stop[data-v-ca949926],.btn-close[data-v-ca949926]{padding:8px 16px;border:1px solid var(--glass-border);border-radius:10px;cursor:pointer;font-size:14px;background:var(--glass-bg);color:var(--diablo-text);margin-top:8px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.btn-stop[data-v-ca949926]:hover,.btn-close[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.modal-large-content[data-v-ca949926]{max-width:1000px}.modal-play-content[data-v-ca949926]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px;max-height:450px}.file-search-container[data-v-ca949926]{margin-bottom:16px}.file-search-input[data-v-ca949926]{width:100%}.file-selector[data-v-ca949926],.selected-files-panel[data-v-ca949926]{border:1px solid var(--glass-border);border-radius:12px;padding:16px;background:var(--glass-bg);display:flex;flex-direction:column;max-height:450px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.file-selector h4[data-v-ca949926],.selected-files-panel h4[data-v-ca949926]{margin:0 0 12px;color:var(--diablo-text);font-size:14px;flex-shrink:0}.file-list-content[data-v-ca949926],.selected-files-content[data-v-ca949926]{flex:1;overflow-y:auto;overflow-x:hidden;padding-right:8px;min-height:100px;max-height:380px}.file-item[data-v-ca949926]{padding:10px;margin-bottom:8px;border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.file-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);transform:translate(4px);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow)}.file-item.selected[data-v-ca949926]{border-color:var(--glass-border-hover);background:var(--glass-tint);box-shadow:0 0 12px var(--glass-border-glow),var(--glass-inner-glow)}.file-info[data-v-ca949926]{display:flex;flex-direction:column;gap:4px}.file-name[data-v-ca949926]{font-size:13px;font-weight:500;word-break:break-all}.file-meta[data-v-ca949926]{display:flex;gap:12px;font-size:12px;color:var(--diablo-text-muted)}.selected-file-item[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;margin-bottom:8px;border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);cursor:move;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.selected-file-item[data-v-ca949926]:hover{border-color:var(--glass-border-hover);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow),0 0 12px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-1px)}.selected-file-item.dragging[data-v-ca949926]{opacity:.5;border-style:dashed;background:var(--glass-tint)}.selected-file-info[data-v-ca949926]{display:flex;align-items:center;gap:8px;flex:1}.file-number[data-v-ca949926]{font-size:12px;font-weight:600;color:var(--diablo-primary);min-width:20px}.selected-file-item .file-name[data-v-ca949926]{font-size:13px;word-break:break-all}.file-actions[data-v-ca949926]{display:flex;gap:4px}.file-action-btn[data-v-ca949926]{width:24px;height:24px;border:1px solid var(--glass-border);border-radius:6px;background:transparent;color:var(--diablo-text);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center}.file-action-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow);color:#fff}.file-action-btn[data-v-ca949926]:disabled{opacity:.3;cursor:not-allowed}.file-action-btn.btn-remove[data-v-ca949926]:hover:not(:disabled){background:#0a84ff4d;border-color:#0a84ff80;box-shadow:0 0 8px #0a84ff4d}.empty-selected-files[data-v-ca949926]{text-align:center;padding:40px 20px;color:var(--diablo-text-muted)}.empty-selected-files p[data-v-ca949926]{margin:4px 0;font-size:13px}.empty-selected-files .hint[data-v-ca949926]{font-size:12px;color:var(--diablo-text-muted);opacity:.7}.play-settings[data-v-ca949926]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:16px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.setting-item[data-v-ca949926]{display:flex;flex-direction:column;gap:4px}.setting-item label[data-v-ca949926]{font-size:12px;color:var(--diablo-text);font-weight:500;white-space:nowrap}.setting-select[data-v-ca949926],.setting-input[data-v-ca949926]{padding:6px 8px;background:var(--glass-bg);font-size:12px;border:1px solid var(--glass-border);border-radius:8px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.setting-select option[data-v-ca949926]{background:var(--glass-bg-card);color:var(--diablo-text)}.file-list-content[data-v-ca949926]::-webkit-scrollbar,.selected-files-content[data-v-ca949926]::-webkit-scrollbar{width:8px}.file-list-content[data-v-ca949926]::-webkit-scrollbar-track,.selected-files-content[data-v-ca949926]::-webkit-scrollbar-track{background:transparent;border-radius:4px}.file-list-content[data-v-ca949926]::-webkit-scrollbar-thumb,.selected-files-content[data-v-ca949926]::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:4px}.file-list-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover,.selected-files-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover{background:var(--glass-border-hover)}.group-select-list[data-v-ca949926]{max-height:400px;overflow-y:auto}.group-select-item[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;margin-bottom:8px;border-radius:12px;background:var(--glass-bg);color:var(--diablo-text);cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.group-select-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);transform:translate(4px);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow)}.group-select-info[data-v-ca949926]{display:flex;align-items:center;gap:8px}.group-select-name[data-v-ca949926]{font-size:14px;font-weight:500}.group-select-count[data-v-ca949926]{font-size:12px;color:var(--diablo-text-muted)}.group-select-arrow[data-v-ca949926]{font-size:18px;color:var(--diablo-primary);font-weight:700}.duration-display[data-v-ca949926]{display:flex;align-items:baseline;gap:2px}.duration-value[data-v-ca949926]{font-size:16px;font-weight:600;color:var(--diablo-primary);min-width:40px}.duration-unit[data-v-ca949926]{font-size:11px;color:var(--diablo-text-muted)}.duration-calc-info[data-v-ca949926]{margin-top:2px}.duration-calc-info small[data-v-ca949926]{font-size:10px;color:var(--diablo-text-muted);line-height:1.2}.number-input-group[data-v-ca949926]{display:flex;align-items:center;gap:2px}.number-btn[data-v-ca949926]{width:28px;height:28px;border:1px solid var(--glass-border);border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;font-weight:600;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center;flex-shrink:0;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.number-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);color:#fff;box-shadow:0 0 8px var(--glass-border-glow)}.number-btn[data-v-ca949926]:disabled{opacity:.3;cursor:not-allowed}.number-btn.btn-minus[data-v-ca949926]{color:var(--diablo-primary)}.number-btn.btn-plus[data-v-ca949926]{color:var(--diablo-accent)}.number-btn.btn-minus[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);box-shadow:0 0 8px var(--glass-border-glow)}.number-btn.btn-plus[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);box-shadow:0 0 8px var(--glass-border-glow)}.setting-number[data-v-ca949926]{width:50px;text-align:center;padding:6px;font-size:12px;font-weight:600;flex-shrink:0}.setting-hint[data-v-ca949926]{font-size:10px;color:var(--diablo-text-muted);margin-top:2px;line-height:1.2}.interval-input-group[data-v-ca949926]{display:flex;flex-direction:column;gap:8px}.interval-presets[data-v-ca949926]{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.toggle-quick-select-btn[data-v-ca949926]{padding:4px 8px;border:1px solid var(--glass-border);border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);min-width:40px;flex-shrink:0;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.toggle-quick-select-btn[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow);color:#fff}.interval-preset-btn[data-v-ca949926]{padding:4px 8px;border:1px solid var(--glass-border);border-radius:6px;background:var(--glass-bg);color:var(--diablo-text);font-size:11px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);flex-shrink:0}.interval-preset-btn[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow);color:#fff}.interval-preset-btn.active[data-v-ca949926]{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 12px var(--glass-border-glow),var(--glass-inner-glow);color:#fff;font-weight:600}.duration-bracket[data-v-ca949926]{font-size:10px;color:var(--diablo-text-muted);margin-left:4px}.stop-play-loading-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-ca949926 .3s ease}.stop-play-loading-content[data-v-ca949926]{text-align:center;color:#fff;background:var(--glass-bg);padding:40px;border-radius:16px;border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-heavy));-webkit-backdrop-filter:blur(var(--glass-blur-heavy));box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow)}.loading-spinner[data-v-ca949926]{width:60px;height:60px;border:4px solid var(--glass-border);border-top-color:var(--diablo-primary);border-radius:50%;margin:0 auto 20px;animation:spinGlow-ca949926 1s linear infinite;box-shadow:0 0 16px var(--glass-border-glow),var(--glass-inner-glow)}.loading-spinner-delayed[data-v-ca949926]{width:40px;height:40px;border:3px solid var(--glass-border);border-top-color:#3498db;border-radius:50%;margin:-45px auto 25px;animation:spinGlow-ca949926 .8s linear infinite;box-shadow:0 0 12px #3498db4d}.loading-text[data-v-ca949926]{font-size:16px;color:var(--diablo-text);animation:pulse-ca949926 1.5s ease-in-out infinite}.confirm-dialog-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9998;animation:fadeIn-ca949926 .2s ease}.confirm-dialog-content[data-v-ca949926]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;min-width:400px;max-width:500px;box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow);animation:slideIn-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3)}.confirm-dialog-title[data-v-ca949926]{margin:0;padding:20px 20px 10px;font-size:18px;font-weight:600;color:var(--diablo-text);border-bottom:1px solid var(--glass-border)}.confirm-dialog-body[data-v-ca949926]{padding:20px}.confirm-dialog-body p[data-v-ca949926]{margin:0;font-size:14px;color:var(--diablo-text-muted);line-height:1.6}.confirm-dialog-footer[data-v-ca949926]{display:flex;justify-content:flex-end;gap:12px;padding:15px 20px 20px;border-top:1px solid var(--glass-border)}.confirm-dialog-footer .btn-cancel[data-v-ca949926]{padding:8px 20px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.confirm-dialog-footer .btn-cancel[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.confirm-dialog-footer .btn-confirm[data-v-ca949926]{padding:8px 20px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.confirm-dialog-footer .btn-confirm[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}@media (max-width: 768px){.group-manage[data-v-ca949926]{padding:12px}.page-header[data-v-ca949926]{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:16px}.page-title[data-v-ca949926]{font-size:17px}.header-actions[data-v-ca949926]{flex-wrap:wrap;width:100%;gap:6px}.input-name[data-v-ca949926]{width:100%;min-width:unset;font-size:16px}.add-btn[data-v-ca949926],.group-play-btn[data-v-ca949926],.play-list-btn[data-v-ca949926]{flex:1;justify-content:center;min-width:0;padding:8px 10px;font-size:12px}.add-btn svg[data-v-ca949926],.group-play-btn svg[data-v-ca949926],.play-list-btn svg[data-v-ca949926]{width:14px;height:14px}.group-grid[data-v-ca949926]{grid-template-columns:1fr}.group-card-grid[data-v-ca949926]{grid-template-columns:1fr;padding:12px;gap:12px}.group-card[data-v-ca949926]{padding:14px}.group-card-header[data-v-ca949926]{flex-direction:column;align-items:flex-start;gap:8px}.group-card-actions[data-v-ca949926]{width:100%;justify-content:flex-end}.card-action-btn[data-v-ca949926]{width:36px;height:36px}.device-selector[data-v-ca949926]{grid-template-columns:1fr;gap:12px;max-height:none}.device-list[data-v-ca949926],.selected-devices[data-v-ca949926]{max-height:200px}.device-list-content[data-v-ca949926],.selected-devices-content[data-v-ca949926]{max-height:160px;min-height:60px}.form-group-inline[data-v-ca949926]{flex-direction:column;align-items:stretch;gap:8px}.video-url-input[data-v-ca949926]{min-width:unset;width:100%}.modal-overlay[data-v-ca949926]{align-items:flex-end}.modal-large-content[data-v-ca949926]{max-width:100%;width:100%;max-height:95vh;border-radius:16px 16px 0 0}.modal-play-content[data-v-ca949926]{grid-template-columns:1fr;max-height:none;gap:12px}.file-selector[data-v-ca949926],.selected-files-panel[data-v-ca949926]{max-height:220px;padding:12px}.file-selector h4[data-v-ca949926],.selected-files-panel h4[data-v-ca949926]{font-size:13px;margin-bottom:8px}.file-list-content[data-v-ca949926],.selected-files-content[data-v-ca949926]{max-height:160px;min-height:60px}.file-item[data-v-ca949926]{padding:10px 12px;margin-bottom:6px}.file-name[data-v-ca949926]{font-size:14px}.file-meta[data-v-ca949926]{font-size:11px;gap:8px}.selected-file-item[data-v-ca949926]{padding:8px 10px;margin-bottom:6px}.file-action-btn[data-v-ca949926]{width:28px;height:28px;font-size:14px}.play-settings[data-v-ca949926]{grid-template-columns:1fr 1fr;gap:12px;padding:12px}.setting-item[data-v-ca949926]{gap:6px}.setting-item label[data-v-ca949926]{font-size:12px}.number-input-group[data-v-ca949926]{gap:3px}.number-btn[data-v-ca949926]{width:32px;height:32px;font-size:16px}.setting-number[data-v-ca949926]{width:44px;padding:6px 4px;font-size:13px}.toggle-quick-select-btn[data-v-ca949926]{padding:6px 10px;font-size:12px;color:#0a84ff;background:#0a84ff1a;border-color:#0a84ff4d}.toggle-quick-select-btn[data-v-ca949926]:hover{color:#0a84ff;background:#0a84ff33}.interval-presets[data-v-ca949926]{gap:6px}.interval-preset-btn[data-v-ca949926]{padding:6px 10px;font-size:12px;color:var(--diablo-text)}.interval-preset-btn.active[data-v-ca949926]{color:#fff;background:#0a84ff;border-color:#0a84ff}.duration-display[data-v-ca949926]{gap:4px}.duration-value[data-v-ca949926]{font-size:14px}.duration-bracket[data-v-ca949926]{font-size:9px}.confirm-dialog-overlay[data-v-ca949926]{padding:10px}.confirm-dialog-content[data-v-ca949926]{min-width:unset;max-width:95vw;width:90%}.confirm-dialog[data-v-ca949926]{max-width:95vw;max-height:90vh}.confirm-dialog-body[data-v-ca949926]{padding:16px;max-height:calc(90vh - 120px);overflow-y:auto}.confirm-dialog-header[data-v-ca949926]{padding:14px 16px}.confirm-dialog-header h3[data-v-ca949926]{font-size:15px}.confirm-dialog-footer[data-v-ca949926]{padding:14px 16px}.modal-content[data-v-ca949926]{width:95%;max-height:92vh;border-radius:14px}.dialog-header[data-v-ca949926]{padding:14px 16px;border-radius:14px 14px 0 0}.dialog-header h3[data-v-ca949926]{font-size:16px}.modal-body[data-v-ca949926]{padding:16px}.modal-footer[data-v-ca949926]{padding:12px 16px;gap:8px}.modal-footer .btn[data-v-ca949926]{flex:1;text-align:center;padding:10px 16px}.group-select-list[data-v-ca949926]{max-height:300px}.group-select-item[data-v-ca949926]{padding:14px 16px}.group-select-name[data-v-ca949926]{font-size:15px}}@media (max-width: 480px){.group-manage[data-v-ca949926]{padding:8px}.page-title[data-v-ca949926]{font-size:16px}.group-card[data-v-ca949926]{padding:12px}.group-name[data-v-ca949926]{font-size:14px}.add-btn[data-v-ca949926],.group-play-btn[data-v-ca949926],.play-list-btn[data-v-ca949926]{font-size:11px;padding:7px 8px}.card-action-btn[data-v-ca949926]{width:34px;height:34px}.play-settings[data-v-ca949926]{grid-template-columns:1fr;gap:12px}.file-selector[data-v-ca949926],.selected-files-panel[data-v-ca949926]{max-height:180px}.file-list-content[data-v-ca949926],.selected-files-content[data-v-ca949926]{max-height:130px}}
@@ -0,0 +1 @@
1
+ @keyframes glassEnter-f653028d{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes broadcastPulse-f653028d{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}@keyframes ringPulse1-f653028d{0%{transform:scale(1);opacity:.4}to{transform:scale(1.6);opacity:0}}@keyframes ringPulse2-f653028d{0%{transform:scale(1);opacity:.3}to{transform:scale(1.8);opacity:0}}@keyframes dotBlink-f653028d{0%,to{opacity:1}50%{opacity:.4}}@keyframes glowShimmer-f653028d{0%{background-position:-200% center}to{background-position:200% center}}.broadcast-page[data-v-f653028d]{padding:20px;min-height:100vh;height:100vh;overflow:auto;box-sizing:border-box;animation:glassEnter-f653028d .6s cubic-bezier(.25,.46,.45,.94)}.top-row[data-v-f653028d]{display:flex;gap:20px;margin-bottom:20px}.top-row-left[data-v-f653028d]{flex:3;min-width:0}.top-row-right[data-v-f653028d]{flex:2;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.page-header[data-v-f653028d]{margin-bottom:24px}.page-title[data-v-f653028d]{font-size:22px;font-weight:700;color:var(--diablo-text);margin:0;text-shadow:0 0 20px var(--glass-border-glow),0 0 40px rgba(10,132,255,.12);letter-spacing:.5px}.glass-section[data-v-f653028d]{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:16px;padding:22px;margin-bottom:20px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow);transition:all .4s cubic-bezier(.25,.46,.45,.94)}.glass-section[data-v-f653028d]:hover{border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 20px var(--glass-border-glow),var(--glass-inner-glow)}.section-title[data-v-f653028d]{font-size:15px;font-weight:600;color:var(--diablo-text);margin:0 0 18px;display:flex;align-items:center;gap:8px}.section-title[data-v-f653028d]:before{content:"";width:3px;height:16px;background:var(--diablo-primary);border-radius:2px;box-shadow:0 0 8px var(--diablo-primary)}.source-row[data-v-f653028d]{display:flex;align-items:center;gap:12px;margin-bottom:16px}.source-select[data-v-f653028d]{flex:1;max-width:400px;cursor:pointer}.empty-hint[data-v-f653028d]{font-size:13px;color:var(--diablo-text-muted);text-align:center;padding:24px;border:1px dashed var(--glass-border);border-radius:12px;margin-top:8px}.connect-mic-area[data-v-f653028d]{display:flex;justify-content:center;padding:20px 0}.connect-mic-btn[data-v-f653028d]{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;background:linear-gradient(135deg,#0a84ff1a,#0a84ff0a);border:1px solid rgba(10,132,255,.3);border-radius:14px;color:var(--diablo-primary);font-size:15px;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.25,.46,.45,.94);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));user-select:none;-webkit-user-select:none}.connect-mic-btn[data-v-f653028d]:hover{background:linear-gradient(135deg,#0a84ff2e,#0a84ff14);border-color:var(--diablo-primary);box-shadow:0 0 20px #0a84ff33,var(--glass-inner-glow);transform:translateY(-2px)}.connect-mic-btn[data-v-f653028d]:active{transform:translateY(0)}.connect-mic-btn svg[data-v-f653028d]{width:20px;height:20px;filter:drop-shadow(0 0 4px rgba(10,132,255,.4))}.volume-row[data-v-f653028d]{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px}.volume-label[data-v-f653028d]{font-size:12px;color:var(--diablo-text-muted);font-weight:500;white-space:nowrap}.volume-slider[data-v-f653028d]{flex:1;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(90deg,var(--glass-border),rgba(10,132,255,.3));border-radius:3px;outline:none;transition:all .2s}:is()[data-v-f653028d]{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--diablo-primary);cursor:pointer;border:3px solid var(--glass-bg);box-shadow:0 0 10px #0a84ff80,0 2px 6px #0003;transition:all .2s}:is()[data-v-f653028d]:hover{transform:scale(1.15);box-shadow:0 0 16px #0a84ff99,0 2px 8px #0000004d}.volume-slider[data-v-f653028d]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--diablo-primary);cursor:pointer;border:3px solid var(--glass-bg);box-shadow:0 0 10px #0a84ff80}.volume-value[data-v-f653028d]{font-size:12px;color:var(--diablo-primary);font-weight:600;min-width:40px;text-align:right}.waveform-container[data-v-f653028d]{background:linear-gradient(135deg,#0a84ff0a,#0a84ff14,#0a84ff0a);border:1px solid var(--glass-border);border-radius:12px;overflow:hidden;padding:10px;position:relative}.waveform-container[data-v-f653028d]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(10,132,255,.05),transparent);background-size:200% 100%;animation:glowShimmer-f653028d 3s linear infinite;pointer-events:none}.waveform-canvas[data-v-f653028d]{display:block;width:100%;height:80px;position:relative;z-index:1}.group-bar[data-v-f653028d]{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}.group-label[data-v-f653028d]{font-size:12px;color:var(--diablo-text-muted);font-weight:500;margin-right:4px}.group-chip[data-v-f653028d]{padding:5px 14px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:20px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;transition:all .3s cubic-bezier(.25,.46,.45,.94);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));font-weight:500}.group-chip[data-v-f653028d]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);transform:translateY(-1px);box-shadow:0 0 8px var(--glass-border-glow)}.group-chip.group-active[data-v-f653028d]{background:#0a84ff1f;border-color:var(--diablo-primary);color:var(--diablo-primary);box-shadow:0 0 12px #0a84ff33;font-weight:600}.device-toolbar[data-v-f653028d]{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.toolbar-btn[data-v-f653028d]{padding:6px 14px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;transition:all .3s cubic-bezier(.25,.46,.45,.94);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));font-weight:500}.toolbar-btn[data-v-f653028d]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);transform:translateY(-1px);box-shadow:0 0 8px var(--glass-border-glow)}.selected-count[data-v-f653028d]{font-size:12px;color:var(--diablo-primary);font-weight:600;margin-left:auto;padding:4px 12px;background:#0a84ff14;border-radius:10px;border:1px solid rgba(10,132,255,.15)}.device-filter[data-v-f653028d]{display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;transition:all .3s;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.device-filter[data-v-f653028d]:focus-within{border-color:var(--glass-border-glow);box-shadow:0 0 8px var(--glass-border-glow)}.device-filter svg[data-v-f653028d]{color:var(--diablo-text-muted);flex-shrink:0}.device-filter .filter-input[data-v-f653028d]{border:none;background:transparent;padding:2px 0;font-size:12px;color:var(--diablo-text);width:120px}.device-filter .filter-input[data-v-f653028d]:focus{outline:none;box-shadow:none}.device-list[data-v-f653028d]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;max-height:260px;overflow-y:auto;padding-right:4px}.device-list[data-v-f653028d]::-webkit-scrollbar{width:6px}.device-list[data-v-f653028d]::-webkit-scrollbar-track{background:transparent}:is()[data-v-f653028d]{background:var(--glass-border);border-radius:3px}:is()[data-v-f653028d]:hover{background:var(--glass-border-hover)}.device-item[data-v-f653028d]{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;cursor:pointer;transition:all .3s cubic-bezier(.25,.46,.45,.94);font-size:13px;color:var(--diablo-text);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.device-item[data-v-f653028d]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);transform:translateY(-1px);box-shadow:0 0 10px var(--glass-border-glow),var(--glass-inner-glow)}.device-item.device-offline[data-v-f653028d]{opacity:.45}.device-item.device-disabled[data-v-f653028d]{cursor:not-allowed;pointer-events:none}.device-item.device-disabled input[type=checkbox][data-v-f653028d]{pointer-events:auto;cursor:not-allowed}.device-item input[type=checkbox][data-v-f653028d]{accent-color:var(--diablo-primary);width:16px;height:16px}.device-name[data-v-f653028d]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.device-status-dot[data-v-f653028d]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.device-status-dot.online[data-v-f653028d]{background:#27ae60;box-shadow:0 0 8px #27ae6099}.device-status-dot.offline[data-v-f653028d]{background:#95a5a6}.broadcast-btn-area[data-v-f653028d]{display:flex;justify-content:center;align-items:center;margin:20px 0;position:relative}.broadcast-btn[data-v-f653028d]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;width:180px;height:180px;border-radius:50%;background:var(--glass-bg);border:2px solid var(--glass-border);color:var(--diablo-text-muted);cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow);user-select:none;-webkit-user-select:none;position:relative;z-index:1}.broadcast-btn.btn-start[data-v-f653028d]{background:linear-gradient(135deg,#0a84ff0f,#0a84ff05)}.broadcast-btn.btn-start:hover:not(.is-disabled)[data-v-f653028d]{border-color:var(--diablo-primary);color:var(--diablo-primary);box-shadow:0 0 30px #0a84ff33,0 0 60px #0a84ff14,var(--glass-inner-glow);transform:scale(1.05)}.broadcast-btn.btn-start:hover:not(.is-disabled) svg[data-v-f653028d]{filter:drop-shadow(0 0 8px rgba(10,132,255,.5))}.broadcast-btn.btn-start.is-disabled[data-v-f653028d]{opacity:.35;cursor:not-allowed;filter:grayscale(.3)}.broadcast-btn.btn-stop[data-v-f653028d]{background:radial-gradient(circle at center,#e74c3c26,#e74c3c0d);border-color:#e74c3c99;color:#e74c3c;box-shadow:0 0 40px #e74c3c40,0 0 80px #e74c3c14,var(--glass-inner-glow);animation:broadcastPulse-f653028d 1.5s ease-in-out infinite}.broadcast-btn.btn-stop[data-v-f653028d]:hover{background:radial-gradient(circle at center,#e74c3c40,#e74c3c14);box-shadow:0 0 50px #e74c3c59,0 0 100px #e74c3c1f,var(--glass-inner-glow)}.broadcast-btn.btn-stop[data-v-f653028d]:before,.broadcast-btn.btn-stop[data-v-f653028d]:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:1px solid rgba(231,76,60,.3);animation:ringPulse1-f653028d 2s ease-out infinite}.broadcast-btn.btn-stop[data-v-f653028d]:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:#e74c3c33;animation:ringPulse2-f653028d 2.5s ease-out infinite;animation-delay:.5s}.broadcast-btn.btn-stop svg[data-v-f653028d]{filter:drop-shadow(0 0 10px rgba(231,76,60,.5))}.broadcast-btn svg[data-v-f653028d]{width:44px;height:44px;transition:filter .3s}.broadcast-btn-text[data-v-f653028d]{font-size:13px;font-weight:600;letter-spacing:.5px}.status-bar[data-v-f653028d]{display:flex;align-items:center;gap:10px;margin-top:16px;padding:12px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:12px;width:100%;box-sizing:border-box;transition:all .3s}.status-dot[data-v-f653028d]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online[data-v-f653028d]{background:#27ae60;box-shadow:0 0 8px #27ae6099;animation:dotBlink-f653028d 2s ease-in-out infinite}.status-dot.offline[data-v-f653028d]{background:#95a5a6}.status-text[data-v-f653028d]{font-size:13px;color:var(--diablo-text-muted);font-weight:500}.form-input[data-v-f653028d]{padding:8px 12px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:13px;transition:all .3s cubic-bezier(.25,.46,.45,.94);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.form-input[data-v-f653028d]:hover{border-color:var(--glass-border-hover)}.form-input[data-v-f653028d]:focus{outline:none;border-color:var(--glass-border-glow);box-shadow:0 0 12px var(--glass-border-glow);background:var(--glass-bg-active, var(--glass-bg))}.empty-state[data-v-f653028d]{padding:32px;text-align:center;color:var(--diablo-text-muted);font-size:14px;border:1px dashed var(--glass-border);border-radius:12px;margin-top:8px}@media (max-width: 768px){.broadcast-page[data-v-f653028d]{padding:10px;min-height:unset}.page-header[data-v-f653028d]{margin-bottom:12px}.page-title[data-v-f653028d]{font-size:17px}.top-row[data-v-f653028d]{flex-direction:column;gap:12px}.top-row-left[data-v-f653028d],.top-row-right[data-v-f653028d]{min-width:unset;width:100%}.glass-section[data-v-f653028d]{padding:14px;border-radius:12px;margin-bottom:12px}.section-title[data-v-f653028d]{font-size:14px;margin-bottom:12px}.source-row[data-v-f653028d]{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:12px}.source-select[data-v-f653028d]{width:100%;max-width:unset;font-size:16px}.connect-mic-btn[data-v-f653028d]{width:100%;justify-content:center;padding:12px 20px;font-size:14px}.volume-row[data-v-f653028d]{flex-wrap:wrap;gap:8px;padding:10px 12px}.volume-slider[data-v-f653028d]{min-width:0;order:2;flex-basis:100%}.volume-slider[data-v-f653028d]::-webkit-slider-thumb{width:24px;height:24px}.volume-value[data-v-f653028d]{order:3}.waveform-container[data-v-f653028d]{padding:8px}.waveform-canvas[data-v-f653028d]{height:60px}.broadcast-btn-area[data-v-f653028d]{margin:12px 0}.broadcast-btn[data-v-f653028d]{width:140px;height:140px;gap:8px}.broadcast-btn svg[data-v-f653028d]{width:34px;height:34px}.broadcast-btn-text[data-v-f653028d]{font-size:12px}.status-bar[data-v-f653028d]{padding:10px 14px;gap:8px}.status-text[data-v-f653028d]{font-size:12px}.group-bar[data-v-f653028d]{margin-bottom:10px;gap:6px}.group-label[data-v-f653028d]{width:100%;font-size:11px;margin-right:0;margin-bottom:2px}.group-chip[data-v-f653028d]{padding:5px 12px;font-size:12px}.device-toolbar[data-v-f653028d]{flex-wrap:wrap;gap:6px}.toolbar-btn[data-v-f653028d]{padding:7px 12px;font-size:12px}.device-filter[data-v-f653028d]{order:-1;width:100%;padding:8px 12px}.device-filter .filter-input[data-v-f653028d]{font-size:16px;width:100%}.selected-count[data-v-f653028d]{margin-left:0;width:100%;text-align:center;order:-2;padding:6px 12px;font-size:12px}.device-list[data-v-f653028d]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;max-height:280px}.device-item[data-v-f653028d]{padding:8px 10px;gap:8px;font-size:12px}.device-item input[type=checkbox][data-v-f653028d]{width:18px;height:18px}.device-status-dot[data-v-f653028d]{width:8px;height:8px}.empty-hint[data-v-f653028d]{padding:16px;font-size:12px}.empty-state[data-v-f653028d]{padding:20px;font-size:13px}}@media (max-width: 480px){.broadcast-page[data-v-f653028d]{padding:6px}.page-title[data-v-f653028d]{font-size:16px}.glass-section[data-v-f653028d]{padding:10px;border-radius:10px;margin-bottom:10px}.broadcast-btn[data-v-f653028d]{width:120px;height:120px}.broadcast-btn svg[data-v-f653028d]{width:28px;height:28px}.broadcast-btn-text[data-v-f653028d]{font-size:11px}.device-list[data-v-f653028d]{grid-template-columns:1fr 1fr}.device-item[data-v-f653028d]{padding:7px 8px;font-size:11px}.waveform-canvas[data-v-f653028d]{height:50px}.group-chip[data-v-f653028d]{padding:4px 10px;font-size:11px}.toolbar-btn[data-v-f653028d]{padding:6px 10px;font-size:11px}.status-bar[data-v-f653028d]{padding:8px 10px}.status-text[data-v-f653028d]{font-size:11px}.connect-mic-btn[data-v-f653028d]{padding:10px 16px;font-size:13px}.connect-mic-btn svg[data-v-f653028d]{width:18px;height:18px}}