@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
+ import{f as e,w as l,o as a,n as s,y as i,A as n,u as o,p as c,M as t,E as d,H as r,B as u,C as v,F as m,z as p,N as h,W as g,r as f,c as b,t as y,X as k}from"./vue-vendor-BaBirIg_.js";import{u as x,a as w}from"./index-npdYRXyk.js";import{g as C,b as M,e as I,r as D,d as V,f as A,h as S,i as L,j as P}from"./api-C3Fyph-A.js";import{u as F}from"./useDeviceScan-CM8xsf7h.js";import{_ as U}from"./_plugin-vue_export-helper-BCo6x5W8.js";const B={class:"device-manage"},R={class:"page-header"},$={class:"page-title"},_={class:"header-actions"},O={key:0,class:"view-mode-toggle"},E=["title"],N=["title"],j=["disabled","title"],H=["title"],z=["title"],T={class:"device-search-bar"},q=["placeholder"],G={class:"device-list"},K={key:0,class:"empty-state"},W={key:1,class:"list-view"},J={class:"device-table-grid"},X={class:"device-row device-header-row"},Q={class:"cell cell-select"},Y={class:"cell cell-header"},Z={class:"cell cell-header"},ee={class:"cell cell-header"},le={class:"cell cell-header"},ae={class:"cell cell-header"},se={class:"cell cell-header"},ie={class:"cell cell-header"},ne={class:"cell cell-header"},oe={class:"cell cell-header"},ce={class:"cell cell-header"},te={class:"cell cell-header"},de={class:"cell cell-header"},re=["onClick"],ue={class:"cell cell-select"},ve=["checked","onChange"],me={class:"cell"},pe={class:"field-value"},he={class:"cell"},ge={class:"field-value"},fe={class:"cell"},be={class:"field-value"},ye={class:"cell"},ke={class:"field-value"},xe={class:"cell"},we={class:"field-value"},Ce={key:0,class:"status-badge status-online"},Me={key:1,class:"status-badge status-playing"},Ie={key:2,class:"status-badge status-offline"},De={key:3,class:"status-badge status-never"},Ve={key:4,class:"status-badge status-expired"},Ae={key:5,class:"status-badge status-unknown"},Se={class:"cell"},Le=["onClick","title"],Pe={class:"cell"},Fe={class:"field-value"},Ue={class:"cell"},Be=["onClick","title"],Re={class:"cell"},$e=["onClick","title"],_e={class:"cell"},Oe=["onClick","title"],Ee={class:"cell"},Ne=["onClick","title"],je={class:"cell"},He=["disabled","onClick","title"],ze=["disabled","onClick","title"],Te={key:2,class:"card-view"},qe={class:"card-grid"},Ge=["onClick"],Ke={class:"card-header"},We={class:"card-select"},Je=["checked","onChange"],Xe={class:"card-actions"},Qe=["disabled","onClick","title"],Ye=["disabled","onClick","title"],Ze={class:"card-body"},el={class:"card-info-row"},ll={class:"info-label"},al={class:"info-value"},sl={class:"card-info-row"},il={class:"info-label"},nl={class:"info-value"},ol={class:"card-info-row"},cl={class:"info-label"},tl={class:"card-info-row"},dl={class:"info-label"},rl={class:"info-value"},ul={class:"card-info-row"},vl={class:"info-label"},ml={class:"info-value"},pl={key:0,class:"status-badge status-online"},hl={key:1,class:"status-badge status-playing"},gl={key:2,class:"status-badge status-offline"},fl={key:3,class:"status-badge status-never"},bl={key:4,class:"status-badge status-expired"},yl={key:5,class:"status-badge status-unknown"},kl={class:"card-footer"},xl=["onClick","title"],wl=["onClick","title"],Cl=["onClick","title"],Ml=["onClick","title"],Il=["onClick","title"],Dl={key:3,class:"loading-mask"},Vl={class:"dialog-header"},Al={class:"dialog-body"},Sl={class:"form-group"},Ll=["placeholder"],Pl={key:0,class:"error-text"},Fl={class:"form-group"},Ul=["placeholder"],Bl={key:0,class:"error-text"},Rl={class:"form-group"},$l=["placeholder"],_l={key:0,class:"error-text"},Ol={class:"form-hint"},El={class:"hint-detail"},Nl={class:"dialog-footer"},jl=["disabled"],Hl={class:"dialog-header"},zl={class:"dialog-body"},Tl={class:"form-group"},ql=["placeholder"],Gl={key:0,class:"error-text"},Kl={class:"dialog-footer"},Wl=["disabled"],Jl={class:"dialog-header"},Xl={class:"dialog-body"},Ql={class:"form-group"},Yl=["placeholder"],Zl={class:"form-group"},ea=["placeholder"],la={key:0,class:"error-text"},aa={class:"form-hint"},sa={class:"dialog-footer"},ia=["disabled"],na={class:"dialog-header"},oa={class:"dialog-body"},ca={class:"form-group"},ta=["placeholder"],da={key:0,class:"error-text"},ra={class:"form-group"},ua=["placeholder"],va={key:0,class:"error-text"},ma={class:"form-group"},pa=["placeholder"],ha={key:0,class:"error-text"},ga={class:"form-group"},fa=["placeholder"],ba={class:"dialog-footer"},ya=["disabled"],ka={class:"dialog-header"},xa={class:"dialog-body"},wa={class:"volume-control"},Ca={class:"volume-display"},Ma={class:"volume-value"},Ia={class:"volume-range"},Da={class:"volume-input"},Va={class:"dialog-footer"},Aa=["disabled"],Sa={class:"dialog-header"},La={class:"dialog-body"},Pa={class:"selected-devices-info"},Fa={class:"info-label"},Ua={class:"info-count"},Ba={class:"volume-control"},Ra={class:"volume-display"},$a={class:"volume-value"},_a={class:"volume-range"},Oa={class:"volume-input"},Ea={class:"dialog-footer"},Na=["disabled"],ja={class:"dialog-header"},Ha={class:"dialog-body"},za={class:"scan-top-bar"},Ta={class:"scan-hint"},qa=["disabled"],Ga={key:0,class:"scan-spinner",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},Ka={key:0,class:"scan-error"},Wa={class:"scan-main-layout"},Ja={class:"scan-main-left"},Xa={key:0,class:"scan-results"},Qa={class:"scan-results-header"},Ya={class:"scan-count"},Za={class:"scan-sort-btns"},es={class:"sort-arrow"},ls={class:"sort-arrow"},as={class:"scan-device-table"},ss={class:"scan-table-header"},is={class:"col-media"},ns={class:"col-port"},os={class:"col-flag"},cs={class:"col-flag"},ts={class:"col-dns"},ds={class:"scan-table-body"},rs=["onClick"],us={class:"col-idx"},vs={class:"col-ip"},ms={class:"col-seed mono"},ps={class:"col-media"},hs={class:"col-port"},gs={class:"col-flag"},fs={class:"col-flag"},bs={class:"col-dns"},ys={class:"col-action"},ks=["onClick","title"],xs=["onClick"],ws={key:1,class:"scan-empty"},Cs={class:"scan-console-side"},Ms={class:"console-header"},Is={class:"console-body",ref:"consoleBody"},Ds={key:0,class:"console-empty"},Vs={class:"dialog-header"},As={class:"dialog-body"},Ss={class:"config-seed-display"},Ls={class:"config-seed-label"},Ps={class:"config-seed-value"},Fs={class:"test-comm-section"},Us=["disabled"],Bs={class:"form-group"},Rs={class:"toggle-label"},$s={key:0,class:"config-ip-fields"},_s={class:"form-group"},Os={key:0,class:"field-error"},Es={class:"form-group"},Ns={key:0,class:"field-error"},js={class:"form-group"},Hs={key:0,class:"field-error"},zs={class:"config-row-2col"},Ts={class:"form-group"},qs={key:0,class:"field-error"},Gs={class:"form-group"},Ks={key:0,class:"field-error"},Ws={class:"config-row-2col"},Js={class:"form-group"},Xs=["placeholder"],Qs={key:0,class:"field-error"},Ys={class:"form-group"},Zs={class:"toggle-label"},ei={class:"console-section"},li={class:"console-header"},ai={class:"console-body",ref:"consoleBody"},si={key:0,class:"console-empty"},ii={class:"dialog-footer"},ni={class:"dialog-header"},oi={class:"dialog-body amixer-body"},ci={class:"amixer-toolbar"},ti={class:"amixer-seed-display mono"},di=["disabled"],ri={class:"amixer-groups"},ui={class:"amixer-group"},vi={class:"amixer-group-title"},mi={class:"amixer-controls"},pi={class:"amixer-row slider-row"},hi={class:"amixer-label"},gi={class:"amixer-value"},fi={class:"amixer-row slider-row"},bi={class:"amixer-label"},yi={class:"amixer-value"},ki={class:"amixer-row switch-row"},xi={class:"amixer-label"},wi={value:0},Ci={value:1},Mi={class:"amixer-row switch-row"},Ii={class:"amixer-label"},Di={value:0},Vi={value:1},Ai={class:"amixer-group"},Si={class:"amixer-group-title"},Li={class:"amixer-controls"},Pi={class:"amixer-row slider-row"},Fi={class:"amixer-label"},Ui={class:"amixer-value"},Bi={class:"amixer-row slider-row"},Ri={class:"amixer-label"},$i={class:"amixer-value"},_i={class:"amixer-row slider-row"},Oi={class:"amixer-label"},Ei={class:"amixer-value"},Ni={class:"amixer-row slider-row"},ji={class:"amixer-label"},Hi={class:"amixer-value"},zi={class:"amixer-row slider-row"},Ti={class:"amixer-label"},qi={class:"amixer-value"},Gi={class:"amixer-group"},Ki={class:"amixer-group-title"},Wi={class:"amixer-controls"},Ji={class:"amixer-label"},Xi=["onUpdate:modelValue"],Qi={value:0},Yi={value:1},Zi=["onClick"],en={class:"amixer-group"},ln={class:"amixer-group-title"},an={class:"amixer-controls"},sn={class:"amixer-label"},nn=["onUpdate:modelValue"],on={value:0},cn={value:1},tn=["onClick"],dn={class:"amixer-group"},rn={class:"amixer-group-title"},un={class:"amixer-controls"},vn={class:"amixer-label"},mn=["onUpdate:modelValue"],pn={value:0},hn={value:1},gn=["onClick"],fn={class:"dialog-footer"},bn="device_display_order",yn="device_view_mode",kn=U(e({__name:"index",setup(e){var U,kn;const{t:xn}=x(),wn=w();function Cn(e){var l;const a=`; ${document.cookie}`.split(`; ${e}=`);return 2===a.length&&(null==(l=a.pop())?void 0:l.split(";").shift())||""}function Mn(e,l,a=365){const s=new Date;s.setTime(s.getTime()+24*a*60*60*1e3),document.cookie=`${e}=${l};expires=${s.toUTCString()};path=/`}const In="undefined"!=typeof window&&!!(null==(kn=null==(U=window.Capacitor)?void 0:U.isNativePlatform)?void 0:kn.call(U)),Dn=f(In?"card":"list"),Vn=f("");function An(e){const l=function(){try{const e=Cn(bn);if(e){const l=JSON.parse(e);if(Array.isArray(l))return l}}catch(e){console.error("解析设备排序失败:",e)}return[]}();if(0===l.length)return e;const a=new Map;e.forEach(e=>{e.id&&a.set(e.id,e)});const s=[];return l.forEach(e=>{const l=a.get(e);l&&(s.push(l),a.delete(e))}),a.forEach(e=>{s.push(e)}),s}function Sn(e,l="success"){const a=document.createElement("div");a.className=`custom-message custom-message-${l}`,a.textContent=e,document.body.appendChild(a),setTimeout(()=>{a.classList.add("show")},10),setTimeout(()=>{a.classList.remove("show"),setTimeout(()=>{document.body.removeChild(a)},300)},3e3)}function Ln(e,l=xn("devices.confirmOperation")){return console.log("📋 显示确认对话框:",l,e),new Promise(a=>{const s=document.createElement("div");s.className="confirm-overlay";const i=document.createElement("div");i.className="confirm-dialog",i.innerHTML=`\n <div class="confirm-header">\n <h3>${l}</h3>\n </div>\n <div class="confirm-body">\n <p>${e}</p>\n </div>\n <div class="confirm-footer">\n <button class="confirm-cancel">取消</button>\n <button class="confirm-ok">确定</button>\n </div>\n `,s.appendChild(i),document.body.appendChild(s),console.log("确认对话框已添加到DOM"),console.log("Overlay元素:",s),console.log("Dialog元素:",i);const n=window.getComputedStyle(s),o=window.getComputedStyle(i);console.log("Overlay关键样式:",{display:n.display,position:n.position,zIndex:n.zIndex,opacity:n.opacity,visibility:n.visibility,backgroundColor:n.backgroundColor,top:n.top,left:n.left}),console.log("Dialog关键样式:",{display:o.display,backgroundColor:o.backgroundColor,zIndex:o.zIndex,opacity:o.opacity,visibility:o.visibility,width:o.width,maxWidth:o.maxWidth});const c=i.querySelector(".confirm-cancel"),t=i.querySelector(".confirm-ok"),d=()=>{document.body.removeChild(s)};c.onclick=()=>{d(),a(!1)},t.onclick=()=>{d(),a(!0)},s.onclick=e=>{e.target===s&&(d(),a(!1))}})}l(Dn,e=>{Mn(yn,e),console.log("✓ 视图模式已保存:",e)});const Pn=f([]),Fn=f(!1),Un=b(()=>{const e=Vn.value.trim().toLowerCase();return e?Pn.value.filter(l=>{const a=(l.devname||l.device_name||l.name||"").toLowerCase(),s=(l.device_seed||l.device_code||"").toLowerCase();return a.includes(e)||s.includes(e)}):Pn.value}),Bn=f(!1),Rn=f(!1),$n=f(!1),_n=f(!1),On=f(!1),En=f(!1),Nn=f(!1),jn=f(!1),Hn=f(""),zn=f(!1),{scannedDevices:Tn,isScanning:qn,scanError:Gn,isElectron:Kn,udpLogs:Wn,startScan:Jn,testCommunication:Xn,configureDevice:Qn,sendAmixer:Yn,getAmixerStatus:Zn,clearLogs:eo}=F();l(Wn,()=>{k(()=>{document.querySelectorAll(".console-body").forEach(e=>{e.scrollTop=e.scrollHeight})})});const lo=f(!1),ao=f({seed:"",deviceIP:"",mask:"255.255.255.0",gateway:"",mediaIP:"",mediaPort:12080,autoIP:!0,warmMode:!1,dns:"0.0.0.0"}),so=f("ip"),io=f(!0);function no(e){so.value===e?io.value=!io.value:(so.value=e,io.value=!0)}function oo(e){const l=e.split(".").map(Number);return(l[0]||0)<<24|(l[1]||0)<<16|(l[2]||0)<<8|(l[3]||0)}const co=b(()=>{const e=[...Tn.value],l=io.value?1:-1;return"ip"===so.value?e.sort((e,a)=>(oo(e.ip)-oo(a.ip))*l):e.sort((e,a)=>e.seed.localeCompare(a.seed)*l),e}),to=f([]),ro=f({name:"",serial:"",key:""}),uo=f({id:0,name:"",mac:"",ip:"",port:12080}),vo=f({id:0,name:""}),mo=f({id:0,newsn:""}),po=f(null),ho=f(32),go=f(32),fo=f({}),bo=f({}),yo=f({}),ko=f({}),xo=f(!1);function wo(e,l){const a={};return e.name&&""!==e.name.trim()||(a.name=xn("devices.deviceNameValidationError")),e.serial&&""!==e.serial.trim()||(a.serial=xn("devices.deviceSerialValidationError")),e.key&&""!==e.key.trim()||(a.key=xn("devices.deviceKeyValidationError")),l.value=a,0===Object.keys(a).length}async function Co(){Fn.value=!0,console.log("========================================"),console.log("开始获取设备列表...");try{const e=await C();console.log("设备列表完整响应:",e);let l=[];!0===e.res&&Array.isArray(e.results)?(l=e.results,console.log("✓ 从 results 字段获取到设备:",e.results.length,"个"),Sn(`${xn("devices.successfullyFetched")} ${e.results.length} ${xn("devices.devicesUnit")}`,"success")):!0===e.res&&Array.isArray(e.list)?(l=e.list,console.log("✓ 从 list 字段获取到设备:",e.list.length,"个"),Sn(`${xn("devices.successfullyFetched")} ${e.list.length} ${xn("devices.devicesUnit")}`,"success")):!0===e.res&&Array.isArray(e.filelist)?(l=e.filelist,console.log("✓ 从 filelist 字段获取到设备:",e.filelist.length,"个"),Sn(`${xn("devices.successfullyFetched")} ${e.filelist.length} ${xn("devices.devicesUnit")}`,"success")):Array.isArray(e)?(l=e,console.log("✓ 响应本身是数组,获取到设备:",e.length,"个"),Sn(`${xn("devices.successfullyFetched")} ${e.length} ${xn("devices.devicesUnit")}`,"success")):(Pn.value=[],console.warn("设备列表响应格式异常,无法解析数据"),console.warn("响应的keys:",Object.keys(e)),Sn(xn("devices.deviceListFormatError"),"error")),Pn.value=An(l),console.log("最终设备列表:",Pn.value),console.log("========================================")}catch(e){console.error("获取设备列表失败:",e),Sn(`${xn("devices.fetchDeviceListFailed")}: ${e.message||xn("devices.unknownError")}`,"error")}finally{Fn.value=!1}}async function Mo(){zn.value=!0,await Jn()}async function Io(){const e=ao.value.seed;e&&32===e.length&&/^[0-9a-fA-F]{32}$/.test(e)&&(lo.value=!0,await Xn(e),lo.value=!1)}const Do=f({});function Vo(e){return!!e&&(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.test(e)&&e.split(".").every(e=>{const l=parseInt(e);return l>=0&&l<=255}))}async function Ao(){if(function(){Do.value={};const e=ao.value;return e.autoIP||(Vo(e.deviceIP)||(Do.value.deviceIP=xn("devices.invalidIP")),Vo(e.mask)||(Do.value.mask=xn("devices.invalidMask")),e.gateway&&!Vo(e.gateway)&&(Do.value.gateway=xn("devices.invalidGateway"))),e.mediaIP&&"0.0.0.0"!==e.mediaIP&&!Vo(e.mediaIP)&&(Do.value.mediaIP=xn("devices.invalidMediaIP")),(!e.mediaPort||e.mediaPort<1||e.mediaPort>65535)&&(Do.value.mediaPort=xn("devices.invalidPort")),e.dns&&"0.0.0.0"!==e.dns&&!Vo(e.dns)&&(Do.value.dns=xn("devices.invalidDNS")),0===Object.keys(Do.value).length}())try{await Qn({...ao.value})?(Sn(xn("devices.deviceConfigured"),"success"),jn.value=!1):Sn(xn("devices.deviceConfigureFailed"),"error")}catch(e){Sn(xn("devices.deviceConfigureFailed")+": "+(e.message||""),"error")}else Sn(Object.values(Do.value).join(";"),"error")}const So=f(!1),Lo=f(""),Po=f(!1),Fo=f({dacVolume:63,hpVolume:63,hpSwitch:1,hpRoute:0,lineInVolume:7,fmInVolume:7,micInVolume:7,micBoost:7,adcCapture:4,adcRightOut:0,adcLeftOut:0,adcLineIn:0,adcRightFM:1,adcLeftFM:1,adcMic:0,leftRightDAC:0,leftLeftDAC:0,leftFM:1,leftLineIn:0,leftMicIn:0,rightLeftDAC:0,rightRightDAC:0,rightFM:1,rightLineIn:0,rightMicIn:0}),Uo=b(()=>[{numid:9,key:"adcRightOut",label:xn("devices.amixerADCRightOut")},{numid:10,key:"adcLeftOut",label:xn("devices.amixerADCLeftOut")},{numid:11,key:"adcLineIn",label:xn("devices.amixerADCLineIn")},{numid:12,key:"adcRightFM",label:xn("devices.amixerADCRightFM")},{numid:13,key:"adcLeftFM",label:xn("devices.amixerADCLeftFM")},{numid:14,key:"adcMic",label:xn("devices.amixerADCMic")}]),Bo=b(()=>[{numid:15,key:"leftRightDAC",label:xn("devices.amixerLeftRightDAC")},{numid:16,key:"leftLeftDAC",label:xn("devices.amixerLeftLeftDAC")},{numid:17,key:"leftFM",label:xn("devices.amixerLeftFM")},{numid:18,key:"leftLineIn",label:xn("devices.amixerLeftLineIn")},{numid:19,key:"leftMicIn",label:xn("devices.amixerLeftMicIn")}]),Ro=b(()=>[{numid:20,key:"rightLeftDAC",label:xn("devices.amixerRightLeftDAC")},{numid:21,key:"rightRightDAC",label:xn("devices.amixerRightRightDAC")},{numid:22,key:"rightFM",label:xn("devices.amixerRightFM")},{numid:23,key:"rightLineIn",label:xn("devices.amixerRightLineIn")},{numid:24,key:"rightMicIn",label:xn("devices.amixerRightMicIn")}]),$o=f(!1);function _o(){Lo.value=ao.value.seed,Po.value=!0,$o.value=!0;const e=window.electronAPI;e&&(No.value=e=>function(e){(function(e){const l=e.split("Simple");for(const a of l)a&&(a.includes("Headphone Source")&&(Fo.value.hpRoute=a.includes("Item0: 'Mixer")?1:0),a.includes("'Headphone',0")&&(Fo.value.hpSwitch=a.includes("[on]")?1:0),a.includes("ADC Mixer Left FM In',0")&&(Fo.value.adcLeftFM=a.includes("[on]")?1:0),a.includes("ADC Mixer Right FM In',0")&&(Fo.value.adcRightFM=a.includes("[on]")?1:0),a.includes("ADC Mixer Right Out',0")&&(Fo.value.adcRightOut=a.includes("[on]")?1:0),a.includes("ADC Mixer Left Out',0")&&(Fo.value.adcLeftOut=a.includes("[on]")?1:0),a.includes("ADC Mixer Mic',0")&&(Fo.value.adcMic=a.includes("[on]")?1:0),a.includes("ADC Mixer Line In',0")&&(Fo.value.adcLineIn=a.includes("[on]")?1:0),a.includes("Left Mixer FM In',0")&&(Fo.value.leftFM=a.includes("[on]")?1:0),a.includes("Left Mixer Left DAC',0")&&(Fo.value.leftLeftDAC=a.includes("[on]")?1:0),a.includes("Left Mixer Line In',0")&&(Fo.value.leftLineIn=a.includes("[on]")?1:0),a.includes("Left Mixer Mic In',0")&&(Fo.value.leftMicIn=a.includes("[on]")?1:0),a.includes("Left Mixer Right DAC',0")&&(Fo.value.leftRightDAC=a.includes("[on]")?1:0),a.includes("Right Mixer FM In',0")&&(Fo.value.rightFM=a.includes("[on]")?1:0),a.includes("Right Mixer Left DAC',0")&&(Fo.value.rightLeftDAC=a.includes("[on]")?1:0),a.includes("Right Mixer Line In',0")&&(Fo.value.rightLineIn=a.includes("[on]")?1:0),a.includes("Right Mixer Mic In',0")&&(Fo.value.rightMicIn=a.includes("[on]")?1:0),a.includes("Right Mixer Right DAC',0")&&(Fo.value.rightRightDAC=a.includes("[on]")?1:0));for(const a of l){if(!a)continue;const e=a.match(/(\d+)\s+\[\d+%/);if(!e)continue;const l=parseInt(e[1]);a.includes("mixer control 'DAC',0")?Fo.value.dacVolume=l:a.includes("mixer control 'ADC',0")?Fo.value.adcCapture=l:a.includes("mixer control 'Mic In',0")?Fo.value.micInVolume=l:a.includes("mixer control 'Mic Boost',0")?Fo.value.micBoost=l:a.includes("mixer control 'Line In',0")?Fo.value.lineInVolume=l:a.includes("mixer control 'FM In',0")?Fo.value.fmInVolume=l:a.includes("mixer control 'Headphone',0")&&(Fo.value.hpVolume=l)}Sn(xn("devices.amixerGetSuccess"),"success")})(e.text),Po.value=!1,$o.value&&($o.value=!1,So.value=!0)}(e),e.onDeviceInfo(No.value)),Oo()}async function Oo(){Po.value=!0;await Zn(Lo.value)||(Sn(xn("devices.amixerGetFailed"),"error"),Po.value=!1,$o.value&&($o.value=!1,So.value=!0))}async function Eo(e,l){await Yn(Lo.value,e,l)?Sn(xn("devices.amixerSetSuccess"),"success"):Sn(xn("devices.amixerSetFailed"),"error")}const No=f(null);async function jo(){if(wo(ro.value,fo)){xo.value=!0;try{const e=`${ro.value.serial.trim()}|${ro.value.key.trim()}`,l=await M({name:ro.value.name.trim(),sn:e});console.log("添加设备响应:",l),console.log("拼接后的SN:",e),l.res?(Sn(xn("devices.addDeviceSuccess"),"success"),Bn.value=!1,ro.value={name:"",serial:"",key:""},fo.value={},await Co()):Sn(l.info||xn("devices.addDeviceFailed"),"error")}catch(e){console.error("添加设备失败:",e),Sn(e.message||xn("devices.addDeviceFailed"),"error")}finally{xo.value=!1}}}l(So,e=>{if(!e&&No.value){const e=window.electronAPI;e&&e.removeDeviceInfoListener(),No.value=null}});const Ho=[3614090360,3905402710,606105819,3250441966,4118548399,1200080426,2821735955,4249261313,1770035416,2336552879,4294925233,2304563134,1804603682,4254626195,2792965006,1236535329,4129170786,3225465664,643717713,3921069994,3593408605,38016083,3634488961,3889429448,568446438,3275163606,4107602567,1163531501,2850285829,4243563512,1735328473,2368359562,4277799234,2272393089,1839030562,4259657740,2763975236,1272893353,4139469664,3200236656,681279174,3936430074,3572445317,76029189,3654602809,3873151461,530742520,3299628645,4096336452,1126891415,2878612391,4237533241,1700485571,2399980690,4293915773,2240044497,1873313359,4264355552,2734768916,1309151649,4149444226,3174756917,718787131,3951481745],zo=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],To=new Uint8Array([33,109,17,22,29,152,127,22,7,112,66,22,99,12,177,22,13,113,43,20,5,9,14,47,115,229,134,210,59,29,134,20,4,101,61,203,171,191,16,23,38,42,16,23,13,121,106,93,59,123,15,21,6,10,53,21,46,109,151,201,96,107,135,231]);function qo(e){return e>>>0}function Go(e,l){return(e<<l|e>>>32-l)>>>0}function Ko(e){const l=e.length;let a=l+1;for(;a%64!=56;)a++;const s=new Uint8Array(a+8);s.set(e),s[l]=128;const i=8*l;s[a]=255&i,s[a+1]=i>>>8&255,s[a+2]=i>>>16&255,s[a+3]=i>>>24&255,s[a+4]=l>>>29&255;let n=1732584193,o=4023233417,c=2562383102,t=271733878;const d=new Uint32Array(16);for(let v=0;v<s.length-7;v+=64){for(let n=0;n<16;n++){const e=v+4*n;d[n]=qo(s[e]|s[e+1]<<8|s[e+2]<<16|s[e+3]<<24)}let e=n,l=o,a=c,i=t;for(let s=0;s<64;s++){let n,o;s<16?(n=qo(l&a|~l&i),o=s):s<32?(n=qo(i&l|~i&a),o=(5*s+1)%16):s<48?(n=qo(l^a^i),o=(3*s+5)%16):(n=qo(a^(l|~i)),o=7*s%16);const c=i;i=a,a=l,l=qo(l+Go(qo(e+n+Ho[s]+d[o]),zo[s])),e=c}n=qo(n+e),o=qo(o+l),c=qo(c+a),t=qo(t+i)}const r=new Uint8Array(16),u=new DataView(r.buffer);return u.setUint32(0,n,!0),u.setUint32(4,o,!0),u.setUint32(8,c,!0),u.setUint32(12,t,!0),r}function Wo(e){const l=function(e){const l=new Uint8Array(e.length/2);for(let a=0;a<e.length;a+=2)l[a/2]=parseInt(e.substring(a,a+2),16);return l}(e),a=new Uint8Array(80);a.set(l,0),a.set(To,16);const s=Ko(a),i=Ko(s),n=Ko(i);return o=n,Array.from(o).map(e=>e.toString(16).padStart(2,"0")).join("");var o}async function Jo(e){mo.value={id:e.id,currentSerial:e.device_seed||e.device_code||"",newsn:""},ko.value={},En.value=!0}async function Xo(){if(mo.value.newsn&&""!==mo.value.newsn.trim())if(32===mo.value.newsn.trim().length){xo.value=!0;try{const e=await I({newsn:mo.value.newsn.trim(),devid:mo.value.id});console.log("========================================"),console.log("改序列号响应:",e),console.log("设备ID:",mo.value.id),console.log("当前序列号:",mo.value.currentSerial),console.log("新序列号:",mo.value.newsn.trim()),console.log("========================================"),e.res?(Sn(xn("devices.deviceSerialEditSuccess"),"success"),En.value=!1,await Co()):Sn(e.info||xn("devices.deviceSerialEditFailed"),"error")}catch(e){console.error("设备序列号修改失败:",e),Sn(e.message||xn("devices.deviceSerialEditFailed"),"error")}finally{xo.value=!1}}else ko.value.newsn=xn("devices.newSerialLengthError");else ko.value.newsn=xn("devices.newSerialLengthError")}function Qo(e){vo.value={id:e.id,name:e.devname||e.device_name||e.name||""},yo.value={},Rn.value=!0}async function Yo(){if(vo.value.name&&""!==vo.value.name.trim()){xo.value=!0;try{const e=await D({newname:vo.value.name.trim(),devid:vo.value.id});console.log("========================================"),console.log("改名响应:",e),console.log("设备ID:",vo.value.id),console.log("新名称:",vo.value.name.trim()),console.log("========================================"),e.res?(Sn(xn("devices.deviceRenameSuccess"),"success"),Rn.value=!1,await Co()):Sn(e.info||xn("devices.deviceRenameFailed"),"error")}catch(e){console.error("设备改名失败:",e),Sn(e.message||xn("devices.deviceRenameFailed"),"error")}finally{xo.value=!1}}else yo.value.name=xn("devices.newDeviceNameValidationError")}async function Zo(e){const l=e.device_seed||e.device_code||"",a=1===e.kind,s=xn(a?"devices.closeDebugSound":"devices.openDebugSound"),i=a?2:1;if(await Ln(`${s}?`,s)){xo.value=!0;try{const e=await L({dsv:i,sn:l});e.res?(Sn(xn("devices.debugSoundSuccess"),"success"),await Co()):Sn(e.info||xn("devices.debugSoundFailed"),"error")}catch(n){Sn(n.message||xn("devices.debugSoundFailed"),"error")}finally{xo.value=!1}}}async function ec(){if(wo(uo.value,bo)){xo.value=!0;try{const e=await V({id:uo.value.id,name:uo.value.name.trim(),mac:uo.value.mac.trim(),ip:uo.value.ip||void 0,port:uo.value.port||void 0});console.log("编辑设备响应:",e),e.res?(Sn(xn("devices.deviceEditSuccess"),"success"),$n.value=!1,await Co()):Sn(e.info||xn("devices.deviceEditFailed"),"error")}catch(e){console.error("编辑设备失败:",e),Sn(e.message||xn("devices.deviceEditFailed"),"error")}finally{xo.value=!1}}}async function lc(e){console.log("🗑️ 点击删除按钮"),console.log("设备信息:",e),console.log("设备ID:",e.id),console.log("设备名称:",e.devname||e.device_name||e.name);try{console.log("准备显示确认对话框...");const l=await Ln(`${xn("devices.confirmDelete")} "${e.devname||e.device_name||e.name||xn("devices.unnamedDevice")}"${xn("devices.deleteCannotUndo")}`,xn("devices.deleteDevice"));if(console.log("用户确认删除:",l),!l)return;const a=await P({snid:e.id});console.log("========================================"),console.log("删除设备响应:",a),console.log("设备ID:",e.id),console.log("设备名称:",e.device_name||e.name),console.log("========================================"),a.res?(Sn(xn("devices.deleteDeviceSuccess"),"success"),await Co()):Sn(a.info||xn("devices.deleteDeviceFailed"),"error")}catch(l){console.error("删除设备失败:",l),Sn(l.message||xn("devices.deleteDeviceFailed"),"error")}}function ac(e){po.value=e,ho.value=void 0!==e.vol&&-1!==e.vol?e.vol:32,_n.value=!0}async function sc(){var e,l;if(po.value)if(ho.value<1||ho.value>63)Sn(xn("devices.volumeValidationError"),"error");else{xo.value=!0;try{const e=po.value.device_seed||po.value.device_code||String(po.value.id),l=await A({vol:ho.value,snlist:e});console.log("========================================"),console.log("调节音量响应:",l),console.log("设备名称:",po.value.devname),console.log("设备编码:",e),console.log("设备序列号:",po.value.device_seed),console.log("设置音量值:",ho.value),console.log("========================================"),l.res?(Sn(`${xn("devices.adjustVolumeSuccess")} ${ho.value}`,"success"),_n.value=!1,await Co()):Sn(l.info||xn("devices.adjustVolumeFailed"),"error")}catch(a){console.error("========================================"),console.error("调节音量失败:",a),console.error("错误详情:",{message:a.message,status:null==(e=a.response)?void 0:e.status,data:null==(l=a.response)?void 0:l.data}),console.error("========================================"),Sn(a.message||xn("devices.adjustVolumeFailed"),"error")}finally{xo.value=!1}}}async function ic(){var e,l;if(0!==to.value.length)if(go.value<1||go.value>63)Sn(xn("devices.volumeValidationError"),"error");else{xo.value=!0;try{const e=Pn.value.filter(e=>to.value.includes(e.id)),l=e.map(e=>e.device_seed||e.device_code||String(e.id)).join("|");console.log("========================================"),console.log("开始批量调节音量"),console.log("选中设备数量:",to.value.length),console.log("设备编码列表:",l),console.log("设置音量值:",go.value),console.log("========================================");const a=await S({vol:go.value,snlist:l});console.log("========================================"),console.log("批量调节响应:",a),console.log("========================================"),a.res?(Sn(`${xn("devices.batchAdjustSuccess")} ${to.value.length} ${xn("devices.devicesUnit")}`,"success"),On.value=!1,to.value=[],await Co()):Sn(a.info||xn("devices.batchAdjustFailed"),"error")}catch(a){console.error("========================================"),console.error("批量调节音量失败:",a),console.error("错误详情:",{message:a.message,status:null==(e=a.response)?void 0:e.status,data:null==(l=a.response)?void 0:l.data}),console.error("========================================"),Sn(a.message||xn("devices.batchAdjustFailed"),"error")}finally{xo.value=!1}}else Sn(xn("devices.selectDevicesFirst"),"error")}function nc(e){return to.value.includes(e)}function oc(e){const l=to.value.indexOf(e);l>-1?to.value.splice(l,1):to.value.push(e)}function cc(){return 0!==Pn.value.length&&to.value.length===Pn.value.length}function tc(){cc()?to.value=[]:to.value=Pn.value.map(e=>e.id)}const dc=f(new Set);function rc(e){return dc.value.has(e.id)}function uc(e){return Pn.value.findIndex(l=>l.id===e.id)<=0}function vc(e){return Pn.value.findIndex(l=>l.id===e.id)>=Pn.value.length-1}async function mc(e,l){const a="list"===Dn.value,s=a?".device-table-grid":".card-grid",i=document.querySelector(s);if(!i)return;const n=a?".device-data-row":".device-card",o=i.querySelectorAll(n),c=o[e],t=o[l];if(!c||!t)return;const d=e=>a?Array.from(e.querySelectorAll(".cell")):[e],r=d(c),u=d(t);if(!r.length||!u.length)return;const v=r[0].getBoundingClientRect(),m=u[0].getBoundingClientRect(),p=v.left,h=v.top,g=m.left,f=m.top,b=Pn.value[e].id,y=Pn.value[l].id;dc.value.add(b),dc.value.add(y);const x=Pn.value[e];Pn.value[e]=Pn.value[l],Pn.value[l]=x,function(e){try{const l=JSON.stringify(e);Mn(bn,l),console.log("✓ 设备排序已保存:",e)}catch(l){console.error("保存设备排序失败:",l)}}(Pn.value.map(e=>e.id)),await k();const w=i.querySelectorAll(n),C=d(w[l]),M=d(w[e]);if(!C.length||!M.length)return;const I=C[0].getBoundingClientRect(),D=M[0].getBoundingClientRect(),V=p-I.left,A=h-I.top,S=g-D.left,L=f-D.top,P=(e,l)=>{e.forEach(e=>{Object.assign(e.style,l)})};P(C,{transform:`translate(${V}px, ${A}px)`,transition:"none"}),P(M,{transform:`translate(${S}px, ${L}px)`,transition:"none"}),i.getBoundingClientRect();const F="transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)";P(C,{transform:"translate(0, 0)",transition:F}),P(M,{transform:"translate(0, 0)",transition:F}),setTimeout(()=>{P(C,{transform:"",transition:""}),P(M,{transform:"",transition:""}),dc.value.delete(b),dc.value.delete(y)},350)}function pc(e){const l=Pn.value.findIndex(l=>l.id===e.id);l>0&&(mc(l,l-1),console.log(`✓ 设备 "${e.devname||e.device_name}" 上移到位置 ${l-1}`))}function hc(e){const l=Pn.value.findIndex(l=>l.id===e.id);l<Pn.value.length-1&&(mc(l,l+1),console.log(`✓ 设备 "${e.devname||e.device_name}" 下移到位置 ${l+1}`))}return a(()=>{Dn.value=function(){if(window.innerWidth<=768||In)return"card";const e=Cn(yn);return"list"===e||"card"===e?(console.log("✓ 加载保存的视图模式:",e),e):"list"}(),Co()}),(e,l)=>{var a,f;return y(),s("div",B,[i("div",{class:c(["content-area",{"list-layout":"list"===Dn.value}])},[i("div",R,[i("h2",$,n(o(xn)("devices.title")),1),i("div",_,[o(In)?d("",!0):(y(),s("div",O,[i("button",{class:c(["view-mode-btn",{active:"list"===Dn.value}]),onClick:l[0]||(l[0]=e=>Dn.value="list"),title:o(xn)("devices.listView")},[...l[88]||(l[88]=[t('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-ffaf74a6><line x1="8" y1="6" x2="21" y2="6" data-v-ffaf74a6></line><line x1="8" y1="12" x2="21" y2="12" data-v-ffaf74a6></line><line x1="8" y1="18" x2="21" y2="18" data-v-ffaf74a6></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-ffaf74a6></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-ffaf74a6></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-ffaf74a6></line></svg>',1)])],10,E),i("button",{class:c(["view-mode-btn",{active:"card"===Dn.value}]),onClick:l[1]||(l[1]=e=>Dn.value="card"),title:o(xn)("devices.cardView")},[...l[89]||(l[89]=[t('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-ffaf74a6><rect x="3" y="3" width="7" height="7" data-v-ffaf74a6></rect><rect x="14" y="3" width="7" height="7" data-v-ffaf74a6></rect><rect x="14" y="14" width="7" height="7" data-v-ffaf74a6></rect><rect x="3" y="14" width="7" height="7" data-v-ffaf74a6></rect></svg>',1)])],10,N)])),i("button",{class:"refresh-btn",onClick:Co,disabled:Fn.value,title:o(xn)("devices.refreshList")},[...l[90]||(l[90]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[i("path",{d:"M23 4v6h-6M1 20v-6h6"}),i("path",{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"})],-1)])],8,j),to.value.length>0?(y(),s("button",{key:1,class:"batch-volume-btn diablo-button",onClick:l[2]||(l[2]=e=>On.value=!0),title:o(xn)("devices.batchVolume")},[l[91]||(l[91]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"})],-1)),r(" "+n(o(xn)("devices.batchVolume"))+" ("+n(to.value.length)+") ",1)],8,H)):d("",!0),o(wn).canManageDevice?(y(),s("button",{key:2,class:"add-btn diablo-button",onClick:l[3]||(l[3]=e=>Bn.value=!0)},[l[92]||(l[92]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("path",{d:"M12 5v14M5 12h14"})],-1)),r(" "+n(o(In)?"":o(xn)("devices.addDevice")),1)])):d("",!0),o(Kn)&&o(wn).canManageDevice?(y(),s("button",{key:3,class:"scan-btn diablo-button",onClick:l[4]||(l[4]=e=>Nn.value=!0),title:o(xn)("devices.scanDevices")},[l[93]||(l[93]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("circle",{cx:"12",cy:"12",r:"3"}),i("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)),r(" "+n(o(xn)("devices.scanDevices")),1)],8,z)):d("",!0)])]),i("div",T,[l[95]||(l[95]=i("svg",{class:"search-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("circle",{cx:"11",cy:"11",r:"8"}),i("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})],-1)),u(i("input",{"onUpdate:modelValue":l[5]||(l[5]=e=>Vn.value=e),class:"search-input",placeholder:o(xn)("devices.searchPlaceholder")||"搜索设备名称或序列号...",type:"text"},null,8,q),[[v,Vn.value]]),Vn.value?(y(),s("button",{key:0,class:"search-clear",onClick:l[6]||(l[6]=e=>Vn.value="")},[...l[94]||(l[94]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),i("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])):d("",!0)]),i("div",G,[0!==Un.value.length||Fn.value?d("",!0):(y(),s("div",K,[l[96]||(l[96]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[i("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"}),i("path",{d:"M9 9h6M9 13h6M9 17h6"})],-1)),i("p",null,n(o(xn)("devices.noDevices")),1)])),"list"===Dn.value&&Un.value.length>0?(y(),s("div",W,[i("div",J,[i("div",X,[i("div",Q,[i("input",{type:"checkbox",checked:cc,onChange:tc},null,32)]),i("div",Y,n(o(xn)("devices.id")),1),i("div",Z,n(o(xn)("devices.deviceName")),1),i("div",ee,n(o(xn)("devices.serialNumber")),1),i("div",le,n(o(xn)("devices.volume")),1),i("div",ae,n(o(xn)("common.status")),1),i("div",se,n(o(xn)("devices.debugSound")),1),i("div",ie,n(o(xn)("devices.lastUpdate")),1),i("div",ne,n(o(xn)("devices.changeVolume")),1),i("div",oe,n(o(xn)("devices.changeName")),1),i("div",ce,n(o(xn)("devices.changeSerial")),1),i("div",te,n(o(xn)("common.delete")),1),i("div",de,n(o(xn)("common.actions")),1)]),(y(!0),s(m,null,p(Un.value,e=>(y(),s("div",{key:e.id,class:c(["device-row device-data-row",{offline:1!==e.status,playing:1===e.status,selected:nc(e.id),moving:rc(e)}]),onClick:l=>oc(e.id)},[i("div",ue,[i("input",{type:"checkbox",checked:nc(e.id),onChange:l=>oc(e.id),onClick:l[7]||(l[7]=h(()=>{},["stop"]))},null,40,ve)]),i("div",me,[i("span",pe,n(e.id),1)]),i("div",he,[i("span",ge,n(e.devname||e.device_name||e.name||o(xn)("devices.unnamedDevice")),1)]),i("div",fe,[i("span",be,n(e.device_seed||e.device_code||"-"),1)]),i("div",ye,[i("span",ke,n(void 0!==e.vol&&-1!==e.vol?e.vol:void 0!==e.volume?e.volume:o(xn)("devices.volumeNotSet")),1)]),i("div",xe,[i("span",we,[1===e.status?(y(),s("span",Ce,[l[97]||(l[97]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.online")),1)])):2===e.status?(y(),s("span",Me,[l[98]||(l[98]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.playing")),1)])):0===e.status?(y(),s("span",Ie,[l[99]||(l[99]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.offline")),1)])):-1===e.status?(y(),s("span",De,[l[100]||(l[100]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.neverOnline")),1)])):-2===e.status?(y(),s("span",Ve,[l[101]||(l[101]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.expiredDisabled")),1)])):(y(),s("span",Ae,[l[102]||(l[102]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.unknown")),1)]))])]),i("div",Se,[i("button",{class:c(["debug-sound-btn",{open:1===e.kind,close:2===e.kind}]),onClick:h(l=>Zo(e),["stop"]),title:1===e.kind?o(xn)("devices.closeDebugSound"):o(xn)("devices.openDebugSound")},n(1===e.kind?o(xn)("devices.closeDebugSound"):2===e.kind?o(xn)("devices.openDebugSound"):o(xn)("devices.unknownStatus")),11,Le)]),i("div",Pe,[i("span",Fe,n(e.updatetime||"-"),1)]),i("div",Ue,[i("button",{class:"action-btn volume-btn",onClick:h(l=>ac(e),["stop"]),title:o(xn)("devices.adjustVolume")},[...l[103]||(l[103]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"})],-1)])],8,Be)]),i("div",Re,[i("button",{class:"action-btn rename-btn",onClick:h(l=>Qo(e),["stop"]),title:o(xn)("devices.changeName")},[...l[104]||(l[104]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),i("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,$e)]),i("div",_e,[i("button",{class:"action-btn",onClick:h(l=>Jo(e),["stop"]),title:o(xn)("devices.changeSerial")},[...l[105]||(l[105]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),i("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,Oe)]),i("div",Ee,[o(wn).canManageDevice?(y(),s("button",{key:0,class:"action-btn delete-btn",onClick:h(l=>lc(e),["stop"]),title:o(xn)("devices.deleteDevice")},[...l[106]||(l[106]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M3 6h18M19 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)])],8,Ne)):d("",!0)]),i("div",je,[i("button",{class:"sort-btn",disabled:uc(e),onClick:h(l=>pc(e),["stop"]),title:o(xn)("common.moveUp")},[...l[107]||(l[107]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M18 15l-6-6-6 6"})],-1)])],8,He),i("button",{class:"sort-btn",disabled:vc(e),onClick:h(l=>hc(e),["stop"]),title:o(xn)("common.moveDown")},[...l[108]||(l[108]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M6 9l6 6 6-6"})],-1)])],8,ze)])],10,re))),128))])])):d("",!0),"card"===Dn.value&&Un.value.length>0?(y(),s("div",Te,[i("div",qe,[(y(!0),s(m,null,p(Un.value,e=>(y(),s("div",{key:e.id,class:c(["device-card",{offline:1!==e.status,playing:1===e.status,selected:nc(e.id),moving:rc(e)}]),onClick:l=>oc(e.id)},[i("div",Ke,[i("div",We,[i("input",{type:"checkbox",checked:nc(e.id),onChange:l=>oc(e.id),onClick:l[8]||(l[8]=h(()=>{},["stop"]))},null,40,Je)]),i("div",Xe,[i("button",{class:"sort-btn",disabled:uc(e),onClick:h(l=>pc(e),["stop"]),title:o(xn)("common.moveUp")},[...l[109]||(l[109]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M18 15l-6-6-6 6"})],-1)])],8,Qe),i("button",{class:"sort-btn",disabled:vc(e),onClick:h(l=>hc(e),["stop"]),title:o(xn)("common.moveDown")},[...l[110]||(l[110]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M6 9l6 6 6-6"})],-1)])],8,Ye)])]),i("div",Ze,[i("div",el,[i("span",ll,n(o(xn)("devices.id"))+":",1),i("span",al,n(e.id),1)]),i("div",sl,[i("span",il,n(o(xn)("devices.deviceName"))+":",1),i("span",nl,n(e.devname||e.device_name||e.name||o(xn)("devices.unnamedDevice")),1)]),i("div",ol,[i("span",cl,n(o(xn)("devices.serialNumber"))+":",1),i("span",{class:c(["info-value serial-text",{"serial-highlight":o(In)}])},n(e.device_seed||e.device_code||"-"),3)]),i("div",tl,[i("span",dl,n(o(xn)("devices.volume"))+":",1),i("span",rl,n(void 0!==e.vol&&-1!==e.vol?e.vol:void 0!==e.volume?e.volume:o(xn)("devices.volumeNotSet")),1)]),i("div",ul,[i("span",vl,n(o(xn)("common.status"))+":",1),i("span",ml,[1===e.status?(y(),s("span",pl,[l[111]||(l[111]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.online")),1)])):2===e.status?(y(),s("span",hl,[l[112]||(l[112]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.playing")),1)])):0===e.status?(y(),s("span",gl,[l[113]||(l[113]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.offline")),1)])):-1===e.status?(y(),s("span",fl,[l[114]||(l[114]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.neverOnline")),1)])):-2===e.status?(y(),s("span",bl,[l[115]||(l[115]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.expiredDisabled")),1)])):(y(),s("span",yl,[l[116]||(l[116]=i("span",{class:"status-indicator"},null,-1)),r(" "+n(o(xn)("devices.unknown")),1)]))])])]),i("div",kl,[i("button",{class:"card-action-btn",onClick:h(l=>Zo(e),["stop"]),title:1===e.kind?o(xn)("devices.closeDebugSound"):o(xn)("devices.openDebugSound")},[...l[117]||(l[117]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,xl),i("button",{class:"card-action-btn",onClick:h(l=>ac(e),["stop"]),title:o(xn)("devices.adjustVolume")},[...l[118]||(l[118]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"})],-1)])],8,wl),i("button",{class:"card-action-btn",onClick:h(l=>Qo(e),["stop"]),title:o(xn)("devices.changeName")},[...l[119]||(l[119]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),i("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,Cl),i("button",{class:"card-action-btn",onClick:h(l=>Jo(e),["stop"]),title:o(xn)("devices.changeSerial")},[...l[120]||(l[120]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),i("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,Ml),o(wn).canManageDevice?(y(),s("button",{key:0,class:"card-action-btn delete-btn",onClick:h(l=>lc(e),["stop"]),title:o(xn)("devices.deleteDevice")},[...l[121]||(l[121]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[i("path",{d:"M3 6h18M19 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)])],8,Il)):d("",!0)])],10,Ge))),128))])])):d("",!0),Fn.value?(y(),s("div",Dl,[...l[122]||(l[122]=[i("div",{class:"loading-spinner"},null,-1)])])):d("",!0)])],2),Bn.value?(y(),s("div",{key:0,class:"dialog-overlay",onClick:l[15]||(l[15]=e=>Bn.value=!1)},[i("div",{class:"dialog",onClick:l[14]||(l[14]=h(()=>{},["stop"]))},[i("div",Vl,[i("h3",null,n(o(xn)("devices.addDeviceTitle")),1),i("button",{class:"close-btn",onClick:l[9]||(l[9]=e=>Bn.value=!1)},[...l[123]||(l[123]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),i("div",Al,[i("div",Sl,[i("label",null,n(o(xn)("devices.deviceName"))+" *",1),u(i("input",{"onUpdate:modelValue":l[10]||(l[10]=e=>ro.value.name=e),type:"text",placeholder:o(xn)("devices.deviceNamePlaceholder"),class:c({error:fo.value.name})},null,10,Ll),[[v,ro.value.name]]),fo.value.name?(y(),s("span",Pl,n(fo.value.name),1)):d("",!0)]),i("div",Fl,[i("label",null,n(o(xn)("devices.deviceSerialRequired"))+" *",1),u(i("input",{"onUpdate:modelValue":l[11]||(l[11]=e=>ro.value.serial=e),type:"text",placeholder:o(xn)("devices.deviceSerialPlaceholder"),class:c({error:fo.value.serial})},null,10,Ul),[[v,ro.value.serial]]),fo.value.serial?(y(),s("span",Bl,n(fo.value.serial),1)):d("",!0)]),i("div",Rl,[i("label",null,n(o(xn)("devices.deviceKeyRequired"))+" *",1),u(i("input",{"onUpdate:modelValue":l[12]||(l[12]=e=>ro.value.key=e),type:"text",placeholder:o(xn)("devices.deviceKeyPlaceholder"),class:c({error:fo.value.key})},null,10,$l),[[v,ro.value.key]]),fo.value.key?(y(),s("span",_l,n(fo.value.key),1)):d("",!0),i("p",Ol,[i("span",El,n(o(xn)("devices.deviceKeyHint")),1)])])]),i("div",Nl,[i("button",{class:"cancel-btn diablo-button-secondary",onClick:l[13]||(l[13]=e=>Bn.value=!1)},n(o(xn)("common.cancel")),1),i("button",{class:"confirm-btn diablo-button",onClick:jo,disabled:xo.value},n(xo.value?o(xn)("devices.adding"):o(xn)("common.add")),9,jl)])])])):d("",!0),Rn.value?(y(),s("div",{key:1,class:"dialog-overlay",onClick:l[20]||(l[20]=e=>Rn.value=!1)},[i("div",{class:"dialog",onClick:l[19]||(l[19]=h(()=>{},["stop"]))},[i("div",Hl,[i("h3",null,n(o(xn)("devices.renameTitle")),1),i("button",{class:"close-btn",onClick:l[16]||(l[16]=e=>Rn.value=!1)},[...l[124]||(l[124]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),i("div",zl,[i("div",Tl,[i("label",null,n(o(xn)("devices.deviceName"))+" *",1),u(i("input",{"onUpdate:modelValue":l[17]||(l[17]=e=>vo.value.name=e),type:"text",placeholder:o(xn)("devices.newDeviceNamePlaceholder"),class:c({error:yo.value.name})},null,10,ql),[[v,vo.value.name]]),yo.value.name?(y(),s("span",Gl,n(yo.value.name),1)):d("",!0)])]),i("div",Kl,[i("button",{class:"cancel-btn diablo-button-secondary",onClick:l[18]||(l[18]=e=>Rn.value=!1)},n(o(xn)("common.cancel")),1),i("button",{class:"confirm-btn diablo-button",onClick:Yo,disabled:xo.value},n(xo.value?o(xn)("devices.saving"):o(xn)("common.save")),9,Wl)])])])):d("",!0),En.value?(y(),s("div",{key:2,class:"dialog-overlay",onClick:l[26]||(l[26]=e=>En.value=!1)},[i("div",{class:"dialog",onClick:l[25]||(l[25]=h(()=>{},["stop"]))},[i("div",Jl,[i("h3",null,n(o(xn)("devices.editSerialTitle")),1),i("button",{class:"close-btn",onClick:l[21]||(l[21]=e=>En.value=!1)},[...l[125]||(l[125]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),i("div",Xl,[i("div",Ql,[i("label",null,n(o(xn)("devices.currentSerial")),1),u(i("input",{"onUpdate:modelValue":l[22]||(l[22]=e=>mo.value.currentSerial=e),type:"text",placeholder:o(xn)("devices.currentSerialPlaceholder"),disabled:""},null,8,Yl),[[v,mo.value.currentSerial]])]),i("div",Zl,[i("label",null,n(o(xn)("devices.newSerial"))+" *",1),u(i("input",{"onUpdate:modelValue":l[23]||(l[23]=e=>mo.value.newsn=e),type:"text",placeholder:o(xn)("devices.newSerialPlaceholder"),class:c({error:ko.value.newsn})},null,10,ea),[[v,mo.value.newsn]]),ko.value.newsn?(y(),s("span",la,n(ko.value.newsn),1)):d("",!0),i("p",aa,n(o(xn)("devices.serialLengthHint")),1)])]),i("div",sa,[i("button",{class:"cancel-btn diablo-button-secondary",onClick:l[24]||(l[24]=e=>En.value=!1)},n(o(xn)("common.cancel")),1),i("button",{class:"confirm-btn diablo-button",onClick:Xo,disabled:xo.value},n(xo.value?o(xn)("devices.adjusting"):o(xn)("common.save")),9,ia)])])])):d("",!0),$n.value?(y(),s("div",{key:3,class:"dialog-overlay",onClick:l[34]||(l[34]=e=>$n.value=!1)},[i("div",{class:"dialog",onClick:l[33]||(l[33]=h(()=>{},["stop"]))},[i("div",na,[i("h3",null,n(o(xn)("devices.editDeviceTitle")),1),i("button",{class:"close-btn",onClick:l[27]||(l[27]=e=>$n.value=!1)},[...l[126]||(l[126]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),i("div",oa,[i("div",ca,[i("label",null,n(o(xn)("devices.deviceName"))+" *",1),u(i("input",{"onUpdate:modelValue":l[28]||(l[28]=e=>uo.value.name=e),type:"text",placeholder:o(xn)("devices.deviceNamePlaceholder"),class:c({error:bo.value.name})},null,10,ta),[[v,uo.value.name]]),bo.value.name?(y(),s("span",da,n(bo.value.name),1)):d("",!0)]),i("div",ra,[i("label",null,n(o(xn)("devices.macAddress"))+" *",1),u(i("input",{"onUpdate:modelValue":l[29]||(l[29]=e=>uo.value.mac=e),type:"text",placeholder:o(xn)("devices.macAddressPlaceholder"),class:c({error:bo.value.mac})},null,10,ua),[[v,uo.value.mac]]),bo.value.mac?(y(),s("span",va,n(bo.value.mac),1)):d("",!0)]),i("div",ma,[i("label",null,n(o(xn)("devices.ipAddress")),1),u(i("input",{"onUpdate:modelValue":l[30]||(l[30]=e=>uo.value.ip=e),type:"text",placeholder:o(xn)("devices.ipAddressPlaceholder"),class:c({error:bo.value.ip})},null,10,pa),[[v,uo.value.ip]]),bo.value.ip?(y(),s("span",ha,n(bo.value.ip),1)):d("",!0)]),i("div",ga,[i("label",null,n(o(xn)("devices.port")),1),u(i("input",{"onUpdate:modelValue":l[31]||(l[31]=e=>uo.value.port=e),type:"number",placeholder:o(xn)("devices.portPlaceholder"),min:"1",max:"65535"},null,8,fa),[[v,uo.value.port,void 0,{number:!0}]])])]),i("div",ba,[i("button",{class:"cancel-btn diablo-button-secondary",onClick:l[32]||(l[32]=e=>$n.value=!1)},n(o(xn)("common.cancel")),1),i("button",{class:"confirm-btn diablo-button",onClick:ec,disabled:xo.value},n(xo.value?o(xn)("devices.saving"):o(xn)("common.save")),9,ya)])])])):d("",!0),_n.value?(y(),s("div",{key:4,class:"dialog-overlay",onClick:l[40]||(l[40]=e=>_n.value=!1)},[i("div",{class:"dialog volume-dialog",onClick:l[39]||(l[39]=h(()=>{},["stop"]))},[i("div",ka,[i("h3",null,n(o(xn)("devices.adjustVolumeTitle"))+" - "+n((null==(a=po.value)?void 0:a.devname)||(null==(f=po.value)?void 0:f.device_name)),1),i("button",{class:"close-btn",onClick:l[35]||(l[35]=e=>_n.value=!1)},[...l[127]||(l[127]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),i("div",xa,[i("div",wa,[i("div",Ca,[i("span",Ma,n(ho.value),1),i("span",Ia,n(o(xn)("devices.volumeRange")),1)]),u(i("input",{"onUpdate:modelValue":l[36]||(l[36]=e=>ho.value=e),type:"range",min:"1",max:"63",step:"1",class:"volume-slider"},null,512),[[v,ho.value,void 0,{number:!0}]]),l[128]||(l[128]=i("div",{class:"volume-labels"},[i("span",null,"1"),i("span",null,"32"),i("span",null,"63")],-1)),i("div",Da,[i("label",null,n(o(xn)("devices.preciseSetting")),1),u(i("input",{"onUpdate:modelValue":l[37]||(l[37]=e=>ho.value=e),type:"number",min:"1",max:"63",class:"volume-number-input"},null,512),[[v,ho.value,void 0,{number:!0}]])])])]),i("div",Va,[i("button",{class:"cancel-btn diablo-button-secondary",onClick:l[38]||(l[38]=e=>_n.value=!1)},n(o(xn)("common.cancel")),1),i("button",{class:"confirm-btn diablo-button",onClick:sc,disabled:xo.value},n(xo.value?o(xn)("devices.adjusting"):o(xn)("devices.confirmButton")),9,Aa)])])])):d("",!0),On.value?(y(),s("div",{key:5,class:"dialog-overlay",onClick:l[46]||(l[46]=e=>On.value=!1)},[i("div",{class:"dialog batch-volume-dialog",onClick:l[45]||(l[45]=h(()=>{},["stop"]))},[i("div",Sa,[i("h3",null,n(o(xn)("devices.batchAdjustVolumeTitle")),1),i("button",{class:"close-btn",onClick:l[41]||(l[41]=e=>On.value=!1)},[...l[129]||(l[129]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),i("div",La,[i("div",Pa,[i("span",Fa,n(o(xn)("devices.selectedDevices")),1),i("span",Ua,n(to.value.length)+" "+n(o(xn)("devices.devicesCount")),1)]),i("div",Ba,[i("div",Ra,[i("span",$a,n(go.value),1),i("span",_a,n(o(xn)("devices.volumeRange")),1)]),u(i("input",{"onUpdate:modelValue":l[42]||(l[42]=e=>go.value=e),type:"range",min:"1",max:"63",step:"1",class:"volume-slider"},null,512),[[v,go.value,void 0,{number:!0}]]),l[130]||(l[130]=i("div",{class:"volume-labels"},[i("span",null,"1"),i("span",null,"32"),i("span",null,"63")],-1)),i("div",Oa,[i("label",null,n(o(xn)("devices.preciseSetting")),1),u(i("input",{"onUpdate:modelValue":l[43]||(l[43]=e=>go.value=e),type:"number",min:"1",max:"63",class:"volume-number-input"},null,512),[[v,go.value,void 0,{number:!0}]])])])]),i("div",Ea,[i("button",{class:"cancel-btn diablo-button-secondary",onClick:l[44]||(l[44]=e=>On.value=!1)},n(o(xn)("common.cancel")),1),i("button",{class:"confirm-btn diablo-button",onClick:ic,disabled:xo.value},n(xo.value?o(xn)("devices.adjusting"):`${o(xn)("devices.confirmAdjust")} ${to.value.length} ${o(xn)("devices.devicesCount")}`),9,Na)])])])):d("",!0),Nn.value?(y(),s("div",{key:6,class:"dialog-overlay",onClick:l[52]||(l[52]=e=>Nn.value=!1)},[i("div",{class:"dialog scan-dialog",onClick:l[51]||(l[51]=h(()=>{},["stop"]))},[i("div",ja,[l[131]||(l[131]=i("div",{class:"scan-header-icon"},[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("circle",{cx:"12",cy:"12",r:"3"}),i("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)),i("h3",null,n(o(xn)("devices.deviceScan")),1),i("button",{class:"close-btn",onClick:l[47]||(l[47]=e=>Nn.value=!1)},"×")]),i("div",Ha,[i("div",za,[i("p",Ta,n(o(xn)("devices.scanHint")),1),i("button",{class:"diablo-button scan-action-btn",onClick:Mo,disabled:o(qn)},[o(qn)?(y(),s("svg",Ga,[...l[132]||(l[132]=[i("path",{d:"M23 4v6h-6M1 20v-6h6"},null,-1),i("path",{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"},null,-1)])])):d("",!0),r(" "+n(o(qn)?o(xn)("devices.scanning"):o(xn)("devices.scanButton")),1)],8,qa)]),o(Gn)?(y(),s("div",Ka,[l[133]||(l[133]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[i("circle",{cx:"12",cy:"12",r:"10"}),i("line",{x1:"15",y1:"9",x2:"9",y2:"15"}),i("line",{x1:"9",y1:"9",x2:"15",y2:"15"})],-1)),r(" "+n(o(Gn)),1)])):d("",!0),i("div",Wa,[i("div",Ja,[o(Tn).length>0?(y(),s("div",Xa,[i("div",Qa,[i("h4",null,[r(n(o(xn)("devices.scannedDevices"))+" ",1),i("span",Ya,n(o(Tn).length),1)]),i("div",Za,[i("button",{class:c(["scan-sort-btn",{active:"ip"===so.value}]),onClick:l[48]||(l[48]=e=>no("ip"))},[l[134]||(l[134]=r(" IP ",-1)),i("span",es,n("ip"===so.value?io.value?"↑":"↓":""),1)],2),i("button",{class:c(["scan-sort-btn",{active:"seed"===so.value}]),onClick:l[49]||(l[49]=e=>no("seed"))},[l[135]||(l[135]=r(" SEED ",-1)),i("span",ls,n("seed"===so.value?io.value?"↑":"↓":""),1)],2)])]),i("div",as,[i("div",ss,[l[136]||(l[136]=i("span",{class:"col-idx"},"#",-1)),l[137]||(l[137]=i("span",{class:"col-ip"},"IP",-1)),l[138]||(l[138]=i("span",{class:"col-seed"},"SEED",-1)),i("span",is,n(o(xn)("devices.mediaServer")),1),i("span",ns,n(o(xn)("devices.mediaPort")),1),i("span",os,n(o(xn)("devices.autoIP")),1),i("span",cs,n(o(xn)("devices.warmMode")),1),i("span",ts,n(o(xn)("devices.dns")),1),l[139]||(l[139]=i("span",{class:"col-action"},null,-1))]),i("div",ds,[(y(!0),s(m,null,p(co.value,(e,a)=>{return y(),s("div",{key:e.seed,class:c(["scan-table-row",{selected:Hn.value===e.seed}]),onClick:l=>function(e){Hn.value=e.seed}(e)},[i("span",us,n(a+1),1),i("span",vs,n(e.ip),1),i("span",ms,n(e.seed),1),i("span",ps,n(e.mediaIP),1),i("span",hs,n(e.mediaPort),1),i("span",gs,[i("span",{class:c(["tag",e.autoIP?"tag-on":"tag-off"])},n(e.autoIP?"ON":"OFF"),3)]),i("span",fs,[i("span",{class:c(["tag",e.warmMode?"tag-on":"tag-off"])},n(e.warmMode?"ON":"OFF"),3)]),i("span",bs,n(e.dns),1),i("span",ys,[(t=e.seed,Pn.value.some(e=>e.device_seed===t)?d("",!0):(y(),s("button",{key:0,class:"scan-add-btn",onClick:h(l=>async function(e){try{const l=e.seed,a=`${l}|${Wo(l)}`,s=await M({name:e.ip||l.substring(0,8),sn:a});s.res?(Sn(xn("devices.addDeviceSuccess"),"success"),await Co()):Sn(s.info||xn("devices.addDeviceFailed"),"error")}catch(l){Sn(l.message||xn("devices.addDeviceFailed"),"error")}}(e),["stop"]),title:o(xn)("devices.addDevice")},[...l[140]||(l[140]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"12",height:"12"},[i("path",{d:"M12 5v14M5 12h14"})],-1)])],8,ks))),i("button",{class:"config-btn",onClick:h(l=>function(e){ao.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||"8.8.8.8"},jn.value=!0}(e),["stop"])},[...l[141]||(l[141]=[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"12",height:"12"},[i("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"}),i("circle",{cx:"12",cy:"12",r:"3"})],-1)])],8,xs)])],10,rs);var t}),128))])])])):!o(qn)&&zn.value?(y(),s("div",ws,[l[142]||(l[142]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",width:"32",height:"32"},[i("circle",{cx:"11",cy:"11",r:"8"}),i("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})],-1)),i("p",null,n(o(xn)("devices.noDeviceFound")),1)])):d("",!0)]),i("div",Cs,[i("div",Ms,[i("h4",null,n(o(xn)("devices.console")),1),i("button",{class:"console-clear-btn",onClick:l[50]||(l[50]=(...e)=>o(eo)&&o(eo)(...e))},n(o(xn)("devices.clearConsole")),1)]),i("div",Is,[0===o(Wn).length?(y(),s("div",Ds,n(o(xn)("devices.consoleEmpty")),1)):d("",!0),(y(!0),s(m,null,p(o(Wn),(e,l)=>(y(),s("div",{key:l,class:c(["console-line","log-"+e.type])},n(e.msg),3))),128))],512)])])])])])):d("",!0),jn.value?(y(),s("div",{key:7,class:"dialog-overlay",onClick:l[65]||(l[65]=e=>jn.value=!1)},[i("div",{class:"dialog scan-config-dialog",onClick:l[64]||(l[64]=h(()=>{},["stop"]))},[i("div",Vs,[l[143]||(l[143]=i("div",{class:"scan-header-icon config-icon"},[i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[i("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"}),i("circle",{cx:"12",cy:"12",r:"3"})])],-1)),i("h3",null,n(o(xn)("devices.scanConfigTitle")),1),i("button",{class:"close-btn",onClick:l[53]||(l[53]=e=>jn.value=!1)},"×")]),i("div",As,[i("div",Ss,[i("span",Ls,n(o(xn)("devices.seed")),1),i("span",Ps,n(ao.value.seed),1)]),i("div",Fs,[i("button",{class:"diablo-button test-comm-btn",onClick:Io,disabled:lo.value},n(lo.value?o(xn)("devices.scanning"):o(xn)("devices.testCommBtn")),9,Us)]),i("div",Bs,[i("label",Rs,[i("span",null,n(o(xn)("devices.autoIP")),1),i("span",{class:c(["toggle-switch",{on:ao.value.autoIP}]),onClick:l[54]||(l[54]=e=>ao.value.autoIP=!ao.value.autoIP)},[...l[144]||(l[144]=[i("span",{class:"toggle-knob"},null,-1)])],2)])]),ao.value.autoIP?d("",!0):(y(),s("div",$s,[i("div",_s,[i("label",null,n(o(xn)("devices.deviceIP")),1),u(i("input",{class:c(["form-input",{"input-error":Do.value.deviceIP}]),"onUpdate:modelValue":l[55]||(l[55]=e=>ao.value.deviceIP=e),placeholder:"192.168.1.100"},null,2),[[v,ao.value.deviceIP]]),Do.value.deviceIP?(y(),s("span",Os,n(Do.value.deviceIP),1)):d("",!0)]),i("div",Es,[i("label",null,n(o(xn)("devices.subnetMask")),1),u(i("input",{class:c(["form-input",{"input-error":Do.value.mask}]),"onUpdate:modelValue":l[56]||(l[56]=e=>ao.value.mask=e),placeholder:"255.255.255.0"},null,2),[[v,ao.value.mask]]),Do.value.mask?(y(),s("span",Ns,n(Do.value.mask),1)):d("",!0)]),i("div",js,[i("label",null,n(o(xn)("devices.gateway")),1),u(i("input",{class:c(["form-input",{"input-error":Do.value.gateway}]),"onUpdate:modelValue":l[57]||(l[57]=e=>ao.value.gateway=e),placeholder:"192.168.1.1"},null,2),[[v,ao.value.gateway]]),Do.value.gateway?(y(),s("span",Hs,n(Do.value.gateway),1)):d("",!0)])])),i("div",zs,[i("div",Ts,[i("label",null,n(o(xn)("devices.mediaServer")),1),u(i("input",{class:c(["form-input",{"input-error":Do.value.mediaIP}]),"onUpdate:modelValue":l[58]||(l[58]=e=>ao.value.mediaIP=e),placeholder:"192.168.1.100"},null,2),[[v,ao.value.mediaIP]]),Do.value.mediaIP?(y(),s("span",qs,n(Do.value.mediaIP),1)):d("",!0)]),i("div",Gs,[i("label",null,n(o(xn)("devices.mediaPort")),1),u(i("input",{class:c(["form-input",{"input-error":Do.value.mediaPort}]),"onUpdate:modelValue":l[59]||(l[59]=e=>ao.value.mediaPort=e),type:"number",min:"1",max:"65535"},null,2),[[v,ao.value.mediaPort,void 0,{number:!0}]]),Do.value.mediaPort?(y(),s("span",Ks,n(Do.value.mediaPort),1)):d("",!0)])]),i("div",Ws,[i("div",Js,[i("label",null,n(o(xn)("devices.dns")),1),u(i("input",{class:c(["form-input",{"input-error":Do.value.dns}]),"onUpdate:modelValue":l[60]||(l[60]=e=>ao.value.dns=e),placeholder:o(xn)("devices.dnsPlaceholder")},null,10,Xs),[[v,ao.value.dns]]),Do.value.dns?(y(),s("span",Qs,n(Do.value.dns),1)):d("",!0)]),i("div",Ys,[i("label",Zs,[i("span",null,n(o(xn)("devices.warmMode")),1),i("span",{class:c(["toggle-switch",{on:ao.value.warmMode}]),onClick:l[61]||(l[61]=e=>ao.value.warmMode=!ao.value.warmMode)},[...l[145]||(l[145]=[i("span",{class:"toggle-knob"},null,-1)])],2)])])]),i("div",ei,[i("div",li,[i("h4",null,n(o(xn)("devices.console")),1),i("button",{class:"console-clear-btn",onClick:l[62]||(l[62]=(...e)=>o(eo)&&o(eo)(...e))},n(o(xn)("devices.clearConsole")),1)]),i("div",ai,[0===o(Wn).length?(y(),s("div",si,n(o(xn)("devices.consoleEmpty")),1)):d("",!0),(y(!0),s(m,null,p(o(Wn),(e,l)=>(y(),s("div",{key:l,class:c(["console-line","log-"+e.type])},n(e.msg),3))),128))],512)])]),i("div",ii,[i("button",{class:"cancel-btn diablo-button-secondary",onClick:l[63]||(l[63]=e=>jn.value=!1)},n(o(xn)("common.cancel")),1),i("button",{class:"advanced-btn diablo-button-secondary",onClick:_o},n(o(xn)("devices.advanced")),1),i("button",{class:"confirm-btn diablo-button",onClick:Ao},n(o(xn)("devices.applyConfig")),1)])])])):d("",!0),So.value?(y(),s("div",{key:8,class:"dialog-overlay",onClick:l[87]||(l[87]=e=>So.value=!1)},[i("div",{class:"dialog amixer-dialog",onClick:l[86]||(l[86]=h(()=>{},["stop"]))},[i("div",ni,[i("h3",null,n(o(xn)("devices.soundCard")),1),i("button",{class:"close-btn",onClick:l[66]||(l[66]=e=>So.value=!1)},"×")]),i("div",oi,[i("div",ci,[i("span",ti,n(Lo.value),1),i("button",{class:"diablo-button amixer-get-btn",onClick:Oo,disabled:Po.value},n(Po.value?o(xn)("devices.amixerGetting"):o(xn)("devices.getAmixerStatus")),9,di)]),i("div",ri,[i("div",ui,[i("h4",vi,n(o(xn)("devices.amixerGroupDecode")),1),i("div",mi,[i("div",pi,[i("span",hi,n(o(xn)("devices.amixerDAC")),1),u(i("input",{type:"range",class:"amixer-slider","onUpdate:modelValue":l[67]||(l[67]=e=>Fo.value.dacVolume=e),min:"0",max:"63"},null,512),[[v,Fo.value.dacVolume,void 0,{number:!0}]]),i("span",gi,n(Fo.value.dacVolume),1),i("button",{class:"amixer-apply-btn",onClick:l[68]||(l[68]=e=>Eo(1,Fo.value.dacVolume))},n(o(xn)("devices.amixerApply")),1)]),i("div",fi,[i("span",bi,n(o(xn)("devices.amixerHeadphoneVol")),1),u(i("input",{type:"range",class:"amixer-slider","onUpdate:modelValue":l[69]||(l[69]=e=>Fo.value.hpVolume=e),min:"0",max:"63"},null,512),[[v,Fo.value.hpVolume,void 0,{number:!0}]]),i("span",yi,n(Fo.value.hpVolume),1),i("button",{class:"amixer-apply-btn",onClick:l[70]||(l[70]=e=>Eo(2,Fo.value.hpVolume))},n(o(xn)("devices.amixerApply")),1)]),i("div",ki,[i("span",xi,n(o(xn)("devices.amixerHeadphoneSwitch")),1),u(i("select",{class:"amixer-select","onUpdate:modelValue":l[71]||(l[71]=e=>Fo.value.hpSwitch=e)},[i("option",wi,n(o(xn)("devices.amixerOff")),1),i("option",Ci,n(o(xn)("devices.amixerOn")),1)],512),[[g,Fo.value.hpSwitch,void 0,{number:!0}]]),i("button",{class:"amixer-apply-btn",onClick:l[72]||(l[72]=e=>Eo(3,Fo.value.hpSwitch))},n(o(xn)("devices.amixerApply")),1)]),i("div",Mi,[i("span",Ii,n(o(xn)("devices.amixerHeadphoneRoute")),1),u(i("select",{class:"amixer-select","onUpdate:modelValue":l[73]||(l[73]=e=>Fo.value.hpRoute=e)},[i("option",Di,n(o(xn)("devices.amixerRouteDAC")),1),i("option",Vi,n(o(xn)("devices.amixerRouteMixer")),1)],512),[[g,Fo.value.hpRoute,void 0,{number:!0}]]),i("button",{class:"amixer-apply-btn",onClick:l[74]||(l[74]=e=>Eo(25,Fo.value.hpRoute))},n(o(xn)("devices.amixerApply")),1)])])]),i("div",Ai,[i("h4",Si,n(o(xn)("devices.amixerGroupGain")),1),i("div",Li,[i("div",Pi,[i("span",Fi,n(o(xn)("devices.amixerLineIn")),1),u(i("input",{type:"range",class:"amixer-slider","onUpdate:modelValue":l[75]||(l[75]=e=>Fo.value.lineInVolume=e),min:"0",max:"7"},null,512),[[v,Fo.value.lineInVolume,void 0,{number:!0}]]),i("span",Ui,n(Fo.value.lineInVolume),1),i("button",{class:"amixer-apply-btn",onClick:l[76]||(l[76]=e=>Eo(4,Fo.value.lineInVolume))},n(o(xn)("devices.amixerApply")),1)]),i("div",Bi,[i("span",Ri,n(o(xn)("devices.amixerFMIn")),1),u(i("input",{type:"range",class:"amixer-slider","onUpdate:modelValue":l[77]||(l[77]=e=>Fo.value.fmInVolume=e),min:"0",max:"7"},null,512),[[v,Fo.value.fmInVolume,void 0,{number:!0}]]),i("span",$i,n(Fo.value.fmInVolume),1),i("button",{class:"amixer-apply-btn",onClick:l[78]||(l[78]=e=>Eo(5,Fo.value.fmInVolume))},n(o(xn)("devices.amixerApply")),1)]),i("div",_i,[i("span",Oi,n(o(xn)("devices.amixerMicIn")),1),u(i("input",{type:"range",class:"amixer-slider","onUpdate:modelValue":l[79]||(l[79]=e=>Fo.value.micInVolume=e),min:"0",max:"7"},null,512),[[v,Fo.value.micInVolume,void 0,{number:!0}]]),i("span",Ei,n(Fo.value.micInVolume),1),i("button",{class:"amixer-apply-btn",onClick:l[80]||(l[80]=e=>Eo(6,Fo.value.micInVolume))},n(o(xn)("devices.amixerApply")),1)]),i("div",Ni,[i("span",ji,n(o(xn)("devices.amixerMicBoost")),1),u(i("input",{type:"range",class:"amixer-slider","onUpdate:modelValue":l[81]||(l[81]=e=>Fo.value.micBoost=e),min:"0",max:"7"},null,512),[[v,Fo.value.micBoost,void 0,{number:!0}]]),i("span",Hi,n(Fo.value.micBoost),1),i("button",{class:"amixer-apply-btn",onClick:l[82]||(l[82]=e=>Eo(7,Fo.value.micBoost))},n(o(xn)("devices.amixerApply")),1)]),i("div",zi,[i("span",Ti,n(o(xn)("devices.amixerADCCapture")),1),u(i("input",{type:"range",class:"amixer-slider","onUpdate:modelValue":l[83]||(l[83]=e=>Fo.value.adcCapture=e),min:"0",max:"7"},null,512),[[v,Fo.value.adcCapture,void 0,{number:!0}]]),i("span",qi,n(Fo.value.adcCapture),1),i("button",{class:"amixer-apply-btn",onClick:l[84]||(l[84]=e=>Eo(8,Fo.value.adcCapture))},n(o(xn)("devices.amixerApply")),1)])])]),i("div",Gi,[i("h4",Ki,n(o(xn)("devices.amixerGroupCapture")),1),i("div",Wi,[(y(!0),s(m,null,p(Uo.value,e=>(y(),s("div",{class:"amixer-row switch-row",key:e.numid},[i("span",Ji,n(e.label),1),u(i("select",{class:"amixer-select","onUpdate:modelValue":l=>Fo.value[e.key]=l},[i("option",Qi,n(o(xn)("devices.amixerOff")),1),i("option",Yi,n(o(xn)("devices.amixerOn")),1)],8,Xi),[[g,Fo.value[e.key],void 0,{number:!0}]]),i("button",{class:"amixer-apply-btn",onClick:l=>Eo(e.numid,Fo.value[e.key])},n(o(xn)("devices.amixerApply")),9,Zi)]))),128))])]),i("div",en,[i("h4",ln,n(o(xn)("devices.amixerGroupLeft")),1),i("div",an,[(y(!0),s(m,null,p(Bo.value,e=>(y(),s("div",{class:"amixer-row switch-row",key:e.numid},[i("span",sn,n(e.label),1),u(i("select",{class:"amixer-select","onUpdate:modelValue":l=>Fo.value[e.key]=l},[i("option",on,n(o(xn)("devices.amixerOff")),1),i("option",cn,n(o(xn)("devices.amixerOn")),1)],8,nn),[[g,Fo.value[e.key],void 0,{number:!0}]]),i("button",{class:"amixer-apply-btn",onClick:l=>Eo(e.numid,Fo.value[e.key])},n(o(xn)("devices.amixerApply")),9,tn)]))),128))])]),i("div",dn,[i("h4",rn,n(o(xn)("devices.amixerGroupRight")),1),i("div",un,[(y(!0),s(m,null,p(Ro.value,e=>(y(),s("div",{class:"amixer-row switch-row",key:e.numid},[i("span",vn,n(e.label),1),u(i("select",{class:"amixer-select","onUpdate:modelValue":l=>Fo.value[e.key]=l},[i("option",pn,n(o(xn)("devices.amixerOff")),1),i("option",hn,n(o(xn)("devices.amixerOn")),1)],8,mn),[[g,Fo.value[e.key],void 0,{number:!0}]]),i("button",{class:"amixer-apply-btn",onClick:l=>Eo(e.numid,Fo.value[e.key])},n(o(xn)("devices.amixerApply")),9,gn)]))),128))])])])]),i("div",fn,[i("button",{class:"confirm-btn diablo-button",onClick:l[85]||(l[85]=e=>So.value=!1)},n(o(xn)("common.close")),1)])])])):d("",!0)])}}}),[["__scopeId","data-v-ffaf74a6"]]);export{kn as default};
@@ -0,0 +1 @@
1
+ import{f as e,o as l,n as a,y as s,F as o,z as i,A as r,u as n,m as t,B as d,C as c,D as u,E as p,G as m,H as v,I as g,r as b,J as h,K as f,t as y,L as w}from"./vue-vendor-BaBirIg_.js";import{u as x,a as k}from"./index-npdYRXyk.js";import"./api-C3Fyph-A.js";import{_}from"./LanguageSwitcher.vue_vue_type_style_index_0_lang-7lwszLYh.js";import{_ as I}from"./_plugin-vue_export-helper-BCo6x5W8.js";const S={class:"login-container"},U={class:"particles"},C={class:"login-card diablo-card diablo-corner"},j={class:"login-header"},B={class:"logo-container"},M={class:"diablo-logo"},P={class:"logo-particles"},V={class:"login-title diablo-title"},q={class:"subtitle"},D={class:"language-selector"},K={class:"login-form"},z={class:"form-group"},A={class:"diablo-input-wrapper"},F=["placeholder"],H={class:"form-group"},L={class:"diablo-input-wrapper"},R=["placeholder"],E={key:0,class:"diablo-error"},G={class:"form-footer"},J={class:"remember-me"},N=["disabled"],O={key:0},Q={key:1,class:"loading-text"},T={class:"login-footer"},W={class:"footer-text"},X={class:"footer-version"},Y={class:"fire-effect"},Z=I(e({__name:"index",setup(e){const{t:I}=x(),Z=h(),$=f(),ee=k(),le=g({username:"",passwd:""}),ae=b(!1),se=b(""),oe=b(!1);async function ie(){if(se.value="",le.username)if(le.passwd){ae.value=!0;try{if(await ee.loginUser({username:le.username,passwd:le.passwd})){oe.value?(localStorage.setItem("rememberedUsername",le.username),localStorage.setItem("rememberedPassword",le.passwd)):(localStorage.removeItem("rememberedUsername"),localStorage.removeItem("rememberedPassword"));const e=$.query.redirect||(ee.isAdmin?"/admin":"/");Z.push(e)}else se.value=I("login.invalidCredentials")}catch(e){console.error("登录失败:",e),se.value=I("login.loginFailed")}finally{ae.value=!1}}else se.value=I("login.passwordRequired");else se.value=I("login.usernameRequired")}return l(()=>{const e=localStorage.getItem("rememberedUsername"),l=localStorage.getItem("rememberedPassword");e&&(le.username=e,oe.value=!0),l&&(le.passwd=l)}),(e,l)=>(y(),a("div",S,[l[10]||(l[10]=s("div",{class:"diablo-bg"},null,-1)),s("div",U,[(y(),a(o,null,i(20,e=>s("div",{key:e,class:"particle",style:w({animationDelay:.2*e+"s"})},null,4)),64))]),s("div",C,[s("div",j,[s("div",B,[s("div",M,[l[3]||(l[3]=s("div",{class:"logo-core"},null,-1)),l[4]||(l[4]=s("div",{class:"logo-ring"},null,-1)),s("div",P,[(y(),a(o,null,i(12,e=>s("div",{key:e,class:"logo-particle",style:w({"--delay":.2*e+"s","--angle":30*e+"deg"})},null,4)),64))])])]),s("h1",V,r(n(I)("login.title")),1),s("div",q,r(n(I)("login.subtitle")),1)]),l[9]||(l[9]=s("div",{class:"diablo-gold-line"},null,-1)),s("div",D,[t(_)]),s("div",K,[s("div",z,[s("div",A,[l[5]||(l[5]=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)),d(s("input",{"onUpdate:modelValue":l[0]||(l[0]=e=>le.username=e),type:"text",class:"diablo-input",placeholder:n(I)("login.usernamePlaceholder"),autocomplete:"username",onKeyup:u(ie,["enter"])},null,40,F),[[c,le.username]])])]),s("div",H,[s("div",L,[l[6]||(l[6]=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)),d(s("input",{"onUpdate:modelValue":l[1]||(l[1]=e=>le.passwd=e),type:"password",class:"diablo-input",placeholder:n(I)("login.passwordPlaceholder"),autocomplete:"current-password",onKeyup:u(ie,["enter"])},null,40,R),[[c,le.passwd]])])]),se.value?(y(),a("div",E,r(se.value),1)):p("",!0),s("div",G,[s("label",J,[d(s("input",{"onUpdate:modelValue":l[2]||(l[2]=e=>oe.value=e),type:"checkbox"},null,512),[[m,oe.value]]),s("span",null,r(n(I)("login.rememberMe")),1)])]),s("button",{class:"diablo-btn login-btn",disabled:ae.value,onClick:ie},[ae.value?(y(),a("span",Q,[l[7]||(l[7]=s("span",{class:"diablo-loading"},null,-1)),v(" "+r(n(I)("login.logging")),1)])):(y(),a("span",O,r(n(I)("login.loginButton")),1))],8,N)]),s("div",T,[s("div",W," © 2024 "+r(n(I)("common.appName")),1),l[8]||(l[8]=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",X,r(n(I)("settings.version"))+" "+r(n("2.0.40")),1)])]),s("div",Y,[(y(),a(o,null,i(10,e=>s("div",{key:e,class:"flame",style:w({animationDelay:.3*e+"s"})},null,4)),64))])]))}}),[["__scopeId","data-v-3b7ca9c3"]]);export{Z as default};
@@ -0,0 +1 @@
1
+ .media-manage[data-v-ff8fe5a0]{padding:20px 20px 80px;min-height:100vh}.page-header[data-v-ff8fe5a0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-title[data-v-ff8fe5a0]{font-size:20px;font-weight:600;color:var(--diablo-text);margin:0;letter-spacing:-.3px}.header-actions[data-v-ff8fe5a0]{display:flex;gap:8px;align-items:center}.view-mode-toggle[data-v-ff8fe5a0]{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-ff8fe5a0]{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-ff8fe5a0]{background:var(--glass-bg-hover);color:var(--diablo-primary)}.view-mode-btn[data-v-ff8fe5a0]:hover:not(.active){color:var(--diablo-text);background:var(--glass-bg)}.tts-btn[data-v-ff8fe5a0]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-primary);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.tts-btn[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover);border-color:var(--diablo-primary);box-shadow:0 0 16px #0a84ff33;transform:translateY(-1px)}.tts-btn svg[data-v-ff8fe5a0]{width:16px;height:16px}.radio-btn[data-v-ff8fe5a0]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:#ff6b35;border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.radio-btn[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover);border-color:#ff6b35;box-shadow:0 0 16px #ff6b3533;transform:translateY(-1px)}.radio-btn svg[data-v-ff8fe5a0]{width:16px;height:16px}.tts-modal[data-v-ff8fe5a0]{max-width:560px}.tts-body[data-v-ff8fe5a0]{padding:20px;display:flex;flex-direction:column;gap:16px}.tts-field[data-v-ff8fe5a0]{display:flex;flex-direction:column;gap:6px}.tts-label[data-v-ff8fe5a0]{font-size:12px;font-weight:600;color:var(--diablo-text-muted);text-transform:uppercase;letter-spacing:.5px}.tts-input[data-v-ff8fe5a0],.tts-select[data-v-ff8fe5a0],.tts-textarea[data-v-ff8fe5a0]{width:100%;box-sizing:border-box}.tts-select[data-v-ff8fe5a0]{cursor:pointer;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.tts-textarea[data-v-ff8fe5a0]{resize:vertical;min-height:120px;line-height:1.6;font-family:inherit}.tts-char-count[data-v-ff8fe5a0]{font-size:11px;color:var(--diablo-text-muted);text-align:right}.tts-row[data-v-ff8fe5a0]{display:flex;gap:12px}.tts-field-half[data-v-ff8fe5a0]{flex:1}.radio-modal[data-v-ff8fe5a0]{max-width:480px}.radio-body[data-v-ff8fe5a0]{padding:20px;display:flex;flex-direction:column;gap:16px}.radio-field[data-v-ff8fe5a0]{display:flex;flex-direction:column;gap:6px}.radio-label[data-v-ff8fe5a0]{font-size:12px;font-weight:600;color:var(--diablo-text-muted);text-transform:uppercase;letter-spacing:.5px}.radio-input[data-v-ff8fe5a0]{width:100%;box-sizing:border-box}.radio-presets[data-v-ff8fe5a0]{display:flex;gap:8px;margin-bottom:8px}.preset-btn[data-v-ff8fe5a0]{flex:1;padding:8px 12px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;transition:all .2s ease}.preset-btn[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover);border-color:#ff6b35;color:#ff6b35}.btn-primary[data-v-ff8fe5a0]{background:var(--diablo-primary);color:#fff;border-color:var(--diablo-primary)}.btn-primary[data-v-ff8fe5a0]:hover{opacity:.9;background:var(--diablo-primary);color:#fff}.btn-primary[data-v-ff8fe5a0]:disabled{opacity:.5;cursor:not-allowed}.refresh-btn[data-v-ff8fe5a0]{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-ff8fe5a0]:hover:not(:disabled){background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border)}.refresh-btn[data-v-ff8fe5a0]:disabled{opacity:.5;cursor:not-allowed}.add-btn[data-v-ff8fe5a0]{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-ff8fe5a0]: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)}.add-btn svg[data-v-ff8fe5a0]{width:16px;height:16px}.upload-drop-zone[data-v-ff8fe5a0]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;margin-bottom:20px;border:2px dashed var(--glass-border);border-radius:14px;background:var(--glass-bg);color:var(--diablo-text-muted);font-size:14px;transition:all .3s ease;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow);cursor:pointer}.upload-drop-zone[data-v-ff8fe5a0]:hover,.upload-drop-zone.drop-active[data-v-ff8fe5a0]{border-color:var(--diablo-primary);background:#0a84ff0a;color:var(--diablo-primary);box-shadow:0 0 20px #0a84ff1a,var(--glass-inner-glow)}.upload-drop-zone .drop-zone-sub[data-v-ff8fe5a0]{font-size:12px;opacity:.6}.upload-drop-zone .drop-zone-actions[data-v-ff8fe5a0]{display:flex;gap:10px;margin-top:4px}.upload-drop-zone .drop-zone-btn[data-v-ff8fe5a0]{padding:6px 16px;border:1px solid var(--glass-border);border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:13px;cursor:pointer;transition:all .2s ease}.upload-drop-zone .drop-zone-btn[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);transform:translateY(-1px)}.upload-drop-zone .upload-inline-progress[data-v-ff8fe5a0]{display:flex;align-items:center;gap:12px;width:100%;max-width:500px}.upload-drop-zone .upload-inline-progress span[data-v-ff8fe5a0]{font-size:13px;color:var(--diablo-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-drop-zone .upload-inline-progress .upload-progress-track[data-v-ff8fe5a0]{flex:1;height:8px;background:var(--glass-border);border-radius:4px;overflow:hidden;min-width:100px}.upload-drop-zone .upload-inline-progress .upload-progress-track .upload-progress-fill[data-v-ff8fe5a0]{height:100%;background:var(--diablo-primary);border-radius:4px;transition:width .3s ease}.filter-section[data-v-ff8fe5a0]{margin-bottom:20px}.search-bar[data-v-ff8fe5a0]{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:12px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.search-bar svg[data-v-ff8fe5a0]{color:var(--diablo-text-muted);flex-shrink:0}.search-bar .search-input[data-v-ff8fe5a0]{flex:1;border:none;background:transparent;padding:0;box-shadow:none}.search-bar .search-input[data-v-ff8fe5a0]:focus{outline:none;box-shadow:none;border:none}.search-bar .search-stats[data-v-ff8fe5a0]{font-size:12px;color:var(--diablo-text-muted);white-space:nowrap}.batch-toolbar[data-v-ff8fe5a0]{display:flex;gap:12px;margin-bottom:20px;padding:14px 20px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:12px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow);align-items:center}.batch-toolbar-label[data-v-ff8fe5a0]{color:var(--diablo-text-muted);font-size:13px;font-weight:500}.batch-actions[data-v-ff8fe5a0]{display:flex;gap:8px;align-items:center}.action-btn[data-v-ff8fe5a0]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text-muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap}.action-btn[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);transform:translateY(-1px)}.action-btn svg[data-v-ff8fe5a0]{width:16px;height:16px}.action-btn.action-btn-danger[data-v-ff8fe5a0]{color:#e74c3c}.action-btn.action-btn-danger[data-v-ff8fe5a0]:hover{background:#e74c3c26;border-color:#e74c3c;box-shadow:0 0 12px #e74c3c4d}.file-list-container[data-v-ff8fe5a0]{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:12px;overflow:hidden;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.file-table-scroll[data-v-ff8fe5a0]{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 420px)}.file-table[data-v-ff8fe5a0]{width:100%;border-collapse:collapse;table-layout:fixed}.file-table th[data-v-ff8fe5a0],.file-table td[data-v-ff8fe5a0]{padding:10px 8px;text-align:left;border-bottom:1px solid var(--glass-border);font-size:13px;white-space:nowrap;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;color:var(--diablo-text)}.file-table th[data-v-ff8fe5a0]{background:var(--diablo-bg-dark);color:var(--diablo-text-muted);font-weight:600;font-size:12px;position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4)}.file-table tbody tr[data-v-ff8fe5a0]{transition:background .15s ease}.file-table tbody tr[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover)}.row-selected td[data-v-ff8fe5a0]{background:var(--glass-bg-active)!important}.row-playing td[data-v-ff8fe5a0]{background:#3498db0d}.col-checkbox[data-v-ff8fe5a0]{width:40px;text-align:center}.col-index[data-v-ff8fe5a0]{width:50px;text-align:center}.col-name[data-v-ff8fe5a0]{min-width:200px}.col-duration[data-v-ff8fe5a0]{width:80px}.col-size[data-v-ff8fe5a0]{width:90px}.col-actions[data-v-ff8fe5a0]{width:120px}.file-name-cell[data-v-ff8fe5a0]{display:flex;align-items:center;gap:8px}.file-name-cell .file-icon[data-v-ff8fe5a0]{color:var(--diablo-primary);flex-shrink:0}.file-name-cell .file-name-text[data-v-ff8fe5a0]{font-weight:500;color:var(--diablo-text)}.action-btn-group[data-v-ff8fe5a0]{display:flex;gap:4px;align-items:center}.row-action-btn[data-v-ff8fe5a0]{display:flex;align-items:center;justify-content:center;padding:4px 6px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:6px;color:var(--diablo-text-muted);cursor:pointer;transition:all .2s ease;text-decoration:none}.row-action-btn[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);transform:translateY(-1px)}.row-action-btn.btn-danger[data-v-ff8fe5a0]{color:#e74c3c}.row-action-btn.btn-danger[data-v-ff8fe5a0]:hover{background:#e74c3c26;border-color:#e74c3c}.card-scroll[data-v-ff8fe5a0]{padding:16px;max-height:calc(100vh - 420px);overflow-y:auto}.file-card-grid[data-v-ff8fe5a0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.file-card[data-v-ff8fe5a0]{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:14px;padding:16px;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow);display:flex;flex-direction:column;gap:12px}.file-card[data-v-ff8fe5a0]: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)}.file-card.card-selected[data-v-ff8fe5a0]{border-color:var(--diablo-primary);background:#0a84ff0f}.file-card.card-playing[data-v-ff8fe5a0]{border-color:#3498db66;box-shadow:0 0 16px #3498db26,var(--glass-inner-glow)}.file-card-header[data-v-ff8fe5a0]{display:flex;align-items:center;justify-content:space-between}.file-card-header .file-icon-large[data-v-ff8fe5a0]{color:var(--diablo-primary)}.file-card-header .file-card-actions[data-v-ff8fe5a0]{display:flex;gap:4px}.file-card-name[data-v-ff8fe5a0]{font-size:14px;font-weight:500;color:var(--diablo-text);word-break:break-all;line-height:1.4}.file-card-meta[data-v-ff8fe5a0]{display:flex;gap:12px;font-size:12px;color:var(--diablo-text-muted)}.file-card-meta .meta-duration[data-v-ff8fe5a0]{font-weight:500}.playing-badge[data-v-ff8fe5a0]{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:2px 8px;border-radius:10px;background:#3498db26;color:#3498db;font-size:11px;font-weight:600;border:1px solid rgba(52,152,219,.3)}.playing-dot[data-v-ff8fe5a0]{width:6px;height:6px;border-radius:50%;background:#3498db;box-shadow:0 0 8px #3498dbcc;animation:playingPulse-ff8fe5a0 1.2s ease-in-out infinite}@keyframes playingPulse-ff8fe5a0{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}.audio-player[data-v-ff8fe5a0]{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:12px 20px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:16px;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);box-shadow:0 8px 32px #0000004d,var(--glass-inner-glow);z-index:1000;min-width:400px;max-width:600px}.audio-player .player-info[data-v-ff8fe5a0]{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:1}.audio-player .player-info .player-name[data-v-ff8fe5a0]{font-size:13px;font-weight:500;color:var(--diablo-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.audio-player .player-controls[data-v-ff8fe5a0]{height:32px;flex-shrink:0;border-radius:8px}.audio-player .player-close[data-v-ff8fe5a0]{display:flex;align-items:center;justify-content:center;padding:4px;background:transparent;border:none;color:var(--diablo-text-muted);cursor:pointer;border-radius:6px;transition:all .2s ease;flex-shrink:0}.audio-player .player-close[data-v-ff8fe5a0]:hover{color:var(--diablo-text);background:var(--glass-bg-hover)}.spin-icon[data-v-ff8fe5a0]{animation:spin-ff8fe5a0 1s linear infinite;color:var(--diablo-primary)}@keyframes spin-ff8fe5a0{to{transform:rotate(360deg)}}.modal-overlay[data-v-ff8fe5a0]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--diablo-shadow);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal-content[data-v-ff8fe5a0]{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:16px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.dialog-header[data-v-ff8fe5a0]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--glass-border)}.dialog-header h3[data-v-ff8fe5a0]{margin:0;font-size:16px;color:var(--diablo-text);font-weight:600}.close-btn[data-v-ff8fe5a0]{background:transparent;border:none;color:var(--diablo-text-muted);cursor:pointer;padding:4px;transition:all .3s ease}.close-btn[data-v-ff8fe5a0]:hover{color:var(--diablo-text);background:var(--glass-bg-hover);border-radius:8px}.modal-body[data-v-ff8fe5a0]{padding:20px;color:var(--diablo-text);font-size:14px}.modal-footer[data-v-ff8fe5a0]{display:flex;justify-content:flex-end;gap:12px;padding:20px;border-top:1px solid var(--glass-border)}.btn[data-v-ff8fe5a0]{padding:8px 16px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text-muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:6px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.btn[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);transform:translateY(-1px)}.btn-danger[data-v-ff8fe5a0]{color:#e74c3c}.btn-danger[data-v-ff8fe5a0]:hover{background:#e74c3c26;border-color:#e74c3c;color:#e74c3c}.btn-cancel[data-v-ff8fe5a0]:hover{background:var(--glass-bg-hover)}.form-input[data-v-ff8fe5a0]{padding:8px 12px;border:1px solid var(--glass-border);border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:13px;transition:all .2s ease;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.form-input[data-v-ff8fe5a0]:hover{border-color:var(--glass-border-hover)}.form-input[data-v-ff8fe5a0]:focus{outline:none;border-color:var(--glass-border-glow);box-shadow:0 0 8px var(--glass-border-glow)}.empty-cell[data-v-ff8fe5a0]{padding:0}.empty-state[data-v-ff8fe5a0]{padding:60px 40px;color:var(--diablo-text-muted);text-align:center;font-size:14px}.message-toast[data-v-ff8fe5a0]{position:fixed;top:20px;right:20px;padding:12px 20px;border-radius:10px;color:#fff;font-weight:500;z-index:9999;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.message-toast.success[data-v-ff8fe5a0]{background:#27ae60e6}.message-toast.error[data-v-ff8fe5a0]{background:#e74c3ce6}.hidden-input[data-v-ff8fe5a0]{position:absolute;width:0;height:0;opacity:0;pointer-events:none}@media (max-width: 768px){.media-manage[data-v-ff8fe5a0]{padding:12px 12px 120px}.page-header[data-v-ff8fe5a0]{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:16px}.header-actions[data-v-ff8fe5a0]{flex-wrap:wrap;width:100%;gap:6px}.file-table-scroll[data-v-ff8fe5a0]{display:none}.card-scroll[data-v-ff8fe5a0]{display:block;max-height:calc(100vh - 380px)}.view-mode-toggle[data-v-ff8fe5a0]{display:none}.file-card-grid[data-v-ff8fe5a0]{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.upload-drop-zone[data-v-ff8fe5a0]{padding:16px}.upload-drop-zone .upload-inline-progress[data-v-ff8fe5a0]{flex-wrap:wrap;gap:8px}.upload-drop-zone .upload-inline-progress span[data-v-ff8fe5a0]{font-size:12px}.batch-toolbar[data-v-ff8fe5a0]{flex-direction:column;gap:8px;align-items:flex-start}.batch-actions[data-v-ff8fe5a0]{width:100%}.batch-actions .action-btn[data-v-ff8fe5a0]{flex:1;justify-content:center}.audio-player[data-v-ff8fe5a0]{min-width:unset;max-width:95vw;width:calc(100% - 24px);left:12px;transform:none;padding:10px 14px;gap:8px}.player-controls[data-v-ff8fe5a0]{height:28px;max-width:140px}.player-info .player-name[data-v-ff8fe5a0]{font-size:12px;max-width:100px}.modal-content[data-v-ff8fe5a0]{max-width:95vw;max-height:90vh}.dialog-header h3[data-v-ff8fe5a0]{font-size:15px}.modal-body[data-v-ff8fe5a0]{padding:16px}.modal-footer[data-v-ff8fe5a0]{padding:14px 16px}}@media (max-width: 480px){.media-manage[data-v-ff8fe5a0]{padding:8px}.page-title[data-v-ff8fe5a0]{font-size:17px}.upload-drop-zone[data-v-ff8fe5a0]{padding:12px;font-size:13px}.upload-drop-zone svg[data-v-ff8fe5a0]{width:24px;height:24px}.search-bar[data-v-ff8fe5a0]{padding:8px 12px}.file-card-grid[data-v-ff8fe5a0]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.file-card[data-v-ff8fe5a0]{padding:12px;gap:8px}.file-card-name[data-v-ff8fe5a0]{font-size:13px}.file-card-header .file-icon-large[data-v-ff8fe5a0]{width:20px;height:20px}}
@@ -0,0 +1 @@
1
+ html,body{height:100%;overflow:hidden}#app{height:100%}:root{--diablo-bg-dark: #000000;--diablo-bg-card: #1c1c1e;--diablo-bg-input: #2c2c2e;--diablo-primary: #0a84ff;--diablo-primary-dark: #0066cc;--diablo-accent: #5856d6;--diablo-accent-glow: rgba(88, 86, 214, .25);--diablo-text: #f5f5f7;--diablo-text-muted: #86868b;--diablo-border: rgba(255, 255, 255, .12);--diablo-border-glow: rgba(10, 132, 255, .35);--diablo-shadow: rgba(0, 0, 0, .5);--diablo-fire: #ff6b2d;--diablo-fire-glow: rgba(255, 107, 45, .3);--diablo-font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--diablo-font-family-ui: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--glass-bg: rgba(30, 30, 30, .55);--glass-bg-hover: rgba(45, 45, 48, .65);--glass-bg-active: rgba(55, 55, 60, .7);--glass-bg-card: rgba(28, 28, 30, .6);--glass-bg-sidebar: rgba(20, 20, 22, .65);--glass-bg-topbar: rgba(25, 25, 28, .55);--glass-bg-overlay: rgba(0, 0, 0, .55);--glass-blur: 24px;--glass-blur-heavy: 48px;--glass-blur-light: 12px;--glass-border: rgba(255, 255, 255, .1);--glass-border-hover: rgba(255, 255, 255, .2);--glass-border-glow: rgba(10, 132, 255, .2);--glass-border-glow-accent: rgba(88, 86, 214, .15);--glass-shadow: 0 4px 24px rgba(0, 0, 0, .3);--glass-shadow-hover: 0 8px 32px rgba(0, 0, 0, .4);--glass-inner-glow: inset 0 .5px 0 rgba(255, 255, 255, .08);--glass-tint: rgba(10, 132, 255, .02);--glass-tint-hover: rgba(10, 132, 255, .05)}:root,.theme-light{--diablo-bg-dark: #f5f5f7;--diablo-bg-card: #ffffff;--diablo-bg-input: #f0f2f5;--diablo-primary: #007aff;--diablo-primary-dark: #0056cc;--diablo-accent: #ff9500;--diablo-accent-glow: rgba(255, 149, 0, .25);--diablo-text: #1d1d1f;--diablo-text-muted: #86868b;--diablo-border: rgba(0, 0, 0, .08);--diablo-border-glow: rgba(0, 122, 255, .3);--diablo-shadow: rgba(0, 0, 0, .08);--diablo-fire: #ff3b30;--diablo-fire-glow: rgba(255, 59, 48, .25);--diablo-font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--diablo-font-family-ui: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--glass-bg: rgba(255, 255, 255, .6);--glass-bg-hover: rgba(255, 255, 255, .75);--glass-bg-active: rgba(248, 248, 250, .8);--glass-bg-card: rgba(255, 255, 255, .65);--glass-bg-sidebar: rgba(255, 255, 255, .55);--glass-bg-topbar: rgba(255, 255, 255, .6);--glass-bg-overlay: rgba(240, 242, 245, .55);--glass-blur: 28px;--glass-blur-heavy: 50px;--glass-blur-light: 14px;--glass-border: rgba(0, 0, 0, .06);--glass-border-hover: rgba(0, 0, 0, .12);--glass-border-glow: rgba(0, 122, 255, .15);--glass-border-glow-accent: rgba(255, 149, 0, .12);--glass-shadow: 0 2px 16px rgba(0, 0, 0, .06);--glass-shadow-hover: 0 4px 24px rgba(0, 0, 0, .1);--glass-inner-glow: inset 0 .5px 0 rgba(255, 255, 255, .9);--glass-tint: rgba(0, 122, 255, .02);--glass-tint-hover: rgba(0, 122, 255, .04)}.theme-diablo{--diablo-bg-dark: #000000;--diablo-bg-card: #1c1c1e;--diablo-bg-input: #2c2c2e;--diablo-primary: #0a84ff;--diablo-primary-dark: #0066cc;--diablo-accent: #5856d6;--diablo-accent-glow: rgba(88, 86, 214, .25);--diablo-text: #f5f5f7;--diablo-text-muted: #86868b;--diablo-border: rgba(255, 255, 255, .12);--diablo-border-glow: rgba(10, 132, 255, .35);--diablo-shadow: rgba(0, 0, 0, .5);--diablo-fire: #ff6b2d;--diablo-fire-glow: rgba(255, 107, 45, .3);--diablo-font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--diablo-font-family-ui: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--glass-bg: rgba(30, 30, 30, .55);--glass-bg-hover: rgba(45, 45, 48, .65);--glass-bg-active: rgba(55, 55, 60, .7);--glass-bg-card: rgba(28, 28, 30, .6);--glass-bg-sidebar: rgba(20, 20, 22, .65);--glass-bg-topbar: rgba(25, 25, 28, .55);--glass-bg-overlay: rgba(0, 0, 0, .55);--glass-blur: 24px;--glass-blur-heavy: 48px;--glass-blur-light: 12px;--glass-border: rgba(255, 255, 255, .1);--glass-border-hover: rgba(255, 255, 255, .2);--glass-border-glow: rgba(10, 132, 255, .2);--glass-border-glow-accent: rgba(88, 86, 214, .15);--glass-shadow: 0 4px 24px rgba(0, 0, 0, .3);--glass-shadow-hover: 0 8px 32px rgba(0, 0, 0, .4);--glass-inner-glow: inset 0 .5px 0 rgba(255, 255, 255, .08);--glass-tint: rgba(10, 132, 255, .02);--glass-tint-hover: rgba(10, 132, 255, .05)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--diablo-font-family-ui);background:var(--diablo-bg-dark);color:var(--diablo-text);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .5s ease,color .3s ease}.diablo-bg{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--diablo-bg-dark);z-index:-1;transition:background .5s ease}.diablo-bg:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(600px circle at var(--mouse-x, 30%) var(--mouse-y, 30%),rgba(10,132,255,.06),transparent 60%),radial-gradient(400px circle at 70% 60%,rgba(88,86,214,.04),transparent 60%);z-index:0;pointer-events:none;transition:background .3s ease}.diablo-border{border:1px solid var(--glass-border);border-radius:12px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.diablo-border-glow{border:1px solid var(--glass-border-glow);border-radius:12px;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow),0 0 16px var(--glass-border-glow)}.diablo-gold-line{height:1px;background:linear-gradient(90deg,transparent,var(--glass-border-glow),transparent)}.diablo-fire{background:linear-gradient(180deg,var(--diablo-fire),transparent);box-shadow:0 0 16px var(--diablo-fire-glow)}.diablo-input{width:100%;padding:10px 14px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text);font-size:14px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-inner-glow);transition:all .3s cubic-bezier(.25,.1,.25,1)}.diablo-input::placeholder{color:var(--diablo-text-muted)}.diablo-input: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)}.diablo-input:disabled{opacity:.5;cursor:not-allowed}.diablo-btn{padding:10px 20px;background:var(--diablo-primary);border:none;border-radius:10px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.25,.1,.25,1);position:relative;overflow:hidden}.diablo-btn:hover{background:var(--diablo-primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px var(--glass-border-glow)}.diablo-btn:active{transform:translateY(0) scale(.98);transition-duration:.1s}.diablo-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.diablo-btn-secondary{background:transparent;border:1px solid var(--glass-border);color:var(--diablo-text);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.diablo-btn-secondary:hover{background:var(--glass-bg-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.diablo-title{font-family:var(--diablo-font-family);font-size:28px;font-weight:700;color:var(--diablo-text);letter-spacing:-.5px}.diablo-card{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:14px;box-shadow:var(--glass-shadow),var(--glass-inner-glow);backdrop-filter:blur(var(--glass-blur)) saturate(1.15);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.15);position:relative;overflow:hidden;transition:all .3s cubic-bezier(.25,.1,.25,1)}.diablo-card:not(.diablo-corner):before{content:"";position:absolute;top:0;left:0;right:0;height:40%;background:linear-gradient(180deg,rgba(255,255,255,.06) 0%,transparent 100%);pointer-events:none;z-index:1;border-radius:14px 14px 0 0}.diablo-card: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)}.diablo-corner{position:relative}.diablo-corner:before,.diablo-corner:after{content:"";position:absolute;width:16px;height:16px;border:1.5px solid var(--glass-border-glow)}.diablo-corner:before{top:-1px;left:-1px;border-right:none;border-bottom:none;border-radius:3px 0 0}.diablo-corner:after{bottom:-1px;right:-1px;border-left:none;border-top:none;border-radius:0 0 3px}.glass{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur)) saturate(1.15);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.15);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.glass-heavy{background:var(--glass-bg-card);backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.2);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.2);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.glass-light{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur-light)) saturate(1.1);-webkit-backdrop-filter:blur(var(--glass-blur-light)) saturate(1.1);border:1px solid var(--glass-border)}.glass-interactive{transition:all .3s cubic-bezier(.25,.1,.25,1);cursor:pointer;border-radius:10px}.glass-interactive:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 10px var(--glass-border-glow);transform:translateY(-1px)}.glass-interactive:active{transform:translateY(0) scale(.98);transition-duration:.1s}.glass-enter-stagger>*{animation:glass-enter .5s cubic-bezier(.25,.1,.25,1) both}.glass-enter-stagger>*:nth-child(1){animation-delay:.03s}.glass-enter-stagger>*:nth-child(2){animation-delay:.06s}.glass-enter-stagger>*:nth-child(3){animation-delay:.09s}.glass-enter-stagger>*:nth-child(4){animation-delay:.12s}.glass-enter-stagger>*:nth-child(5){animation-delay:.15s}.glass-enter-stagger>*:nth-child(6){animation-delay:.18s}.glass-enter-stagger>*:nth-child(7){animation-delay:.21s}.glass-enter-stagger>*:nth-child(8){animation-delay:.24s}.glass-enter-stagger>*:nth-child(9){animation-delay:.27s}.glass-enter-stagger>*:nth-child(10){animation-delay:.3s}.modal-overlay,.dialog-overlay,.confirm-dialog-overlay{backdrop-filter:blur(8px) saturate(1.15);-webkit-backdrop-filter:blur(8px) saturate(1.15)}.modal-content,.dialog-content,.confirm-dialog-content{background:var(--glass-bg-card)!important;border:1px solid var(--glass-border)!important;border-radius:14px!important;backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.2);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.2);box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow)!important;animation:glass-slide-up .35s cubic-bezier(.25,.1,.25,1)}@keyframes diablo-pulse{0%,to{opacity:.5}50%{opacity:1}}@keyframes diablo-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.diablo-pulse{animation:diablo-pulse 2s ease-in-out infinite}.diablo-float{animation:diablo-float 3s ease-in-out infinite}@keyframes glass-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes glass-slide-up{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes glass-pulse{0%,to{box-shadow:0 0 0 0 var(--glass-border-glow)}50%{box-shadow:0 0 0 6px transparent}}@keyframes diablo-spin{to{transform:rotate(360deg)}}@keyframes diablo-shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--glass-border-hover)}.diablo-loading{display:inline-block;width:18px;height:18px;border:2px solid var(--glass-border);border-top-color:var(--diablo-primary);border-radius:50%;animation:diablo-spin .8s linear infinite}.diablo-input-wrapper{position:relative}.diablo-input-wrapper .diablo-input-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--diablo-text-muted);width:18px;height:18px;display:flex;align-items:center;justify-content:center}.diablo-input-wrapper .diablo-input-icon svg{width:100%;height:100%}.diablo-input-wrapper .diablo-input{padding-left:38px}.diablo-error{color:#ff3b30;font-size:13px;margin-top:6px;animation:diablo-shake .4s ease}.page-fade-enter-active{animation:glass-enter .4s cubic-bezier(.25,.1,.25,1)}.page-fade-leave-active{transition:opacity .2s ease}.page-fade-enter-from{opacity:0;transform:translateY(10px)}.page-fade-leave-to{opacity:0}html.native-app,html.native-app body{height:100%;overflow:hidden}html.native-app body>#app{height:100%;overflow:hidden}