@oxiaom/adoremix 1.0.16 → 1.0.18

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 (104) hide show
  1. package/package.json +1 -1
  2. package/src/config/webui.js +38 -18
  3. package/webui/high/assets/AdminLayout-BeGqmJmh.js +1 -0
  4. package/webui/high/assets/AdminLayout-Dg0cblhW.css +1 -0
  5. package/webui/high/assets/Announce-2364DXIw.css +1 -0
  6. package/webui/high/assets/Announce-BxOu3PDa.js +1 -0
  7. package/webui/high/assets/Billing-9pkW40cw.css +1 -0
  8. package/webui/high/assets/Billing-DkKexnBS.js +1 -0
  9. package/webui/high/assets/Gallery-BUO8AayT.js +1 -0
  10. package/webui/high/assets/Gallery-CvDy0BG_.css +1 -0
  11. package/webui/high/assets/Info-BRpM9vrH.css +1 -0
  12. package/webui/high/assets/Info-jgxOyI48.js +1 -0
  13. package/webui/high/assets/LanguageSwitcher-wcRpxcC2.css +1 -0
  14. package/webui/high/assets/LanguageSwitcher.vue_vue_type_style_index_0_lang-7lwszLYh.js +1 -0
  15. package/webui/high/assets/MainLayout-Cg9w3D6H.js +1 -0
  16. package/webui/high/assets/MainLayout-CtxzU51m.css +1 -0
  17. package/webui/high/assets/Upload-BUllX3F9.css +1 -0
  18. package/webui/high/assets/Upload-BhZe08V8.js +1 -0
  19. package/webui/high/assets/Users-BajKphJ2.css +1 -0
  20. package/webui/high/assets/Users-C-uvafHe.js +1 -0
  21. package/webui/high/assets/_plugin-vue_export-helper-BCo6x5W8.js +1 -0
  22. package/webui/high/assets/api-C3Fyph-A.js +1 -0
  23. package/webui/high/assets/index-6wTg37PL.js +1 -0
  24. package/webui/high/assets/index-BU_CDG5n.js +1 -0
  25. package/webui/high/assets/index-B_eXN_Ka.css +1 -0
  26. package/webui/high/assets/index-BeMdB8li.css +1 -0
  27. package/webui/high/assets/index-BeyjdvRw.css +1 -0
  28. package/webui/high/assets/index-Bqlp4X7Z.css +1 -0
  29. package/webui/high/assets/index-BwGOSVLU.css +1 -0
  30. package/webui/high/assets/index-C0plBGGv.js +1 -0
  31. package/webui/high/assets/index-CG0Cxnu7.js +1 -0
  32. package/webui/high/assets/index-CGTbAKLR.css +1 -0
  33. package/webui/high/assets/index-CTbFCtHG.js +1 -0
  34. package/webui/high/assets/index-CTtQ-PJh.css +1 -0
  35. package/webui/high/assets/index-Ci-5piG7.css +1 -0
  36. package/webui/high/assets/index-DPlPWsqM.js +1 -0
  37. package/webui/high/assets/index-DbeENJC3.css +1 -0
  38. package/webui/high/assets/index-DdwHcYZD.js +1 -0
  39. package/webui/high/assets/index-KMJ_Zaix.js +1 -0
  40. package/webui/high/assets/index-LP7k5pkh.js +1 -0
  41. package/webui/high/assets/index-MthettIa.css +1 -0
  42. package/webui/high/assets/index-_3H0q9yh.css +1 -0
  43. package/webui/high/assets/index-npdYRXyk.js +18 -0
  44. package/webui/high/assets/index-ptOpmqku.js +1 -0
  45. package/webui/high/assets/index-r_gAV5lM.css +1 -0
  46. package/webui/high/assets/index-u4IuHZw8.js +1 -0
  47. package/webui/high/assets/test-BQUWlKVf.css +1 -0
  48. package/webui/high/assets/test-Bt3E-Okh.js +1 -0
  49. package/webui/high/assets/useDeviceScan-CM8xsf7h.js +1 -0
  50. package/webui/high/assets/vue-vendor-BaBirIg_.js +38 -0
  51. package/webui/high/index.html +23 -0
  52. package/webui/high/js/lame.min.js +308 -0
  53. package/webui/high/js/worker-realtime.js +81 -0
  54. package/webui/low/assets/AdminLayout-Dg0cblhW.css +1 -0
  55. package/webui/low/assets/AdminLayout-Dio6Q0f_.js +1 -0
  56. package/webui/low/assets/Announce-2364DXIw.css +1 -0
  57. package/webui/low/assets/Announce-DiogX_-D.js +1 -0
  58. package/webui/low/assets/Billing-9pkW40cw.css +1 -0
  59. package/webui/low/assets/Billing-C42F8wIt.js +1 -0
  60. package/webui/low/assets/Gallery-CvDy0BG_.css +1 -0
  61. package/webui/low/assets/Gallery-DGUAhDtI.js +1 -0
  62. package/webui/low/assets/Info-BRpM9vrH.css +1 -0
  63. package/webui/low/assets/Info-BolVapGU.js +1 -0
  64. package/webui/low/assets/LanguageSwitcher-wcRpxcC2.css +1 -0
  65. package/webui/low/assets/LanguageSwitcher.vue_vue_type_style_index_0_lang-BUO99DZc.js +1 -0
  66. package/webui/low/assets/MainLayout-BmBcNVVu.js +1 -0
  67. package/webui/low/assets/MainLayout-CtxzU51m.css +1 -0
  68. package/webui/low/assets/Upload-BUllX3F9.css +1 -0
  69. package/webui/low/assets/Upload-B_Cx6QMR.js +1 -0
  70. package/webui/low/assets/Users-BajKphJ2.css +1 -0
  71. package/webui/low/assets/Users-an7uFkx4.js +1 -0
  72. package/webui/low/assets/_plugin-vue_export-helper-BCo6x5W8.js +1 -0
  73. package/webui/low/assets/api-C3Fyph-A.js +1 -0
  74. package/webui/low/assets/index-2JKvpOh3.js +1 -0
  75. package/webui/low/assets/index-B_eXN_Ka.css +1 -0
  76. package/webui/low/assets/index-BeMdB8li.css +1 -0
  77. package/webui/low/assets/index-BeyjdvRw.css +1 -0
  78. package/webui/low/assets/index-BoV0S81L.js +1 -0
  79. package/webui/low/assets/index-Bqlp4X7Z.css +1 -0
  80. package/webui/low/assets/index-BuEwLgbU.js +18 -0
  81. package/webui/low/assets/index-BwGOSVLU.css +1 -0
  82. package/webui/low/assets/index-CGTbAKLR.css +1 -0
  83. package/webui/low/assets/index-CSahVaR0.js +1 -0
  84. package/webui/low/assets/index-CTtQ-PJh.css +1 -0
  85. package/webui/low/assets/index-CgyUlqk5.js +1 -0
  86. package/webui/low/assets/index-Ci-5piG7.css +1 -0
  87. package/webui/low/assets/index-Cjg2XVty.js +1 -0
  88. package/webui/low/assets/index-D-BJ_vlf.js +1 -0
  89. package/webui/low/assets/index-D0uan-_I.js +1 -0
  90. package/webui/low/assets/index-DWP2gbuh.js +1 -0
  91. package/webui/low/assets/index-DbeENJC3.css +1 -0
  92. package/webui/low/assets/index-DdPisNCE.js +1 -0
  93. package/webui/low/assets/index-F-Qi4toA.js +1 -0
  94. package/webui/low/assets/index-FUUYrqc8.js +1 -0
  95. package/webui/low/assets/index-MthettIa.css +1 -0
  96. package/webui/low/assets/index-_3H0q9yh.css +1 -0
  97. package/webui/low/assets/index-r_gAV5lM.css +1 -0
  98. package/webui/low/assets/test-BQUWlKVf.css +1 -0
  99. package/webui/low/assets/test-DI2hJTQF.js +1 -0
  100. package/webui/low/assets/useDeviceScan-CM8xsf7h.js +1 -0
  101. package/webui/low/assets/vue-vendor-BaBirIg_.js +38 -0
  102. package/webui/low/index.html +23 -0
  103. package/webui/low/js/lame.min.js +308 -0
  104. package/webui/low/js/worker-realtime.js +81 -0
@@ -0,0 +1 @@
1
+ import{f as e,o as a,k as l,n as t,y as s,A as n,u as o,p as i,M as c,H as r,B as d,W as u,F as v,z as k,E as p,G as m,C as b,N as h,r as f,c as y,t as g}from"./vue-vendor-BaBirIg_.js";import{u as w}from"./index-BuEwLgbU.js";import{y as C,g as x,t as F,z as D,A as S,B as M,C as V,D as T,E as B,F as G,G as U,H as j,I as _,J as P,K as N,L,M as H,N as A,O as $,P as E,Q as I,R as q,S as R,T as z}from"./api-C3Fyph-A.js";import{_ as O}from"./_plugin-vue_export-helper-BCo6x5W8.js";const J={class:"task-manage"},K={class:"page-header"},Q={class:"page-title"},W={class:"header-actions"},X={class:"view-mode-toggle"},Y=["title"],Z=["title"],ee=["disabled","title"],ae={class:"filter-section"},le={class:"filter-group"},te={value:0},se=["value"],ne={class:"group-actions"},oe={key:0,class:"batch-toolbar"},ie={class:"batch-toolbar-label"},ce={class:"batch-actions"},re={class:"task-list-container"},de={key:0,class:"task-table-scroll"},ue={class:"task-table"},ve={class:"col-checkbox"},ke={class:"col-index"},pe={class:"col-name"},me={class:"col-time"},be={class:"col-duration"},he={class:"col-endtime"},fe={class:"col-loop"},ye={class:"col-dates"},ge={class:"col-group"},we={class:"col-status"},Ce={class:"col-actions"},xe={key:0},Fe={colspan:"12",class:"empty-cell"},De={class:"empty-state"},Se=["onClick"],Me=["value"],Ve={class:"col-index"},Te={class:"col-id"},Be={class:"col-name"},Ge={class:"task-name-text"},Ue={key:0,class:"playing-badge"},je={key:1,class:"disabled-badge"},_e={key:2,class:"conflict-badge"},Pe={class:"col-time"},Ne={class:"col-duration"},Le={class:"col-endtime"},He={class:"col-loop"},Ae={key:0},$e={key:1},Ee={class:"col-dates"},Ie=["onClick"],qe=["onClick"],Re=["onClick"],ze=["title"],Oe=["onUpdate:modelValue","onChange"],Je={class:"toggle-label"},Ke={class:"action-btn-group"},Qe=["onClick","title"],We=["onClick","title"],Xe=["onClick","title"],Ye={key:1,class:"card-scroll"},Ze={key:0,class:"empty-state"},ea={class:"task-card-grid"},aa=["onClick"],la={class:"task-card-header"},ta=["onUpdate:modelValue","onChange"],sa={class:"task-card-id"},na={key:0,class:"playing-badge"},oa=["title"],ia=["onClick","title"],ca=["onClick","title"],ra=["onClick","title"],da={class:"task-card-name"},ua={key:0,class:"disabled-badge"},va={class:"task-card-time-bar"},ka={class:"time-label"},pa={class:"time-label"},ma={class:"time-duration"},ba={class:"task-card-info"},ha={class:"task-card-info-row"},fa={class:"info-label"},ya=["onClick"],ga={class:"task-card-info-row"},wa={class:"info-label"},Ca={key:0,class:"info-value"},xa={key:1,class:"info-value"},Fa={class:"task-card-info-row"},Da={class:"info-label"},Sa={class:"info-value"},Ma=["onClick"],Va=["onClick"],Ta={class:"dialog-header"},Ba={class:"modal-body"},Ga={class:"form-group"},Ua=["placeholder"],ja={class:"char-count"},_a={class:"modal-footer"},Pa={class:"dialog-header"},Na={class:"modal-body"},La={class:"form-group"},Ha={class:"form-group"},Aa={value:0},$a=["value"],Ea={class:"modal-footer"},Ia={class:"dialog-header"},qa={class:"modal-body"},Ra={class:"transfer-section"},za={class:"transfer-container"},Oa={class:"transfer-panel"},Ja={class:"transfer-header"},Ka={class:"transfer-body"},Qa=["value"],Wa={class:"transfer-panel"},Xa={class:"transfer-header"},Ya={class:"transfer-body"},Za={class:"modal-footer"},el={class:"dialog-header"},al={class:"modal-body"},ll={class:"file-search-container"},tl=["placeholder"],sl={class:"modal-play-content"},nl={class:"file-selector"},ol={class:"file-list-content"},il=["onClick","onDblclick"],cl={class:"file-info"},rl={class:"file-name"},dl={class:"file-meta"},ul={key:0},vl={key:0,class:"play-empty-files"},kl={class:"selected-files-panel"},pl={class:"selected-files-content"},ml=["onDragstart","onDrop"],bl={class:"selected-file-info"},hl={class:"file-number"},fl={class:"file-name"},yl={class:"file-actions"},gl=["onClick","disabled","title"],wl=["onClick","disabled","title"],Cl=["onClick","title"],xl={key:0,class:"play-empty-files"},Fl={class:"hint"},Dl={key:0,class:"transfer-footer"},Sl={class:"modal-footer"},Ml={class:"dialog-header"},Vl={class:"modal-body"},Tl={class:"form-group"},Bl={value:0},Gl=["value"],Ul={class:"modal-footer"},jl={class:"dialog-header"},_l={class:"modal-body"},Pl={class:"task-table"},Nl=["onUpdate:modelValue"],Ll={class:"modal-footer"},Hl={class:"dialog-header"},Al={class:"modal-body"},$l={class:"form-group"},El={class:"form-hint"},Il={class:"modal-footer"},ql={class:"dialog-header"},Rl={class:"modal-body"},zl={class:"form-group"},Ol={class:"duration-input-group"},Jl={key:0,class:"duration-presets"},Kl=["onClick"],Ql={class:"form-hint"},Wl={class:"modal-footer"},Xl={class:"dialog-header"},Yl={class:"modal-body"},Zl={class:"selected-tasks-list"},et={class:"modal-footer"},at={class:"dialog-header"},lt={class:"modal-body"},tt={class:"copy-config-grid"},st={class:"copy-config-row"},nt={class:"copy-config-label"},ot={class:"copy-config-control"},it=["disabled"],ct=["disabled"],rt=["disabled"],dt=["disabled"],ut={class:"copy-config-row"},vt={class:"copy-config-label"},kt={class:"copy-config-control"},pt=["placeholder"],mt={class:"copy-config-row"},bt={class:"copy-config-label"},ht={class:"copy-config-control"},ft=["disabled"],yt=["disabled"],gt={class:"copy-interval-unit"},wt={key:0,class:"copy-preview-section"},Ct={class:"section-title",style:{margin:"16px 0 8px"}},xt={class:"task-table copy-preview-table"},Ft={style:{width:"120px"}},Dt={style:{"text-align":"center"}},St=["onUpdate:modelValue"],Mt=["onUpdate:modelValue"],Vt={class:"modal-footer"},Tt=["disabled"],Bt={class:"dialog-header"},Gt={class:"modal-body modal-body-large"},Ut={class:"task-form-grid"},jt={class:"task-form-section"},_t={class:"form-row-2"},Pt={class:"form-field"},Nt=["placeholder"],Lt={class:"form-field"},Ht={key:0,class:"form-row-2 advanced-content"},At={class:"form-field"},$t=["min"],Et={class:"form-field"},It=["min"],qt={key:1,class:"date-hint"},Rt={class:"form-field"},zt={class:"weekday-checkboxes"},Ot=["onUpdate:modelValue"],Jt={class:"section-title"},Kt={key:0,class:"section-count"},Qt={class:"device-select-area"},Wt={class:"device-search-bar"},Xt=["placeholder"],Yt={class:"search-stats"},Zt={class:"device-check-grid"},es=["value"],as={key:0,class:"play-empty-files",style:{"grid-column":"1 / -1"}},ls={class:"section-title"},ts={key:0,class:"section-count"},ss={class:"file-search-container",style:{"margin-bottom":"12px"}},ns=["placeholder"],os={class:"modal-play-content"},is={class:"file-selector"},cs={class:"file-list-content"},rs=["onClick","onDblclick"],ds={class:"file-info"},us={class:"file-name"},vs={class:"file-meta"},ks={key:0},ps={key:0,class:"play-empty-files"},ms={class:"selected-files-panel"},bs={class:"selected-files-content"},hs=["onDragstart","onDrop"],fs={class:"selected-file-info"},ys={class:"file-number"},gs={class:"file-name"},ws={class:"file-actions"},Cs=["onClick","disabled","title"],xs=["onClick","disabled","title"],Fs=["onClick","title"],Ds={key:0,class:"play-empty-files"},Ss={class:"hint"},Ms={key:0,class:"transfer-footer"},Vs={class:"section-title"},Ts={key:0,class:"section-count"},Bs={class:"play-settings-area"},Gs={class:"play-settings-grid"},Us={class:"form-field"},js={value:1},_s={value:0},Ps={key:0,class:"form-field"},Ns={class:"form-field"},Ls={key:0,class:"duration-display-row"},Hs={class:"duration-label"},As={class:"duration-value"},$s={class:"duration-bracket"},Es={class:"duration-formula"},Is={key:1,class:"form-field"},qs={class:"duration-input-group"},Rs=["placeholder"],zs={key:0,class:"duration-presets"},Os=["onClick"],Js={key:2,class:"form-field"},Ks=["max","placeholder"],Qs={class:"form-hint"},Ws={class:"modal-footer"},Xs=["disabled"],Ys=O(e({__name:"index",setup(e){const{t:O}=w(),Ys=f(!1),Zs=f([]),en=f([]),an=f(!1),ln=f(0),tn=f("list"),sn=f([]),nn=f({}),on=f(!1),cn=f(!1),rn=f(!1),dn=f(!1),un=f(!1),vn=f(!1),kn=f(!1),pn=f(!1),mn=f(!1),bn=f(!1),hn=f(!1),fn=f(null),yn=f(1),gn=f(""),wn=f(30),Cn=f([]),xn=f(""),Fn=f(!1),Dn=f(null),Sn=f(!1),Mn=f(null),Vn=f(0),Tn=f(0),Bn=f(1),Gn=f(0),Un=f(!1),jn=f(!1),_n=f(!1),Pn=[60,120,300,600,1200,1800,2400,3e3,3600,7200,10800,14400,18e3];function Nn(e){return e<60?`${e}${O("common.seconds")}`:e<3600?`${Math.floor(e/60)}${O("common.minutes")}`:`${Math.floor(e/3600)}${O("common.hours")}`}function Ln(e){return e&&"无限制"!==e&&"0"!==e?e:O("tasks.noLimit")}const Hn=y(()=>en.value.map(e=>Zs.value.find(a=>a.id===e)).filter(Boolean)),An=f([]),$n=f([]),En=f(""),In=f(""),qn=y(()=>{if(!En.value.trim())return An.value;const e=En.value.trim().toLowerCase();return An.value.filter(a=>a.label.toLowerCase().includes(e))}),Rn=y(()=>{if(!In.value.trim())return $n.value;const e=In.value.trim().toLowerCase();return $n.value.filter(a=>a.label.toLowerCase().includes(e))}),zn=f(""),On=f(-1),Jn=y(()=>{if(!zn.value.trim())return $n.value;const e=zn.value.trim().toLowerCase();return $n.value.filter(a=>a.label.toLowerCase().includes(e))}),Kn=(new Date).toISOString().slice(0,10),Qn=y(()=>[O("tasks.monday"),O("tasks.tuesday"),O("tasks.wednesday"),O("tasks.thursday"),O("tasks.friday"),O("tasks.saturday"),O("tasks.sunday")]),Wn=f({taskname:"",selectedDevices:[],selectedFiles:[],start_time:"",startdate:"",enddate:"",len:0,jiange:2,kind:1,playCount:1,weeks:[!0,!0,!0,!0,!0,!0,!0]}),Xn=f({show:!1,text:"",type:"success"}),Yn=y(()=>0===ln.value?Zs.value:Zs.value.filter(e=>e.groupid===ln.value)),Zn=y(()=>{const e=new Set,a=Yn.value.filter(e=>1===e.enable);for(let l=0;l<a.length;l++){const t=a[l],s=eo(t.tasktime),n=s+(Number(t.len)||0);for(let o=l+1;o<a.length;o++){const l=a[o],i=eo(l.tasktime),c=i+(Number(l.len)||0);ao(t.startdate,t.enddate,l.startdate,l.enddate)&&s<c&&i<n&&(e.add(t.id),e.add(l.id))}}return e});function eo(e){if(!e)return 0;const a=e.split(":");return 3600*(Number(a[0])||0)+60*(Number(a[1])||0)+(Number(a[2])||0)}function ao(e,a,l,t){if(!(e&&a&&l&&t))return!0;const s=new Date(e).getTime(),n=new Date(a).getTime(),o=new Date(l).getTime();return s<=new Date(t).getTime()&&o<=n}function lo(e,a="success"){Xn.value={show:!0,text:e,type:a},setTimeout(()=>{Xn.value.show=!1},3e3)}async function to(){Ys.value=!0;try{const e=await C();e.res&&(Zs.value=e.taskary||[])}catch(e){console.error("获取任务列表失败:",e)}finally{Ys.value=!1}}let so=null;async function no(){try{const e=await C();if(e.res){const a=e.taskary||[],l=JSON.stringify(Zs.value);l!==JSON.stringify(a)&&(Zs.value=a)}}catch{}}async function oo(){try{const e=await x();let a=[];!0===e.res&&Array.isArray(e.results)?a=e.results:!0===e.res&&Array.isArray(e.list)?a=e.list:!0===e.res&&Array.isArray(e.filelist)&&(a=e.filelist),An.value=a.map(e=>({id:e.id,label:e.devname||e.device_name||e.name||`设备${e.id}`})),console.log("✓ 获取设备列表:",An.value.length,"个")}catch(e){console.error("获取设备列表失败:",e)}}async function io(){try{const e=await F();let a=[];!0===e.res&&Array.isArray(e.filelist)?a=e.filelist:!0===e.res&&Array.isArray(e.list)?a=e.list:!0===e.res&&Array.isArray(e.results)&&(a=e.results),$n.value=a.map(e=>({id:e.id,label:e.name||e.filename||e.path||`文件${e.id}`,len:e.len||e.duration||0})),console.log("✓ 获取文件列表:",$n.value.length,"个")}catch(e){console.error("获取文件列表失败:",e)}}async function co(){try{const e=await D();if(e.res){const a=e.list||[];sn.value=a.map(e=>({value:e.pid,label:e.pname})),nn.value=sn.value.reduce((e,a)=>(e[a.value]=a.label,e),{}),console.log("✓ 获取任务组列表:",sn.value.length,"个")}}catch(e){console.error("获取任务组列表失败:",e)}}async function ro(){Wn.value={taskname:"",selectedDevices:[],selectedFiles:[],start_time:"",startdate:"",enddate:"",len:0,jiange:2,kind:1,playCount:1,weeks:[!0,!0,!0,!0,!0,!0,!0]},Sn.value=!1,Mn.value=null,Un.value=!1,En.value="",In.value="",rn.value=!0,await Promise.all([oo(),io()])}async function uo(e){if(1!==e.statu)try{const a=await q({taskid:e.id});if(!a.res)return void lo(a.info||"获取任务详情失败","error");const l=a,t=l.task,s=l.devlistary||[],n=l.filelistary||[],o=(t.week||"1111111").split("").map(e=>"1"===e);await Promise.all([oo(),io()]),Wn.value={taskname:t.task_name||"",selectedDevices:s.map(e=>e.devseedid),selectedFiles:n.map(e=>e.id),start_time:t.tasktime||"",startdate:t.startdate&&"无限制"!==t.startdate&&"0"!==t.startdate?oi(t.startdate):"",enddate:t.enddate&&"无限制"!==t.enddate&&"0"!==t.enddate?oi(t.enddate):"",len:Number(t.len)||0,jiange:t.jiange||2,kind:0===t.kind?0:1,playCount:t.kind>1?t.kind:1,weeks:7===o.length?o:[!0,!0,!0,!0,!0,!0,!0]},Sn.value=!0,Mn.value=e.id,En.value="",In.value="",Un.value=!(!Wn.value.startdate&&!Wn.value.enddate),rn.value=!0}catch(a){console.error("获取任务详情失败:",a),lo("获取任务详情失败","error")}else lo(O("tasks.cannotEditPlaying"),"error")}async function vo(){if(0!==Wn.value.selectedDevices.length)if(0!==Wn.value.selectedFiles.length)if(Wn.value.start_time)if(Wn.value.startdate&&Wn.value.enddate&&Wn.value.startdate>Wn.value.enddate)lo(O("tasks.dateRangeError"),"error");else{Fn.value=!0;try{const e=Wn.value.weeks.map(e=>e?"1":"0").join("");let a=Wn.value.kind;1===a&&Wn.value.playCount>1&&(a=Math.min(Wn.value.playCount,100));const l=2===Wn.value.start_time.split(":").length?Wn.value.start_time+":00":Wn.value.start_time;let t;if(0===Wn.value.kind){if(!Wn.value.len||Wn.value.len<=0)return lo(O("tasks.durationRequired"),"error"),void(Fn.value=!1);t=Wn.value.len}else t=Wn.value.len>0?Wn.value.len:ti.value>0?ti.value:void 0;if(Sn.value&&Mn.value){const[s,n,o]=await Promise.all([S({taskid:Mn.value,task_name:Wn.value.taskname||void 0,start_time:l,startdate:Wn.value.startdate||"0",enddate:Wn.value.enddate||"0",len:t,jiange:Wn.value.jiange,kind:a,week:e}),M({taskid:Mn.value,deviceIds:Wn.value.selectedDevices}),V({taskid:Mn.value,fileIds:Wn.value.selectedFiles})]);s.res?(lo(O("tasks.saveSuccess")),ui(),await to()):lo(s.info||O("tasks.saveFailed"),"error")}else{const s={snids:Wn.value.selectedDevices.join("|"),fileids:Wn.value.selectedFiles.join("|"),start_time:l,startdate:Wn.value.startdate||void 0,enddate:Wn.value.enddate||void 0,len:t,jiange:Wn.value.jiange,kind:a,weeks:e,taskname:Wn.value.taskname||void 0},n=await T(s);n.res?(lo(O("tasks.saveSuccess")),ui(),await to()):lo(n.info||O("tasks.saveFailed"),"error")}}catch(e){console.error("保存任务失败:",e),lo(O("tasks.saveFailed"),"error")}finally{Fn.value=!1}}else lo(O("tasks.startTimeRequired"),"error");else lo(O("tasks.filesRequired"),"error");else lo(O("tasks.devicesRequired"),"error")}async function ko(e){if(1!==e.statu)if(1!==e.enable){if(confirm(O("tasks.deleteConfirm")))try{const a=await I({taskidstr:String(e.id)});a.res?(lo(O("tasks.deleteSuccess")),await to()):lo(a.info||O("tasks.deleteFailed"),"error")}catch(a){console.error("删除任务失败:",a),lo(O("tasks.deleteFailed"),"error")}}else lo(O("tasks.cannotDeleteEnabled"),"error");else lo(O("tasks.cannotDeletePlaying"),"error")}async function po(e){try{const a=1===e.enable?await G({id:e.id}):await B({id:e.id});a.res?(lo(1===e.enable?O("tasks.enableSuccess"):O("tasks.disableSuccess")),await to()):(e.enable=1===e.enable?0:1,lo(a.info||O("common.error"),"error"))}catch(a){e.enable=1===e.enable?0:1,console.error("操作失败:",a),lo(O("common.error"),"error")}}async function mo(e){try{const a=await R({id:e.id});a.res?(lo(O("tasks.startPlaySuccess")),await to()):lo(a.info||O("tasks.startPlayFailed"),"error")}catch(a){console.error("试听失败:",a),lo(O("tasks.startPlayFailed"),"error")}}async function bo(e){try{const a=await z({id:e.id});a.res?(lo(O("tasks.stopPlaySuccess")),await to()):lo(a.info||O("tasks.stopPlayFailed"),"error")}catch(a){console.error("停止失败:",a),lo(O("tasks.stopPlayFailed"),"error")}}function ho(){an.value?en.value=Yn.value.map(e=>e.id):en.value=[]}function fo(e){const a=en.value.indexOf(e);a>-1?en.value.splice(a,1):en.value.push(e)}async function yo(){if(0!==en.value.length)try{const e=en.value,a=(await Promise.allSettled(e.map(e=>B({id:e})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.batchDisableSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),en.value=[],await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.noTasksSelected"),"error")}async function go(){if(0!==en.value.length)try{const e=en.value,a=(await Promise.allSettled(e.map(e=>G({id:e})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.batchEnableSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),en.value=[],await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.noTasksSelected"),"error")}function wo(){0!==en.value.length?bn.value=!0:lo(O("tasks.noTasksSelected"),"error")}function Co(){xn.value="",on.value=!0}function xo(){on.value=!1}async function Fo(){if(xn.value)try{const e=await U({pname:xn.value});e.res?(lo(O("tasks.addGroupSuccess")),xo(),await co()):lo(e.info||O("tasks.addGroupFailed"),"error")}catch(e){console.error("添加任务组失败:",e),lo(O("tasks.addGroupFailed"),"error")}else lo(O("tasks.groupNameRequired"),"error")}function Do(e){Dn.value=e,Vn.value=e.groupid||0,cn.value=!0}function So(){cn.value=!1}async function Mo(){try{const e=await j({pid:Vn.value,taskid:Dn.value.id});e.res?(lo(O("tasks.applyGroupSuccess")),So(),await to()):lo(e.info||O("tasks.applyGroupFailed"),"error")}catch(e){console.error("编辑任务组失败:",e),lo(O("tasks.applyGroupFailed"),"error")}}async function Vo(){if(0!==ln.value){if(confirm(O("tasks.deleteGroupConfirm")))try{const e=await _({pid:ln.value});e.res?(lo(O("tasks.deleteGroupSuccess")),ln.value=0,await co(),await to()):lo(e.info||O("tasks.deleteGroupFailed"),"error")}catch(e){lo(O("tasks.deleteGroupFailed"),"error")}}else lo(O("tasks.selectGroupFirst"),"error")}async function To(){if(0!==ln.value)try{const e=Zs.value.filter(e=>e.groupid===ln.value);if(0===e.length)return void lo(O("tasks.noTasksInGroup"),"error");const a=(await Promise.allSettled(e.map(e=>B({id:e.id})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.disableGroupSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.selectGroupFirst"),"error")}async function Bo(){if(0!==ln.value)try{const e=Zs.value.filter(e=>e.groupid===ln.value);if(0===e.length)return void lo(O("tasks.noTasksInGroup"),"error");const a=(await Promise.allSettled(e.map(e=>G({id:e.id})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.enableGroupSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.selectGroupFirst"),"error")}function Go(){0!==en.value.length?dn.value=!0:lo(O("tasks.noTasksSelected"),"error")}function Uo(){0!==en.value.length?(Wn.value.selectedFiles=[],zn.value="",un.value=!0):lo(O("tasks.noTasksSelected"),"error")}function jo(e){Wn.value.selectedFiles.push(e)}function _o(){0!==en.value.length?(Tn.value=0,vn.value=!0):lo(O("tasks.noTasksSelected"),"error")}function Po(){0!==en.value.length?kn.value=!0:lo(O("tasks.noTasksSelected"),"error")}function No(){0!==en.value.length?(Bn.value=1,pn.value=!0):lo(O("tasks.noTasksSelected"),"error")}function Lo(){0!==en.value.length?(Gn.value=0,mn.value=!0):lo(O("tasks.noTasksSelected"),"error")}function Ho(e,a){const[l,t,s]=e.split(":").map(Number),n=3600*l+60*t+(s||0)+60*a;return[Math.floor(n/3600)%24,Math.floor(n%3600/60),n%60].map(e=>String(e).padStart(2,"0")).join(":")}function Ao(){if(!fn.value)return;const e=fn.value,a=[];for(let l=0;l<yn.value;l++){const t=gn.value||e.task_name;a.push({task_name:t+(l+1),tasktime:Ho(e.tasktime,wn.value*l)})}Cn.value=a}function $o(e){yn.value=Math.max(1,yn.value-e),Ao()}function Eo(e){yn.value=Math.min(20,yn.value+e),Ao()}function Io(){if(0===en.value.length)return void lo(O("tasks.noTasksSelected"),"error");const e=Yn.value.find(e=>e.id===en.value[0]);e&&Ro(e)}function qo(e){Ro(e)}function Ro(e){fn.value=e,yn.value=1,gn.value="",wn.value=30,Cn.value=[],hn.value=!0,Ao()}async function zo(){if(0!==Cn.value.length)try{const e=Cn.value.map(e=>e.task_name).join(","),a=Cn.value.map(e=>e.tasktime).join(","),l=await P({tasknamestr:e,tasktimestr:a,cptskid:fn.value.id});l.res?(lo(O("tasks.copySuccess")),hn.value=!1,en.value=[],await to()):lo(l.info||O("tasks.copyFailed"),"error")}catch(e){lo(O("tasks.copyFailed"),"error")}}async function Oo(){try{const e=en.value.join(","),a=Wn.value.selectedDevices.join(","),l=await N({taskids:e,snids:a});l.res?(lo(O("tasks.saveSuccess")),dn.value=!1,en.value=[],await to()):lo(l.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存设备失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Jo(){try{const e=en.value.join(","),a=Wn.value.selectedFiles.join(","),l=await L({taskids:e,fileids:a});l.res?(lo(O("tasks.saveSuccess")),un.value=!1,en.value=[],await to()):lo(l.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存文件失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Ko(){try{const e=en.value.join(","),a=await H({taskids:e,fanganid:Tn.value});a.res?(lo(O("tasks.applyGroupSuccess")),vn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.applyGroupFailed"),"error")}catch(e){console.error("批量应用方案失败:",e),lo(O("tasks.applyGroupFailed"),"error")}}async function Qo(){try{const e=Hn.value.map(e=>e.id).join(","),a=Hn.value.map(e=>e.tasktime).join(","),l=await A({taskids:e,tasktimestr:a});l.res?(lo(O("tasks.saveSuccess")),kn.value=!1,en.value=[],await to()):lo(l.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存时间失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Wo(){try{const e=en.value.join(","),a=await $({taskids:e,kind:Bn.value});a.res?(lo(O("tasks.saveSuccess")),pn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存循环次数失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Xo(){try{const e=en.value.join(","),a=await E({taskids:e,len:Gn.value});a.res?(lo(O("tasks.saveSuccess")),mn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存时长失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Yo(){const e=Hn.value.filter(e=>1===e.statu);if(e.length>0){const a=e.map(e=>e.task_name).join(", ");return void lo(O("tasks.cannotDeletePlaying")+": "+a,"error")}const a=Hn.value.filter(e=>1===e.enable);if(a.length>0){const e=a.map(e=>e.task_name).join(", ");return void lo(O("tasks.cannotDeleteEnabled")+": "+e,"error")}try{const e=en.value.join(","),a=await I({taskidstr:e});a.res?(lo(O("tasks.deleteSuccess")),bn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.deleteFailed"),"error")}catch(l){console.error("批量删除失败:",l),lo(O("tasks.deleteFailed"),"error")}}function Zo(e){e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move")}function ei(e){const a=$n.value.find(a=>a.id===e);return(null==a?void 0:a.label)||O("tasks.unknownFile")}function ai(e){const a=$n.value.find(a=>a.id===e);return(null==a?void 0:a.len)||0}const li=y(()=>Wn.value.selectedFiles.reduce((e,a)=>e+ai(a),0)),ti=y(()=>{if(0===Wn.value.selectedFiles.length)return 0;let e=0,a=!1;for(const t of Wn.value.selectedFiles){const l=$n.value.find(e=>e.id===t);l&&l.len&&(e+=l.len,a=!0)}if(!a)return 0;const l=e+Wn.value.selectedFiles.length*Wn.value.jiange;return 1===Wn.value.kind?l*Wn.value.playCount:l});function si(e){return nn.value[e]||O("tasks.noGroup")}function ni(e,a){if(!e)return"-";const l=Number(a)||0;if(l<=0)return"-";const t=e.split(":");if(t.length<2)return"-";const s=3600*(Number(t[0])||0)+60*(Number(t[1])||0)+(Number(t[2])||0)+l,n=Math.floor(s/3600)%24,o=Math.floor(s%3600/60),i=s%60;return`${String(n).padStart(2,"0")}:${String(o).padStart(2,"0")}:${String(i).padStart(2,"0")}`}function oi(e){if(!e)return"";const a=e.split("-");return 3!==a.length?e:`${a[0]}-${a[1].padStart(2,"0")}-${a[2].padStart(2,"0")}`}function ii(e){const a=Number(e)||0,l=Math.floor(a/3600),t=Math.floor(a%3600/60),s=a%60;return`${String(l).padStart(2,"0")}:${String(t).padStart(2,"0")}:${String(s).padStart(2,"0")}`}function ci(e){Wn.value.selectedFiles.push(e)}const ri=f(-1);const di=y(()=>Wn.value.selectedFiles.reduce((e,a)=>e+ai(a),0));function ui(){rn.value=!1}return a(async()=>{await Promise.all([to(),oo(),io(),co()]),so||(so=setInterval(no,2e3))}),l(()=>{so&&(clearInterval(so),so=null)}),(e,a)=>(g(),t("div",J,[s("div",K,[s("h2",Q,n(o(O)("tasks.title")),1),s("div",W,[s("div",X,[s("button",{class:i(["view-mode-btn",{active:"list"===tn.value}]),onClick:a[0]||(a[0]=e=>tn.value="list"),title:o(O)("devices.listView")},[...a[80]||(a[80]=[c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-1b5971d9><line x1="8" y1="6" x2="21" y2="6" data-v-1b5971d9></line><line x1="8" y1="12" x2="21" y2="12" data-v-1b5971d9></line><line x1="8" y1="18" x2="21" y2="18" data-v-1b5971d9></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-1b5971d9></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-1b5971d9></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-1b5971d9></line></svg>',1)])],10,Y),s("button",{class:i(["view-mode-btn",{active:"card"===tn.value}]),onClick:a[1]||(a[1]=e=>tn.value="card"),title:o(O)("devices.cardView")},[...a[81]||(a[81]=[c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-1b5971d9><rect x="3" y="3" width="7" height="7" data-v-1b5971d9></rect><rect x="14" y="3" width="7" height="7" data-v-1b5971d9></rect><rect x="3" y="14" width="7" height="7" data-v-1b5971d9></rect><rect x="14" y="14" width="7" height="7" data-v-1b5971d9></rect></svg>',1)])],10,Z)]),s("button",{class:"refresh-btn",onClick:to,disabled:Ys.value,title:o(O)("common.refresh")},[...a[82]||(a[82]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[s("polyline",{points:"23 4 23 10 17 10"}),s("polyline",{points:"1 20 1 14 7 14"}),s("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,ee),s("button",{class:"add-btn",onClick:ro},[a[83]||(a[83]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),r(" "+n(o(O)("tasks.addTask")),1)])])]),s("div",ae,[s("div",le,[s("label",null,n(o(O)("tasks.taskGroup"))+":",1),d(s("select",{"onUpdate:modelValue":a[2]||(a[2]=e=>ln.value=e),class:"form-select"},[s("option",te,n(o(O)("tasks.allGroups")),1),(g(!0),t(v,null,k(sn.value,e=>(g(),t("option",{key:e.value,value:e.value},n(e.label),9,se))),128))],512),[[u,ln.value]])]),s("div",ne,[s("button",{onClick:Co,class:"action-btn"},[a[84]||(a[84]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),r(" "+n(o(O)("tasks.addTaskGroup")),1)]),s("button",{onClick:Vo,class:"action-btn action-btn-danger"},[a[85]||(a[85]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><polyline points="3 6 5 6 21 6" data-v-1b5971d9></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" data-v-1b5971d9></path><line x1="10" y1="11" x2="10" y2="17" data-v-1b5971d9></line><line x1="14" y1="11" x2="14" y2="17" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.deleteTaskGroup")),1)]),s("button",{onClick:To,class:"action-btn"},[a[86]||(a[86]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("line",{x1:"4.93",y1:"4.93",x2:"19.07",y2:"19.07"})],-1)),r(" "+n(o(O)("tasks.disableTaskGroup")),1)]),s("button",{onClick:Bo,class:"action-btn"},[a[87]||(a[87]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14"}),s("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),r(" "+n(o(O)("tasks.enableTaskGroup")),1)])])]),en.value.length>0?(g(),t("div",oe,[s("span",ie,n(o(O)("tasks.selectedCount",{count:en.value.length}))+":",1),s("div",ce,[s("button",{onClick:yo,class:"action-btn action-btn-warning"},[a[88]||(a[88]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("line",{x1:"4.93",y1:"4.93",x2:"19.07",y2:"19.07"})],-1)),r(" "+n(o(O)("tasks.batchDisable")),1)]),s("button",{onClick:go,class:"action-btn action-btn-success"},[a[89]||(a[89]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14"}),s("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),r(" "+n(o(O)("tasks.batchEnable")),1)]),s("button",{onClick:Go,class:"action-btn"},[a[90]||(a[90]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"}),s("line",{x1:"8",y1:"21",x2:"16",y2:"21"}),s("line",{x1:"12",y1:"17",x2:"12",y2:"21"})],-1)),r(" "+n(o(O)("tasks.batchEditDevices")),1)]),s("button",{onClick:Uo,class:"action-btn"},[a[91]||(a[91]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" data-v-1b5971d9></path><polyline points="14 2 14 8 20 8" data-v-1b5971d9></polyline><line x1="16" y1="13" x2="8" y2="13" data-v-1b5971d9></line><line x1="16" y1="17" x2="8" y2="17" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.batchEditFiles")),1)]),s("button",{onClick:_o,class:"action-btn"},[a[92]||(a[92]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" data-v-1b5971d9></path><circle cx="8.5" cy="7" r="4" data-v-1b5971d9></circle><line x1="20" y1="8" x2="20" y2="14" data-v-1b5971d9></line><line x1="23" y1="11" x2="17" y2="11" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.batchApplyGroup")),1)]),s("button",{onClick:Po,class:"action-btn"},[a[93]||(a[93]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("polyline",{points:"12 6 12 12 16 14"})],-1)),r(" "+n(o(O)("tasks.batchEditTime")),1)]),s("button",{onClick:No,class:"action-btn"},[a[94]||(a[94]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><polyline points="17 1 21 5 17 9" data-v-1b5971d9></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14" data-v-1b5971d9></path><polyline points="7 23 3 19 7 15" data-v-1b5971d9></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3" data-v-1b5971d9></path></svg>',1)),r(" "+n(o(O)("tasks.batchEditLoopCount")),1)]),s("button",{onClick:Lo,class:"action-btn"},[a[95]||(a[95]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("polyline",{points:"12 6 12 12"}),s("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})],-1)),r(" "+n(o(O)("tasks.batchEditDuration")),1)]),s("button",{onClick:Io,class:"action-btn"},[a[96]||(a[96]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)),r(" "+n(o(O)("tasks.batchCopy")),1)]),s("button",{onClick:wo,class:"action-btn action-btn-danger"},[a[97]||(a[97]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><polyline points="3 6 5 6 21 6" data-v-1b5971d9></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" data-v-1b5971d9></path><line x1="10" y1="11" x2="10" y2="17" data-v-1b5971d9></line><line x1="14" y1="11" x2="14" y2="17" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.batchDelete")),1)])])])):p("",!0),s("div",re,["list"===tn.value?(g(),t("div",de,[s("table",ue,[s("thead",null,[s("tr",null,[s("th",ve,[d(s("input",{type:"checkbox","onUpdate:modelValue":a[3]||(a[3]=e=>an.value=e),onChange:ho},null,544),[[m,an.value]])]),s("th",ke,n(o(O)("common.index")),1),a[98]||(a[98]=s("th",{class:"col-id"},"ID",-1)),s("th",pe,n(o(O)("tasks.taskName")),1),s("th",me,n(o(O)("tasks.startTime")),1),s("th",be,n(o(O)("tasks.duration")),1),s("th",he,n(o(O)("tasks.endTime")),1),s("th",fe,n(o(O)("tasks.loopCount")),1),s("th",ye,n(o(O)("tasks.startDate"))+" / "+n(o(O)("tasks.endDate")),1),s("th",ge,n(o(O)("tasks.taskGroup")),1),s("th",we,n(o(O)("common.status")),1),s("th",Ce,n(o(O)("common.actions")),1)])]),s("tbody",null,[0===Yn.value.length?(g(),t("tr",xe,[s("td",Fe,[s("div",De,[s("p",null,n(o(O)("tasks.noTasks")),1)])])])):p("",!0),(g(!0),t(v,null,k(Yn.value,(e,l)=>(g(),t("tr",{key:e.id,class:i({"row-disabled":0===e.enable,"row-playing":1===e.statu,"row-selected":en.value.includes(e.id),"row-conflict":Zn.value.has(e.id)&&1===e.enable}),onClick:a=>fo(e.id)},[s("td",{class:"col-checkbox",onClick:a[5]||(a[5]=h(()=>{},["stop"]))},[d(s("input",{type:"checkbox","onUpdate:modelValue":a[4]||(a[4]=e=>en.value=e),value:e.id},null,8,Me),[[m,en.value]])]),s("td",Ve,n(l+1),1),s("td",Te,n(e.id),1),s("td",Be,[s("span",Ge,n(e.task_name),1),1===e.statu?(g(),t("span",Ue,[a[99]||(a[99]=s("span",{class:"playing-dot"},null,-1)),r(n(o(O)("devices.playing")),1)])):p("",!0),0===e.enable?(g(),t("span",je,n(o(O)("tasks.disabled")||"已禁用"),1)):p("",!0),Zn.value.has(e.id)&&1===e.enable?(g(),t("span",_e,"⚠ "+n(o(O)("tasks.timeConflict")),1)):p("",!0)]),s("td",Pe,n(e.tasktime),1),s("td",Ne,n(e.len)+"s ("+n(ii(e.len))+")",1),s("td",Le,n(ni(e.tasktime,e.len)),1),s("td",He,[0===e.kind?(g(),t("span",Ae,n(o(O)("tasks.randomPlay")),1)):p("",!0),e.kind>0?(g(),t("span",$e,n(o(O)("tasks.loopPlay",{count:e.kind})),1)):p("",!0)]),s("td",Ee,[s("span",null,n(Ln(e.startdate)),1),a[100]||(a[100]=s("span",{class:"date-sep"},"~",-1)),s("span",null,n(Ln(e.enddate)),1)]),s("td",{class:"col-group",onClick:a[6]||(a[6]=h(()=>{},["stop"]))},[s("button",{onClick:a=>Do(e),class:"btn-text"},n(si(e.groupid)),9,Ie)]),s("td",{class:"col-status",onClick:a[7]||(a[7]=h(()=>{},["stop"]))},[0===e.statu?(g(),t("button",{key:0,onClick:a=>mo(e),class:"status-btn status-btn-play"},[a[101]||(a[101]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("polygon",{points:"5 3 19 12 5 21"})],-1)),s("span",null,n(o(O)("tasks.tryPlay")),1)],8,qe)):p("",!0),1===e.statu?(g(),t("button",{key:1,onClick:a=>bo(e),class:"status-btn status-btn-stop"},[a[102]||(a[102]=s("span",{class:"status-pulse-ring"},null,-1)),a[103]||(a[103]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})],-1)),s("span",null,n(o(O)("common.stop")),1)],8,Re)):p("",!0)]),s("td",{class:"col-actions",onClick:a[8]||(a[8]=h(()=>{},["stop"]))},[s("label",{class:"toggle-switch",title:1===e.enable?o(O)("tasks.disableTask"):o(O)("tasks.enableTask")},[d(s("input",{type:"checkbox","onUpdate:modelValue":a=>e.enable=a,"true-value":1,"false-value":0,onChange:a=>po(e)},null,40,Oe),[[m,e.enable]]),a[104]||(a[104]=s("span",{class:"toggle-track"},null,-1)),s("span",Je,n(1===e.enable?o(O)("tasks.enabled"):o(O)("tasks.disabled")),1)],8,ze),s("div",Ke,[s("button",{onClick:a=>uo(e),class:"row-action-btn",title:o(O)("common.edit")},[...a[105]||(a[105]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),s("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,Qe),s("button",{onClick:a=>qo(e),class:"row-action-btn",title:o(O)("tasks.batchCopy")},[...a[106]||(a[106]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])],8,We),s("button",{onClick:a=>ko(e),class:"row-action-btn btn-danger",title:o(O)("common.delete")},[...a[107]||(a[107]=[c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14" data-v-1b5971d9><polyline points="3 6 5 6 21 6" data-v-1b5971d9></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" data-v-1b5971d9></path><line x1="10" y1="11" x2="10" y2="17" data-v-1b5971d9></line><line x1="14" y1="11" x2="14" y2="17" data-v-1b5971d9></line></svg>',1)])],8,Xe)])])],10,Se))),128))])])])):p("",!0),"card"===tn.value?(g(),t("div",Ye,[0===Yn.value.length?(g(),t("div",Ze,[s("p",null,n(o(O)("tasks.noTasks")),1)])):p("",!0),s("div",ea,[(g(!0),t(v,null,k(Yn.value,(e,l)=>(g(),t("div",{key:e.id,class:i(["task-card",{"card-disabled":0===e.enable,"card-playing":1===e.statu,"card-selected":en.value.includes(e.id),"card-conflict":Zn.value.has(e.id)&&1===e.enable}]),onClick:a=>fo(e.id)},[s("div",la,[s("label",{class:"toggle-switch",onClick:a[9]||(a[9]=h(()=>{},["stop"]))},[d(s("input",{type:"checkbox","onUpdate:modelValue":a=>e.enable=a,"true-value":1,"false-value":0,onChange:a=>po(e)},null,40,ta),[[m,e.enable]]),a[108]||(a[108]=s("span",{class:"toggle-track"},null,-1))]),s("span",sa,"#"+n(e.id),1),1===e.statu?(g(),t("span",na,[...a[109]||(a[109]=[s("span",{class:"playing-dot"},null,-1)])])):p("",!0),Zn.value.has(e.id)&&1===e.enable?(g(),t("span",{key:1,class:"conflict-badge",title:o(O)("tasks.timeConflict")},"⚠",8,oa)):p("",!0),s("div",{class:"task-card-actions",onClick:a[10]||(a[10]=h(()=>{},["stop"]))},[s("button",{onClick:a=>uo(e),class:"row-action-btn",title:o(O)("common.edit")},[...a[110]||(a[110]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),s("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,ia),s("button",{onClick:a=>qo(e),class:"row-action-btn",title:o(O)("tasks.batchCopy")},[...a[111]||(a[111]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])],8,ca),s("button",{onClick:a=>ko(e),class:"row-action-btn btn-danger",title:o(O)("common.delete")},[...a[112]||(a[112]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("polyline",{points:"3 6 5 6 21 6"}),s("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,ra)])]),s("div",da,[r(n(e.task_name)+" ",1),0===e.enable?(g(),t("span",ua,n(o(O)("tasks.disabled")||"已禁用"),1)):p("",!0)]),s("div",va,[s("span",ka,n(e.tasktime),1),a[113]||(a[113]=s("span",{class:"time-arrow"},"→",-1)),s("span",pa,n(ni(e.tasktime,e.len)),1),s("span",ma,n(ii(e.len)),1)]),s("div",ba,[s("div",ha,[s("span",fa,n(o(O)("tasks.taskGroup"))+":",1),s("button",{onClick:h(a=>Do(e),["stop"]),class:"btn-text"},n(si(e.groupid)),9,ya)]),s("div",ga,[s("span",wa,n(o(O)("tasks.loopCount"))+":",1),0===e.kind?(g(),t("span",Ca,n(o(O)("tasks.randomPlay")),1)):p("",!0),e.kind>0?(g(),t("span",xa,n(o(O)("tasks.loopPlay",{count:e.kind})),1)):p("",!0)]),s("div",Fa,[s("span",Da,n(o(O)("tasks.dateRange")||"日期")+":",1),s("span",Sa,n(Ln(e.startdate))+" ~ "+n(Ln(e.enddate)),1)])]),s("div",{class:"task-card-footer",onClick:a[11]||(a[11]=h(()=>{},["stop"]))},[0===e.statu?(g(),t("button",{key:0,onClick:a=>mo(e),class:"status-btn status-btn-play"},[a[114]||(a[114]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("polygon",{points:"5 3 19 12 5 21"})],-1)),s("span",null,n(o(O)("tasks.tryPlay")),1)],8,Ma)):p("",!0),1===e.statu?(g(),t("button",{key:1,onClick:a=>bo(e),class:"status-btn status-btn-stop"},[a[115]||(a[115]=s("span",{class:"status-pulse-ring"},null,-1)),a[116]||(a[116]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})],-1)),s("span",null,n(o(O)("common.stop")),1)],8,Va)):p("",!0)])],10,aa))),128))])])):p("",!0)]),on.value?(g(),t("div",{key:1,class:"modal-overlay",onClick:xo},[s("div",{class:"modal-content",onClick:a[13]||(a[13]=h(()=>{},["stop"]))},[s("div",Ta,[s("h3",null,n(o(O)("tasks.addTaskGroup")),1),s("button",{class:"close-btn",onClick:xo},[...a[117]||(a[117]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Ba,[s("div",Ga,[s("label",null,n(o(O)("tasks.taskGroupName"))+":",1),d(s("input",{"onUpdate:modelValue":a[12]||(a[12]=e=>xn.value=e),type:"text",class:"form-input",maxlength:"15",placeholder:o(O)("tasks.enterGroupName")},null,8,Ua),[[b,xn.value]]),s("span",ja,n(xn.value.length)+"/15",1)])]),s("div",_a,[s("button",{onClick:xo,class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Fo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),cn.value?(g(),t("div",{key:2,class:"modal-overlay",onClick:So},[s("div",{class:"modal-content",onClick:a[15]||(a[15]=h(()=>{},["stop"]))},[s("div",Pa,[s("h3",null,n(o(O)("tasks.applyTaskGroup")),1),s("button",{class:"close-btn",onClick:So},[...a[118]||(a[118]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Na,[s("div",La,[s("label",null,"任务: "+n(Dn.value.task_name)+" -- "+n(Dn.value.id),1)]),s("div",Ha,[s("label",null,n(o(O)("tasks.selectGroup"))+":",1),d(s("select",{"onUpdate:modelValue":a[14]||(a[14]=e=>Vn.value=e),class:"form-select"},[s("option",Aa,n(o(O)("tasks.allGroups")),1),(g(!0),t(v,null,k(sn.value,e=>(g(),t("option",{key:e.value,value:e.value},n(e.label),9,$a))),128))],512),[[u,Vn.value]])])]),s("div",Ea,[s("button",{onClick:So,class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Mo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),dn.value?(g(),t("div",{key:3,class:"modal-overlay",onClick:a[20]||(a[20]=e=>dn.value=!1)},[s("div",{class:"modal-content",onClick:a[19]||(a[19]=h(()=>{},["stop"]))},[s("div",Ia,[s("h3",null,n(o(O)("tasks.batchEditDevices")),1),s("button",{class:"close-btn",onClick:a[16]||(a[16]=e=>dn.value=!1)},[...a[119]||(a[119]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",qa,[s("div",Ra,[s("div",za,[s("div",Oa,[s("div",Ja,n(o(O)("tasks.allDevices")),1),s("div",Ka,[(g(!0),t(v,null,k(An.value,e=>(g(),t("div",{key:e.id,class:"transfer-item"},[s("label",null,[d(s("input",{type:"checkbox","onUpdate:modelValue":a[17]||(a[17]=e=>Wn.value.selectedDevices=e),value:e.id},null,8,Qa),[[m,Wn.value.selectedDevices]]),r(" "+n(e.label),1)])]))),128))])]),s("div",Wa,[s("div",Xa,n(o(O)("tasks.selectedDevices")),1),s("div",Ya,[(g(!0),t(v,null,k(Wn.value.selectedDevices,e=>(g(),t("div",{key:e,class:"transfer-item"},n(function(e){const a=An.value.find(a=>a.id===e);return(null==a?void 0:a.label)||O("tasks.unknownDevice")}(e)),1))),128))])])])])]),s("div",Za,[s("button",{onClick:a[18]||(a[18]=e=>dn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Oo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),un.value?(g(),t("div",{key:4,class:"modal-overlay",onClick:a[26]||(a[26]=e=>un.value=!1)},[s("div",{class:"modal-content modal-large-content",onClick:a[25]||(a[25]=h(()=>{},["stop"]))},[s("div",el,[s("h3",null,n(o(O)("tasks.batchEditFiles")),1),s("button",{class:"close-btn",onClick:a[21]||(a[21]=e=>un.value=!1)},[...a[120]||(a[120]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",al,[s("div",ll,[d(s("input",{"onUpdate:modelValue":a[22]||(a[22]=e=>zn.value=e),type:"text",class:"file-search-input form-input",placeholder:o(O)("common.search")+"..."},null,8,tl),[[b,zn.value]])]),s("div",sl,[s("div",nl,[s("h4",null,n(o(O)("tasks.allFiles"))+" ("+n(Jn.value.length)+")",1),s("div",ol,[(g(!0),t(v,null,k(Jn.value,e=>(g(),t("div",{key:e.id,class:i(["file-item",{"file-selected":Wn.value.selectedFiles.includes(e.id)}]),onClick:a=>jo(e.id),onDblclick:a=>jo(e.id)},[s("div",cl,[s("div",rl,n(e.label),1),s("div",dl,[e.len?(g(),t("span",ul,n(ii(e.len)),1)):p("",!0)])])],42,il))),128)),0===Jn.value.length?(g(),t("div",vl,[s("p",null,n(o(O)("common.search"))+": 0",1)])):p("",!0)])]),s("div",kl,[s("h4",null,n(o(O)("tasks.selectedFiles"))+" ("+n(Wn.value.selectedFiles.length)+")",1),s("div",pl,[(g(!0),t(v,null,k(Wn.value.selectedFiles,(e,l)=>(g(),t("div",{key:`${e}-${l}`,class:"selected-file-item",draggable:"true",onDragstart:e=>function(e,a){On.value=e,a.dataTransfer&&(a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",String(e)))}(l,e),onDragover:a[23]||(a[23]=e=>Zo(e)),onDrop:e=>function(e,a){if(a.preventDefault(),-1===On.value||On.value===e)return;const l=Wn.value.selectedFiles[On.value];Wn.value.selectedFiles.splice(On.value,1),Wn.value.selectedFiles.splice(e,0,l),On.value=-1}(l,e)},[s("div",bl,[s("div",hl,n(l+1)+".",1),s("div",fl,n(ei(e)),1)]),s("div",yl,[s("button",{onClick:e=>function(e){if(e>0){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e-1],Wn.value.selectedFiles[e-1]=a}}(l),class:"file-action-btn",disabled:0===l,title:o(O)("common.moveUp")},"↑",8,gl),s("button",{onClick:e=>function(e){if(e<Wn.value.selectedFiles.length-1){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e+1],Wn.value.selectedFiles[e+1]=a}}(l),class:"file-action-btn",disabled:l===Wn.value.selectedFiles.length-1,title:o(O)("common.moveDown")},"↓",8,wl),s("button",{onClick:e=>function(e){Wn.value.selectedFiles.splice(e,1)}(l),class:"file-action-btn btn-remove",title:o(O)("common.delete")},"×",8,Cl)])],40,ml))),128)),0===Wn.value.selectedFiles.length?(g(),t("div",xl,[s("p",null,n(o(O)("tasks.noSelectedFiles")),1),s("p",Fl,n(o(O)("tasks.clickToAddHint")),1)])):p("",!0)]),Wn.value.selectedFiles.length>0?(g(),t("div",Dl,n(o(O)("tasks.estimatedDuration"))+": "+n(ii(li.value)),1)):p("",!0)])])]),s("div",Sl,[s("button",{onClick:a[24]||(a[24]=e=>un.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Jo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),vn.value?(g(),t("div",{key:5,class:"modal-overlay",onClick:a[31]||(a[31]=e=>vn.value=!1)},[s("div",{class:"modal-content",onClick:a[30]||(a[30]=h(()=>{},["stop"]))},[s("div",Ml,[s("h3",null,n(o(O)("tasks.batchApplyGroup")),1),s("button",{class:"close-btn",onClick:a[27]||(a[27]=e=>vn.value=!1)},[...a[121]||(a[121]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Vl,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length}))+": "+n(en.value.join(", ")),1),s("div",Tl,[s("label",null,n(o(O)("tasks.selectGroup"))+":",1),d(s("select",{"onUpdate:modelValue":a[28]||(a[28]=e=>Tn.value=e),class:"form-select"},[s("option",Bl,n(o(O)("tasks.allGroups")),1),(g(!0),t(v,null,k(sn.value,e=>(g(),t("option",{key:e.value,value:e.value},n(e.label),9,Gl))),128))],512),[[u,Tn.value]])])]),s("div",Ul,[s("button",{onClick:a[29]||(a[29]=e=>vn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Ko,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),kn.value?(g(),t("div",{key:6,class:"modal-overlay modal-large",onClick:a[35]||(a[35]=e=>kn.value=!1)},[s("div",{class:"modal-content modal-large-content",onClick:a[34]||(a[34]=h(()=>{},["stop"]))},[s("div",jl,[s("h3",null,n(o(O)("tasks.batchEditTime")),1),s("button",{class:"close-btn",onClick:a[32]||(a[32]=e=>kn.value=!1)},[...a[122]||(a[122]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",_l,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("table",Pl,[s("thead",null,[s("tr",null,[s("th",null,n(o(O)("tasks.id")),1),s("th",null,n(o(O)("tasks.taskName")),1),s("th",null,n(o(O)("tasks.startTime")),1)])]),s("tbody",null,[(g(!0),t(v,null,k(Hn.value,e=>(g(),t("tr",{key:e.id},[s("td",null,n(e.id),1),s("td",null,n(e.task_name),1),s("td",null,[d(s("input",{"onUpdate:modelValue":a=>e.tasktime=a,type:"time",class:"form-input",step:"2"},null,8,Nl),[[b,e.tasktime]])])]))),128))])])]),s("div",Ll,[s("button",{onClick:a[33]||(a[33]=e=>kn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Qo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),pn.value?(g(),t("div",{key:7,class:"modal-overlay",onClick:a[40]||(a[40]=e=>pn.value=!1)},[s("div",{class:"modal-content",onClick:a[39]||(a[39]=h(()=>{},["stop"]))},[s("div",Hl,[s("h3",null,n(o(O)("tasks.batchEditLoopCount")),1),s("button",{class:"close-btn",onClick:a[36]||(a[36]=e=>pn.value=!1)},[...a[123]||(a[123]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Al,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("div",$l,[s("label",null,n(o(O)("tasks.loopCount"))+" ("+n(o(O)("tasks.playMode1").replace("顺序播放1遍",""))+"):",1),d(s("input",{"onUpdate:modelValue":a[37]||(a[37]=e=>Bn.value=e),type:"number",class:"form-input",min:1,max:1e3},null,512),[[b,Bn.value,void 0,{number:!0}]]),s("span",El,n(o(O)("tasks.playModeHint")),1)])]),s("div",Il,[s("button",{onClick:a[38]||(a[38]=e=>pn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Wo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),mn.value?(g(),t("div",{key:8,class:"modal-overlay",onClick:a[46]||(a[46]=e=>mn.value=!1)},[s("div",{class:"modal-content",onClick:a[45]||(a[45]=h(()=>{},["stop"]))},[s("div",ql,[s("h3",null,n(o(O)("tasks.batchEditDuration")),1),s("button",{class:"close-btn",onClick:a[41]||(a[41]=e=>mn.value=!1)},[...a[124]||(a[124]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Rl,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("div",zl,[s("label",null,n(o(O)("tasks.taskDuration"))+" ("+n(o(O)("common.seconds"))+"):",1),s("div",Ol,[d(s("input",{"onUpdate:modelValue":a[42]||(a[42]=e=>Gn.value=e),type:"number",class:"form-input duration-input",min:1,max:72e3},null,512),[[b,Gn.value,void 0,{number:!0}]]),s("button",{onClick:a[43]||(a[43]=e=>_n.value=!_n.value),class:"toggle-quick-btn",type:"button"},n(o(O)("common.quick")),1)]),_n.value?(g(),t("div",Jl,[(g(),t(v,null,k(Pn,e=>s("button",{key:e,onClick:a=>{Gn.value=e,_n.value=!1},class:i(["duration-preset-btn",{active:Gn.value===e}]),type:"button"},n(Nn(e)),11,Kl)),64))])):p("",!0),s("span",Ql,n(o(O)("tasks.batchDurationHint")),1)])]),s("div",Wl,[s("button",{onClick:a[44]||(a[44]=e=>mn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Xo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),bn.value?(g(),t("div",{key:9,class:"modal-overlay",onClick:a[50]||(a[50]=e=>bn.value=!1)},[s("div",{class:"modal-content",onClick:a[49]||(a[49]=h(()=>{},["stop"]))},[s("div",Xl,[s("h3",null,n(o(O)("common.deleteConfirm")),1),s("button",{class:"close-btn",onClick:a[47]||(a[47]=e=>bn.value=!1)},[...a[125]||(a[125]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Yl,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("p",null,n(o(O)("tasks.deleteConfirm")),1),s("div",Zl,[(g(!0),t(v,null,k(Hn.value,e=>(g(),t("div",{key:e.id,class:"selected-task-item"},n(e.task_name),1))),128))])]),s("div",et,[s("button",{onClick:a[48]||(a[48]=e=>bn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Yo,class:"btn btn-danger"},n(o(O)("common.confirm")),1)])])])):p("",!0),hn.value?(g(),t("div",{key:10,class:"modal-overlay",onClick:a[63]||(a[63]=e=>hn.value=!1)},[s("div",{class:"modal-content modal-large-content",onClick:a[62]||(a[62]=h(()=>{},["stop"]))},[s("div",at,[s("h3",null,n(o(O)("tasks.batchCopy")),1),s("button",{class:"close-btn",onClick:a[51]||(a[51]=e=>hn.value=!1)},[...a[126]||(a[126]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",lt,[s("div",tt,[s("div",st,[s("div",nt,n(o(O)("tasks.copyCount")),1),s("div",ot,[s("button",{class:"copy-step-btn copy-step-danger",onClick:a[52]||(a[52]=e=>$o(5)),disabled:yn.value<=5},"-5",8,it),s("button",{class:"copy-step-btn",onClick:a[53]||(a[53]=e=>$o(1)),disabled:yn.value<=1},"-",8,ct),d(s("input",{type:"number",class:"copy-count-input","onUpdate:modelValue":a[54]||(a[54]=e=>yn.value=e),min:1,max:20,onInput:Ao},null,544),[[b,yn.value,void 0,{number:!0}]]),s("button",{class:"copy-step-btn",onClick:a[55]||(a[55]=e=>Eo(1)),disabled:yn.value>=20},"+",8,rt),s("button",{class:"copy-step-btn copy-step-success",onClick:a[56]||(a[56]=e=>Eo(5)),disabled:yn.value>=20},"+5",8,dt)])]),s("div",ut,[s("div",vt,n(o(O)("tasks.copyNewName")),1),s("div",kt,[d(s("input",{type:"text",class:"form-input copy-name-input","onUpdate:modelValue":a[57]||(a[57]=e=>gn.value=e),placeholder:o(O)("tasks.copyNewNamePlaceholder"),maxlength:"10",onInput:Ao},null,40,pt),[[b,gn.value]])])]),s("div",mt,[s("div",bt,n(o(O)("tasks.copyInterval")),1),s("div",ht,[s("button",{class:"copy-step-btn",onClick:a[58]||(a[58]=e=>wn.value=Math.max(1,wn.value-1)),disabled:wn.value<=1},"-",8,ft),d(s("input",{type:"number",class:"copy-count-input","onUpdate:modelValue":a[59]||(a[59]=e=>wn.value=e),min:1,max:600,onInput:Ao},null,544),[[b,wn.value,void 0,{number:!0}]]),s("button",{class:"copy-step-btn",onClick:a[60]||(a[60]=e=>wn.value=Math.min(600,wn.value+1)),disabled:wn.value>=600},"+",8,yt),s("span",gt,n(o(O)("tasks.copyIntervalUnit")),1)])])]),Cn.value.length>0?(g(),t("div",wt,[s("div",Ct,n(o(O)("tasks.copyPreview")),1),s("table",xt,[s("thead",null,[s("tr",null,[a[127]||(a[127]=s("th",{style:{width:"50px"}},"#",-1)),s("th",null,n(o(O)("tasks.taskName")),1),s("th",Ft,n(o(O)("tasks.startTime")),1)])]),s("tbody",null,[(g(!0),t(v,null,k(Cn.value,(e,a)=>(g(),t("tr",{key:a},[s("td",Dt,n(a+1),1),s("td",null,[d(s("input",{type:"text",class:"form-input copy-inline-input","onUpdate:modelValue":e=>Cn.value[a].task_name=e},null,8,St),[[b,Cn.value[a].task_name]])]),s("td",null,[d(s("input",{type:"time",class:"form-input copy-inline-input","onUpdate:modelValue":e=>Cn.value[a].tasktime=e,step:"1"},null,8,Mt),[[b,Cn.value[a].tasktime]])])]))),128))])])])):p("",!0)]),s("div",Vt,[s("button",{onClick:a[61]||(a[61]=e=>hn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:zo,class:"btn btn-primary",disabled:0===Cn.value.length},n(o(O)("common.confirm")),9,Tt)])])])):p("",!0),rn.value?(g(),t("div",{key:11,class:"modal-overlay",onClick:ui},[s("div",{class:"modal-content modal-large-content",onClick:a[79]||(a[79]=h(()=>{},["stop"]))},[s("div",Bt,[s("h3",null,n(Sn.value?o(O)("tasks.editTask"):o(O)("tasks.addTask")),1),s("button",{class:"close-btn",onClick:ui},[...a[128]||(a[128]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Gt,[s("div",Ut,[s("div",jt,[s("div",_t,[s("div",Pt,[s("label",null,n(o(O)("tasks.taskName")),1),d(s("input",{"onUpdate:modelValue":a[64]||(a[64]=e=>Wn.value.taskname=e),type:"text",class:"form-input",placeholder:o(O)("tasks.enterTaskName")},null,8,Nt),[[b,Wn.value.taskname]])]),s("div",Lt,[s("label",null,n(o(O)("tasks.startTime"))+" (HH:MM:SS) *",1),d(s("input",{"onUpdate:modelValue":a[65]||(a[65]=e=>Wn.value.start_time=e),type:"time",class:"form-input",step:"1"},null,512),[[b,Wn.value.start_time]])])]),s("div",{class:"advanced-toggle",onClick:a[66]||(a[66]=e=>Un.value=!Un.value)},[(g(),t("svg",{class:i({rotated:Un.value}),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[...a[129]||(a[129]=[s("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),s("span",null,n(o(O)("tasks.advancedSettings")),1)]),Un.value?(g(),t("div",Ht,[s("div",At,[s("label",null,n(o(O)("tasks.startDate")),1),d(s("input",{"onUpdate:modelValue":a[67]||(a[67]=e=>Wn.value.startdate=e),type:"date",class:"form-input",min:o(Kn)},null,8,$t),[[b,Wn.value.startdate]])]),s("div",Et,[s("label",null,n(o(O)("tasks.endDate")),1),d(s("input",{"onUpdate:modelValue":a[68]||(a[68]=e=>Wn.value.enddate=e),type:"date",class:"form-input",min:Wn.value.startdate||o(Kn)},null,8,It),[[b,Wn.value.enddate]])])])):p("",!0),Un.value?(g(),t("div",qt,n(o(O)("tasks.dateHint")),1)):p("",!0),s("div",Rt,[s("label",null,n(o(O)("tasks.weekdays")),1),s("div",zt,[(g(!0),t(v,null,k(Qn.value,(e,a)=>(g(),t("label",{key:a,class:i(["weekday-chip",{active:Wn.value.weeks[a]}])},[d(s("input",{type:"checkbox","onUpdate:modelValue":e=>Wn.value.weeks[a]=e},null,8,Ot),[[m,Wn.value.weeks[a]]]),r(" "+n(e),1)],2))),128))])])])]),s("div",Jt,[r(n(o(O)("tasks.selectDevices"))+" ",1),Wn.value.selectedDevices.length>0?(g(),t("span",Kt,"("+n(Wn.value.selectedDevices.length)+")",1)):p("",!0)]),s("div",Qt,[s("div",Wt,[d(s("input",{"onUpdate:modelValue":a[69]||(a[69]=e=>En.value=e),type:"text",class:"form-input",placeholder:o(O)("common.search")+"..."},null,8,Xt),[[b,En.value]]),s("span",Yt,n(qn.value.length)+" / "+n(An.value.length),1)]),s("div",Zt,[(g(!0),t(v,null,k(qn.value,e=>(g(),t("label",{key:e.id,class:i(["device-check-item",{checked:Wn.value.selectedDevices.includes(e.id)}])},[d(s("input",{type:"checkbox","onUpdate:modelValue":a[70]||(a[70]=e=>Wn.value.selectedDevices=e),value:e.id},null,8,es),[[m,Wn.value.selectedDevices]]),s("span",null,n(e.label),1)],2))),128)),0===qn.value.length?(g(),t("div",as,[s("p",null,n(o(O)("common.search"))+": 0",1)])):p("",!0)])]),s("div",ls,[r(n(o(O)("tasks.selectFiles"))+" ",1),Wn.value.selectedFiles.length>0?(g(),t("span",ts,"("+n(Wn.value.selectedFiles.length)+")",1)):p("",!0)]),s("div",ss,[d(s("input",{"onUpdate:modelValue":a[71]||(a[71]=e=>In.value=e),type:"text",class:"file-search-input form-input",placeholder:o(O)("common.search")+"..."},null,8,ns),[[b,In.value]])]),s("div",os,[s("div",is,[s("h4",null,n(o(O)("tasks.allFiles"))+" ("+n(Rn.value.length)+")",1),s("div",cs,[(g(!0),t(v,null,k(Rn.value,e=>(g(),t("div",{key:e.id,class:i(["file-item",{"file-selected":Wn.value.selectedFiles.includes(e.id)}]),onClick:a=>ci(e.id),onDblclick:a=>ci(e.id)},[s("div",ds,[s("div",us,n(e.label),1),s("div",vs,[e.len?(g(),t("span",ks,n(ii(e.len)),1)):p("",!0)])])],42,rs))),128)),0===Rn.value.length?(g(),t("div",ps,[s("p",null,n(o(O)("common.search"))+": 0",1)])):p("",!0)])]),s("div",ms,[s("h4",null,n(o(O)("tasks.selectedFiles"))+" ("+n(Wn.value.selectedFiles.length)+")",1),s("div",bs,[(g(!0),t(v,null,k(Wn.value.selectedFiles,(e,l)=>(g(),t("div",{key:`${e}-${l}`,class:"selected-file-item",draggable:"true",onDragstart:e=>function(e,a){ri.value=e,a.dataTransfer&&(a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",String(e)))}(l,e),onDragover:a[72]||(a[72]=e=>Zo(e)),onDrop:e=>function(e,a){if(a.preventDefault(),-1===ri.value||ri.value===e)return;const l=Wn.value.selectedFiles[ri.value];Wn.value.selectedFiles.splice(ri.value,1),Wn.value.selectedFiles.splice(e,0,l),ri.value=-1}(l,e)},[s("div",fs,[s("div",ys,n(l+1)+".",1),s("div",gs,n(ei(e)),1)]),s("div",ws,[s("button",{onClick:e=>function(e){if(e>0){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e-1],Wn.value.selectedFiles[e-1]=a}}(l),class:"file-action-btn",disabled:0===l,title:o(O)("common.moveUp")},"↑",8,Cs),s("button",{onClick:e=>function(e){if(e<Wn.value.selectedFiles.length-1){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e+1],Wn.value.selectedFiles[e+1]=a}}(l),class:"file-action-btn",disabled:l===Wn.value.selectedFiles.length-1,title:o(O)("common.moveDown")},"↓",8,xs),s("button",{onClick:e=>function(e){Wn.value.selectedFiles.splice(e,1)}(l),class:"file-action-btn btn-remove",title:o(O)("common.delete")},"×",8,Fs)])],40,hs))),128)),0===Wn.value.selectedFiles.length?(g(),t("div",Ds,[s("p",null,n(o(O)("tasks.noSelectedFiles")),1),s("p",Ss,n(o(O)("tasks.clickToAddHint")),1)])):p("",!0)]),Wn.value.selectedFiles.length>0?(g(),t("div",Ms,n(o(O)("tasks.estimatedDuration"))+": "+n(ii(di.value)),1)):p("",!0)])]),s("div",Vs,[r(n(o(O)("tasks.playSettings"))+" ",1),ti.value>0?(g(),t("span",Ts,"("+n(o(O)("tasks.estimatedDuration"))+": "+n(ii(ti.value))+")",1)):p("",!0)]),s("div",Bs,[s("div",Gs,[s("div",Us,[s("label",null,n(o(O)("tasks.playMode")),1),d(s("select",{"onUpdate:modelValue":a[73]||(a[73]=e=>Wn.value.kind=e),class:"form-select"},[s("option",js,n(o(O)("tasks.sequentialPlay")),1),s("option",_s,n(o(O)("tasks.randomPlay")),1)],512),[[u,Wn.value.kind]])]),1===Wn.value.kind?(g(),t("div",Ps,[s("label",null,n(o(O)("tasks.playCount")),1),d(s("input",{"onUpdate:modelValue":a[74]||(a[74]=e=>Wn.value.playCount=e),type:"number",class:"form-input",min:"1",max:"100"},null,512),[[b,Wn.value.playCount,void 0,{number:!0}]])])):p("",!0),s("div",Ns,[s("label",null,n(o(O)("tasks.intervalDuration"))+" ("+n(o(O)("common.seconds"))+")",1),d(s("input",{"onUpdate:modelValue":a[75]||(a[75]=e=>Wn.value.jiange=e),type:"number",class:"form-input",min:"0"},null,512),[[b,Wn.value.jiange,void 0,{number:!0}]])])]),ti.value>0?(g(),t("div",Ls,[s("span",Hs,n(o(O)("tasks.estimatedDuration"))+":",1),s("span",As,n(ti.value)+n(o(O)("common.seconds")),1),s("span",$s,"(≈ "+n(ii(ti.value))+")",1),s("span",Es,n(o(O)("tasks.durationFormula")),1)])):p("",!0),0===Wn.value.kind?(g(),t("div",Is,[s("label",null,n(o(O)("tasks.taskDuration"))+" ("+n(o(O)("common.seconds"))+") *",1),s("div",qs,[d(s("input",{"onUpdate:modelValue":a[76]||(a[76]=e=>Wn.value.len=e),type:"number",class:"form-input duration-input",min:"1",max:"72000",placeholder:o(O)("tasks.durationRequired")},null,8,Rs),[[b,Wn.value.len,void 0,{number:!0}]]),s("button",{onClick:a[77]||(a[77]=e=>jn.value=!jn.value),class:"toggle-quick-btn",type:"button"},n(o(O)("common.quick")),1)]),jn.value?(g(),t("div",zs,[(g(),t(v,null,k(Pn,e=>s("button",{key:e,onClick:a=>{return l=e,Wn.value.len=l,void(jn.value=!1);var l},class:i(["duration-preset-btn",{active:Wn.value.len===e}]),type:"button"},n(Nn(e)),11,Os)),64))])):p("",!0)])):p("",!0),Wn.value.kind>0?(g(),t("div",Js,[s("label",null,n(o(O)("tasks.forceStopDuration"))+" ("+n(o(O)("common.seconds"))+")",1),d(s("input",{"onUpdate:modelValue":a[78]||(a[78]=e=>Wn.value.len=e),type:"number",class:"form-input",min:"0",max:ti.value||void 0,placeholder:o(O)("tasks.autoCalc")},null,8,Ks),[[b,Wn.value.len,void 0,{number:!0}]]),s("span",Qs,n(o(O)("tasks.forceStopHint")),1)])):p("",!0)])]),s("div",Ws,[s("button",{onClick:ui,class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:vo,class:"btn btn-primary",disabled:Fn.value},n(Fn.value?o(O)("common.saving"):o(O)("common.confirm")),9,Xs)])])])):p("",!0),Xn.value.show?(g(),t("div",{key:12,class:i(["message-toast",Xn.value.type])},n(Xn.value.text),3)):p("",!0)]))}}),[["__scopeId","data-v-1b5971d9"]]);export{Ys as default};
@@ -0,0 +1 @@
1
+ .device-manage[data-v-ffaf74a6]{padding:20px;background:transparent;flex:1;display:flex;flex-direction:column;min-height:0}.content-area[data-v-ffaf74a6]{flex:1;display:flex;flex-direction:column;min-height:0;overflow:auto;max-height:calc(100vh - 140px)}.list-layout[data-v-ffaf74a6]{width:fit-content;max-width:100%}.page-header[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-shrink:0}.device-search-bar[data-v-ffaf74a6]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:12px;margin-bottom:16px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.device-search-bar .search-icon[data-v-ffaf74a6]{width:18px;height:18px;flex-shrink:0;color:var(--diablo-text-muted)}.device-search-bar .search-input[data-v-ffaf74a6]{flex:1;background:none;border:none;outline:none;color:var(--diablo-text);font-size:14px;font-family:inherit}.device-search-bar .search-input[data-v-ffaf74a6]::placeholder{color:var(--diablo-text-muted);opacity:.6}.device-search-bar .search-clear[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:50%;width:24px;height:24px;color:var(--diablo-text-muted);cursor:pointer;flex-shrink:0;padding:0}.device-search-bar .search-clear[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text)}.header-actions[data-v-ffaf74a6]{display:flex;gap:8px;align-items:center}.refresh-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:8px;background:transparent;border:1px solid transparent;border-radius:8px;color:var(--diablo-text-muted);cursor:pointer;transition:all .2s ease}.refresh-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border)}.refresh-btn[data-v-ffaf74a6]:disabled{opacity:.5;cursor:not-allowed}.page-title[data-v-ffaf74a6]{font-size:20px;font-weight:600;color:var(--diablo-text);margin:0;letter-spacing:-.3px}.add-btn[data-v-ffaf74a6]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.add-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.add-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.batch-volume-btn[data-v-ffaf74a6]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.batch-volume-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow);transform:translateY(-1px)}.batch-volume-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.device-list[data-v-ffaf74a6]{flex:1;overflow-y:auto;min-height:0}.view-mode-toggle[data-v-ffaf74a6]{display:flex;gap:4px;border:1px solid var(--glass-border);border-radius:12px;padding:4px;margin-right:12px;background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.view-mode-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:6px;background:transparent;border:none;border-radius:8px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.view-mode-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)}.view-mode-btn.active[data-v-ffaf74a6]{background:var(--glass-bg-active);color:var(--diablo-text);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.view-mode-btn.active[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover)}.view-mode-btn svg[data-v-ffaf74a6]{width:18px;height:18px}.list-view[data-v-ffaf74a6]{max-width:100%}.device-table-grid[data-v-ffaf74a6]{display:grid;grid-template-columns:repeat(13,auto);gap:0;padding:0;align-items:stretch}.device-row[data-v-ffaf74a6]{display:contents}.cell[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:flex-start;white-space:nowrap}.device-header-row .cell[data-v-ffaf74a6]{font-size:11px;font-weight:600;color:var(--diablo-text-muted);letter-spacing:-.2px;background:var(--diablo-bg-dark);border-bottom:1px solid var(--glass-border);padding:10px 16px;backdrop-filter:blur(var(--glass-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);position:sticky;top:0;z-index:10}.device-header-row .cell[data-v-ffaf74a6]:first-child{border-radius:8px 0 0}.device-header-row .cell[data-v-ffaf74a6]:last-child{border-radius:0 8px 0 0}.device-data-row .cell[data-v-ffaf74a6]{font-size:13px;color:var(--diablo-text);background:transparent;border-bottom:1px solid var(--glass-border);padding:8px 16px;transition:background .15s ease}.device-data-row:hover .cell[data-v-ffaf74a6]{background:var(--glass-bg-hover)}.device-data-row.selected .cell[data-v-ffaf74a6]{background:var(--glass-bg-active)}.device-data-row.offline .cell[data-v-ffaf74a6]{opacity:.6}.device-data-row.playing .cell[data-v-ffaf74a6]{background:#0a84ff0d}.cell-select input[type=checkbox][data-v-ffaf74a6]{width:16px;height:16px;cursor:pointer;accent-color:var(--diablo-primary)}.field-value{@keyframes indicatorPulse-ffaf74a6{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 12px #2ecc71cc}50%{opacity:.7;transform:scale(1.3);box-shadow:0 0 16px #2ecc71}}@keyframes particleOrbit-ffaf74a6{0%{transform:rotate(0) scale(1);opacity:.8}25%{transform:rotate(90deg) scale(1.1);opacity:.6}50%{transform:rotate(180deg) scale(1);opacity:1}75%{transform:rotate(270deg) scale(1.1);opacity:.6}to{transform:rotate(360deg) scale(1);opacity:.8}}@keyframes rippleEffect-ffaf74a6{0%{transform:translate(-50%,-50%) scale(.5);opacity:1}50%{transform:translate(-50%,-50%) scale(1.5);opacity:.5}to{transform:translate(-50%,-50%) scale(2);opacity:0}}@keyframes onlineGlow-ffaf74a6{0%,to{box-shadow:0 0 4px #2ecc7133}50%{box-shadow:0 0 8px #2ecc7166}}@keyframes pulse-ffaf74a6{0%,to{opacity:1}50%{opacity:.6}}@keyframes playingPulse-ffaf74a6{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.2)}}}.field-value[data-v-ffaf74a6]{font-size:13px;color:var(--diablo-text);font-weight:500}.field-value.status-badge[data-v-ffaf74a6]{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap;min-width:fit-content;transition:all .4s cubic-bezier(.25,.46,.45,.94);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-inner-glow)}.field-value.status-badge .status-indicator[data-v-ffaf74a6]{width:8px;height:8px;border-radius:50%;display:inline-block}.field-value.status-badge.online[data-v-ffaf74a6]{background:#2ecc7133;color:#2ecc71;border:1px solid rgba(46,204,113,.5);animation:onlineGlow-ffaf74a6 2s ease-in-out infinite}.field-value.status-badge.online .status-indicator[data-v-ffaf74a6]{background:#2ecc71;box-shadow:0 0 12px #2ecc71cc;animation:indicatorPulse-ffaf74a6 1.5s ease-in-out infinite}.field-value.status-badge.playing[data-v-ffaf74a6]{background:#3498db33;color:#3498db;border:1px solid rgba(52,152,219,.5);position:relative;overflow:visible}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]{background:#3498db;box-shadow:0 0 12px #3498dbcc;animation:playingPulse-ffaf74a6 1.2s ease-in-out infinite;position:relative}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:before,.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:after{content:"";position:absolute;border-radius:50%;background:#3498db;animation:particleOrbit-ffaf74a6 3s linear infinite}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:before{width:4px;height:4px;top:-8px;left:-8px;opacity:.8}.field-value.status-badge.playing .status-indicator[data-v-ffaf74a6]:after{width:3px;height:3px;top:-6px;right:-6px;opacity:.6;animation-delay:1s}.field-value.status-badge.playing[data-v-ffaf74a6]:before{content:"";position:absolute;width:20px;height:20px;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);border:1px solid rgba(52,152,219,.3);animation:rippleEffect-ffaf74a6 2s ease-out infinite;pointer-events:none}.field-value.status-badge.offline[data-v-ffaf74a6]{background:#95a5a626;color:#95a5a6;border:1px solid rgba(149,165,166,.3)}.field-value.status-badge.offline .status-indicator[data-v-ffaf74a6]{background:#95a5a6;animation:none}.field-value.status-badge.never[data-v-ffaf74a6]{background:#7f8c8d26;color:#7f8c8d;border:1px solid rgba(127,140,141,.3)}.field-value.status-badge.never .status-indicator[data-v-ffaf74a6]{background:#7f8c8d;animation:none}.field-value.status-badge.expired[data-v-ffaf74a6]{background:#e74c3c26;color:#e74c3c;border:1px solid rgba(231,76,60,.3)}.field-value.status-badge.expired .status-indicator[data-v-ffaf74a6]{background:#e74c3c;animation:none}.field-value.status-badge.unknown[data-v-ffaf74a6]{background:#bdc3c726;color:#bdc3c7;border:1px solid rgba(189,195,199,.3)}.field-value.status-badge.unknown .status-indicator[data-v-ffaf74a6]{background:#bdc3c7;animation:none}.field-value.serial-text[data-v-ffaf74a6]{font-family:Courier New,monospace;font-size:12px;color:var(--glass-border-glow)}.device-select input[type=checkbox][data-v-ffaf74a6]{width:18px;height:18px;cursor:pointer;accent-color:var(--glass-border-glow)}.device-actions[data-v-ffaf74a6]{display:flex;gap:4px}.sort-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:4px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.sort-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-hover);color:var(--glass-border-glow);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-2px)}.sort-btn[data-v-ffaf74a6]:active:not(:disabled){transform:translateY(0)}.sort-btn:disabled[data-v-ffaf74a6]{opacity:.3;cursor:not-allowed}.sort-btn:disabled[data-v-ffaf74a6]:hover{transform:none}.sort-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.action-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:8px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);white-space:nowrap}.action-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-1px)}.action-btn svg[data-v-ffaf74a6]{width:20px;height:20px}.action-btn.volume-btn[data-v-ffaf74a6]:hover{border-color:var(--glass-border-glow);color:var(--glass-border-glow);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.action-btn.rename-btn[data-v-ffaf74a6]:hover{border-color:var(--glass-border-hover);color:var(--glass-border-glow);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.action-btn.delete-btn[data-v-ffaf74a6]:hover{border-color:var(--glass-border-hover);color:#e74c3c;background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.action-btn.delete-btn[data-v-ffaf74a6]{z-index:1;position:relative}.debug-sound-btn[data-v-ffaf74a6]{display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;border:1px solid var(--glass-border);border-radius:10px;font-size:12px;font-weight:500;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);white-space:nowrap;background:var(--glass-bg)}.debug-sound-btn.open[data-v-ffaf74a6]{border-color:#e74c3c;background:var(--glass-bg-hover);color:#e74c3c;box-shadow:var(--glass-shadow-hover),0 0 12px #e74c3c4d}.debug-sound-btn.open[data-v-ffaf74a6]:hover{background:var(--glass-bg-active);transform:translateY(-1px);box-shadow:var(--glass-shadow-hover),0 0 16px #e74c3c66}.debug-sound-btn.close[data-v-ffaf74a6]{border-color:var(--glass-border);background:var(--glass-bg);color:var(--diablo-text-muted);opacity:.6}.debug-sound-btn.close[data-v-ffaf74a6]:hover{opacity:1}.dialog-overlay[data-v-ffaf74a6]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.dialog[data-v-ffaf74a6]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;width:100%;max-width:480px;-webkit-backdrop-filter:blur(var(--glass-blur-heavy));backdrop-filter:blur(var(--glass-blur-heavy));box-shadow:var(--glass-shadow),var(--glass-inner-glow),0 20px 60px #0000004d;animation:dialogSlideIn-ffaf74a6 .3s ease}@keyframes dialogSlideIn-ffaf74a6{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.dialog-header[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--glass-border)}.dialog-header h3[data-v-ffaf74a6]{margin:0;font-size:18px;color:var(--diablo-text)}.close-btn[data-v-ffaf74a6]{background:transparent;border:none;color:var(--diablo-text-muted);cursor:pointer;padding:4px;border-radius:8px;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.close-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);box-shadow:var(--glass-inner-glow)}.dialog-body[data-v-ffaf74a6]{padding:24px}.form-group[data-v-ffaf74a6]{margin-bottom:20px}.form-group label[data-v-ffaf74a6]{display:block;margin-bottom:8px;font-size:14px;color:var(--diablo-text);font-weight:500}.form-group input[data-v-ffaf74a6]{width:100%;padding:12px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text);font-size:14px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);box-sizing:border-box}.form-group input[data-v-ffaf74a6]::placeholder{color:var(--diablo-text-muted)}.form-group input[data-v-ffaf74a6]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow)}.form-group input.error[data-v-ffaf74a6]{border-color:#e74c3c}.form-group input.error[data-v-ffaf74a6]:focus{border-color:#e74c3c;box-shadow:0 0 0 3px #e74c3c33,var(--glass-inner-glow)}.form-group .error-text[data-v-ffaf74a6]{display:block;margin-top:6px;font-size:12px;color:#e74c3c}.form-group .form-hint[data-v-ffaf74a6]{margin:8px 0 0;font-size:12px;color:var(--diablo-text-muted);line-height:1.5}.form-group .hint-detail[data-v-ffaf74a6]{display:block;margin-top:4px;color:var(--glass-border-glow);font-style:italic}.form-group .test-fill-btn[data-v-ffaf74a6]{margin-top:8px;padding:8px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--glass-border-glow);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.form-group .test-fill-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-1px)}.dialog-footer[data-v-ffaf74a6]{display:flex;justify-content:flex-end;gap:12px;padding:20px;border-top:1px solid var(--glass-border)}.cancel-btn[data-v-ffaf74a6],.confirm-btn[data-v-ffaf74a6]{padding:12px 24px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.cancel-btn[data-v-ffaf74a6]:disabled,.confirm-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}.cancel-btn[data-v-ffaf74a6]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.cancel-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)}.confirm-btn[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.confirm-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.volume-dialog[data-v-ffaf74a6]{max-width:400px}.batch-volume-dialog[data-v-ffaf74a6]{max-width:500px}.selected-devices-info[data-v-ffaf74a6]{display:flex;align-items:center;gap:12px;padding:15px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;margin-bottom:20px;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-inner-glow)}.info-label[data-v-ffaf74a6]{font-size:14px;color:var(--diablo-text);font-weight:500}.info-count[data-v-ffaf74a6]{font-size:18px;font-weight:700;color:var(--glass-border-glow)}.volume-control[data-v-ffaf74a6]{padding:20px 0}.volume-display[data-v-ffaf74a6]{display:flex;flex-direction:column;align-items:center;margin-bottom:20px}.volume-value[data-v-ffaf74a6]{font-size:48px;font-weight:700;color:var(--glass-border-glow)}.volume-range[data-v-ffaf74a6]{font-size:14px;color:var(--diablo-text-muted);margin-top:8px}.volume-slider[data-v-ffaf74a6]{width:100%;height:8px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:4px;outline:none;-webkit-appearance:none}:is()[data-v-ffaf74a6]{-webkit-appearance:none;width:20px;height:20px;background:var(--glass-border-glow);border-radius:50%;cursor:pointer;transition:all .2s ease;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)}:is()[data-v-ffaf74a6]:hover{transform:scale(1.2);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow)}.volume-slider[data-v-ffaf74a6]::-moz-range-thumb{width:20px;height:20px;background:var(--glass-border-glow);border-radius:50%;cursor:pointer;border:none;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)}.volume-labels[data-v-ffaf74a6]{display:flex;justify-content:space-between;margin-top:12px;color:var(--diablo-text-muted);font-size:12px}.volume-input[data-v-ffaf74a6]{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid var(--glass-border)}.volume-input label[data-v-ffaf74a6]{font-size:14px;color:var(--diablo-text);font-weight:500}.volume-number-input[data-v-ffaf74a6]{flex:1;padding:10px 16px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text);font-size:16px;font-weight:600;text-align:center;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.volume-number-input[data-v-ffaf74a6]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow)}.loading-mask[data-v-ffaf74a6]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.loading-spinner[data-v-ffaf74a6]{width:40px;height:40px;border:3px solid var(--glass-border);border-top-color:var(--glass-border-glow);border-radius:50%;animation:spin-ffaf74a6 1s linear infinite;box-shadow:0 0 16px var(--glass-border-glow)}@keyframes spin-ffaf74a6{to{transform:rotate(360deg)}}.custom-message[data-v-ffaf74a6]{position:fixed;top:24px;left:50%;transform:translate(-50%) translateY(-20px);padding:12px 24px;border-radius:12px;font-size:14px;font-weight:500;z-index:9999;opacity:0;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));transition:all .4s cubic-bezier(.25,.46,.45,.94);box-shadow:var(--glass-shadow),var(--glass-inner-glow);border:1px solid var(--glass-border)}.custom-message.show[data-v-ffaf74a6]{opacity:1;transform:translate(-50%) translateY(0)}.custom-message.custom-message-success[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:#2ecc71;border-color:#2ecc7180}.custom-message.custom-message-error[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:#e74c3c;border-color:#e74c3c80}.custom-message.custom-message-warning[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:var(--glass-border-glow);border-color:var(--glass-border-hover)}.confirm-overlay[data-v-ffaf74a6]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.confirm-dialog[data-v-ffaf74a6]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;width:90%;max-width:420px;-webkit-backdrop-filter:blur(var(--glass-blur-heavy));backdrop-filter:blur(var(--glass-blur-heavy));box-shadow:var(--glass-shadow),var(--glass-inner-glow),0 20px 60px #0000004d;animation:dialogSlideIn-ffaf74a6 .3s ease}.confirm-header[data-v-ffaf74a6]{padding:20px;border-bottom:1px solid var(--glass-border)}.confirm-header h3[data-v-ffaf74a6]{margin:0;font-size:18px;color:var(--diablo-text)}.confirm-body[data-v-ffaf74a6]{padding:24px}.confirm-body p[data-v-ffaf74a6]{margin:0;font-size:15px;color:var(--diablo-text);line-height:1.6}.confirm-footer[data-v-ffaf74a6]{display:flex;gap:12px;justify-content:flex-end;padding:20px;border-top:1px solid var(--glass-border)}.confirm-cancel[data-v-ffaf74a6],.confirm-ok[data-v-ffaf74a6]{padding:10px 20px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.confirm-cancel[data-v-ffaf74a6]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.confirm-cancel[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)}.confirm-ok[data-v-ffaf74a6]{background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.confirm-ok[data-v-ffaf74a6]:hover{background:var(--glass-bg-active);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.debug-option-btn[data-v-ffaf74a6]{padding:12px 24px;margin:0 8px 8px 0;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--diablo-text);border-radius:10px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94);font-size:14px;font-weight:500}.debug-option-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow)}.debug-option-btn.active[data-v-ffaf74a6]{background:var(--glass-bg-active);color:var(--diablo-text);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.debug-option-btn.active[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.debug-option-btn.error[data-v-ffaf74a6]{border-color:#e74c3c;color:#e74c3c}.debug-option-btn.error[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover)}.card-view[data-v-ffaf74a6]{display:block;margin-top:16px}.card-grid[data-v-ffaf74a6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.device-card[data-v-ffaf74a6]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;overflow:hidden;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow),var(--glass-inner-glow);transition:all .4s cubic-bezier(.25,.46,.45,.94);cursor:pointer}.device-card[data-v-ffaf74a6]:hover{border-color:var(--glass-border-hover);transform:translateY(-4px);box-shadow:var(--glass-shadow-hover),0 0 20px var(--glass-border-glow)}.device-card.offline[data-v-ffaf74a6]{opacity:.6}.device-card.playing[data-v-ffaf74a6]{border-color:var(--glass-border-glow);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)}.device-card.selected[data-v-ffaf74a6]{border-color:var(--glass-border-hover);background:var(--glass-bg-active);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow)}.card-header[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--glass-bg);border-bottom:1px solid var(--glass-border)}.card-select input[type=checkbox][data-v-ffaf74a6]{width:18px;height:18px;cursor:pointer;accent-color:var(--glass-border-glow)}.card-actions[data-v-ffaf74a6]{display:flex;gap:4px}.card-body[data-v-ffaf74a6]{padding:16px}.card-info-row[data-v-ffaf74a6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.card-info-row[data-v-ffaf74a6]:last-child{margin-bottom:0}.info-label[data-v-ffaf74a6]{font-size:12px;color:var(--diablo-text-muted);font-weight:500}.info-value[data-v-ffaf74a6]{font-size:13px;color:var(--diablo-text);font-weight:600;word-break:break-all}.info-value.serial-text[data-v-ffaf74a6]{font-family:Courier New,monospace;font-size:12px;color:var(--glass-border-glow)}.info-value.serial-text.serial-highlight[data-v-ffaf74a6]{font-size:13px;font-weight:700;color:#0a84ff;background:#0a84ff1a;padding:2px 8px;border-radius:6px;letter-spacing:.3px}.card-footer[data-v-ffaf74a6]{display:flex;gap:8px;padding:12px 16px;background:var(--glass-bg);border-top:1px solid var(--glass-border);justify-content:flex-end}.card-action-btn[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:center;padding:8px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;color:var(--diablo-text-muted);font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.card-action-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 12px var(--glass-border-glow);transform:translateY(-2px)}.card-action-btn.delete-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);color:#e74c3c;border-color:#e74c3c80;box-shadow:var(--glass-shadow-hover),0 0 16px #e74c3c4d}.card-action-btn svg[data-v-ffaf74a6]{width:16px;height:16px}@media (max-width: 768px){.device-manage[data-v-ffaf74a6]{padding:12px}.page-header[data-v-ffaf74a6]{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:12px}.header-actions[data-v-ffaf74a6]{flex-wrap:wrap;width:100%;gap:6px}.view-mode-toggle[data-v-ffaf74a6]{margin-right:6px}.list-view[data-v-ffaf74a6]{display:none!important}.card-view[data-v-ffaf74a6]{display:block!important}.card-grid[data-v-ffaf74a6]{grid-template-columns:1fr;gap:12px}.device-card[data-v-ffaf74a6]{cursor:default}.add-btn[data-v-ffaf74a6],.batch-volume-btn[data-v-ffaf74a6]{padding:8px 12px;font-size:12px}.add-btn svg[data-v-ffaf74a6],.batch-volume-btn svg[data-v-ffaf74a6]{width:14px;height:14px}.page-title[data-v-ffaf74a6]{font-size:17px}.dialog[data-v-ffaf74a6]{max-width:95vw;max-height:90vh;margin:auto}.dialog-body[data-v-ffaf74a6]{padding:16px;max-height:calc(90vh - 140px);overflow-y:auto}.dialog-header[data-v-ffaf74a6],.dialog-footer[data-v-ffaf74a6]{padding:14px 16px}.volume-value[data-v-ffaf74a6]{font-size:36px}.batch-volume-dialog[data-v-ffaf74a6],.volume-dialog[data-v-ffaf74a6]{max-width:95vw}}@media (max-width: 480px){.device-manage[data-v-ffaf74a6]{padding:8px}.header-actions[data-v-ffaf74a6]{gap:4px}.batch-volume-btn span[data-v-ffaf74a6]:not(.diablo-button svg){display:none}.device-card[data-v-ffaf74a6]{padding:0}.card-body[data-v-ffaf74a6]{padding:12px}.card-header[data-v-ffaf74a6],.card-footer[data-v-ffaf74a6]{padding:10px 12px}.confirm-ok[data-v-ffaf74a6],.confirm-cancel[data-v-ffaf74a6]{padding:10px 16px!important;font-size:13px!important}}.confirm-overlay{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;background:#00000080!important;display:flex!important;align-items:center!important;justify-content:center!important;z-index:9999!important;padding:20px!important;-webkit-backdrop-filter:blur(var(--glass-blur))!important;backdrop-filter:blur(var(--glass-blur))!important}.confirm-dialog{background:var(--glass-bg-card)!important;border:1px solid var(--glass-border)!important;border-radius:16px!important;width:90%!important;max-width:420px!important;-webkit-backdrop-filter:blur(var(--glass-blur-heavy))!important;backdrop-filter:blur(var(--glass-blur-heavy))!important;box-shadow:var(--glass-shadow),var(--glass-inner-glow),0 20px 60px #0000004d!important;animation:dialogSlideIn .3s ease!important}.confirm-header{padding:20px!important;border-bottom:1px solid var(--glass-border)!important}.confirm-header h3{margin:0!important;font-size:18px!important;color:var(--diablo-text)!important}.confirm-body{padding:24px!important}.confirm-body p{margin:0!important;font-size:15px!important;color:var(--diablo-text)!important;line-height:1.6!important}.confirm-footer{display:flex!important;gap:12px!important;justify-content:flex-end!important;padding:20px!important;border-top:1px solid var(--glass-border)!important}.confirm-cancel,.confirm-ok{padding:10px 20px!important;border-radius:10px!important;font-size:14px!important;font-weight:500!important;cursor:pointer!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important;transition:all .4s cubic-bezier(.25,.46,.45,.94)!important}.confirm-cancel{background:var(--glass-bg)!important;border:1px solid var(--glass-border)!important;color:var(--diablo-text)!important}.confirm-cancel:hover{background:var(--glass-bg-hover)!important;color:var(--diablo-text)!important;border-color:var(--glass-border-hover)!important;box-shadow:var(--glass-shadow-hover),0 0 8px var(--glass-border-glow)!important}.confirm-ok{background:var(--glass-bg-hover)!important;color:var(--diablo-text)!important;border:1px solid var(--glass-border-hover)!important;box-shadow:var(--glass-shadow),var(--glass-inner-glow)!important}.confirm-ok:hover{background:var(--glass-bg-active)!important;box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow)!important}@keyframes dialogSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.volume-slider{background:var(--glass-bg)!important;border-color:var(--glass-border)!important}.volume-slider::-webkit-slider-thumb{background:var(--glass-border-glow)!important;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)!important}.volume-slider::-moz-range-thumb{background:var(--glass-border-glow)!important;box-shadow:var(--glass-shadow),0 0 8px var(--glass-border-glow)!important}.volume-number-input{background:var(--glass-bg)!important;border-color:var(--glass-border)!important;color:var(--diablo-text)!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important}.theme-light .volume-slider{background:#e0e0e0!important;border-color:#d0d0d0!important}.theme-light .volume-slider::-webkit-slider-thumb,.theme-light .volume-slider::-moz-range-thumb{background:#ff9800!important}.theme-light .volume-number-input{background:#f5f7fa!important;border-color:#d0d0d0!important;color:#333!important}.theme-light .scan-table-header{background:#0000000a}.theme-light .scan-table-row{border-top-color:#0000000f}.theme-light .scan-table-row:hover{background:#0000000a}.theme-light .scan-table-row.selected{background:#ff980014}.theme-light .scan-device-table{border-color:#0000001a;background:#00000005}.theme-light .scan-sort-btn{background:#0000000a;border-color:#0000001a}.theme-light .scan-sort-btn:hover{background:#00000014;border-color:#00000026}.theme-light .scan-sort-btn.active{background:#ff98001f;border-color:#ff98004d;color:#e68a00}.theme-light .scan-count{background:#ff98001f;color:#e68a00}.theme-light .mono{color:#000000b3}.theme-light .tag-off{background:#0000000f}.theme-light .config-btn{border-color:#0000001f;background:#0000000a}.theme-light .config-btn:hover{background:#ff98001f;border-color:#ff98004d;color:#e68a00}.theme-light .config-seed-display{background:#0000000a;border-color:#00000014}.theme-light .config-seed-value{color:#00000080}.theme-light .config-ip-fields{border-left-color:#ff98004d}.theme-light .toggle-switch{background:#00000026}.theme-light .toggle-switch.on{background:#e68a00}.theme-light .test-comm-section{border-top-color:#00000014}.theme-light .console-body{background:#0000000a;border-color:#00000014}.theme-light .console-body::-webkit-scrollbar-thumb{background:#0000001f}.theme-light .console-empty{color:#00000040}.theme-light .scan-table-body::-webkit-scrollbar-thumb{background:#0000001f}.theme-light .console-clear-btn:hover{background:#0000000f}.theme-light .scan-error{background:#d32f2f14;border-color:#d32f2f26}.theme-light .scan-empty svg{opacity:.5}.theme-light .tag-on{background:#2e7d321f;color:#2e7d32}.theme-light .scan-results-header h4{color:#333}.theme-light .field-error{color:#d32f2f}.theme-light .scan-config-dialog .form-input.input-error{border-color:#d32f2f80!important;box-shadow:0 0 8px #d32f2f26}.device-field .status-badge{display:inline-flex!important;align-items:center!important;gap:6px!important;padding:4px 10px!important;border-radius:12px!important;font-size:12px!important;font-weight:600!important;white-space:nowrap!important;min-width:fit-content!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important;box-shadow:var(--glass-inner-glow)!important;transition:all .4s cubic-bezier(.25,.46,.45,.94)!important}.device-field .status-badge .status-indicator{width:8px!important;height:8px!important;border-radius:50%!important;display:inline-block!important}.device-field .status-badge.status-online{background:#2ecc7133!important;color:#2ecc71!important;border:1px solid rgba(46,204,113,.5)!important;animation:onlineGlow 2s ease-in-out infinite!important}.device-field .status-badge.status-online .status-indicator{background:#2ecc71!important;box-shadow:0 0 12px #2ecc71cc!important;animation:indicatorPulse 1.5s ease-in-out infinite!important}.device-field .status-badge.status-playing{background:#3498db33!important;color:#3498db!important;border:1px solid rgba(52,152,219,.5)!important;position:relative!important;overflow:visible!important}.device-field .status-badge.status-playing .status-indicator{background:#3498db!important;box-shadow:0 0 12px #3498dbcc!important;animation:playingPulse 1.2s ease-in-out infinite!important;position:relative!important}.device-field .status-badge.status-playing .status-indicator:before,.device-field .status-badge.status-playing .status-indicator:after{content:""!important;position:absolute!important;border-radius:50%!important;background:#3498db!important;animation:particleOrbit 3s linear infinite!important}.device-field .status-badge.status-playing .status-indicator:before{width:4px!important;height:4px!important;top:-8px!important;left:-8px!important;opacity:.8!important}.device-field .status-badge.status-playing .status-indicator:after{width:3px!important;height:3px!important;top:-6px!important;right:-6px!important;opacity:.6!important;animation-delay:1s!important}.device-field .status-badge.status-playing:before{content:""!important;position:absolute!important;width:20px!important;height:20px!important;border-radius:50%!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;border:1px solid rgba(52,152,219,.3)!important;animation:rippleEffect 2s ease-out infinite!important;pointer-events:none!important}.device-field .status-badge.status-offline{background:#95a5a626!important;color:#95a5a6!important;border:1px solid rgba(149,165,166,.3)!important}.device-field .status-badge.status-offline .status-indicator{background:#95a5a6!important;animation:none!important}.device-field .status-badge.status-never{background:#7f8c8d26!important;color:#7f8c8d!important;border:1px solid rgba(127,140,141,.3)!important}.device-field .status-badge.status-never .status-indicator{background:#7f8c8d!important;animation:none!important}.device-field .status-badge.status-expired{background:#e74c3c26!important;color:#e74c3c!important;border:1px solid rgba(231,76,60,.3)!important}.device-field .status-badge.status-expired .status-indicator{background:#e74c3c!important;animation:none!important}.device-field .status-badge.status-unknown{background:#bdc3c726!important;color:#bdc3c7!important;border:1px solid rgba(189,195,199,.3)!important}.device-field .status-badge.status-unknown .status-indicator{background:#bdc3c7!important;animation:none!important}.card-info-row .status-badge{display:inline-flex!important;align-items:center!important;gap:6px!important;padding:4px 10px!important;border-radius:12px!important;font-size:12px!important;font-weight:600!important;white-space:nowrap!important;min-width:fit-content!important;-webkit-backdrop-filter:blur(var(--glass-blur-light))!important;backdrop-filter:blur(var(--glass-blur-light))!important;box-shadow:var(--glass-inner-glow)!important;transition:all .4s cubic-bezier(.25,.46,.45,.94)!important}.card-info-row .status-badge .status-indicator{width:8px!important;height:8px!important;border-radius:50%!important;display:inline-block!important}.card-info-row .status-badge.status-online{background:#2ecc7133!important;color:#2ecc71!important;border:1px solid rgba(46,204,113,.5)!important;animation:onlineGlow 2s ease-in-out infinite!important}.card-info-row .status-badge.status-online .status-indicator{background:#2ecc71!important;box-shadow:0 0 12px #2ecc71cc!important;animation:indicatorPulse 1.5s ease-in-out infinite!important}.card-info-row .status-badge.status-playing{background:#3498db33!important;color:#3498db!important;border:1px solid rgba(52,152,219,.5)!important;position:relative!important;overflow:visible!important}.card-info-row .status-badge.status-playing .status-indicator{background:#3498db!important;box-shadow:0 0 12px #3498dbcc!important;animation:playingPulse 1.2s ease-in-out infinite!important;position:relative!important}.card-info-row .status-badge.status-playing .status-indicator:before,.card-info-row .status-badge.status-playing .status-indicator:after{content:""!important;position:absolute!important;border-radius:50%!important;background:#3498db!important;animation:particleOrbit 3s linear infinite!important}.card-info-row .status-badge.status-playing .status-indicator:before{width:4px!important;height:4px!important;top:-8px!important;left:-8px!important;opacity:.8!important}.card-info-row .status-badge.status-playing .status-indicator:after{width:3px!important;height:3px!important;top:-6px!important;right:-6px!important;opacity:.6!important;animation-delay:1s!important}.card-info-row .status-badge.status-playing:before{content:""!important;position:absolute!important;width:20px!important;height:20px!important;border-radius:50%!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;border:1px solid rgba(52,152,219,.3)!important;animation:rippleEffect 2s ease-out infinite!important;pointer-events:none!important}.card-info-row .status-badge.status-offline{background:#95a5a626!important;color:#95a5a6!important;border:1px solid rgba(149,165,166,.3)!important}.card-info-row .status-badge.status-offline .status-indicator{background:#95a5a6!important;animation:none!important}.card-info-row .status-badge.status-never{background:#7f8c8d26!important;color:#7f8c8d!important;border:1px solid rgba(127,140,141,.3)!important}.card-info-row .status-badge.status-never .status-indicator{background:#7f8c8d!important;animation:none!important}.card-info-row .status-badge.status-expired{background:#e74c3c26!important;color:#e74c3c!important;border:1px solid rgba(231,76,60,.3)!important}.card-info-row .status-badge.status-expired .status-indicator{background:#e74c3c!important;animation:none!important}.card-info-row .status-badge.status-unknown{background:#bdc3c726!important;color:#bdc3c7!important;border:1px solid rgba(189,195,199,.3)!important}.card-info-row .status-badge.status-unknown .status-indicator{background:#bdc3c7!important;animation:none!important}@keyframes indicatorPulse{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 12px #2ecc71cc}50%{opacity:.7;transform:scale(1.3);box-shadow:0 0 16px #2ecc71}}@keyframes particleOrbit{0%{transform:rotate(0) scale(1);opacity:.8}25%{transform:rotate(90deg) scale(1.1);opacity:.6}50%{transform:rotate(180deg) scale(1);opacity:1}75%{transform:rotate(270deg) scale(1.1);opacity:.6}to{transform:rotate(360deg) scale(1);opacity:.8}}@keyframes rippleEffect{0%{transform:translate(-50%,-50%) scale(.5);opacity:1}50%{transform:translate(-50%,-50%) scale(1.5);opacity:.5}to{transform:translate(-50%,-50%) scale(2);opacity:0}}@keyframes onlineGlow{0%,to{box-shadow:0 0 4px #2ecc7133}50%{box-shadow:0 0 8px #2ecc7166}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes playingPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.2)}}@media (max-width: 768px){.dialog-overlay{padding:10px!important}.dialog{max-width:95vw!important;max-height:90vh!important}.dialog-body{max-height:calc(90vh - 140px);overflow-y:auto}.dialog-header h3{font-size:15px!important}.volume-dialog .volume-value{font-size:36px!important}.confirm-overlay{padding:10px!important}.confirm-dialog{width:95%!important;max-width:95%!important}.confirm-header h3{font-size:15px!important}.confirm-body p{font-size:14px!important}.confirm-cancel,.confirm-ok{padding:8px 14px!important;font-size:13px!important}.custom-message{font-size:13px;padding:10px 16px;max-width:90vw}}.scan-dialog[data-v-ffaf74a6]{max-width:1100px;max-height:85vh;display:flex;flex-direction:column}.scan-dialog .dialog-body[data-v-ffaf74a6]{overflow-y:auto;flex:1;min-height:0}.scan-main-layout[data-v-ffaf74a6]{display:flex;gap:12px;min-height:0}.scan-main-left[data-v-ffaf74a6]{flex:1;min-width:0;display:flex;flex-direction:column}.scan-console-side[data-v-ffaf74a6]{width:260px;flex-shrink:0;display:flex;flex-direction:column}.scan-console-side .console-body[data-v-ffaf74a6]{flex:1;max-height:50vh;min-height:120px}.scan-config-dialog[data-v-ffaf74a6]{max-width:560px;max-height:85vh;display:flex;flex-direction:column}.scan-config-dialog .dialog-body[data-v-ffaf74a6]{overflow-y:auto;flex:1;min-height:0}.scan-config-dialog .dialog-footer[data-v-ffaf74a6]{flex-shrink:0}.scan-config-dialog .console-section[data-v-ffaf74a6]{margin-top:12px}.scan-config-dialog .console-body[data-v-ffaf74a6]{max-height:120px;overflow-y:auto}.scan-config-dialog .form-group[data-v-ffaf74a6]{margin-bottom:12px}.scan-config-dialog .config-ip-fields[data-v-ffaf74a6],.scan-config-dialog .config-row-2col[data-v-ffaf74a6]{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.scan-header-icon[data-v-ffaf74a6]{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#5856d6,#0a84ff);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.scan-header-icon.config-icon[data-v-ffaf74a6]{background:linear-gradient(135deg,#ff9f0a,#ff6723)}.scan-top-bar[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.scan-hint[data-v-ffaf74a6]{color:var(--text-muted, #86868b);font-size:13px;margin:0;flex:1}.scan-action-btn[data-v-ffaf74a6]{white-space:nowrap;padding:8px 20px;font-size:13px;border-radius:10px;display:flex;align-items:center;gap:6px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);cursor:pointer;transition:all .2s}.scan-action-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:0 0 12px var(--glass-border-glow)}.scan-action-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}@keyframes spin-ffaf74a6{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.scan-spinner[data-v-ffaf74a6]{animation:spin-ffaf74a6 1s linear infinite}.scan-error[data-v-ffaf74a6]{color:var(--danger, #ff453a);font-size:13px;margin-bottom:12px;display:flex;align-items:center;gap:6px;padding:8px 12px;background:#ff453a1a;border-radius:8px;border:1px solid rgba(255,69,58,.2)}.scan-empty[data-v-ffaf74a6]{text-align:center;color:var(--text-muted, #86868b);padding:32px 24px;display:flex;flex-direction:column;align-items:center;gap:8px}.scan-empty svg[data-v-ffaf74a6]{opacity:.3}.scan-empty p[data-v-ffaf74a6]{margin:0;font-size:14px}.scan-results[data-v-ffaf74a6]{margin-top:4px}.scan-results-header[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.scan-results-header h4[data-v-ffaf74a6]{font-size:14px;color:var(--text-primary, #f5f5f7);margin:0;font-weight:600}.scan-count[data-v-ffaf74a6]{font-size:12px;font-weight:500;color:var(--primary, #0a84ff);background:#0a84ff1f;padding:2px 8px;border-radius:10px;margin-left:6px}.scan-sort-btns[data-v-ffaf74a6]{display:flex;gap:4px}.scan-sort-btn[data-v-ffaf74a6]{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:var(--text-muted, #86868b);font-size:11px;padding:4px 10px;border-radius:6px;cursor:pointer;transition:all .15s;font-weight:500}.scan-sort-btn[data-v-ffaf74a6]:hover{background:#ffffff14;border-color:#ffffff26}.scan-sort-btn.active[data-v-ffaf74a6]{background:#0a84ff26;border-color:#0a84ff59;color:var(--primary, #0a84ff)}.sort-arrow[data-v-ffaf74a6]{font-size:10px}.scan-device-table[data-v-ffaf74a6]{border:1px solid rgba(255,255,255,.08);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;background:#0003}.scan-table-body[data-v-ffaf74a6]{max-height:45vh;overflow-y:auto}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar{width:5px}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar-track{background:transparent}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.scan-table-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb:hover{background:#fff3}.scan-table-header[data-v-ffaf74a6],.scan-table-row[data-v-ffaf74a6]{display:grid;grid-template-columns:36px 100px 1fr 90px 48px 44px 44px 80px 40px;gap:2px;padding:7px 10px;font-size:11px;align-items:center}.scan-table-header[data-v-ffaf74a6]{background:#ffffff0a;font-weight:600;color:var(--text-muted, #86868b);flex-shrink:0;text-transform:uppercase;letter-spacing:.3px;font-size:10px}.scan-table-row[data-v-ffaf74a6]{border-top:1px solid rgba(255,255,255,.06);cursor:pointer;transition:all .15s;color:var(--diablo-text, rgba(255,255,255,.85))}.scan-table-row[data-v-ffaf74a6]:hover{background:#ffffff0a}.scan-table-row.selected[data-v-ffaf74a6]{background:#0a84ff1a}.col-idx[data-v-ffaf74a6]{text-align:center;color:var(--text-muted, #86868b);font-size:10px}.col-port[data-v-ffaf74a6],.col-flag[data-v-ffaf74a6]{text-align:center}.mono[data-v-ffaf74a6]{font-family:SF Mono,Cascadia Code,monospace;font-size:10px;color:var(--diablo-text, rgba(255,255,255,.85));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag[data-v-ffaf74a6]{display:inline-block;padding:1px 6px;border-radius:4px;font-size:9px;font-weight:700;letter-spacing:.5px}.tag-on[data-v-ffaf74a6]{background:#30d15826;color:#30d158}.tag-off[data-v-ffaf74a6]{background:#ffffff0f;color:var(--text-muted, #86868b)}.scan-add-btn[data-v-ffaf74a6]{width:26px;height:26px;border-radius:6px;border:1px solid rgba(48,209,88,.2);background:#30d15814;color:#30d158;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.scan-add-btn[data-v-ffaf74a6]:hover{background:#30d15833;border-color:#30d15866}.theme-light .scan-add-btn[data-v-ffaf74a6]{border-color:#00780026;background:#0078000d;color:#1b8a1b}.theme-light .scan-add-btn[data-v-ffaf74a6]:hover{background:#0078001f;border-color:#0078004d}.config-btn[data-v-ffaf74a6]{width:26px;height:26px;border-radius:6px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:var(--text-muted, #86868b);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.config-btn[data-v-ffaf74a6]:hover{background:#0a84ff26;border-color:#0a84ff4d;color:var(--primary, #0a84ff)}.config-seed-display[data-v-ffaf74a6]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#00000040;border-radius:8px;margin-bottom:16px;border:1px solid rgba(255,255,255,.06)}.config-seed-label[data-v-ffaf74a6]{font-size:11px;color:var(--text-muted, #86868b);flex-shrink:0;font-weight:600}.config-seed-value[data-v-ffaf74a6]{font-family:SF Mono,Cascadia Code,monospace;font-size:11px;color:#ffffff80;overflow:hidden;text-overflow:ellipsis}.toggle-label[data-v-ffaf74a6]{display:flex!important;align-items:center;justify-content:space-between;cursor:pointer}.toggle-switch[data-v-ffaf74a6]{width:36px;height:20px;border-radius:10px;background:#ffffff1f;position:relative;transition:background .2s;flex-shrink:0}.toggle-switch.on[data-v-ffaf74a6]{background:var(--primary, #0a84ff)}.toggle-knob[data-v-ffaf74a6]{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0000004d}.toggle-switch.on .toggle-knob[data-v-ffaf74a6]{transform:translate(16px)}.config-ip-fields[data-v-ffaf74a6]{border-left:2px solid rgba(10,132,255,.3);padding-left:12px;margin-left:4px}.diablo-button-danger[data-v-ffaf74a6]{background:linear-gradient(135deg,#ff453a,#ff6723)!important;border:none!important;color:#fff!important;display:flex;align-items:center;gap:4px}.diablo-button-danger[data-v-ffaf74a6]:hover{opacity:.9}.scan-btn[data-v-ffaf74a6]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.scan-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.scan-btn svg[data-v-ffaf74a6]{width:16px;height:16px}.test-comm-section[data-v-ffaf74a6]{margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}.test-comm-section h4[data-v-ffaf74a6]{font-size:13px;color:var(--text-primary, #f5f5f7);margin:0 0 8px;font-weight:600}.test-comm-bar[data-v-ffaf74a6]{display:flex;gap:8px}.test-seed-input[data-v-ffaf74a6]{flex:1;font-family:SF Mono,Cascadia Code,monospace!important;font-size:12px!important;letter-spacing:.5px}.test-comm-btn[data-v-ffaf74a6]{white-space:nowrap;padding:8px 16px;font-size:12px;border-radius:8px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);cursor:pointer;transition:all .2s}.test-comm-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:0 0 10px var(--glass-border-glow)}.test-comm-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}.console-section[data-v-ffaf74a6]{margin-top:16px}.console-header[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.console-header h4[data-v-ffaf74a6]{font-size:13px;color:var(--text-primary, #f5f5f7);margin:0;font-weight:600}.console-clear-btn[data-v-ffaf74a6]{background:none;border:none;color:var(--text-muted, #86868b);font-size:11px;cursor:pointer;padding:2px 6px;border-radius:4px}.console-clear-btn[data-v-ffaf74a6]:hover{color:var(--text-primary, #f5f5f7);background:#ffffff0f}.console-body[data-v-ffaf74a6]{background:#00000059;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px 10px;max-height:180px;overflow-y:auto;font-family:SF Mono,Cascadia Code,monospace;font-size:11px;line-height:1.6}.console-body[data-v-ffaf74a6]::-webkit-scrollbar{width:4px}.console-body[data-v-ffaf74a6]::-webkit-scrollbar-track{background:transparent}.console-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.console-empty[data-v-ffaf74a6]{color:#fff3;font-style:italic}.console-line[data-v-ffaf74a6]{white-space:pre-wrap;word-break:break-all}.log-send[data-v-ffaf74a6]{color:#ff9f0acc}.log-recv[data-v-ffaf74a6]{color:#30d158cc}.log-info[data-v-ffaf74a6]{color:#fff6}.log-error[data-v-ffaf74a6]{color:#ff453acc}.field-error[data-v-ffaf74a6]{display:block;font-size:12px;color:#ff453ae6;margin-top:4px}.scan-config-dialog .form-input.input-error[data-v-ffaf74a6]{border-color:#ff453ab3!important;box-shadow:0 0 8px #ff453a33}.advanced-btn[data-v-ffaf74a6]{margin-right:auto;padding:8px 16px;font-size:12px;border-radius:8px;cursor:pointer;transition:all .2s;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.advanced-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow)}.amixer-dialog[data-v-ffaf74a6]{width:640px;max-height:90vh}.amixer-dialog .dialog-header h3[data-v-ffaf74a6]{color:var(--diablo-text)}.amixer-body[data-v-ffaf74a6]{max-height:calc(90vh - 120px);overflow-y:auto;padding:16px}.amixer-body[data-v-ffaf74a6]::-webkit-scrollbar{width:4px}.amixer-body[data-v-ffaf74a6]::-webkit-scrollbar-track{background:transparent}.amixer-body[data-v-ffaf74a6]::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.amixer-toolbar[data-v-ffaf74a6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.06)}.amixer-seed-display[data-v-ffaf74a6]{font-size:11px;color:var(--text-muted, #86868b);letter-spacing:.5px}.amixer-get-btn[data-v-ffaf74a6]{padding:6px 14px;font-size:12px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);border-radius:8px;cursor:pointer;transition:all .2s}.amixer-get-btn[data-v-ffaf74a6]:hover:not(:disabled){background:var(--glass-bg-active);box-shadow:0 0 10px var(--glass-border-glow)}.amixer-get-btn[data-v-ffaf74a6]:disabled{opacity:.6;cursor:not-allowed}.amixer-groups[data-v-ffaf74a6]{display:flex;flex-direction:column;gap:12px}.amixer-group[data-v-ffaf74a6]{background:var(--glass-bg, rgba(255,255,255,.03));border:1px solid var(--glass-border, rgba(255,255,255,.06));border-radius:10px;padding:12px}.amixer-group-title[data-v-ffaf74a6]{font-size:12px;font-weight:600;color:var(--diablo-text, #f5f5f7);margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.04)}.amixer-controls[data-v-ffaf74a6]{display:flex;flex-direction:column;gap:8px}.amixer-row[data-v-ffaf74a6]{display:flex;align-items:center;gap:8px}.amixer-label[data-v-ffaf74a6]{flex:0 0 140px;font-size:12px;color:var(--diablo-text, rgba(255,255,255,.85));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.amixer-slider[data-v-ffaf74a6]{flex:1;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff1a;border-radius:2px;outline:none}.amixer-slider[data-v-ffaf74a6]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--glass-border-glow, #ff6b35);cursor:pointer;box-shadow:0 0 6px #ff6b3566}.amixer-value[data-v-ffaf74a6]{flex:0 0 28px;font-size:12px;font-family:SF Mono,Cascadia Code,monospace;color:var(--text-muted, #86868b);text-align:right}.amixer-select[data-v-ffaf74a6]{flex:0 0 80px;background:#0000004d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:var(--diablo-text, #f5f5f7);padding:4px 8px;font-size:12px;cursor:pointer;outline:none}.amixer-select[data-v-ffaf74a6]:focus{border-color:var(--glass-border-glow, #ff6b35)}.amixer-apply-btn[data-v-ffaf74a6]{flex:0 0 auto;padding:3px 10px;font-size:11px;border-radius:6px;background:#ffffff0f;color:var(--text-muted, #86868b);border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:all .2s;white-space:nowrap}.amixer-apply-btn[data-v-ffaf74a6]:hover{background:var(--glass-bg-hover, rgba(255,255,255,.08));color:var(--diablo-text, #f5f5f7);border-color:var(--glass-border-hover, rgba(255,255,255,.15))}.theme-light .amixer-group[data-v-ffaf74a6]{background:#00000005;border-color:#00000014}.theme-light .amixer-group-title[data-v-ffaf74a6]{color:var(--diablo-text);border-bottom-color:#0000000f}.theme-light .amixer-label[data-v-ffaf74a6]{color:var(--diablo-text)}.theme-light .amixer-slider[data-v-ffaf74a6]{background:#0000001a}.theme-light .amixer-select[data-v-ffaf74a6]{background:#fffc;border-color:#0000001f;color:#1d1d1f}.theme-light .amixer-apply-btn[data-v-ffaf74a6]{background:#0000000a;border-color:#0000001a;color:#6e6e73}.theme-light .amixer-apply-btn[data-v-ffaf74a6]:hover{background:#00000014;color:#1d1d1f;border-color:#0003}.theme-light .amixer-toolbar[data-v-ffaf74a6]{border-bottom-color:#0000000f}
@@ -0,0 +1 @@
1
+ .login-container[data-v-02aa6d08]{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden}.particles[data-v-02aa6d08]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.particle[data-v-02aa6d08]{position:absolute;width:4px;height:4px;background:var(--diablo-primary);border-radius:50%;opacity:.6;animation:particle-float-02aa6d08 10s infinite ease-in-out}@keyframes particle-float-02aa6d08{0%,to{transform:translate(0) scale(1);opacity:.6}50%{transform:translate(100px,-100px) scale(.5);opacity:0}}.login-card[data-v-02aa6d08]{width:100%;max-width:440px;padding:48px 40px;background:var(--glass-bg-card);-webkit-backdrop-filter:blur(var(--glass-blur-heavy));backdrop-filter:blur(var(--glass-blur-heavy));border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow),var(--glass-inner-glow);position:relative;z-index:1;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.login-header[data-v-02aa6d08]{text-align:center;margin-bottom:32px}.logo-container[data-v-02aa6d08]{display:flex;justify-content:center;margin-bottom:20px}.diablo-logo[data-v-02aa6d08]{position:relative;width:80px;height:80px;display:flex;align-items:center;justify-content:center}.logo-core[data-v-02aa6d08]{position:absolute;width:20px;height:20px;background:var(--diablo-primary);border-radius:50%;box-shadow:0 0 30px var(--diablo-primary),0 0 60px #0a84ff80;animation:core-pulse-02aa6d08 2s infinite ease-in-out}.logo-ring[data-v-02aa6d08]{position:absolute;width:50px;height:50px;border:2px solid var(--diablo-accent);border-radius:50%;box-shadow:0 0 20px #ff95004d,inset 0 0 20px #ff95001a;animation:ring-rotate-02aa6d08 8s infinite linear}.logo-particles[data-v-02aa6d08]{position:absolute;width:100%;height:100%}.logo-particle[data-v-02aa6d08]{position:absolute;top:50%;left:50%;width:6px;height:6px;background:var(--diablo-primary);border-radius:50%;opacity:.8;transform-origin:center;animation:particle-orbit-02aa6d08 4s infinite ease-in-out;animation-delay:var(--delay)}@keyframes core-pulse-02aa6d08{0%,to{transform:scale(1);box-shadow:0 0 30px var(--diablo-primary),0 0 60px #0a84ff80}50%{transform:scale(1.2);box-shadow:0 0 40px var(--diablo-primary),0 0 80px #0a84ffcc}}@keyframes ring-rotate-02aa6d08{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes particle-orbit-02aa6d08{0%,to{transform:translate(-50%,-50%) rotate(var(--angle)) translate(30px);opacity:.8}50%{transform:translate(-50%,-50%) rotate(var(--angle)) translate(40px);opacity:.4}}.login-title[data-v-02aa6d08]{margin-bottom:8px;font-size:32px}.subtitle[data-v-02aa6d08]{font-family:var(--diablo-font-family-ui);font-size:12px;color:var(--diablo-text-muted);letter-spacing:4px;text-transform:uppercase}.diablo-gold-line[data-v-02aa6d08]{margin:24px 0;width:100%;height:1px;background:linear-gradient(90deg,transparent,var(--diablo-accent),transparent);opacity:.5}.language-selector[data-v-02aa6d08]{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:24px}.theme-toggle[data-v-02aa6d08]{position:relative;width:48px;height:26px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:13px;cursor:pointer;transition:all .3s ease;box-shadow:var(--glass-inner-glow);flex-shrink:0}.theme-toggle-track[data-v-02aa6d08]{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 5px}.theme-toggle-icon[data-v-02aa6d08]{width:13px;height:13px;color:var(--diablo-text-muted);transition:all .3s ease;flex-shrink:0;opacity:.3}.theme-toggle[data-theme=diablo] .theme-toggle-icon.sun[data-v-02aa6d08]{opacity:.6;color:#ff9500}.theme-toggle[data-theme=light] .theme-toggle-icon.moon[data-v-02aa6d08]{opacity:.6;color:#5856d6}.theme-toggle-thumb[data-v-02aa6d08]{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;transition:all .3s cubic-bezier(.25,.46,.45,.94);box-shadow:0 1px 3px #00000026;z-index:1}.theme-toggle[data-theme=diablo] .theme-toggle-thumb[data-v-02aa6d08]{transform:translate(0);background:#ff9500}.theme-toggle[data-theme=light] .theme-toggle-thumb[data-v-02aa6d08]{transform:translate(22px);background:#5856d6}.theme-toggle[data-v-02aa6d08]:hover{border-color:var(--glass-border-hover)}.login-form[data-v-02aa6d08]{margin-top:32px}.form-group[data-v-02aa6d08]{margin-bottom:20px}.field-hint[data-v-02aa6d08]{font-size:11px;color:var(--diablo-text-muted);margin-top:6px;opacity:.7;padding-left:4px}.input-focused[data-v-02aa6d08]{border-color:var(--diablo-primary)!important;box-shadow:0 0 12px #0a84ff26!important}.login-btn[data-v-02aa6d08]{width:100%;margin-top:24px;font-size:16px;letter-spacing:3px}.loading-text[data-v-02aa6d08]{display:flex;align-items:center;justify-content:center;gap:10px}.form-footer[data-v-02aa6d08]{display:flex;justify-content:center;align-items:center;margin-top:20px;font-size:14px}.remember-me[data-v-02aa6d08]{display:flex;align-items:center;gap:8px;color:var(--diablo-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.remember-me input[data-v-02aa6d08]{cursor:pointer}.login-footer[data-v-02aa6d08]{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:32px;padding-top:24px;border-top:1px solid rgba(255,255,255,.1);font-size:12px;color:var(--diablo-text-muted)}.footer-divider[data-v-02aa6d08]{color:var(--diablo-accent);width:24px;height:24px;display:flex;align-items:center;justify-content:center}.footer-divider [data-v-02aa6d08] svg{width:100%;height:100%;stroke:var(--diablo-accent)}.fire-effect[data-v-02aa6d08]{position:absolute;bottom:0;left:50%;transform:translate(-50%);display:flex;gap:4px;pointer-events:none}.flame[data-v-02aa6d08]{width:3px;height:60px;background:linear-gradient(to top,var(--diablo-fire),transparent);border-radius:50%/60% 60% 40% 40%;animation:flame-dance-02aa6d08 2s infinite ease-in-out;opacity:.6}@keyframes flame-dance-02aa6d08{0%,to{height:40px;opacity:.4}50%{height:80px;opacity:.8}}@media (max-width: 480px){.login-card[data-v-02aa6d08]{padding:32px 24px}.login-title[data-v-02aa6d08]{font-size:24px}.diablo-logo[data-v-02aa6d08]{width:60px;height:60px}.logo-ring[data-v-02aa6d08]{width:40px;height:40px}}.login-scan-btn[data-v-02aa6d08]{position:fixed;top:20px;right:20px;z-index:100;width:40px;height:40px;border-radius:10px;background:var(--glass-bg, rgba(255,255,255,.05));border:1px solid var(--glass-border, rgba(255,255,255,.1));color:var(--diablo-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-scan-btn[data-v-02aa6d08]:hover{background:var(--glass-bg-hover, rgba(255,255,255,.1));border-color:var(--glass-border-hover, rgba(255,255,255,.2));color:var(--diablo-text, #f5f5f7);box-shadow:0 0 12px var(--glass-border-glow, rgba(255,107,53,.3))}.login-scan-btn svg[data-v-02aa6d08]{width:18px;height:18px}.dialog-overlay[data-v-02aa6d08]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog[data-v-02aa6d08]{background:var(--glass-bg-card, rgba(20,20,30,.95));border:1px solid var(--glass-border, rgba(255,255,255,.1));border-radius:16px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 20px 60px #00000080;overflow:hidden}.dialog-header[data-v-02aa6d08]{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--glass-border, rgba(255,255,255,.06))}.dialog-header h3[data-v-02aa6d08]{flex:1;font-size:16px;font-weight:600;color:var(--diablo-text, #f5f5f7);margin:0}.close-btn[data-v-02aa6d08]{width:28px;height:28px;border:none;background:#ffffff0f;border-radius:6px;color:var(--diablo-text-muted);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.close-btn[data-v-02aa6d08]:hover{background:#ff453a33;color:#ff453a}.scan-header-icon[data-v-02aa6d08]{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,var(--diablo-primary),var(--diablo-accent));display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.scan-header-icon.config-icon[data-v-02aa6d08]{background:linear-gradient(135deg,#ff6b35,#ff453a)}.scan-dialog[data-v-02aa6d08]{width:1100px;max-height:85vh}.scan-dialog .dialog-body[data-v-02aa6d08]{max-height:calc(85vh - 70px);overflow-y:auto;padding:20px}.scan-top-bar[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.scan-hint[data-v-02aa6d08]{margin:0;font-size:13px;color:var(--diablo-text-muted)}.scan-action-btn[data-v-02aa6d08]{white-space:nowrap;padding:8px 16px;font-size:12px;background:var(--glass-bg-hover);color:var(--diablo-text);border:1px solid var(--glass-border-hover);border-radius:8px;cursor:pointer}.scan-error[data-v-02aa6d08]{color:#ff453ae6;font-size:13px;margin-bottom:12px}.scan-main-layout[data-v-02aa6d08]{display:flex;gap:16px}.scan-main-left[data-v-02aa6d08]{flex:1;min-width:0}.scan-console-side[data-v-02aa6d08]{width:280px;flex-shrink:0;display:flex;flex-direction:column}.scan-results-header[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.scan-results-header h4[data-v-02aa6d08]{font-size:13px;color:var(--diablo-text, #f5f5f7);margin:0}.scan-count[data-v-02aa6d08]{color:var(--diablo-accent);font-weight:700}.scan-device-table[data-v-02aa6d08]{font-size:12px}.scan-table-header[data-v-02aa6d08],.scan-table-row[data-v-02aa6d08]{display:flex;align-items:center;gap:6px;padding:8px 10px}.scan-table-header[data-v-02aa6d08]{color:var(--diablo-text-muted);font-weight:600;border-bottom:1px solid rgba(255,255,255,.06);font-size:11px}.scan-table-row[data-v-02aa6d08]{border-bottom:1px solid rgba(255,255,255,.03);transition:background .2s;color:var(--diablo-text, rgba(255,255,255,.85))}.scan-table-row[data-v-02aa6d08]:hover{background:#ffffff0a}.col-idx[data-v-02aa6d08]{flex:0 0 24px;text-align:center}.col-ip[data-v-02aa6d08]{flex:0 0 110px}.col-seed[data-v-02aa6d08]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:11px}.col-media[data-v-02aa6d08]{flex:0 0 100px}.col-port[data-v-02aa6d08],.col-flag[data-v-02aa6d08]{flex:0 0 50px;text-align:center}.col-dns[data-v-02aa6d08]{flex:0 0 85px}.col-action[data-v-02aa6d08]{flex:0 0 32px;text-align:center}.tag[data-v-02aa6d08]{font-size:10px;padding:1px 6px;border-radius:4px;font-weight:600}.tag-on[data-v-02aa6d08]{background:#30d15826;color:#30d158e6}.tag-off[data-v-02aa6d08]{background:#ffffff0d;color:#ffffff4d}.config-btn[data-v-02aa6d08]{width:24px;height:24px;border:none;background:#ffffff0f;border-radius:5px;color:var(--diablo-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.config-btn[data-v-02aa6d08]:hover{background:#ff6b3526;color:var(--diablo-accent)}.scan-empty[data-v-02aa6d08]{text-align:center;color:var(--diablo-text-muted);padding:32px 0;display:flex;flex-direction:column;align-items:center;gap:8px}.scan-empty p[data-v-02aa6d08]{margin:0;font-size:13px}.console-header[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.console-header h4[data-v-02aa6d08]{font-size:13px;color:var(--diablo-text, #f5f5f7);margin:0;font-weight:600}.console-clear-btn[data-v-02aa6d08]{background:none;border:none;color:var(--diablo-text-muted);font-size:11px;cursor:pointer;padding:2px 6px;border-radius:4px}.console-clear-btn[data-v-02aa6d08]:hover{color:var(--diablo-text, #f5f5f7);background:#ffffff0f}.console-body[data-v-02aa6d08]{background:#00000059;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px 10px;max-height:50vh;overflow-y:auto;font-family:SF Mono,Cascadia Code,monospace;font-size:11px;line-height:1.6;flex:1}.console-body[data-v-02aa6d08]::-webkit-scrollbar{width:4px}.console-body[data-v-02aa6d08]::-webkit-scrollbar-track{background:transparent}.console-body[data-v-02aa6d08]::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.console-empty[data-v-02aa6d08]{color:#fff3;font-style:italic}.console-line[data-v-02aa6d08]{white-space:pre-wrap;word-break:break-all}.log-send[data-v-02aa6d08]{color:#ff9f0acc}.log-recv[data-v-02aa6d08]{color:#30d158cc}.log-info[data-v-02aa6d08]{color:#fff6}.log-error[data-v-02aa6d08]{color:#ff453acc}.scan-config-dialog[data-v-02aa6d08]{width:500px;max-height:85vh}.scan-config-dialog .dialog-body[data-v-02aa6d08]{max-height:calc(85vh - 130px);overflow-y:auto;padding:20px}.config-seed-display[data-v-02aa6d08]{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px 12px;background:#0003;border-radius:8px;border:1px solid rgba(255,255,255,.06)}.config-seed-label[data-v-02aa6d08]{font-size:12px;color:var(--diablo-text-muted)}.config-seed-value[data-v-02aa6d08]{font-size:11px;color:var(--diablo-text, #f5f5f7)}.form-group[data-v-02aa6d08]{margin-bottom:4px}.form-group label[data-v-02aa6d08]{display:block;font-size:12px;color:var(--diablo-text-muted);margin-bottom:4px}.form-input[data-v-02aa6d08]{width:100%;padding:8px 12px;background:#0003;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:var(--diablo-text, #f5f5f7);font-size:13px;outline:none;transition:border-color .2s;box-sizing:border-box}.form-input[data-v-02aa6d08]:focus{border-color:var(--glass-border-glow, #ff6b35)}.toggle-label[data-v-02aa6d08]{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.config-ip-fields[data-v-02aa6d08]{display:flex;flex-direction:column;gap:8px;padding:12px;background:#0000001a;border-radius:8px;border:1px solid rgba(255,255,255,.04);margin-bottom:8px}.config-row-2col[data-v-02aa6d08]{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.console-section[data-v-02aa6d08]{margin-top:16px}.dialog-footer[data-v-02aa6d08]{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid var(--glass-border, rgba(255,255,255,.06))}.cancel-btn[data-v-02aa6d08],.confirm-btn[data-v-02aa6d08]{padding:8px 20px;border-radius:8px;font-size:13px;cursor:pointer;transition:all .2s}.cancel-btn[data-v-02aa6d08]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text)}.confirm-btn[data-v-02aa6d08]{background:var(--glass-bg-hover);border:1px solid var(--glass-border-hover);color:var(--diablo-text);box-shadow:var(--glass-inner-glow)}.cancel-btn[data-v-02aa6d08]:hover{background:var(--glass-bg-hover)}.confirm-btn[data-v-02aa6d08]:hover{background:var(--glass-bg-active)}.mono[data-v-02aa6d08]{font-family:SF Mono,Cascadia Code,Consolas,monospace}.theme-light .login-card{background:var(--glass-bg-card)!important;border-color:var(--glass-border)!important;-webkit-backdrop-filter:blur(var(--glass-blur-heavy))!important;backdrop-filter:blur(var(--glass-blur-heavy))!important}.theme-light .toggle-switch{background:#0003!important;border-color:#00000026!important}.theme-light .toggle-switch.on{background:#e68a00!important;border-color:transparent!important}.login-container .toggle-switch{width:36px;height:20px;border-radius:10px;background:#ffffff40;border:1px solid rgba(255,255,255,.2);position:relative;transition:background .2s;flex-shrink:0;display:inline-block}.login-container .toggle-switch.on{background:#0a84ff;border-color:transparent}.login-container .toggle-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0000004d}.login-container .toggle-switch.on .toggle-knob{transform:translate(16px)}
@@ -0,0 +1 @@
1
+ .log-page[data-v-4f8703bd]{max-width:1400px;margin:0 auto;width:100%;display:flex;flex-direction:column}.page-header[data-v-4f8703bd]{margin-bottom:16px;flex-shrink:0}.page-title[data-v-4f8703bd]{font-family:var(--diablo-font-family);font-size:22px;font-weight:600;color:var(--diablo-text);letter-spacing:-.3px}.glass-section[data-v-4f8703bd]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:12px;padding:16px 20px;margin-bottom:16px;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));flex-shrink:0}.log-table-section[data-v-4f8703bd]{display:flex;flex-direction:column;margin-bottom:0;padding:0;overflow:hidden}.table-scroll-wrap[data-v-4f8703bd]{max-height:calc(100vh - 280px);min-height:300px;overflow:auto;padding:0 20px}.toolbar-row[data-v-4f8703bd]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.toolbar-left[data-v-4f8703bd]{display:flex;align-items:center;gap:12px}.toolbar-right[data-v-4f8703bd]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.select-input[data-v-4f8703bd]{min-width:200px}.cache-size[data-v-4f8703bd]{font-size:13px;color:var(--diablo-text-muted);white-space:nowrap}.diablo-btn[data-v-4f8703bd]{padding:8px 18px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--diablo-text);transition:all .2s}.diablo-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.primary-btn[data-v-4f8703bd]{background:var(--diablo-primary);color:#fff;border-color:var(--diablo-primary)}.primary-btn[data-v-4f8703bd]:hover{filter:brightness(1.15)}.toolbar-btn[data-v-4f8703bd]{padding:6px 14px;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--glass-border);background:transparent;color:var(--diablo-text-muted);transition:all .2s}.toolbar-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover)}.danger-btn[data-v-4f8703bd]:hover{background:#ff3b301a;border-color:#ff3b304d;color:#ff3b30}.table-wrap[data-v-4f8703bd]{overflow-x:auto}.data-table[data-v-4f8703bd]{width:100%;border-collapse:collapse;font-size:13px}.data-table thead[data-v-4f8703bd]{position:sticky;top:0;background:var(--glass-bg-card);z-index:1}.data-table th[data-v-4f8703bd]{text-align:left;padding:12px;font-weight:600;color:var(--diablo-text-muted);border-bottom:1px solid var(--glass-border);white-space:nowrap;background:var(--glass-bg-card)}.data-table td[data-v-4f8703bd]{padding:10px 12px;border-bottom:1px solid var(--glass-border);color:var(--diablo-text)}.data-table tbody tr[data-v-4f8703bd]:hover{background:var(--glass-bg-hover)}.td-time[data-v-4f8703bd]{white-space:nowrap;font-size:12px;color:var(--diablo-text-muted)}.td-num[data-v-4f8703bd]{text-align:right;font-variant-numeric:tabular-nums}.td-filename[data-v-4f8703bd]{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.td-action[data-v-4f8703bd]{text-align:center}.act-btn[data-v-4f8703bd]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;background:transparent;border:1px solid var(--glass-border);color:var(--diablo-text-muted);transition:all .2s}.act-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover);color:var(--diablo-text)}.act-btn-play[data-v-4f8703bd]:hover{background:#0a84ff1a;border-color:#0a84ff4d;color:var(--diablo-primary)}.empty-state[data-v-4f8703bd]{text-align:center;padding:40px;color:var(--diablo-text-muted);font-size:14px}.pagination-row[data-v-4f8703bd]{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px 20px;border-top:1px solid var(--glass-border);flex-shrink:0;background:var(--glass-bg-card);border-radius:0 0 12px 12px}.page-btn[data-v-4f8703bd]{padding:6px 16px;border-radius:6px;font-size:13px;cursor:pointer;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text);transition:all .2s}.page-btn[data-v-4f8703bd]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.page-btn[data-v-4f8703bd]:disabled{opacity:.4;cursor:not-allowed}.page-info[data-v-4f8703bd]{font-size:13px;color:var(--diablo-text-muted)}.modal-overlay[data-v-4f8703bd]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-box[data-v-4f8703bd]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;padding:24px;min-width:300px;max-width:500px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 8px 32px #0006}.audio-modal-box[data-v-4f8703bd]{width:420px}.modal-title[data-v-4f8703bd]{font-size:15px;font-weight:600;color:var(--diablo-text);margin-bottom:16px}.modal-body[data-v-4f8703bd]{font-size:14px;color:var(--diablo-text-muted);line-height:1.5;margin-bottom:20px}.modal-actions[data-v-4f8703bd]{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.modal-btn[data-v-4f8703bd]{padding:8px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text-muted)}.modal-btn[data-v-4f8703bd]:hover{background:var(--glass-bg-hover);color:var(--diablo-text)}.audio-player-wrap[data-v-4f8703bd]{display:flex;justify-content:center;padding:12px 0}.audio-player[data-v-4f8703bd]{width:100%;height:40px}.form-input[data-v-4f8703bd]{padding:8px 12px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;color:var(--diablo-text);font-size:13px;transition:all .2s}.form-input[data-v-4f8703bd]:focus{outline:none;border-color:var(--glass-border-glow);box-shadow:0 0 8px var(--glass-border-glow)}@media (max-width: 768px){.toolbar-row[data-v-4f8703bd]{flex-direction:column;align-items:stretch}.toolbar-left[data-v-4f8703bd],.toolbar-right[data-v-4f8703bd]{flex-wrap:wrap}.select-input[data-v-4f8703bd]{min-width:0;flex:1}.audio-modal-box[data-v-4f8703bd]{width:90%}.td-filename[data-v-4f8703bd]{max-width:120px}}
@@ -0,0 +1 @@
1
+ import{f as e,w as l,o as a,n as o,y as s,A as n,u as t,B as i,C as c,H as u,p as r,M as d,F as v,z as p,E as g,N as m,c as b,r as h,X as y,t as f,G as k}from"./vue-vendor-BaBirIg_.js";import{u as C,a as w}from"./index-BuEwLgbU.js";import{k as x,g as M,m as S,n as $,s as D,o as F,p as j,q as P,t as V,v as I,w as _}from"./api-C3Fyph-A.js";import{_ as B}from"./_plugin-vue_export-helper-BCo6x5W8.js";const A={class:"group-manage"},L={class:"page-header"},U={class:"page-title"},G={class:"header-actions"},H=["placeholder"],N=["disabled"],T=["disabled"],q=["disabled"],z={key:0,class:"loading-container"},O={key:1,class:"empty-state"},E={key:2,class:"group-list-container"},R={class:"view-mode-bar"},J={class:"view-mode-toggle"},X=["title"],K=["title"],Q={class:"list-header"},W={class:"header-cell cell-id"},Y={class:"header-cell cell-name"},Z={class:"header-cell cell-device-count"},ee={class:"header-cell cell-actions"},le={class:"cell cell-id"},ae={class:"cell cell-name"},oe={class:"cell cell-device-count"},se={class:"cell cell-actions"},ne=["onClick","disabled"],te=["onClick","disabled"],ie=["onClick","disabled"],ce=["onClick","disabled"],ue=["onClick","disabled"],re={key:1,class:"group-card-grid"},de={class:"group-card-header"},ve={class:"group-card-index"},pe={class:"group-card-count"},ge={class:"group-card-name"},me={class:"group-card-actions"},be=["onClick","disabled","title"],he=["onClick","disabled","title"],ye=["onClick","disabled","title"],fe=["onClick","disabled","title"],ke=["onClick","disabled","title"],Ce={class:"dialog-header"},we={class:"modal-body"},xe={class:"form-group"},Me=["placeholder"],Se={class:"search-stats"},$e={key:0},De={key:1},Fe={key:0,class:"loading-container"},je={key:1,class:"device-selector"},Pe={class:"device-list"},Ve={class:"device-list-content"},Ie=["value"],_e={key:0,class:"no-search-result"},Be={class:"selected-devices"},Ae={class:"selected-devices-content"},Le=["onClick"],Ue={key:0,class:"empty-selected"},Ge={class:"modal-footer"},He=["disabled"],Ne={class:"dialog-header"},Te={class:"modal-body"},qe={class:"form-group"},ze={class:"form-group form-group-inline"},Oe=["placeholder"],Ee={class:"modal-footer"},Re=["disabled"],Je={class:"dialog-header"},Xe={class:"modal-body modal-body-large"},Ke={key:0,class:"video-container"},Qe=["src"],We={key:1,class:"no-video"},Ye={class:"modal-footer"},Ze={class:"drawer-title"},el={class:"drawer-body"},ll={key:0,class:"empty-state"},al={key:1,class:"play-items"},ol=["onClick"],sl={class:"drawer-footer"},nl={class:"dialog-header"},tl={class:"modal-body"},il={key:0,class:"empty-state"},cl={key:1,class:"group-select-list"},ul=["onClick"],rl={class:"group-select-info"},dl={class:"group-select-name"},vl={class:"group-select-count"},pl={class:"modal-footer"},gl={class:"dialog-header"},ml={class:"modal-body"},bl={class:"file-search-container"},hl=["placeholder"],yl={key:0,class:"loading-container"},fl={key:1,class:"modal-play-content"},kl={class:"file-selector"},Cl={class:"file-list-content"},wl=["onClick","onDblclick"],xl={class:"file-info"},Ml={class:"file-name"},Sl={class:"file-meta"},$l={key:0},Dl={key:1},Fl={class:"selected-files-panel"},jl={class:"selected-files-content"},Pl=["onDragstart","onDrop"],Vl={class:"selected-file-info"},Il={class:"file-number"},_l={class:"file-name"},Bl={class:"file-actions"},Al=["onClick","disabled","title"],Ll=["onClick","disabled","title"],Ul=["onClick","title"],Gl={key:0,class:"empty-selected-files"},Hl={class:"hint"},Nl={class:"play-settings"},Tl={class:"setting-item"},ql={class:"number-input-group"},zl=["disabled"],Ol=["disabled"],El={class:"setting-hint"},Rl={class:"setting-item"},Jl={class:"interval-input-group"},Xl={class:"number-input-group"},Kl=["disabled"],Ql=["disabled"],Wl={key:0,class:"interval-presets"},Yl=["onClick"],Zl={class:"setting-hint"},ea={class:"setting-item"},la={class:"duration-display"},aa={class:"duration-value"},oa={class:"duration-unit"},sa={class:"duration-bracket"},na={class:"setting-item"},ta={class:"number-input-group"},ia=["disabled"],ca=["max"],ua=["disabled"],ra=["disabled"],da={key:0,class:"interval-presets"},va=["onClick"],pa={class:"setting-hint"},ga={class:"modal-footer"},ma=["disabled"],ba={class:"confirm-dialog-title"},ha={class:"confirm-dialog-body"},ya={class:"confirm-dialog-footer"},fa={key:11,class:"stop-play-loading-overlay"},ka={class:"stop-play-loading-content"},Ca={class:"loading-text"},wa=B(e({__name:"index",setup(e){const{t:B}=C(),wa=w(),xa=b(()=>{if(!Va.value.trim())return Sa.value;const e=Va.value.toLowerCase().trim();return Sa.value.filter(l=>l.label.toLowerCase().includes(e)||String(l.id).includes(e))}),Ma=h([]),Sa=h([]),$a=h([]),Da=h([]),Fa=h(!1),ja=h("card"),Pa=h(!1),Va=h(""),Ia=h(!1),_a=h([]),Ba=h([]),Aa=h(""),La=h(-1),Ua=h(!1),Ga=h({playmode:1,jiange:1}),Ha=[1,5,10,30,60,120,300,600,1800,3600,7200],Na=h(0),Ta=h(!1),qa=h(!1),za=b(()=>{if(!Aa.value.trim())return _a.value;const e=Aa.value.toLowerCase().trim();return _a.value.filter(l=>{var a;return(null==(a=l.filename)?void 0:a.toLowerCase().includes(e))||String(l.id).includes(e)})}),Oa=b(()=>{if(0===Ba.value.length)return 0;let e=0,l=!1;for(const a of Ba.value){const o=_a.value.find(e=>e.id===a);o&&o.len&&(e+=o.len,l=!0)}if(!l)return 0;return(e+Ba.value.length*Ga.value.jiange)*Ga.value.playmode}),Ea=b(()=>{const e=Oa.value;if(e<=0)return[];return[60,120,300,600,1200,1800,2400,3e3,3600,7200,10800,14400,18e3].filter(l=>l<=e)}),Ra=h(""),Ja=h(""),Xa=h(null),Ka=h(!1),Qa=h(!1),Wa=h(!1),Ya=h(!1),Za=h(!1),eo=h(!1),lo=h(!1),ao=h(""),oo=h(""),so=h(null),no=h({show:!1,text:"",type:"success"});function to(e,l="success",a=3e3){no.value={show:!0,text:e,type:l},setTimeout(()=>{no.value.show=!1},a)}function io(){so.value&&so.value(),lo.value=!1}function co(){lo.value=!1}async function uo(){Fa.value=!0;try{const e=await x();console.log("分组详情响应:",e),e.res&&Array.isArray(e.list)?(Ma.value=e.list,console.log(`成功获取 ${e.list.length} 个分组`),e.list.forEach((e,l)=>{var a;console.log(`分组 ${l+1}:`,{gid:e.gid,name:e.name,deviceCount:(null==(a=e.dlist)?void 0:a.length)||0})}),to(B("groups.loadSuccess",{count:e.list.length}),"success")):(Ma.value=[],to(B("groups.loadFailed"),"error"))}catch(e){console.error("获取分组列表失败:",e),to(B("groups.loadFailed"),"error")}finally{Fa.value=!1}}async function ro(){try{const e=await M();console.log("设备列表响应:",e),e.res&&Array.isArray(e.results)&&(Sa.value=e.results.map(e=>{const l=e.id||0;return{id:l,key:String(l),label:e.devname||e.name||B("groups.untitled"),seed:e.device_seed||""}}),console.log("可用设备列表:",Sa.value))}catch(e){console.error("获取设备列表失败:",e)}}async function vo(){const e=Ra.value.trim();if(e){Fa.value=!0;try{const l=await S({gname:e});console.log("添加分组响应:",l),l.res?(to(B("groups.addSuccess"),"success"),Ra.value="",await uo()):to(B("groups.addFailed"),"error")}catch(l){console.error("添加分组失败:",l),to(B("groups.addFailed"),"error")}finally{Fa.value=!1}}else to(B("groups.nameRequired"),"error")}async function po(e){Xa.value=e,$a.value=[],Va.value="",Pa.value=!0,Ka.value=!0;try{const l=e.gid||e.pid;if(!l)return void to(B("groups.invalidGroupId"),"error");const a=await F({gid:l});console.log("分组设备响应:",a),a.res&&($a.value=a.dev_info_S.map(e=>{const l=a.dev_info.find(l=>l.key===e);return(null==l?void 0:l.id)||parseInt(e)||0}).filter(e=>e>0),console.log("已选中的设备ID:",$a.value))}catch(l){console.error("获取分组设备失败:",l),to(B("groups.loadDevicesFailed"),"error")}finally{Pa.value=!1}}async function go(){if(!Xa.value)return;if(0===$a.value.length)return void to(B("groups.selectAtLeastOneDevice"),"error");const e=Xa.value.gid||Xa.value.pid;if(e){Fa.value=!0;try{const l=$a.value.map(e=>String(e)).join("|");console.log("保存分组设备参数:",{gid:e,devids:l});const a=await $({gid:e,devids:l});console.log("编辑分组设备响应:",a),a.res?(to(B("groups.saveSuccess"),"success"),Ka.value=!1,await uo()):to(B("groups.saveFailed"),"error")}catch(l){console.error("编辑分组设备失败:",l),to(B("groups.saveFailed"),"error")}finally{Fa.value=!1}}else to(B("groups.invalidGroupId"),"error")}function mo(e){Xa.value=e,Ja.value="none"!==e.msurl&&e.msurl?e.msurl:B("groups.noVideoUrlSet"),Qa.value=!0}async function bo(){if(!Xa.value)return;const e=Xa.value.gid||Xa.value.pid;if(e){Fa.value=!0;try{const l=await D({gid:e,msurl:Ja.value});console.log("保存视频响应:",l),l.res?(to(B("groups.saveSuccess"),"success"),Qa.value=!1,await uo()):to(B("groups.saveFailed"),"error")}catch(l){console.error("保存视频失败:",l),to(B("groups.saveFailed"),"error")}finally{Fa.value=!1}}else to(B("groups.invalidGroupId"),"error")}function ho(e){Xa.value=e,Ja.value="none"!==e.msurl&&e.msurl?e.msurl:"",Wa.value=!0}function yo(){0!==Ma.value.length?Za.value=!0:to(B("groups.noGroups"),"error")}function fo(){Za.value=!1}async function ko(e){Xa.value=e,Ba.value=[],Aa.value="",Ga.value={playmode:1,jiange:1},Na.value=0,Ta.value=!0,Za.value=!1,Ia.value=!0,Ua.value=!1,qa.value=!1;try{const e=await V();e.res&&Array.isArray(e.filelist)?_a.value=e.filelist:(_a.value=[],to(B("groups.loadFilesFailed"),"error"))}catch(l){console.error("获取文件列表失败:",l),to(B("groups.loadFilesFailed"),"error")}finally{Ta.value=!1}}async function Co(e){await ko(e)}async function wo(e){const l=e.gid||e.pid;if(!l)return void to(B("groups.invalidGroupId"),"error");if(confirm(B("groups.deleteConfirm"))){Fa.value=!0;try{const e=await I({gid:l});console.log("删除分组响应:",e),e.res?(to(B("groups.deleteSuccess"),"success"),await uo()):to(B("groups.deleteFailed"),"error")}catch(a){console.error("删除分组失败:",a),to(B("groups.deleteFailed"),"error")}finally{Fa.value=!1}}}function xo(e){const l=_a.value.find(l=>l.id===e);return(null==l?void 0:l.filename)||B("groups.unknownFile")}function Mo(e){const{t:l}=C(),a=Math.floor(e/3600),o=Math.floor(e%3600/60),s=e%60;return a>0?`${a}:${String(o).padStart(2,"0")}:${String(s).padStart(2,"0")}`:o>0?`${o}:${String(s).padStart(2,"0")}`:`${s}${l("common.seconds")}`}function So(e){const l=Ga.value.playmode+e;l>=1&&l<=99&&(Ga.value.playmode=l)}function $o(e){const l=Ga.value.jiange+e;l>=0&&l<=10800&&(Ga.value.jiange=l)}function Do(e){const l=Na.value+e,a=Oa.value;(a>0&&l>=1&&l<=a||0===a&&l>=1)&&(Na.value=l)}function Fo(e){const{t:l}=C();if(0===e)return`0${l("common.seconds")}`;const a=Math.floor(e/3600),o=Math.floor(e%3600/60),s=e%60,n=[];return a>0&&n.push(`${a}${l("common.hours")}`),o>0&&n.push(`${o}${l("common.minutes")}`),(s>0||0===n.length)&&n.push(`${s}${l("common.seconds")}`),n.join("")}async function jo(){if(!Xa.value||0===Ba.value.length)return void to(B("groups.selectAtLeastOneFile"),"error");const e=Xa.value.gid||Xa.value.pid;if(!e)return void to(B("groups.invalidGroupId"),"error");const l=await F({gid:e});if(!l.res||!l.dev_info_S||0===l.dev_info_S.length)return void to(B("groups.groupHasNoDevices"),"error");const a=l.dev_info_S.map(e=>{const a=l.dev_info.find(l=>l.key===e);return(null==a?void 0:a.id)||parseInt(e)}).filter(e=>e&&!isNaN(e)).join("|"),o=Ba.value.map(e=>String(e)).join("|");Fa.value=!0;try{const e=Na.value>0?Na.value:Oa.value;(await j({playmode:Ga.value.playmode,len:e,jiange:Ga.value.jiange,fileids:o,snids:a})).res?(to(B("groups.playStarted"),"success"),Ia.value=!1,await Po()):to(B("groups.playFailed"),"error")}catch(s){console.error("启动播放失败:",s),to(B("groups.playFailed"),"error")}finally{Fa.value=!1}}async function Po(){try{const e=await P();console.log("📋 播放列表响应:",e),console.log("播放列表数据:",e.tps),console.log("res.res:",e.res),console.log("Array.isArray(res.tps):",Array.isArray(e.tps)),e.res&&Array.isArray(e.tps)?(Da.value=[],await y(),Da.value=[...e.tps],console.log("✅ 播放列表已更新,数量:",Da.value.length),console.log("📋 新播放列表内容:",JSON.stringify(Da.value))):(Da.value=[],console.log("❌ 播放列表为空或格式错误"),console.log("❌ playList.value 已设置为空数组"))}catch(e){console.error("获取播放列表失败:",e),Da.value=[]}}async function Vo(){await Po(),Ya.value=!0}async function Io(e){var l;const a=e.tpid||e.tmpid||e.id;var o,s,n;(console.log("🎵 停止播放调试信息:"),console.log("播放项完整数据:",e),console.log("使用的播放ID(tpid):",a),console.log("使用的用户ID:",null==(l=wa.userInfo)?void 0:l.id),a)?(o=B("common.confirm"),s=B("groups.stopPlayConfirm"),n=async()=>{await async function(e){var l;try{const a=wa.token||"",o=null==(l=wa.userInfo)?void 0:l.id;eo.value=!0;const s=Math.floor(6*Math.random())+5;console.log(`🕐 停止播放模拟延迟: ${s}秒`),await new Promise(e=>setTimeout(e,1e3*s));const n=await _({id:o,token:a,tpid:e});console.log("🎵 停止播放响应:",n),console.log("🎵 响应结果res.res:",n.res),console.log("⏳ 等待服务器处理停止操作..."),await new Promise(e=>setTimeout(e,3e3)),console.log("🔄 开始获取播放列表..."),await Po(),console.log("📊 刷新后播放列表长度:",Da.value.length),eo.value=!1,n.res?0===Da.value.length?(console.log("🎯 播放列表为空,抽屉保持打开"),to(B("groups.stopPlaySuccess"),"success")):(console.log("📋 播放列表还有",Da.value.length,"个播放项"),to(B("groups.stopPlaySuccess"),"success")):to(B("groups.stopPlayFailed"),"error")}catch(a){console.error("停止播放失败:",a),eo.value=!1,to(B("groups.stopPlayFailed"),"error")}}(a)},ao.value=o,oo.value=s,so.value=n,lo.value=!0):to(B("groups.invalidPlayId"),"error")}function _o(e){const l=Sa.value.find(l=>l.id===e);return(null==l?void 0:l.label)||B("groups.unknownDevice")}function Bo(){Ka.value=!1,Qa.value=!1,Wa.value=!1,Ia.value=!1,Za.value=!1,Xa.value=null,$a.value=[],Ja.value="",Va.value="",Ba.value=[],Aa.value="",La.value=-1,Na.value=0,Ua.value=!1,qa.value=!1}function Ao(){Ya.value=!1}return l(Oa,e=>{e>0&&Na.value>e&&(Na.value=e)}),a(async()=>{await Promise.all([uo(),ro(),Po()])}),(e,l)=>{var a,b,h,y,w,x;return f(),o("div",A,[s("div",L,[s("h2",U,n(t(B)("groups.manage")),1),s("div",G,[i(s("input",{"onUpdate:modelValue":l[0]||(l[0]=e=>Ra.value=e),placeholder:t(B)("groups.inputName"),class:"input-name form-input"},null,8,H),[[c,Ra.value]]),s("button",{onClick:vo,class:"add-btn diablo-button",disabled:Fa.value},[l[26]||(l[26]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("path",{d:"M12 5v14M5 12h14"})],-1)),u(" "+n(t(B)("groups.add")),1)],8,N),s("button",{onClick:yo,class:"group-play-btn diablo-button",disabled:Fa.value},[l[27]||(l[27]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[s("path",{d:"M8 5v14l11-7z"})],-1)),u(" "+n(t(B)("groups.groupPlay")),1)],8,T),s("button",{onClick:Vo,class:"play-list-btn diablo-button",disabled:Fa.value},[l[28]||(l[28]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[s("path",{d:"M4 6h16M4 12h16M4 18h16"})],-1)),u(" "+n(t(B)("groups.playList")),1)],8,q)])]),Fa.value?(f(),o("div",z,[l[29]||(l[29]=s("div",{class:"loading-spinner"},null,-1)),s("p",null,n(t(B)("common.loading")),1)])):0===Ma.value.length?(f(),o("div",O,[s("p",null,n(t(B)("groups.noGroups")),1)])):(f(),o("div",E,[s("div",R,[s("div",J,[s("button",{class:r(["view-mode-btn",{active:"list"===ja.value}]),onClick:l[1]||(l[1]=e=>ja.value="list"),title:t(B)("devices.listView")},[...l[30]||(l[30]=[d('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-ca949926><line x1="8" y1="6" x2="21" y2="6" data-v-ca949926></line><line x1="8" y1="12" x2="21" y2="12" data-v-ca949926></line><line x1="8" y1="18" x2="21" y2="18" data-v-ca949926></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-ca949926></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-ca949926></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-ca949926></line></svg>',1)])],10,X),s("button",{class:r(["view-mode-btn",{active:"card"===ja.value}]),onClick:l[2]||(l[2]=e=>ja.value="card"),title:t(B)("devices.cardView")},[...l[31]||(l[31]=[d('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-ca949926><rect x="3" y="3" width="7" height="7" data-v-ca949926></rect><rect x="14" y="3" width="7" height="7" data-v-ca949926></rect><rect x="3" y="14" width="7" height="7" data-v-ca949926></rect><rect x="14" y="14" width="7" height="7" data-v-ca949926></rect></svg>',1)])],10,K)])]),"list"===ja.value?(f(),o(v,{key:0},[s("div",Q,[s("div",W,n(t(B)("groups.id")),1),s("div",Y,n(t(B)("groups.name")),1),s("div",Z,n(t(B)("groups.deviceCount")),1),s("div",ee,n(t(B)("common.actions")),1)]),(f(!0),o(v,null,p(Ma.value,(e,l)=>{var a,i;return f(),o("div",{key:e.gid||e.pid,class:"group-item"},[s("div",le,n(l+1),1),s("div",ae,n(e.name||e.pname||t(B)("groups.untitled")),1),s("div",oe,n((null==(a=e.dlist)?void 0:a.length)||(null==(i=e.idlist)?void 0:i.length)||0),1),s("div",se,[s("button",{onClick:l=>po(e),class:"action-btn",disabled:Fa.value},n(t(B)("groups.editDevices")),9,ne),s("button",{onClick:l=>mo(e),class:"action-btn",disabled:Fa.value},n(t(B)("groups.editVideo")),9,te),s("button",{onClick:l=>ho(e),class:"action-btn",disabled:Fa.value},n(t(B)("groups.previewVideo")),9,ie),s("button",{onClick:l=>Co(e),class:"action-btn",disabled:Fa.value},n(t(B)("groups.groupPlay")),9,ce),s("button",{onClick:l=>wo(e),class:"action-btn btn-delete",disabled:Fa.value},n(t(B)("common.delete")),9,ue)])])}),128))],64)):(f(),o("div",re,[(f(!0),o(v,null,p(Ma.value,(e,a)=>{var i,c;return f(),o("div",{key:e.gid||e.pid,class:"group-card"},[s("div",de,[s("span",ve,"#"+n(a+1),1),s("span",pe,[l[32]||(l[32]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"}),s("line",{x1:"8",y1:"21",x2:"16",y2:"21"}),s("line",{x1:"12",y1:"17",x2:"12",y2:"21"})],-1)),u(" "+n((null==(i=e.dlist)?void 0:i.length)||(null==(c=e.idlist)?void 0:c.length)||0),1)])]),s("div",ge,n(e.name||e.pname||t(B)("groups.untitled")),1),s("div",me,[s("button",{onClick:l=>po(e),class:"card-action-btn",disabled:Fa.value,title:t(B)("groups.editDevices")},[...l[33]||(l[33]=[d('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14" data-v-ca949926><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" data-v-ca949926></path><circle cx="9" cy="7" r="4" data-v-ca949926></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87" data-v-ca949926></path><path d="M16 3.13a4 4 0 0 1 0 7.75" data-v-ca949926></path></svg>',1)])],8,be),s("button",{onClick:l=>mo(e),class:"card-action-btn",disabled:Fa.value,title:t(B)("groups.editVideo")},[...l[34]||(l[34]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("polygon",{points:"23 7 16 12 23 17 23 7"}),s("rect",{x:"1",y:"5",width:"15",height:"14",rx:"2",ry:"2"})],-1)])],8,he),s("button",{onClick:l=>ho(e),class:"card-action-btn",disabled:Fa.value,title:t(B)("groups.previewVideo")},[...l[35]||(l[35]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),s("circle",{cx:"12",cy:"12",r:"3"})],-1)])],8,ye),s("button",{onClick:l=>Co(e),class:"card-action-btn card-action-play",disabled:Fa.value,title:t(B)("groups.groupPlay")},[...l[36]||(l[36]=[s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("polygon",{points:"5 3 19 12 5 21 5 3"})],-1)])],8,fe),s("button",{onClick:l=>wo(e),class:"card-action-btn card-action-delete",disabled:Fa.value,title:t(B)("common.delete")},[...l[37]||(l[37]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("polyline",{points:"3 6 5 6 21 6"}),s("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,ke)])])}),128))]))])),Ka.value?(f(),o("div",{key:3,class:"modal-overlay",onClick:Bo},[s("div",{class:"modal-content",onClick:l[5]||(l[5]=m(()=>{},["stop"]))},[s("div",Ce,[s("h3",null,n(t(B)("groups.editDevices")),1),s("button",{class:"close-btn",onClick:Bo},[...l[38]||(l[38]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",we,[s("div",xe,[s("label",null,n(t(B)("groups.searchDevicePlaceholder")),1),i(s("input",{"onUpdate:modelValue":l[3]||(l[3]=e=>Va.value=e),placeholder:t(B)("groups.searchDevicePlaceholder"),class:"form-input"},null,8,Me),[[c,Va.value]]),s("div",Se,[Va.value?(f(),o("span",$e,n(t(B)("groups.searchResult",{filtered:xa.value.length,total:Sa.value.length})),1)):(f(),o("span",De,n(t(B)("groups.totalDevices",{count:Sa.value.length})),1))])]),Pa.value?(f(),o("div",Fe,[l[39]||(l[39]=s("div",{class:"loading-spinner"},null,-1)),s("p",null,n(t(B)("common.loading")),1)])):(f(),o("div",je,[s("div",Pe,[s("h4",null,n(t(B)("groups.allDevices")),1),s("div",Ve,[(f(!0),o(v,null,p(xa.value,e=>(f(),o("div",{key:e.id,class:"device-item"},[s("label",null,[i(s("input",{type:"checkbox",value:e.id,"onUpdate:modelValue":l[4]||(l[4]=e=>$a.value=e)},null,8,Ie),[[k,$a.value]]),u(" "+n(e.label),1)])]))),128)),0===xa.value.length&&Sa.value.length>0?(f(),o("div",_e,[s("p",null,n(t(B)("groups.noSearchResult")),1)])):g("",!0)])]),s("div",Be,[s("h4",null,n(t(B)("groups.selectedDevices"))+" ("+n($a.value.length)+")",1),s("div",Ae,[(f(!0),o(v,null,p($a.value,e=>(f(),o("div",{key:e,class:"device-item selected"},[u(n(_o(e))+" ",1),s("button",{onClick:l=>function(e){const l=$a.value.indexOf(e);l>-1&&$a.value.splice(l,1)}(e),class:"remove-btn"},"×",8,Le)]))),128)),0===$a.value.length?(f(),o("div",Ue,[s("p",null,n(t(B)("groups.noSelectedDevices")),1)])):g("",!0)])])]))]),s("div",Ge,[s("button",{onClick:Bo,class:"btn btn-cancel diablo-button-secondary"},n(t(B)("common.cancel")),1),s("button",{onClick:go,class:"btn btn-primary diablo-button",disabled:Fa.value||0===$a.value.length},n(t(B)("common.save")),9,He)])])])):g("",!0),Qa.value?(f(),o("div",{key:4,class:"modal-overlay",onClick:Bo},[s("div",{class:"modal-content",onClick:l[7]||(l[7]=m(()=>{},["stop"]))},[s("div",Ne,[s("h3",null,n(t(B)("groups.editVideo")),1),s("button",{class:"close-btn",onClick:Bo},[...l[40]||(l[40]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Te,[s("div",qe,[s("label",null,n(t(B)("groups.groupName"))+": "+n((null==(a=Xa.value)?void 0:a.name)||(null==(b=Xa.value)?void 0:b.pname)),1)]),s("div",ze,[s("label",null,n(t(B)("groups.videoUrl"))+":",1),i(s("input",{"onUpdate:modelValue":l[6]||(l[6]=e=>Ja.value=e),placeholder:t(B)("groups.inputVideoUrl"),class:"form-input video-url-input"},null,8,Oe),[[c,Ja.value]])])]),s("div",Ee,[s("button",{onClick:Bo,class:"btn btn-cancel diablo-button-secondary"},n(t(B)("common.cancel")),1),s("button",{onClick:bo,class:"btn btn-primary diablo-button",disabled:Fa.value},n(t(B)("common.save")),9,Re)])])])):g("",!0),Wa.value?(f(),o("div",{key:5,class:"modal-overlay",onClick:Bo},[s("div",{class:"modal-content modal-large-content",onClick:l[8]||(l[8]=m(()=>{},["stop"]))},[s("div",Je,[s("h3",null,n((null==(h=Xa.value)?void 0:h.name)||(null==(y=Xa.value)?void 0:y.pname)),1),s("button",{class:"close-btn",onClick:Bo},[...l[41]||(l[41]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Xe,[Ja.value&&"none"!==Ja.value?(f(),o("div",Ke,[s("video",{src:Ja.value,controls:"",width:"760"},null,8,Qe)])):(f(),o("div",We,[s("p",null,n(t(B)("groups.noVideoUrl")),1)]))]),s("div",Ye,[s("button",{onClick:Bo,class:"btn btn-cancel diablo-button-secondary"},n(t(B)("common.close")),1)])])])):g("",!0),Ya.value?(f(),o("div",{key:6,class:"drawer-overlay",onClick:Ao},[s("div",{class:"drawer-content",onClick:l[9]||(l[9]=m(()=>{},["stop"]))},[s("h3",Ze,n(t(B)("groups.playList")),1),s("div",el,[0===Da.value.length?(f(),o("div",ll,[s("p",null,n(t(B)("groups.noPlayingItems")),1)])):(f(),o("div",al,[(f(!0),o(v,null,p(Da.value,(e,l)=>(f(),o("div",{key:e.tmpid||e.id||l,class:"play-item"},[s("p",null,n(t(B)("groups.playSequence"))+": "+n(e.Name),1),s("p",null,n(t(B)("groups.fileInterval"))+": "+n(e.jiange),1),s("p",null,n(t(B)("groups.playCount"))+": "+n(e.playmode),1),s("button",{onClick:l=>Io(e),class:"btn-stop"},n(t(B)("common.stop")),9,ol)]))),128))]))]),s("div",sl,[s("button",{onClick:Ao,class:"btn-close"},n(t(B)("common.close")),1)])])])):g("",!0),Za.value?(f(),o("div",{key:7,class:"modal-overlay",onClick:fo},[s("div",{class:"modal-content",onClick:l[10]||(l[10]=m(()=>{},["stop"]))},[s("div",nl,[s("h3",null,n(t(B)("groups.selectGroupForPlay")),1),s("button",{class:"close-btn",onClick:fo},[...l[42]||(l[42]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",tl,[0===Ma.value.length?(f(),o("div",il,[s("p",null,n(t(B)("groups.noGroups")),1)])):(f(),o("div",cl,[(f(!0),o(v,null,p(Ma.value,e=>{var a,i;return f(),o("div",{key:e.gid||e.pid,class:"group-select-item",onClick:l=>ko(e)},[s("div",rl,[s("span",dl,n(e.name||e.pname||t(B)("groups.untitled")),1),s("span",vl,n((null==(a=e.dlist)?void 0:a.length)||(null==(i=e.idlist)?void 0:i.length)||0)+" "+n(t(B)("groups.devicesCount")),1)]),l[43]||(l[43]=s("div",{class:"group-select-arrow"},"→",-1))],8,ul)}),128))]))]),s("div",pl,[s("button",{onClick:fo,class:"btn btn-cancel diablo-button-secondary"},n(t(B)("common.cancel")),1)])])])):g("",!0),Ia.value?(f(),o("div",{key:8,class:"modal-overlay",onClick:Bo},[s("div",{class:"modal-content modal-large-content",onClick:l[24]||(l[24]=m(()=>{},["stop"]))},[s("div",gl,[s("h3",null,n(t(B)("groups.groupPlay"))+" - "+n((null==(w=Xa.value)?void 0:w.name)||(null==(x=Xa.value)?void 0:x.pname)),1),s("button",{class:"close-btn",onClick:Bo},[...l[44]||(l[44]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",ml,[s("div",bl,[i(s("input",{"onUpdate:modelValue":l[11]||(l[11]=e=>Aa.value=e),placeholder:t(B)("groups.searchFilePlaceholder"),class:"file-search-input form-input",clearable:""},null,8,hl),[[c,Aa.value]])]),Ta.value?(f(),o("div",yl,[l[45]||(l[45]=s("div",{class:"loading-spinner"},null,-1)),s("p",null,n(t(B)("common.loading")),1)])):(f(),o("div",fl,[s("div",kl,[s("h4",null,n(t(B)("groups.availableFiles"))+" ("+n(za.value.length)+")",1),s("div",Cl,[(f(!0),o(v,null,p(za.value,e=>{return f(),o("div",{key:e.id,class:r(["file-item",{selected:(l=e.id,Ba.value.includes(l))}]),onClick:l=>function(e){e.id&&Ba.value.push(e.id)}(e),onDblclick:l=>function(e){e.id&&Ba.value.push(e.id)}(e)},[s("div",xl,[s("div",Ml,n(e.filename),1),s("div",Sl,[e.sizeStr?(f(),o("span",$l,n(e.sizeStr),1)):g("",!0),e.len?(f(),o("span",Dl,n(Mo(e.len)),1)):g("",!0)])])],42,wl);var l}),128))])]),s("div",Fl,[s("h4",null,n(t(B)("groups.selectedFiles"))+" ("+n(Ba.value.length)+")",1),s("div",jl,[(f(!0),o(v,null,p(Ba.value,(e,a)=>(f(),o("div",{key:`${e}-${a}`,class:"selected-file-item",draggable:"true",onDragstart:e=>function(e,l){La.value=e,l.dataTransfer&&(l.dataTransfer.effectAllowed="move",l.dataTransfer.setData("text/plain",String(e)))}(a,e),onDragover:l[12]||(l[12]=e=>{return(l=e).preventDefault(),void(l.dataTransfer&&(l.dataTransfer.dropEffect="move"));var l}),onDrop:e=>function(e,l){if(l.preventDefault(),-1===La.value||La.value===e)return;const a=Ba.value[La.value];Ba.value.splice(La.value,1),Ba.value.splice(e,0,a),La.value=-1}(a,e)},[s("div",Vl,[s("div",Il,n(a+1)+".",1),s("div",_l,n(xo(e)),1)]),s("div",Bl,[s("button",{onClick:e=>function(e){if(e>0){const l=Ba.value[e];Ba.value[e]=Ba.value[e-1],Ba.value[e-1]=l}}(a),class:"file-action-btn",disabled:0===a,title:t(B)("common.moveUp")}," ↑ ",8,Al),s("button",{onClick:e=>function(e){if(e<Ba.value.length-1){const l=Ba.value[e];Ba.value[e]=Ba.value[e+1],Ba.value[e+1]=l}}(a),class:"file-action-btn",disabled:a===Ba.value.length-1,title:t(B)("common.moveDown")}," ↓ ",8,Ll),s("button",{onClick:e=>function(e){Ba.value.splice(e,1)}(a),class:"file-action-btn btn-remove",title:t(B)("common.delete")}," × ",8,Ul)])],40,Pl))),128)),0===Ba.value.length?(f(),o("div",Gl,[s("p",null,n(t(B)("groups.noSelectedFiles")),1),s("p",Hl,n(t(B)("groups.doubleClickHint")),1)])):g("",!0)])])])),s("div",Nl,[s("div",Tl,[s("label",null,n(t(B)("groups.playMode"))+":",1),s("div",ql,[s("button",{onClick:l[13]||(l[13]=e=>So(-1)),class:"number-btn btn-minus",disabled:Ga.value.playmode<=1},"-",8,zl),i(s("input",{"onUpdate:modelValue":l[14]||(l[14]=e=>Ga.value.playmode=e),type:"number",min:"1",max:"99",class:"setting-input setting-number form-input"},null,512),[[c,Ga.value.playmode,void 0,{number:!0}]]),s("button",{onClick:l[15]||(l[15]=e=>So(1)),class:"number-btn btn-plus",disabled:Ga.value.playmode>=99},"+",8,Ol)]),s("div",El,n(t(B)("groups.playModeHint")),1)]),s("div",Rl,[s("label",null,n(t(B)("groups.fileInterval"))+" ("+n(t(B)("common.seconds"))+"):",1),s("div",Jl,[s("div",Xl,[s("button",{onClick:l[16]||(l[16]=e=>$o(-1)),class:"number-btn btn-minus",disabled:Ga.value.jiange<=0},"-",8,Kl),i(s("input",{"onUpdate:modelValue":l[17]||(l[17]=e=>Ga.value.jiange=e),type:"number",min:"0",max:"10800",class:"setting-input setting-number form-input"},null,512),[[c,Ga.value.jiange,void 0,{number:!0}]]),s("button",{onClick:l[18]||(l[18]=e=>$o(1)),class:"number-btn btn-plus",disabled:Ga.value.jiange>=10800},"+",8,Ql),s("button",{onClick:l[19]||(l[19]=e=>Ua.value=!Ua.value),class:"toggle-quick-select-btn"},n(t(B)("common.quick")),1)]),Ua.value?(f(),o("div",Wl,[(f(),o(v,null,p(Ha,e=>s("button",{key:e,onClick:l=>{return a=e,Ga.value.jiange=a,void(Ua.value=!1);var a},class:r(["interval-preset-btn",{active:Ga.value.jiange===e}])},n(function(e){const{t:l}=C();return 0===e?`0${l("common.seconds")}`:e<60?`${e}${l("common.seconds")}`:e<3600?`${Math.floor(e/60)}${l("common.minutes")}`:e<7200?`1${l("common.hours")}`:e<10800?`2${l("common.hours")}`:`3${l("common.hours")}`}(e)),11,Yl)),64))])):g("",!0)]),s("div",Zl,n(t(B)("groups.intervalMaxHint")),1)]),s("div",ea,[s("label",null,n(t(B)("groups.estimatedDuration"))+":",1),s("div",la,[s("span",aa,n(Oa.value),1),s("span",oa,n(t(B)("common.seconds")),1),s("span",sa,"(≈ "+n(Fo(Oa.value))+")",1)])]),s("div",na,[s("label",null,n(t(B)("groups.forceStopDuration"))+":",1),s("div",null,[s("div",ta,[s("button",{onClick:l[20]||(l[20]=e=>Do(-1)),class:"number-btn btn-minus",disabled:Na.value<=1},"-",8,ia),i(s("input",{"onUpdate:modelValue":l[21]||(l[21]=e=>Na.value=e),type:"number",min:"1",max:Oa.value,class:"setting-input setting-number form-input"},null,8,ca),[[c,Na.value,void 0,{number:!0}]]),s("button",{onClick:l[22]||(l[22]=e=>Do(1)),class:"number-btn btn-plus",disabled:Na.value>=Oa.value},"+",8,ua),s("button",{onClick:l[23]||(l[23]=e=>qa.value=!qa.value),class:"toggle-quick-select-btn",disabled:Oa.value<=0},n(t(B)("common.quick")),9,ra)]),qa.value&&Ea.value.length>0?(f(),o("div",da,[(f(!0),o(v,null,p(Ea.value,e=>(f(),o("button",{key:e,onClick:l=>{return a=e,Na.value=a,void(qa.value=!1);var a},class:r(["interval-preset-btn",{active:Na.value===e}])},n(function(e){const{t:l}=C();return e<60?`${e}${l("common.seconds")}`:e<3600?`${Math.floor(e/60)}${l("common.minutes")}`:`${Math.floor(e/3600)}${l("common.hours")}`}(e)),11,va))),128))])):g("",!0),s("div",pa,n(t(B)("groups.forceStopHint")),1)])])])]),s("div",ga,[s("button",{onClick:Bo,class:"btn btn-cancel diablo-button-secondary"},n(t(B)("common.cancel")),1),s("button",{onClick:jo,class:"btn btn-primary diablo-button",disabled:Fa.value||0===Ba.value.length},n(t(B)("groups.startPlay")),9,ma)])])])):g("",!0),no.value.show?(f(),o("div",{key:9,class:r(["message-toast",no.value.type])},n(no.value.text),3)):g("",!0),lo.value?(f(),o("div",{key:10,class:"confirm-dialog-overlay",onClick:co},[s("div",{class:"confirm-dialog-content",onClick:l[25]||(l[25]=m(()=>{},["stop"]))},[s("h3",ba,n(ao.value),1),s("div",ha,[s("p",null,n(oo.value),1)]),s("div",ya,[s("button",{onClick:co,class:"btn-cancel"},n(t(B)("common.cancel")),1),s("button",{onClick:io,class:"btn-confirm"},n(t(B)("common.confirm")),1)])])])):g("",!0),eo.value?(f(),o("div",fa,[s("div",ka,[l[46]||(l[46]=s("div",{class:"loading-spinner"},null,-1)),l[47]||(l[47]=s("div",{class:"loading-spinner-delayed"},null,-1)),s("p",Ca,n(t(B)("groups.stopPlayInProgress")),1)])])):g("",!0)])}}}),[["__scopeId","data-v-ca949926"]]);export{wa as default};
@@ -0,0 +1 @@
1
+ @keyframes glassEnter-ca949926{0%{opacity:0;transform:translateY(20px) scale(.98);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}to{opacity:1;transform:translateY(0) scale(1);-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}}@keyframes glassGlowPulse-ca949926{0%,to{box-shadow:0 0 0 0 var(--glass-border-glow)}50%{box-shadow:0 0 16px var(--glass-border-glow)}}@keyframes spinGlow-ca949926{to{transform:rotate(360deg)}}@keyframes slideIn-ca949926{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn-ca949926{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp-ca949926{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pulse-ca949926{0%,to{opacity:1}50%{opacity:.6}}.group-manage[data-v-ca949926]{padding:20px;min-height:100vh;background:transparent;animation:glassEnter-ca949926 .6s cubic-bezier(.25,.46,.45,.94)}[data-v-ca949926] .message-toast{position:fixed;top:20px;right:20px;padding:12px 20px;border-radius:12px;color:#fff;font-weight:500;z-index:9999;animation:slideIn-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));border:1px solid var(--glass-border)}[data-v-ca949926] .message-toast.success{background:#4caf50d9}[data-v-ca949926] .message-toast.error{background:#0a84ffd9}[data-v-ca949926] .message-toast.info{background:#2196f3d9}.page-header[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:nowrap}.page-title[data-v-ca949926]{font-size:24px;color:var(--diablo-text);margin:0;flex-shrink:0;text-shadow:0 0 20px var(--glass-border-glow),0 0 40px rgba(10,132,255,.15)}.header-actions[data-v-ca949926]{display:flex;gap:8px;align-items:center;flex-shrink:0}.form-input[data-v-ca949926]{padding:8px 12px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:13px;outline:none;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.form-input[data-v-ca949926]:focus{border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow);background:var(--glass-bg-active)}.form-input[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.input-name[data-v-ca949926]{width:200px}.input-name[data-v-ca949926]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow);background:var(--glass-bg-active)}.add-btn[data-v-ca949926],.group-play-btn[data-v-ca949926],.play-list-btn[data-v-ca949926]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.add-btn[data-v-ca949926]:hover:not(:disabled),.group-play-btn[data-v-ca949926]:hover:not(:disabled),.play-list-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.add-btn svg[data-v-ca949926],.group-play-btn svg[data-v-ca949926],.play-list-btn svg[data-v-ca949926]{width:16px;height:16px}button[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.loading-container[data-v-ca949926]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.loading-spinner[data-v-ca949926]{width:40px;height:40px;border:3px solid var(--glass-border);border-top-color:var(--diablo-primary);border-radius:50%;animation:spinGlow-ca949926 .8s linear infinite;box-shadow:0 0 12px var(--glass-border-glow)}.empty-state[data-v-ca949926]{text-align:center;padding:60px 20px;color:var(--diablo-text-muted)}.group-list-container[data-v-ca949926]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;overflow:auto;max-height:calc(100vh - 160px);backdrop-filter:blur(var(--glass-blur)) saturate(1.2);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.2);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.list-header[data-v-ca949926]{display:grid;grid-template-columns:60px 1fr 100px auto;background:var(--glass-bg);border-bottom:1px solid var(--glass-border);padding:12px 16px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.header-cell[data-v-ca949926]{font-weight:600;color:var(--diablo-text);font-size:13px}.group-item[data-v-ca949926]{display:grid;grid-template-columns:60px 1fr 100px auto;padding:12px 16px;border-bottom:1px solid var(--glass-border);background:var(--glass-bg);border-radius:12px;margin:4px 8px;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.group-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.cell[data-v-ca949926]{display:flex;align-items:center;color:var(--diablo-text);font-size:13px}.cell-name[data-v-ca949926]{font-weight:500}.cell-device-count[data-v-ca949926]{justify-content:center}.cell-actions[data-v-ca949926]{gap:8px;display:flex;flex-wrap:wrap}.action-btn[data-v-ca949926]{padding:6px 12px;border:1px solid var(--glass-border);border-radius:8px;background:transparent;color:var(--diablo-text);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.action-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);color:#fff;transform:translateY(-1px);box-shadow:0 0 12px var(--glass-border-glow)}.action-btn[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.btn-delete[data-v-ca949926]:hover:not(:disabled){background:#0a84ff4d;border-color:#0a84ff80;box-shadow:0 0 12px #0a84ff4d}.view-mode-bar[data-v-ca949926]{display:flex;justify-content:flex-end;padding:12px 16px;border-bottom:1px solid var(--glass-border)}.view-mode-toggle[data-v-ca949926]{display:flex;border:1px solid var(--glass-border);border-radius:8px;overflow:hidden;-webkit-backdrop-filter:blur(var(--glass-blur-light));backdrop-filter:blur(var(--glass-blur-light))}.view-mode-btn[data-v-ca949926]{display:flex;align-items:center;justify-content:center;padding:6px 10px;background:transparent;border:none;color:var(--diablo-text-muted);cursor:pointer;transition:all .2s ease}.view-mode-btn.active[data-v-ca949926]{background:var(--glass-bg-hover);color:var(--diablo-primary)}.view-mode-btn[data-v-ca949926]:hover:not(.active){color:var(--diablo-text);background:var(--glass-bg)}.group-card-grid[data-v-ca949926]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;padding:16px}.group-card[data-v-ca949926]{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:14px;padding:16px;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow);display:flex;flex-direction:column;gap:12px}.group-card[data-v-ca949926]:hover{border-color:var(--glass-border-hover);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.group-card-header[data-v-ca949926]{display:flex;align-items:center;justify-content:space-between}.group-card-index[data-v-ca949926]{font-size:12px;color:var(--diablo-text-muted);font-weight:600}.group-card-count[data-v-ca949926]{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--diablo-primary);padding:2px 8px;background:#0a84ff1a;border-radius:10px;border:1px solid rgba(10,132,255,.2)}.group-card-name[data-v-ca949926]{font-size:15px;font-weight:600;color:var(--diablo-text);word-break:break-all;line-height:1.4}.group-card-actions[data-v-ca949926]{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}.card-action-btn[data-v-ca949926]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:8px;color:var(--diablo-text-muted);cursor:pointer;transition:all .2s ease}.card-action-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);color:var(--diablo-text);border-color:var(--glass-border-hover);transform:translateY(-1px)}.card-action-btn[data-v-ca949926]:disabled{opacity:.4;cursor:not-allowed}.card-action-btn.card-action-play[data-v-ca949926]{color:#27ae60}.card-action-btn.card-action-play[data-v-ca949926]:hover:not(:disabled){background:#27ae6026;border-color:#27ae60;color:#27ae60}.card-action-btn.card-action-delete[data-v-ca949926]{color:#e74c3c}.card-action-btn.card-action-delete[data-v-ca949926]:hover:not(:disabled){background:#e74c3c26;border-color:#e74c3c}.modal-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-ca949926]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;width:90%;max-width:800px;max-height:90vh;overflow-y:auto;animation:fadeIn-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow)}.dialog-header[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-bg);border-bottom:1px solid var(--glass-border);border-radius:16px 16px 0 0;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.dialog-header h3[data-v-ca949926]{margin:0;font-size:18px;font-weight:600;color:var(--diablo-text)}.close-btn[data-v-ca949926]{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--diablo-text);cursor:pointer;padding:4px;border-radius:8px;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.close-btn[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 12px var(--glass-border-glow),var(--glass-inner-glow);color:var(--diablo-primary)}.modal-body[data-v-ca949926]{padding:20px;background:transparent}.device-search-container[data-v-ca949926]{margin-bottom:16px}.device-search-input[data-v-ca949926]{width:100%}.search-stats[data-v-ca949926]{margin-top:8px;font-size:12px;color:var(--diablo-text-muted)}.search-stats span[data-v-ca949926]{font-weight:500;color:var(--diablo-accent)}.modal-footer[data-v-ca949926]{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid var(--glass-border);background:var(--glass-bg);border-radius:0 0 16px 16px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.modal-footer .btn[data-v-ca949926]{padding:8px 20px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.modal-footer .btn[data-v-ca949926]:disabled{opacity:.5;cursor:not-allowed}.modal-footer .btn-primary[data-v-ca949926],.modal-footer .btn-save[data-v-ca949926]{background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border)}.modal-footer .btn-primary[data-v-ca949926]:hover:not(:disabled),.modal-footer .btn-save[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.modal-footer .btn-cancel[data-v-ca949926]{background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border)}.modal-footer .btn-cancel[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.device-selector[data-v-ca949926]{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-height:500px}.device-list[data-v-ca949926],.selected-devices[data-v-ca949926]{border:1px solid var(--glass-border);border-radius:12px;padding:16px;background:var(--glass-bg);display:flex;flex-direction:column;max-height:500px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.device-list h4[data-v-ca949926],.selected-devices h4[data-v-ca949926]{margin:0 0 12px;color:var(--diablo-text);font-size:14px;flex-shrink:0}.device-list-content[data-v-ca949926],.selected-devices-content[data-v-ca949926]{flex:1;overflow-y:auto;overflow-x:hidden;padding-right:8px;min-height:100px;max-height:400px}.device-list-content[data-v-ca949926]::-webkit-scrollbar,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar{width:8px}.device-list-content[data-v-ca949926]::-webkit-scrollbar-track,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar-track{background:transparent;border-radius:4px}.device-list-content[data-v-ca949926]::-webkit-scrollbar-thumb,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:4px}.device-list-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover,.selected-devices-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover{background:var(--glass-border-hover)}.device-item[data-v-ca949926]{padding:8px;margin-bottom:6px;border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:13px;border:1px solid var(--glass-border);transition:all .4s cubic-bezier(.25,.46,.45,.94)}.device-item label[data-v-ca949926]{cursor:pointer;display:flex;align-items:center;gap:8px}.device-item.selected[data-v-ca949926]{background:var(--glass-bg-hover);display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-color:var(--glass-border-hover)}.remove-btn[data-v-ca949926]{background:#0a84ff33;border:none;color:var(--diablo-text);width:20px;height:20px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.remove-btn[data-v-ca949926]:hover{background:#0a84ff66;color:#fff;box-shadow:0 0 8px #0a84ff4d}.no-search-result[data-v-ca949926],.empty-selected[data-v-ca949926]{padding:40px 20px;text-align:center;color:var(--diablo-text-muted);font-size:14px}.device-item label[data-v-ca949926]{cursor:pointer;padding:8px 12px;border-radius:8px;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;gap:8px;margin:-8px -12px;width:calc(100% + 24px)}.device-item label[data-v-ca949926]:hover{background:var(--glass-tint-hover)}.device-item input[type=checkbox][data-v-ca949926]{cursor:pointer;margin:0;width:16px;height:16px}.device-list-content[data-v-ca949926]:after,.selected-devices-content[data-v-ca949926]:after{content:"";position:sticky;bottom:0;left:0;right:0;height:30px;background:linear-gradient(transparent,var(--glass-bg));pointer-events:none;display:none}.device-list-content[style*="overflow-y: scroll"][data-v-ca949926]:after,.device-list-content[style*="overflow-y: auto"][data-v-ca949926]:after,.selected-devices-content[style*="overflow-y: scroll"][data-v-ca949926]:after,.selected-devices-content[style*="overflow-y: auto"][data-v-ca949926]:after{display:block}.form-group[data-v-ca949926]{margin-bottom:16px}.form-group label[data-v-ca949926]{display:block;margin-bottom:8px;color:var(--diablo-text);font-size:14px;font-weight:500}.form-group-inline[data-v-ca949926]{display:flex;align-items:center;gap:12px}.form-group-inline label[data-v-ca949926]{display:inline;margin-bottom:0;flex-shrink:0;white-space:nowrap}.video-url-input[data-v-ca949926]{flex:1;min-width:400px}.input-field[data-v-ca949926]{width:100%;padding:10px 12px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.input-field[data-v-ca949926]:focus{outline:none;border-color:var(--glass-border-hover);box-shadow:0 0 0 3px var(--glass-border-glow),var(--glass-inner-glow);background:var(--glass-bg-active)}.video-container[data-v-ca949926]{display:flex;justify-content:center;background:var(--glass-bg);border-radius:12px;padding:20px;border:1px solid var(--glass-border)}.video-container video[data-v-ca949926]{max-width:100%;border-radius:12px}.no-video[data-v-ca949926]{text-align:center;padding:40px;color:var(--diablo-text-muted)}.drawer-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:1000}.drawer-content[data-v-ca949926]{position:absolute;bottom:0;left:0;right:0;background:var(--glass-bg-card);border:1px solid var(--glass-border);border-top-left-radius:16px;border-top-right-radius:16px;max-height:50vh;overflow-y:auto;animation:slideUp-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow)}.drawer-title[data-v-ca949926]{padding:16px 20px;font-size:18px;font-weight:600;color:var(--diablo-text);border-bottom:1px solid var(--glass-border);margin:0;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.drawer-body[data-v-ca949926]{padding:20px}.drawer-footer[data-v-ca949926]{padding:16px 20px;border-top:1px solid var(--glass-border);text-align:right;background:var(--glass-bg)}.play-items[data-v-ca949926]{max-height:300px;overflow-y:auto}.play-item[data-v-ca949926]{padding:12px;border:1px solid var(--glass-border);border-radius:12px;margin-bottom:8px;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.play-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.play-item p[data-v-ca949926]{margin:4px 0;color:var(--diablo-text);font-size:13px}.btn-stop[data-v-ca949926],.btn-close[data-v-ca949926]{padding:8px 16px;border:1px solid var(--glass-border);border-radius:10px;cursor:pointer;font-size:14px;background:var(--glass-bg);color:var(--diablo-text);margin-top:8px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));transition:all .4s cubic-bezier(.25,.46,.45,.94)}.btn-stop[data-v-ca949926]:hover,.btn-close[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}.modal-large-content[data-v-ca949926]{max-width:1000px}.modal-play-content[data-v-ca949926]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px;max-height:450px}.file-search-container[data-v-ca949926]{margin-bottom:16px}.file-search-input[data-v-ca949926]{width:100%}.file-selector[data-v-ca949926],.selected-files-panel[data-v-ca949926]{border:1px solid var(--glass-border);border-radius:12px;padding:16px;background:var(--glass-bg);display:flex;flex-direction:column;max-height:450px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.file-selector h4[data-v-ca949926],.selected-files-panel h4[data-v-ca949926]{margin:0 0 12px;color:var(--diablo-text);font-size:14px;flex-shrink:0}.file-list-content[data-v-ca949926],.selected-files-content[data-v-ca949926]{flex:1;overflow-y:auto;overflow-x:hidden;padding-right:8px;min-height:100px;max-height:380px}.file-item[data-v-ca949926]{padding:10px;margin-bottom:8px;border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.file-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);transform:translate(4px);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow)}.file-item.selected[data-v-ca949926]{border-color:var(--glass-border-hover);background:var(--glass-tint);box-shadow:0 0 12px var(--glass-border-glow),var(--glass-inner-glow)}.file-info[data-v-ca949926]{display:flex;flex-direction:column;gap:4px}.file-name[data-v-ca949926]{font-size:13px;font-weight:500;word-break:break-all}.file-meta[data-v-ca949926]{display:flex;gap:12px;font-size:12px;color:var(--diablo-text-muted)}.selected-file-item[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;margin-bottom:8px;border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);border:1px solid var(--glass-border);cursor:move;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.selected-file-item[data-v-ca949926]:hover{border-color:var(--glass-border-hover);background:var(--glass-bg-hover);box-shadow:var(--glass-shadow),0 0 12px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-1px)}.selected-file-item.dragging[data-v-ca949926]{opacity:.5;border-style:dashed;background:var(--glass-tint)}.selected-file-info[data-v-ca949926]{display:flex;align-items:center;gap:8px;flex:1}.file-number[data-v-ca949926]{font-size:12px;font-weight:600;color:var(--diablo-primary);min-width:20px}.selected-file-item .file-name[data-v-ca949926]{font-size:13px;word-break:break-all}.file-actions[data-v-ca949926]{display:flex;gap:4px}.file-action-btn[data-v-ca949926]{width:24px;height:24px;border:1px solid var(--glass-border);border-radius:6px;background:transparent;color:var(--diablo-text);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center}.file-action-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow);color:#fff}.file-action-btn[data-v-ca949926]:disabled{opacity:.3;cursor:not-allowed}.file-action-btn.btn-remove[data-v-ca949926]:hover:not(:disabled){background:#0a84ff4d;border-color:#0a84ff80;box-shadow:0 0 8px #0a84ff4d}.empty-selected-files[data-v-ca949926]{text-align:center;padding:40px 20px;color:var(--diablo-text-muted)}.empty-selected-files p[data-v-ca949926]{margin:4px 0;font-size:13px}.empty-selected-files .hint[data-v-ca949926]{font-size:12px;color:var(--diablo-text-muted);opacity:.7}.play-settings[data-v-ca949926]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:16px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light));box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.setting-item[data-v-ca949926]{display:flex;flex-direction:column;gap:4px}.setting-item label[data-v-ca949926]{font-size:12px;color:var(--diablo-text);font-weight:500;white-space:nowrap}.setting-select[data-v-ca949926],.setting-input[data-v-ca949926]{padding:6px 8px;background:var(--glass-bg);font-size:12px;border:1px solid var(--glass-border);border-radius:8px;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.setting-select option[data-v-ca949926]{background:var(--glass-bg-card);color:var(--diablo-text)}.file-list-content[data-v-ca949926]::-webkit-scrollbar,.selected-files-content[data-v-ca949926]::-webkit-scrollbar{width:8px}.file-list-content[data-v-ca949926]::-webkit-scrollbar-track,.selected-files-content[data-v-ca949926]::-webkit-scrollbar-track{background:transparent;border-radius:4px}.file-list-content[data-v-ca949926]::-webkit-scrollbar-thumb,.selected-files-content[data-v-ca949926]::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:4px}.file-list-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover,.selected-files-content[data-v-ca949926]::-webkit-scrollbar-thumb:hover{background:var(--glass-border-hover)}.group-select-list[data-v-ca949926]{max-height:400px;overflow-y:auto}.group-select-item[data-v-ca949926]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;margin-bottom:8px;border-radius:12px;background:var(--glass-bg);color:var(--diablo-text);cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.group-select-item[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);transform:translate(4px);box-shadow:var(--glass-shadow-hover),0 0 16px var(--glass-border-glow),var(--glass-inner-glow)}.group-select-info[data-v-ca949926]{display:flex;align-items:center;gap:8px}.group-select-name[data-v-ca949926]{font-size:14px;font-weight:500}.group-select-count[data-v-ca949926]{font-size:12px;color:var(--diablo-text-muted)}.group-select-arrow[data-v-ca949926]{font-size:18px;color:var(--diablo-primary);font-weight:700}.duration-display[data-v-ca949926]{display:flex;align-items:baseline;gap:2px}.duration-value[data-v-ca949926]{font-size:16px;font-weight:600;color:var(--diablo-primary);min-width:40px}.duration-unit[data-v-ca949926]{font-size:11px;color:var(--diablo-text-muted)}.duration-calc-info[data-v-ca949926]{margin-top:2px}.duration-calc-info small[data-v-ca949926]{font-size:10px;color:var(--diablo-text-muted);line-height:1.2}.number-input-group[data-v-ca949926]{display:flex;align-items:center;gap:2px}.number-btn[data-v-ca949926]{width:28px;height:28px;border:1px solid var(--glass-border);border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;font-weight:600;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center;flex-shrink:0;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.number-btn[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover);color:#fff;box-shadow:0 0 8px var(--glass-border-glow)}.number-btn[data-v-ca949926]:disabled{opacity:.3;cursor:not-allowed}.number-btn.btn-minus[data-v-ca949926]{color:var(--diablo-primary)}.number-btn.btn-plus[data-v-ca949926]{color:var(--diablo-accent)}.number-btn.btn-minus[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);box-shadow:0 0 8px var(--glass-border-glow)}.number-btn.btn-plus[data-v-ca949926]:hover:not(:disabled){background:var(--glass-bg-hover);box-shadow:0 0 8px var(--glass-border-glow)}.setting-number[data-v-ca949926]{width:50px;text-align:center;padding:6px;font-size:12px;font-weight:600;flex-shrink:0}.setting-hint[data-v-ca949926]{font-size:10px;color:var(--diablo-text-muted);margin-top:2px;line-height:1.2}.interval-input-group[data-v-ca949926]{display:flex;flex-direction:column;gap:8px}.interval-presets[data-v-ca949926]{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.toggle-quick-select-btn[data-v-ca949926]{padding:4px 8px;border:1px solid var(--glass-border);border-radius:8px;background:var(--glass-bg);color:var(--diablo-text);font-size:12px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);min-width:40px;flex-shrink:0;backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.toggle-quick-select-btn[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow);color:#fff}.interval-preset-btn[data-v-ca949926]{padding:4px 8px;border:1px solid var(--glass-border);border-radius:6px;background:var(--glass-bg);color:var(--diablo-text);font-size:11px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);flex-shrink:0}.interval-preset-btn[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 8px var(--glass-border-glow);color:#fff}.interval-preset-btn.active[data-v-ca949926]{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 12px var(--glass-border-glow),var(--glass-inner-glow);color:#fff;font-weight:600}.duration-bracket[data-v-ca949926]{font-size:10px;color:var(--diablo-text-muted);margin-left:4px}.stop-play-loading-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-ca949926 .3s ease}.stop-play-loading-content[data-v-ca949926]{text-align:center;color:#fff;background:var(--glass-bg);padding:40px;border-radius:16px;border:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur-heavy));-webkit-backdrop-filter:blur(var(--glass-blur-heavy));box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow)}.loading-spinner[data-v-ca949926]{width:60px;height:60px;border:4px solid var(--glass-border);border-top-color:var(--diablo-primary);border-radius:50%;margin:0 auto 20px;animation:spinGlow-ca949926 1s linear infinite;box-shadow:0 0 16px var(--glass-border-glow),var(--glass-inner-glow)}.loading-spinner-delayed[data-v-ca949926]{width:40px;height:40px;border:3px solid var(--glass-border);border-top-color:#3498db;border-radius:50%;margin:-45px auto 25px;animation:spinGlow-ca949926 .8s linear infinite;box-shadow:0 0 12px #3498db4d}.loading-text[data-v-ca949926]{font-size:16px;color:var(--diablo-text);animation:pulse-ca949926 1.5s ease-in-out infinite}.confirm-dialog-overlay[data-v-ca949926]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9998;animation:fadeIn-ca949926 .2s ease}.confirm-dialog-content[data-v-ca949926]{background:var(--glass-bg-card);border:1px solid var(--glass-border);border-radius:16px;min-width:400px;max-width:500px;box-shadow:var(--glass-shadow-hover),var(--glass-inner-glow);animation:slideIn-ca949926 .3s ease;backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(1.3)}.confirm-dialog-title[data-v-ca949926]{margin:0;padding:20px 20px 10px;font-size:18px;font-weight:600;color:var(--diablo-text);border-bottom:1px solid var(--glass-border)}.confirm-dialog-body[data-v-ca949926]{padding:20px}.confirm-dialog-body p[data-v-ca949926]{margin:0;font-size:14px;color:var(--diablo-text-muted);line-height:1.6}.confirm-dialog-footer[data-v-ca949926]{display:flex;justify-content:flex-end;gap:12px;padding:15px 20px 20px;border-top:1px solid var(--glass-border)}.confirm-dialog-footer .btn-cancel[data-v-ca949926]{padding:8px 20px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.confirm-dialog-footer .btn-cancel[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:var(--glass-shadow),var(--glass-inner-glow)}.confirm-dialog-footer .btn-confirm[data-v-ca949926]{padding:8px 20px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);color:var(--diablo-text);font-size:14px;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(var(--glass-blur-light));-webkit-backdrop-filter:blur(var(--glass-blur-light))}.confirm-dialog-footer .btn-confirm[data-v-ca949926]:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);box-shadow:0 0 16px var(--glass-border-glow),var(--glass-inner-glow);transform:translateY(-2px)}@media (max-width: 768px){.group-manage[data-v-ca949926]{padding:12px}.page-header[data-v-ca949926]{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:16px}.page-title[data-v-ca949926]{font-size:17px}.header-actions[data-v-ca949926]{flex-wrap:wrap;width:100%;gap:6px}.input-name[data-v-ca949926]{width:100%;min-width:unset;font-size:16px}.add-btn[data-v-ca949926],.group-play-btn[data-v-ca949926],.play-list-btn[data-v-ca949926]{flex:1;justify-content:center;min-width:0;padding:8px 10px;font-size:12px}.add-btn svg[data-v-ca949926],.group-play-btn svg[data-v-ca949926],.play-list-btn svg[data-v-ca949926]{width:14px;height:14px}.group-grid[data-v-ca949926]{grid-template-columns:1fr}.group-card-grid[data-v-ca949926]{grid-template-columns:1fr;padding:12px;gap:12px}.group-card[data-v-ca949926]{padding:14px}.group-card-header[data-v-ca949926]{flex-direction:column;align-items:flex-start;gap:8px}.group-card-actions[data-v-ca949926]{width:100%;justify-content:flex-end}.card-action-btn[data-v-ca949926]{width:36px;height:36px}.device-selector[data-v-ca949926]{grid-template-columns:1fr;gap:12px;max-height:none}.device-list[data-v-ca949926],.selected-devices[data-v-ca949926]{max-height:200px}.device-list-content[data-v-ca949926],.selected-devices-content[data-v-ca949926]{max-height:160px;min-height:60px}.form-group-inline[data-v-ca949926]{flex-direction:column;align-items:stretch;gap:8px}.video-url-input[data-v-ca949926]{min-width:unset;width:100%}.modal-overlay[data-v-ca949926]{align-items:flex-end}.modal-large-content[data-v-ca949926]{max-width:100%;width:100%;max-height:95vh;border-radius:16px 16px 0 0}.modal-play-content[data-v-ca949926]{grid-template-columns:1fr;max-height:none;gap:12px}.file-selector[data-v-ca949926],.selected-files-panel[data-v-ca949926]{max-height:220px;padding:12px}.file-selector h4[data-v-ca949926],.selected-files-panel h4[data-v-ca949926]{font-size:13px;margin-bottom:8px}.file-list-content[data-v-ca949926],.selected-files-content[data-v-ca949926]{max-height:160px;min-height:60px}.file-item[data-v-ca949926]{padding:10px 12px;margin-bottom:6px}.file-name[data-v-ca949926]{font-size:14px}.file-meta[data-v-ca949926]{font-size:11px;gap:8px}.selected-file-item[data-v-ca949926]{padding:8px 10px;margin-bottom:6px}.file-action-btn[data-v-ca949926]{width:28px;height:28px;font-size:14px}.play-settings[data-v-ca949926]{grid-template-columns:1fr 1fr;gap:12px;padding:12px}.setting-item[data-v-ca949926]{gap:6px}.setting-item label[data-v-ca949926]{font-size:12px}.number-input-group[data-v-ca949926]{gap:3px}.number-btn[data-v-ca949926]{width:32px;height:32px;font-size:16px}.setting-number[data-v-ca949926]{width:44px;padding:6px 4px;font-size:13px}.toggle-quick-select-btn[data-v-ca949926]{padding:6px 10px;font-size:12px;color:#0a84ff;background:#0a84ff1a;border-color:#0a84ff4d}.toggle-quick-select-btn[data-v-ca949926]:hover{color:#0a84ff;background:#0a84ff33}.interval-presets[data-v-ca949926]{gap:6px}.interval-preset-btn[data-v-ca949926]{padding:6px 10px;font-size:12px;color:var(--diablo-text)}.interval-preset-btn.active[data-v-ca949926]{color:#fff;background:#0a84ff;border-color:#0a84ff}.duration-display[data-v-ca949926]{gap:4px}.duration-value[data-v-ca949926]{font-size:14px}.duration-bracket[data-v-ca949926]{font-size:9px}.confirm-dialog-overlay[data-v-ca949926]{padding:10px}.confirm-dialog-content[data-v-ca949926]{min-width:unset;max-width:95vw;width:90%}.confirm-dialog[data-v-ca949926]{max-width:95vw;max-height:90vh}.confirm-dialog-body[data-v-ca949926]{padding:16px;max-height:calc(90vh - 120px);overflow-y:auto}.confirm-dialog-header[data-v-ca949926]{padding:14px 16px}.confirm-dialog-header h3[data-v-ca949926]{font-size:15px}.confirm-dialog-footer[data-v-ca949926]{padding:14px 16px}.modal-content[data-v-ca949926]{width:95%;max-height:92vh;border-radius:14px}.dialog-header[data-v-ca949926]{padding:14px 16px;border-radius:14px 14px 0 0}.dialog-header h3[data-v-ca949926]{font-size:16px}.modal-body[data-v-ca949926]{padding:16px}.modal-footer[data-v-ca949926]{padding:12px 16px;gap:8px}.modal-footer .btn[data-v-ca949926]{flex:1;text-align:center;padding:10px 16px}.group-select-list[data-v-ca949926]{max-height:300px}.group-select-item[data-v-ca949926]{padding:14px 16px}.group-select-name[data-v-ca949926]{font-size:15px}}@media (max-width: 480px){.group-manage[data-v-ca949926]{padding:8px}.page-title[data-v-ca949926]{font-size:16px}.group-card[data-v-ca949926]{padding:12px}.group-name[data-v-ca949926]{font-size:14px}.add-btn[data-v-ca949926],.group-play-btn[data-v-ca949926],.play-list-btn[data-v-ca949926]{font-size:11px;padding:7px 8px}.card-action-btn[data-v-ca949926]{width:34px;height:34px}.play-settings[data-v-ca949926]{grid-template-columns:1fr;gap:12px}.file-selector[data-v-ca949926],.selected-files-panel[data-v-ca949926]{max-height:180px}.file-list-content[data-v-ca949926],.selected-files-content[data-v-ca949926]{max-height:130px}}