diff --git a/frontend-dist/css/226.6548e7b4.css b/frontend-dist/css/226.6548e7b4.css deleted file mode 100644 index b0bed73e..00000000 --- a/frontend-dist/css/226.6548e7b4.css +++ /dev/null @@ -1 +0,0 @@ -.not-found-container[data-v-5437e264]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,linear-gradient(135deg,#667eea 0,#764ba2 100%));color:var(--text-color,#333)}.background-wrapper[data-v-5437e264]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.not-found-content[data-v-5437e264]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);backdrop-filter:blur(20px);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1)}.back-button-wrapper[data-v-5437e264]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-5437e264]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:0 4px 20px rgba(0,0,0,.15);transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-5437e264]:hover{transform:translateY(-2px) scale(1.1);box-shadow:0 6px 25px rgba(0,0,0,.2);background:var(--primary-color,#409eff);color:#fff}.error-animation[data-v-5437e264]{margin-bottom:2rem;position:relative}.error-number[data-v-5437e264]{font-size:6rem;font-weight:900;display:flex;justify-content:center;align-items:center;gap:.5rem;margin-bottom:1rem;text-shadow:0 0 20px rgba(0,0,0,.3);color:var(--primary-color,#409eff)}.error-number span[data-v-5437e264]{display:inline-block;animation:bounce-5437e264 2s infinite;background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.error-number .four[data-v-5437e264]:first-child{animation-delay:-.5s}.error-number .zero[data-v-5437e264]{animation-delay:-.25s;color:#f56c6c;-webkit-text-fill-color:#f56c6c}.error-number .four[data-v-5437e264]:last-child{animation-delay:0s}.error-image[data-v-5437e264]{display:flex;justify-content:center;margin:1.5rem 0}.floating-image[data-v-5437e264]{width:100px;height:100px;-o-object-fit:contain;object-fit:contain;animation:float-5437e264 3s ease-in-out infinite;filter:drop-shadow(0 10px 20px rgba(0,0,0,.2));border-radius:20px;background:hsla(0,0%,100%,.1);padding:10px;backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2)}.error-info[data-v-5437e264]{animation:fadeInUp-5437e264 1s ease-out .5s both}.error-title[data-v-5437e264]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.error-description[data-v-5437e264]{font-size:1.1rem;line-height:1.6;margin-bottom:2rem;opacity:.8;color:var(--text-color-secondary,#666)}.error-actions[data-v-5437e264]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-5437e264]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 15px rgba(0,0,0,.1);border:none;min-width:140px}.primary-btn[data-v-5437e264]{background:var(--primary-color,#409eff);color:#fff}.secondary-btn[data-v-5437e264]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-5437e264]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.15)}.btn-icon[data-v-5437e264]{margin-right:8px}.help-links[data-v-5437e264]{animation:fadeInUp-5437e264 1s ease-out 1s both}.help-text[data-v-5437e264]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-5437e264]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-5437e264]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(64,158,255,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-5437e264]:hover{background:var(--primary-color,#409eff);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(64,158,255,.3)}.floating-elements[data-v-5437e264]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-5437e264]{position:absolute;background:rgba(64,158,255,.1);border-radius:50%;animation:floatShapes-5437e264 8s ease-in-out infinite}.shape-1[data-v-5437e264]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-5437e264]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-5437e264]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-5437e264]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-5437e264]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes bounce-5437e264{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-15px)}60%{transform:translateY(-8px)}}@keyframes float-5437e264{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-15px) rotate(5deg)}}@keyframes floatShapes-5437e264{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-5437e264{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.not-found-content[data-v-5437e264]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-5437e264]{top:-20px;right:-20px}.error-number[data-v-5437e264]{font-size:4rem;gap:.3rem}.error-title[data-v-5437e264]{font-size:1.5rem}.error-description[data-v-5437e264]{font-size:1rem}.error-actions[data-v-5437e264]{flex-direction:column;align-items:center}.action-btn[data-v-5437e264]{width:200px}.quick-links[data-v-5437e264]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-5437e264]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}.floating-image[data-v-5437e264]{width:80px;height:80px;border-radius:15px;padding:8px}}@media (prefers-color-scheme:dark){.not-found-container[data-v-5437e264]{background:var(--bg-color,linear-gradient(135deg,#2c3e50 0,#34495e 100%));color:var(--text-color,#e4e7ed)}.not-found-content[data-v-5437e264]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.error-title[data-v-5437e264]{color:var(--text-color,#e4e7ed)}.error-description[data-v-5437e264],.help-text[data-v-5437e264]{color:var(--text-color-secondary,#909399)}} \ No newline at end of file diff --git a/frontend-dist/css/226.6548e7b4.css.gz b/frontend-dist/css/226.6548e7b4.css.gz deleted file mode 100644 index 31721599..00000000 Binary files a/frontend-dist/css/226.6548e7b4.css.gz and /dev/null differ diff --git a/frontend-dist/css/227.e7484000.css b/frontend-dist/css/227.e7484000.css new file mode 100644 index 00000000..f7e8ad87 --- /dev/null +++ b/frontend-dist/css/227.e7484000.css @@ -0,0 +1 @@ +.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.login[data-v-583fe0d5]{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:100vh;height:auto;background:var(--admin-container-bg-color,var(--bg-color));overflow-y:auto;padding:20px 0;box-sizing:border-box;transition:height .35s ease-out,min-height .35s ease-out}.login-title[data-v-583fe0d5]{font-size:2.3rem;margin-bottom:15px;color:var(--login-title-color);font-family:Pacifico,Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease;letter-spacing:2px}@media (max-width:768px){.login-title[data-v-583fe0d5]{font-size:1.5rem}}.login-title[data-v-583fe0d5]:focus,.login-title[data-v-583fe0d5]:hover{text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-583fe0d5]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:600px;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--login-container-bg-color);border:1px solid var(--glass-border);transition:all .3s ease;padding:40px 0;gap:20px;position:relative;z-index:101}@media (max-width:768px){.login-container[data-v-583fe0d5]{width:85vw;padding:25px 0;gap:12px}}.login-container[data-v-583fe0d5]:hover{box-shadow:var(--login-container-hover-box-shadow)}.input-container[data-v-583fe0d5]{display:flex;flex-direction:column;align-items:flex-start;width:80%;margin-bottom:15px;position:relative;gap:8px}@media (max-width:768px){.input-container[data-v-583fe0d5]{width:85%;gap:4px;margin-bottom:8px}}.input-wrapper[data-v-583fe0d5]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-583fe0d5]{margin-right:6px;font-size:1rem}.input-name[data-v-583fe0d5]{font-size:.95rem;font-weight:600;color:var(--login-title-color);text-align:left;transition:all .3s ease;letter-spacing:.5px;position:relative;display:flex;align-items:center;justify-content:flex-start;padding-left:2px}.input-name[data-v-583fe0d5]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--login-input-underline-color,#5b9bd3);transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-583fe0d5]:after,.input-container:hover .input-name[data-v-583fe0d5]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-583fe0d5],.input-container:hover .input-name[data-v-583fe0d5]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-583fe0d5]{font-size:.85rem}}.submit[data-v-583fe0d5]{margin-bottom:10px;width:50%;height:48px;font-size:1.1rem;font-weight:600;letter-spacing:2px;border-radius:12px;background-color:var(--login-submit-btn-bg-color);transition:all .4s cubic-bezier(.4,0,.2,1);border:none;overflow:hidden;position:relative;padding:0;display:flex;justify-content:center;align-items:center}.submit.is-loading[data-v-583fe0d5]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-583fe0d5]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-583fe0d5 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-583fe0d5{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-583fe0d5]{width:50%}}.submit[data-v-583fe0d5]:not(.is-loading):focus,.submit[data-v-583fe0d5]:not(.is-loading):hover{transform:scale(1.05);box-shadow:none}.submit[data-v-583fe0d5]:disabled{cursor:default;transform:none}.password-input[data-v-583fe0d5]{width:100%;height:50px;position:relative}.password-input[data-v-583fe0d5] .el-input__prefix{color:var(--login-input-icon-color,#59636e);font-size:1rem;transition:color .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-583fe0d5] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:1px solid var(--glass-border);box-shadow:none;padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.password-input[data-v-583fe0d5] .el-input__wrapper:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.password-input[data-v-583fe0d5] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-583fe0d5] .el-input__wrapper:hover{box-shadow:none;border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:none}.password-input[data-v-583fe0d5] .el-input__inner{color:var(--text-color,var(--login-input-text-color,#333));font-size:1rem;font-weight:500;background:transparent;border:none;box-shadow:none}.dark .password-input[data-v-583fe0d5] .el-input__inner,[data-theme=dark] .password-input[data-v-583fe0d5] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-583fe0d5] .el-input__inner::-moz-placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;-moz-transition:opacity .3s ease;transition:opacity .3s ease}.password-input[data-v-583fe0d5] .el-input__inner::placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;transition:opacity .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-583fe0d5] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-583fe0d5] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-583fe0d5]{width:100%;height:40px}.password-input[data-v-583fe0d5] .el-input__wrapper{padding:8px 12px}}.footer[data-v-583fe0d5]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-583fe0d5]{position:fixed;top:30px;right:30px;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px}html.dark .toggle-dark[data-v-583fe0d5]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.toggle-dark[data-v-583fe0d5]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark[data-v-583fe0d5]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.language-switcher[data-v-583fe0d5]{position:fixed;top:30px;right:80px;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:12px;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;z-index:100}html.dark .language-switcher[data-v-583fe0d5]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.language-switcher[data-v-583fe0d5]{width:2rem;height:2rem}}.language-switcher[data-v-583fe0d5]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .language-switcher[data-v-583fe0d5]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52} \ No newline at end of file diff --git a/frontend-dist/css/227.e7484000.css.gz b/frontend-dist/css/227.e7484000.css.gz new file mode 100644 index 00000000..bed7314f Binary files /dev/null and b/frontend-dist/css/227.e7484000.css.gz differ diff --git a/frontend-dist/css/278.e44cbf52.css b/frontend-dist/css/278.e44cbf52.css new file mode 100644 index 00000000..d2e07294 --- /dev/null +++ b/frontend-dist/css/278.e44cbf52.css @@ -0,0 +1 @@ +.whitelist-container[data-v-0c389049]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,#6366f1);color:var(--text-color,#333)}.background-wrapper[data-v-0c389049]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.whitelist-content[data-v-0c389049]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:none}.back-button-wrapper[data-v-0c389049]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-0c389049]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-0c389049]:hover{transform:scale(1.1);box-shadow:none;background:var(--primary-color,#2563eb);color:#fff}.status-animation[data-v-0c389049]{margin-bottom:2rem;position:relative}.status-icon[data-v-0c389049]{position:relative;display:inline-block;margin-bottom:1rem}.shield-icon[data-v-0c389049]{font-size:4rem;color:var(--primary-color,#2563eb);animation:pulse-0c389049 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(37,99,235,.3))}.status-badge[data-v-0c389049]{position:absolute;bottom:-5px;right:-5px;background:#f56c6c;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:none}.clock-icon[data-v-0c389049]{color:#fff;font-size:.8rem;animation:tick-0c389049 1s ease-in-out infinite}.status-info[data-v-0c389049]{animation:fadeInUp-0c389049 1s ease-out .5s both}.status-title[data-v-0c389049]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);color:var(--not-found-title-text-color,#2563eb)}.status-description[data-v-0c389049]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-0c389049]{font-size:.95rem;line-height:1.5;margin-bottom:2rem;opacity:.7;color:var(--text-color-secondary,#666);font-style:italic}.status-actions[data-v-0c389049]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-0c389049]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:none;border:none;min-width:140px}.primary-btn[data-v-0c389049]{background:var(--primary-color,#2563eb);color:#fff}.secondary-btn[data-v-0c389049]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-0c389049]:hover{box-shadow:none}.btn-icon[data-v-0c389049]{margin-right:8px}.help-info[data-v-0c389049]{animation:fadeInUp-0c389049 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-0c389049]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-0c389049]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-0c389049]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(37,99,235,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-0c389049]:hover{background:var(--primary-color,#2563eb);color:#fff;box-shadow:none}.powered-by[data-v-0c389049]{animation:fadeInUp-0c389049 1s ease-out 1.2s both;padding-top:1rem;border-top:1px solid hsla(0,0%,100%,.2);opacity:.8}.powered-by p[data-v-0c389049]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-0c389049]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-0c389049]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-0c389049]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-0c389049]{position:absolute;background:rgba(37,99,235,.1);border-radius:50%;animation:floatShapes-0c389049 8s ease-in-out infinite}.shape-1[data-v-0c389049]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-0c389049]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-0c389049]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-0c389049]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-0c389049]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes pulse-0c389049{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}@keyframes tick-0c389049{0%,to{transform:rotate(0deg)}50%{transform:rotate(180deg)}}@keyframes floatShapes-0c389049{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-0c389049{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.whitelist-content[data-v-0c389049]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-0c389049]{top:-20px;right:-20px}.shield-icon[data-v-0c389049]{font-size:3rem}.status-title[data-v-0c389049]{font-size:1.5rem}.status-description[data-v-0c389049]{font-size:1rem}.status-description-en[data-v-0c389049]{font-size:.9rem}.status-actions[data-v-0c389049]{flex-direction:column;align-items:center}.action-btn[data-v-0c389049]{width:200px}.quick-links[data-v-0c389049]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-0c389049]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.whitelist-content[data-v-0c389049]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-0c389049]{font-size:1.3rem}.status-description[data-v-0c389049]{font-size:.95rem}.status-description-en[data-v-0c389049]{font-size:.85rem}.shield-icon[data-v-0c389049]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.whitelist-container[data-v-0c389049]{background:var(--bg-color,#1f1f22);color:var(--text-color,#e4e7ed)}.whitelist-content[data-v-0c389049]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-0c389049],.status-title[data-v-0c389049]{color:var(--text-color,#e4e7ed)}.help-text[data-v-0c389049],.powered-by p[data-v-0c389049],.status-description-en[data-v-0c389049]{color:var(--text-color-secondary,#a1a1aa)}} \ No newline at end of file diff --git a/frontend-dist/css/278.e44cbf52.css.gz b/frontend-dist/css/278.e44cbf52.css.gz new file mode 100644 index 00000000..0277d98b Binary files /dev/null and b/frontend-dist/css/278.e44cbf52.css.gz differ diff --git a/frontend-dist/css/451.7e03bef9.css b/frontend-dist/css/320.7e03bef9.css similarity index 100% rename from frontend-dist/css/451.7e03bef9.css rename to frontend-dist/css/320.7e03bef9.css diff --git a/frontend-dist/css/451.7e03bef9.css.gz b/frontend-dist/css/320.7e03bef9.css.gz similarity index 100% rename from frontend-dist/css/451.7e03bef9.css.gz rename to frontend-dist/css/320.7e03bef9.css.gz diff --git a/frontend-dist/css/331.dd13d5f5.css b/frontend-dist/css/331.dd13d5f5.css new file mode 100644 index 00000000..3a1cf31b --- /dev/null +++ b/frontend-dist/css/331.dd13d5f5.css @@ -0,0 +1 @@ +.blocked-container[data-v-98114f90]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,#dc2626);color:var(--text-color,#333)}.background-wrapper[data-v-98114f90]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.blocked-content[data-v-98114f90]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:none}.back-button-wrapper[data-v-98114f90]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-98114f90]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-98114f90]:hover{transform:scale(1.1);box-shadow:none;background:var(--primary-color,#2563eb);color:#fff}.status-animation[data-v-98114f90]{margin-bottom:2rem;position:relative}.status-icon[data-v-98114f90]{position:relative;display:inline-block;margin-bottom:1rem}.ban-icon[data-v-98114f90]{font-size:4rem;color:#f56c6c;animation:shake-98114f90 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(245,108,108,.3))}.status-badge[data-v-98114f90]{position:absolute;bottom:-5px;right:-5px;background:#e6a23c;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:none}.exclamation-icon[data-v-98114f90]{color:#fff;font-size:.9rem;animation:bounce-98114f90 1.5s ease-in-out infinite}.status-info[data-v-98114f90]{animation:fadeInUp-98114f90 1s ease-out .5s both}.status-title[data-v-98114f90]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);color:var(--not-found-title-text-color,#2563eb)}.status-description[data-v-98114f90]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-98114f90]{font-size:.95rem;line-height:1.5;margin-bottom:2rem;opacity:.7;color:var(--text-color-secondary,#666);font-style:italic}.status-actions[data-v-98114f90]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-98114f90]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:none;border:none;min-width:140px}.primary-btn[data-v-98114f90]{background:var(--primary-color,#2563eb);color:#fff}.secondary-btn[data-v-98114f90]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-98114f90]:hover{box-shadow:none}.btn-icon[data-v-98114f90]{margin-right:8px}.help-info[data-v-98114f90]{animation:fadeInUp-98114f90 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-98114f90]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-98114f90]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-98114f90]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(37,99,235,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-98114f90]:hover{background:var(--primary-color,#2563eb);color:#fff;box-shadow:none}.powered-by[data-v-98114f90]{animation:fadeInUp-98114f90 1s ease-out 1.2s both;padding-top:1rem;border-top:1px solid hsla(0,0%,100%,.2);opacity:.8}.powered-by p[data-v-98114f90]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-98114f90]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-98114f90]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-98114f90]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-98114f90]{position:absolute;background:hsla(0,87%,69%,.1);border-radius:50%;animation:floatShapes-98114f90 8s ease-in-out infinite}.shape-1[data-v-98114f90]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-98114f90]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(230,162,60,.1)}.shape-3[data-v-98114f90]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-98114f90]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,100%,71%,.1)}.shape-5[data-v-98114f90]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(238,90,36,.1)}@keyframes shake-98114f90{0%,to{transform:rotate(0deg)}10%{transform:rotate(-3deg)}20%{transform:rotate(3deg)}30%{transform:rotate(-3deg)}40%{transform:rotate(3deg)}50%{transform:rotate(0deg)}}@keyframes bounce-98114f90{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}@keyframes floatShapes-98114f90{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-98114f90{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.blocked-content[data-v-98114f90]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-98114f90]{top:-20px;right:-20px}.ban-icon[data-v-98114f90]{font-size:3rem}.status-title[data-v-98114f90]{font-size:1.5rem}.status-description[data-v-98114f90]{font-size:1rem}.status-description-en[data-v-98114f90]{font-size:.9rem}.status-actions[data-v-98114f90]{flex-direction:column;align-items:center}.action-btn[data-v-98114f90]{width:200px}.quick-links[data-v-98114f90]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-98114f90]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.blocked-content[data-v-98114f90]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-98114f90]{font-size:1.3rem}.status-description[data-v-98114f90]{font-size:.95rem}.status-description-en[data-v-98114f90]{font-size:.85rem}.ban-icon[data-v-98114f90]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.blocked-container[data-v-98114f90]{background:var(--bg-color,#1f1f22);color:var(--text-color,#e4e7ed)}.blocked-content[data-v-98114f90]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-98114f90],.status-title[data-v-98114f90]{color:var(--text-color,#e4e7ed)}.help-text[data-v-98114f90],.powered-by p[data-v-98114f90],.status-description-en[data-v-98114f90]{color:var(--text-color-secondary,#a1a1aa)}} \ No newline at end of file diff --git a/frontend-dist/css/331.dd13d5f5.css.gz b/frontend-dist/css/331.dd13d5f5.css.gz new file mode 100644 index 00000000..45eaabf1 Binary files /dev/null and b/frontend-dist/css/331.dd13d5f5.css.gz differ diff --git a/frontend-dist/css/345.1353235b.css b/frontend-dist/css/345.1353235b.css deleted file mode 100644 index 17eb982e..00000000 --- a/frontend-dist/css/345.1353235b.css +++ /dev/null @@ -1 +0,0 @@ -.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.login[data-v-3bf86f06]{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:100vh;height:auto;background:var(--admin-container-bg-color,var(--bg-color));overflow-y:auto;padding:20px 0;box-sizing:border-box;transition:height .35s ease-out,min-height .35s ease-out}.login-title[data-v-3bf86f06]{font-size:2.3rem;margin-bottom:15px;color:var(--login-title-color);font-family:Pacifico,Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease;letter-spacing:2px}@media (max-width:768px){.login-title[data-v-3bf86f06]{font-size:1.5rem}}.login-title[data-v-3bf86f06]:focus,.login-title[data-v-3bf86f06]:hover{transform:translateY(-2px);text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-3bf86f06]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:600px;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--login-container-bg-color);backdrop-filter:blur(8px);transition:all .3s ease;padding:40px 0;gap:20px;position:relative;z-index:101}@media (max-width:768px){.login-container[data-v-3bf86f06]{width:85vw;padding:25px 0;gap:12px}}.login-container[data-v-3bf86f06]:hover{box-shadow:var(--login-container-hover-box-shadow);transform:translateY(-5px)}.input-container[data-v-3bf86f06]{display:flex;flex-direction:column;align-items:flex-start;width:80%;margin-bottom:15px;position:relative;gap:8px}@media (max-width:768px){.input-container[data-v-3bf86f06]{width:85%;gap:4px;margin-bottom:8px}}.input-wrapper[data-v-3bf86f06]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-3bf86f06]{margin-right:6px;font-size:1rem}.input-name[data-v-3bf86f06]{font-size:.95rem;font-weight:600;color:var(--login-title-color);text-align:left;transition:all .3s ease;letter-spacing:.5px;position:relative;display:flex;align-items:center;justify-content:flex-start;padding-left:2px}.input-name[data-v-3bf86f06]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:linear-gradient(90deg,var(--login-input-underline-color,#5b9bd3),var(--login-input-underline-secondary-color,#7ba9d8));transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-3bf86f06]:after,.input-container:hover .input-name[data-v-3bf86f06]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-3bf86f06],.input-container:hover .input-name[data-v-3bf86f06]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-3bf86f06]{font-size:.85rem}}.submit[data-v-3bf86f06]{margin-bottom:10px;width:50%;height:48px;font-size:1.1rem;font-weight:600;letter-spacing:2px;border-radius:12px;background-color:var(--login-submit-btn-bg-color);transition:all .4s cubic-bezier(.4,0,.2,1);border:none;overflow:hidden;position:relative;padding:0;display:flex;justify-content:center;align-items:center}.submit.is-loading[data-v-3bf86f06]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-3bf86f06]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-3bf86f06 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-3bf86f06{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-3bf86f06]{width:50%}}.submit[data-v-3bf86f06]:not(.is-loading):focus,.submit[data-v-3bf86f06]:not(.is-loading):hover{transform:translateY(-3px) scale(1.05);box-shadow:0 4px 12px rgba(0,0,0,.2)}.submit[data-v-3bf86f06]:disabled{cursor:default;transform:none}.password-input[data-v-3bf86f06]{width:100%;height:50px;position:relative}.password-input[data-v-3bf86f06] .el-input__prefix{color:var(--login-input-icon-color,#909399);font-size:1rem;transition:color .3s ease}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-3bf86f06] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:2px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(10px);position:relative;overflow:hidden}.password-input[data-v-3bf86f06] .el-input__wrapper:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.password-input[data-v-3bf86f06] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-3bf86f06] .el-input__wrapper:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.15);border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:0 0 0 3px rgba(91,155,211,.1);transform:translateY(-1px)}.password-input[data-v-3bf86f06] .el-input__inner{color:var(--text-color,var(--login-input-text-color,#333));font-size:1rem;font-weight:500;background:transparent;border:none;box-shadow:none}.dark .password-input[data-v-3bf86f06] .el-input__inner,[data-theme=dark] .password-input[data-v-3bf86f06] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-3bf86f06] .el-input__inner::-moz-placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;-moz-transition:opacity .3s ease;transition:opacity .3s ease}.password-input[data-v-3bf86f06] .el-input__inner::placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;transition:opacity .3s ease}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-3bf86f06] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-3bf86f06] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-3bf86f06] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-3bf86f06]{width:100%;height:40px}.password-input[data-v-3bf86f06] .el-input__wrapper{padding:8px 12px}}.footer[data-v-3bf86f06]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-3bf86f06]{position:fixed;top:30px;right:30px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px}.toggle-dark[data-v-3bf86f06]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.language-switcher[data-v-3bf86f06]{position:fixed;top:30px;right:80px;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;z-index:100}@media (max-width:768px){.language-switcher[data-v-3bf86f06]{width:2rem;height:2rem}}.language-switcher[data-v-3bf86f06]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)} \ No newline at end of file diff --git a/frontend-dist/css/345.1353235b.css.gz b/frontend-dist/css/345.1353235b.css.gz deleted file mode 100644 index 0011733d..00000000 Binary files a/frontend-dist/css/345.1353235b.css.gz and /dev/null differ diff --git a/frontend-dist/css/718.d0974d1c.css b/frontend-dist/css/412.ba63fb59.css similarity index 61% rename from frontend-dist/css/718.d0974d1c.css rename to frontend-dist/css/412.ba63fb59.css index 766ba439..46a73e49 100644 --- a/frontend-dist/css/718.d0974d1c.css +++ b/frontend-dist/css/412.ba63fb59.css @@ -1 +1 @@ -@charset "UTF-8";@keyframes plyr-progress{to{background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{0%{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;align-items:center;direction:ltr;display:flex;flex-direction:column;font-family:inherit;font-family:var(--plyr-font-family,inherit);font-variant-numeric:tabular-nums;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);line-height:1.7;line-height:var(--plyr-line-height,1.7);max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui :after,.plyr--full-ui :before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5464;background:var(--plyr-badge-background,#4a5464);border-radius:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:13px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;padding:var(--plyr-control-spacing,10px);position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:15px;font-size:var(--plyr-font-size-base,15px);padding:20px;padding:calc(var(--plyr-control-spacing, 10px)*2)}}@media (min-width:768px){.plyr__captions{font-size:18px;font-size:var(--plyr-font-size-large,18px)}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px);transform:translateY(calc(var(--plyr-control-spacing, 10px)*-4))}.plyr__caption{background:#000c;background:var(--plyr-captions-background,#000c);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#fff;color:var(--plyr-captions-text-color,#fff);line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__caption div{display:inline}.plyr__control{background:#0000;border:0;border-radius:4px;border-radius:var(--plyr-control-radius,4px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7);position:relative;transition:all .1s ease-in-out}.plyr__control svg{display:block;fill:currentColor;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control:focus-visible{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}a.plyr__control{text-decoration:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed,a.plyr__control:after,a.plyr__control:before{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px;margin-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px;padding-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px;padding:0 calc(var(--plyr-control-spacing, 10px)/2)}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip],.plyr__controls:empty{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:#ffffffe6;background:var(--plyr-menu-background,#ffffffe6);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-menu-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:15px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container:after{border:4px solid #0000;border-top-color:#ffffffe6;border:var(--plyr-menu-arrow-size,4px) solid #0000;border-top-color:var(--plyr-menu-background,#ffffffe6);content:"";height:0;position:absolute;right:14px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7 - var(--plyr-menu-arrow-size, 4px)/2);top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5464;color:var(--plyr-menu-color,#4a5464);display:flex;font-size:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:4.66667px 10.5px;padding:calc(var(--plyr-control-spacing, 10px)*.7/1.5) calc(var(--plyr-control-spacing, 10px)*.7*1.5);-webkit-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control:after{border:4px solid #0000;border:var(--plyr-menu-item-arrow-size,4px) solid #0000;content:"";position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px;padding-right:calc(var(--plyr-control-spacing, 10px)*.7*4)}.plyr__menu__container .plyr__control--forward:after{border-left-color:#728197;border-left-color:var(--plyr-menu-arrow-color,#728197);right:6.5px;right:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--forward:focus-visible:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:initial}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:7px;margin:calc(var(--plyr-control-spacing, 10px)*.7);margin-bottom:3.5px;margin-bottom:calc(var(--plyr-control-spacing, 10px)*.7/2);padding-left:28px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*4);position:relative;width:calc(100% - 14px);width:calc(100% - var(--plyr-control-spacing, 10px)*.7*2)}.plyr__menu__container .plyr__control--back:after{border-right-color:#728197;border-right-color:var(--plyr-menu-arrow-color,#728197);left:6.5px;left:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--back:before{background:#dcdfe5;background:var(--plyr-menu-back-border-color,#dcdfe5);box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:"";height:1px;left:0;margin-top:3.5px;margin-top:calc(var(--plyr-control-spacing, 10px)*.7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back:focus-visible:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:initial}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container .plyr__control[role=menuitemradio]:after,.plyr__menu__container .plyr__control[role=menuitemradio]:before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]:before{background:#0000001a;content:"";display:block;flex-shrink:0;height:16px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:before{background:#00b2ff;background:var(--plyr-control-toggle-checked-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)))}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio]:focus-visible:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:#23282f1a}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;margin-right:calc(var(--plyr-control-spacing, 10px)*.7*-1 + 2px);overflow:hidden;padding-left:24.5px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*3.5);pointer-events:none}.plyr--full-ui input[type=range]{appearance:none;background:#0000;border:0;border-radius:26px;border-radius:calc(var(--plyr-range-thumb-height, 13px)*2);color:#00b2ff;color:var(--plyr-range-fill-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));display:block;height:19px;height:calc(var(--plyr-range-thumb-active-shadow-width, 3px)*2 + var(--plyr-range-thumb-height, 13px));margin:0;min-width:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:#0000;background-image:linear-gradient(90deg,currentColor,#0000 0);background-image:linear-gradient(to right,currentColor var(--value,0),#0000 var(--value,0));border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-webkit-slider-thumb{appearance:none;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:-4px;margin-top:calc((var(--plyr-range-thumb-height, 13px) - var(--plyr-range-track-height, 5px))/2*-1);position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:#0000}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:#0000;background:currentColor;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]:focus-visible::-webkit-slider-runnable-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-moz-range-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-ms-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr__poster{background-color:#000;background-color:var(--plyr-video-background,var(--plyr-video-background,#000));background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr--youtube.plyr--paused.plyr__poster-enabled:not(.plyr--stopped) .plyr__poster{display:none}.plyr__time{font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:"⁄";margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:#fff;background:var(--plyr-tooltip-background,#fff);border-radius:5px;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:13px;font-size:var(--plyr-font-size-small,13px);font-weight:400;font-weight:var(--plyr-font-weight-regular,400);left:50%;line-height:1.3;margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:5px 7.5px;padding:calc(var(--plyr-control-spacing, 10px)/2) calc(var(--plyr-control-spacing, 10px)/2*1.5);pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;white-space:nowrap;z-index:2}.plyr__tooltip:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control:focus-visible .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translateY(10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip:before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip:before{left:16px;left:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7)}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translateY(10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:16px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7);transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0) scale(1)}.plyr__progress{left:6.5px;left:calc(var(--plyr-range-thumb-height, 13px)*.5);margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-left:calc(var(--plyr-range-thumb-height, 13px)*-.5);margin-right:-6.5px;margin-right:calc(var(--plyr-range-thumb-height, 13px)*-.5);width:calc(100% + 13px);width:calc(100% + var(--plyr-range-thumb-height, 13px))}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{left:0;max-width:120px;overflow-wrap:break-word}.plyr__progress__buffer{-webkit-appearance:none;background:#0000;border:0;border-radius:100px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:-2.5px;margin-top:calc(var(--plyr-range-track-height, 5px)/2*-1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:#0000}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,#23282f99 25%,#0000 0,#0000 50%,#23282f99 0,#23282f99 75%,#0000 0,#0000);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,#23282f99) 25%,#0000 25%,#0000 50%,var(--plyr-progress-loading-background,#23282f99) 50%,var(--plyr-progress-loading-background,#23282f99) 75%,#0000 75%,#0000);background-repeat:repeat-x;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:#0000}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:#ffffff40;background-color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:#c1c8d199;background-color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr__progress__marker{background-color:#fff;background-color:var(--plyr-progress-marker-background,#fff);border-radius:1px;height:5px;height:var(--plyr-range-track-height,5px);position:absolute;top:50%;transform:translate(-50%,-50%);width:3px;width:var(--plyr-progress-marker-width,3px);z-index:3}.plyr__volume{align-items:center;display:flex;position:relative}.plyr__volume input[type=range]{margin-left:5px;margin-left:calc(var(--plyr-control-spacing, 10px)/2);margin-right:5px;margin-right:calc(var(--plyr-control-spacing, 10px)/2);max-width:90px;min-width:60px;position:relative;z-index:2}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;background:var(--plyr-audio-controls-background,#fff);border-radius:inherit;color:#4a5464;color:var(--plyr-audio-control-color,#4a5464);padding:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control:focus-visible,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-audio-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-audio-control-color-hover,#fff)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--audio .plyr__progress__buffer{color:#c1c8d199;color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr--video{overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));border-radius:inherit;height:100%;margin:auto;overflow:hidden;position:relative;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{aspect-ratio:16/9}@supports not (aspect-ratio:16/9){.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%;position:relative}}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:5px;padding:calc(var(--plyr-control-spacing, 10px)/2);padding-top:20px;padding-top:calc(var(--plyr-control-spacing, 10px)*2);position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:10px;padding:var(--plyr-control-spacing,10px);padding-top:35px;padding-top:calc(var(--plyr-control-spacing, 10px)*3.5)}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr--video .plyr__control:focus-visible,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-video-control-color-hover,#fff)}.plyr__control--overlaid{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));border:0;border-radius:100%;color:#fff;color:var(--plyr-video-control-color,#fff);display:none;left:50%;opacity:.9;padding:15px;padding:calc(var(--plyr-control-spacing, 10px)*1.5);position:absolute;top:50%;transform:translate(-50%,-50%);transition:.3s;z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{opacity:1}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--video .plyr__progress__buffer{color:#ffffff40;color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen video{height:100%}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;inset:0;margin:0;position:fixed;width:100%;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;cursor:pointer;inset:0;overflow:hidden;position:absolute;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:2px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;transform:translateY(-50%);width:3px;z-index:3}.plyr__preview-thumb{background-color:#fff;background-color:var(--plyr-tooltip-background,#fff);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translateY(10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0) scale(1)}.plyr__preview-thumb:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:calc(50% + var(--preview-arrow-offset));position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:7px;border-radius:calc(var(--plyr-menu-radius, 8px) - 1px);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img,.plyr__preview-thumb__image-container:after{height:100%;left:0;position:absolute;top:0;width:100%}.plyr__preview-thumb__image-container:after{border-radius:inherit;box-shadow:inset 0 0 0 1px #00000026;content:"";pointer-events:none}.plyr__preview-thumb__image-container img{max-height:none;max-width:none}.plyr__preview-thumb__time-container{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:7px;border-bottom-left-radius:calc(var(--plyr-menu-radius, 8px) - 1px);border-bottom-right-radius:7px;border-bottom-right-radius:calc(var(--plyr-menu-radius, 8px) - 1px);bottom:0;left:0;line-height:1.1;padding:20px 6px 6px;position:absolute;right:0;z-index:3}.plyr__preview-thumb__time-container span{color:#fff;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__preview-scrubbing{filter:blur(1px);height:100%;inset:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);border:0!important;height:1px!important;overflow:hidden;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.tm-viewport[data-v-095ac3fe]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tm-media[data-v-095ac3fe]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.tm-video-wrap[data-v-095ac3fe]{width:100%;max-width:800px;touch-action:auto}.plyr-video[data-v-095ac3fe]{width:100%}.tm-audio-wrap[data-v-095ac3fe]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;width:100%;max-width:400px;touch-action:auto}.plyr-audio[data-v-095ac3fe]{width:100%}.audio-cover[data-v-095ac3fe]{width:200px;height:200px;border-radius:12px;overflow:hidden;background:hsla(0,0%,100%,.1);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 32px rgba(0,0,0,.3)}.cover-img[data-v-095ac3fe]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.audio-icon-large[data-v-095ac3fe]{width:80px;height:80px;color:hsla(0,0%,100%,.4)}.audio-info[data-v-095ac3fe]{text-align:center;width:100%}.audio-title[data-v-095ac3fe]{font-size:18px;font-weight:600;color:#fff;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-artist[data-v-095ac3fe]{font-size:14px;color:hsla(0,0%,100%,.6)}.audio-placeholder[data-v-095ac3fe],.video-placeholder[data-v-095ac3fe]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:hsla(0,0%,100%,.4)}.video-placeholder svg[data-v-095ac3fe]{width:80px;height:80px}.audio-placeholder .audio-name[data-v-095ac3fe]{font-size:14px;color:hsla(0,0%,100%,.6);text-align:center;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plyr{--plyr-color-main:#3b82f6}.plyr--audio .plyr__controls{background:hsla(0,0%,100%,.1);border-radius:8px}.plyr-custom-menu{position:relative;display:flex;align-items:center}.plyr-menu-btn{background:none;border:none;cursor:pointer;padding:8px;color:inherit;display:flex;align-items:center;justify-content:center}.plyr-menu-btn:hover{opacity:.8}.plyr-menu-dropdown{position:absolute;bottom:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.3);min-width:160px;display:none;z-index:100;overflow:hidden;margin-bottom:8px}.plyr-menu-dropdown.show{display:block}.plyr-menu-item{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;color:#333;font-size:14px;transition:background .15s}.plyr-menu-item:hover{background:#f5f5f5}.plyr-menu-item svg{flex-shrink:0}.plyr-menu-item .arrow{margin-left:auto}.plyr-playmode-submenu,.plyr-speed-submenu{display:none;border-top:1px solid #eee}.plyr-playmode-submenu.show,.plyr-speed-submenu.show{display:block}.plyr-playmode-option,.plyr-speed-option{padding-left:32px;position:relative}.plyr-playmode-option.active,.plyr-speed-option.active{color:#3b82f6;font-weight:600}.plyr-playmode-option.active:before,.plyr-speed-option.active:before{content:"✓";position:absolute;left:12px}@media (max-width:768px),(pointer:coarse){.plyr--audio .plyr__volume{position:relative}.plyr--audio .plyr__volume input[type=range]{position:absolute;bottom:100%;left:50%;transform:translateX(-50%) rotate(-90deg);transform-origin:center center;width:80px;margin-bottom:40px;display:none}.plyr--audio .plyr__volume:focus-within input[type=range],.plyr--audio .plyr__volume:hover input[type=range]{display:block}.plyr--audio .plyr__volume:before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%);width:36px;height:100px;background:rgba(0,0,0,.8);border-radius:8px;display:none;margin-bottom:8px}.plyr--audio .plyr__volume:focus-within:before,.plyr--audio .plyr__volume:hover:before{display:block}}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.public-browse[data-v-5654d512]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-5654d512]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:hsla(0,0%,6%,.95);backdrop-filter:blur(10px);border-bottom:1px solid #1a1a1a;position:relative}.header-left[data-v-5654d512]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:8px}.header-right[data-v-5654d512]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:10px}.search-box[data-v-5654d512]{display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);border-radius:50%;width:28px;height:28px;padding:0;transition:all .3s ease;cursor:pointer}.search-box .search-icon[data-v-5654d512]{color:hsla(0,0%,100%,.8);display:flex;align-items:center;justify-content:center}.search-box .search-icon svg[data-v-5654d512]{width:14px;height:14px}.search-box.expanded[data-v-5654d512]{width:auto;min-width:160px;border-radius:14px;padding:4px 10px;background:rgba(30,30,30,.98);box-shadow:0 2px 12px rgba(0,0,0,.3)}.search-box.expanded .search-icon svg[data-v-5654d512]{width:12px;height:12px}.search-box.expanded .search-input[data-v-5654d512]{width:110px;font-size:12px}.search-box[data-v-5654d512]:focus-within{box-shadow:0 0 0 2px rgba(59,130,246,.5)}.search-input[data-v-5654d512]{background:transparent;border:none;outline:none;color:#fff;font-size:12px;transition:width .3s}.search-input[data-v-5654d512]::-moz-placeholder{color:hsla(0,0%,100%,.5);font-size:11px}.search-input[data-v-5654d512]::placeholder{color:hsla(0,0%,100%,.5);font-size:11px}.theme-toggle-btn[data-v-5654d512]{display:flex;align-items:center;justify-content:center;background:transparent;border-radius:8px;transition:background .2s}.theme-toggle-btn[data-v-5654d512]:hover{background:hsla(0,0%,100%,.1)}@media (max-width:600px){.header-right[data-v-5654d512]{gap:8px}.search-box[data-v-5654d512]{width:26px;height:26px}.search-box .search-icon svg[data-v-5654d512]{width:12px;height:12px}.search-box.expanded[data-v-5654d512]{min-width:140px;padding:3px 8px}.search-box.expanded .search-input[data-v-5654d512]{width:90px;font-size:11px}.search-box.expanded .search-icon svg[data-v-5654d512]{width:11px;height:11px}}.header-center[data-v-5654d512]{position:absolute;left:50%;transform:translateX(-50%);z-index:0}.logo[data-v-5654d512]{font-size:20px;font-weight:600;color:#fff;text-decoration:none;cursor:pointer;transition:opacity .2s}.logo[data-v-5654d512]:hover{opacity:.8}.breadcrumb[data-v-5654d512]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-5654d512]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-5654d512]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-5654d512]{color:#444}.file-count[data-v-5654d512]{color:#666;font-size:14px}.error-container[data-v-5654d512],.loading-container[data-v-5654d512]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.error-credit[data-v-5654d512]{margin-top:40px;text-align:center;color:hsla(0,0%,100%,.4);font-size:14px}.error-credit p[data-v-5654d512]{margin-bottom:12px}.error-credit-links[data-v-5654d512]{display:flex;gap:24px;justify-content:center}.error-credit-links a[data-v-5654d512]{display:flex;align-items:center;gap:6px;color:hsla(0,0%,100%,.5);text-decoration:none;transition:color .2s}.error-credit-links a[data-v-5654d512]:hover{color:#3b82f6}.loading-spinner[data-v-5654d512]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-5654d512 1s linear infinite}.loading-spinner-small[data-v-5654d512]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-5654d512 1s linear infinite}@keyframes spin-5654d512{to{transform:rotate(1turn)}}.retry-btn[data-v-5654d512]{margin-top:20px;padding:10px 32px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;transition:background .2s}.retry-btn[data-v-5654d512]:hover{background:#2563eb}.gallery-container[data-v-5654d512]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-5654d512]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-5654d512]{margin-bottom:24px}.folders-grid[data-v-5654d512]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-5654d512]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:#141414;border-radius:12px;border:1px solid #1a1a1a;cursor:pointer;transition:all .2s}.folder-card[data-v-5654d512]:hover{background:#1a1a1a;border-color:#333;transform:translateY(-2px)}.folder-icon[data-v-5654d512]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-5654d512]{width:100%;height:100%}.folder-name[data-v-5654d512]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-5654d512]{display:flex;gap:16px}.waterfall-column[data-v-5654d512]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-5654d512]{cursor:pointer}.image-wrapper[data-v-5654d512]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-5654d512]:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#141414 25%,#1a1a1a 50%,#141414 75%);background-size:200% 100%;animation:shimmer-5654d512 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-5654d512]:before{display:none}.image-wrapper.loaded[data-v-5654d512]{min-height:auto}.image-wrapper img[data-v-5654d512],.image-wrapper video[data-v-5654d512]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-5654d512{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-5654d512]:hover{border-color:#333}.overlay[data-v-5654d512]{position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(0,0,0,.85));opacity:0;transition:opacity .2s;display:flex;align-items:flex-end;justify-content:flex-end;padding:12px;z-index:10}.image-wrapper:hover .overlay[data-v-5654d512]{opacity:1}.file-placeholder[data-v-5654d512]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#141414;color:#555;gap:12px;padding:16px;box-sizing:border-box}.file-placeholder svg[data-v-5654d512]{width:48px;height:48px}.file-name[data-v-5654d512]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.audio-placeholder[data-v-5654d512]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e);gap:12px;padding:16px;box-sizing:border-box}.audio-icon[data-v-5654d512]{width:48px;height:48px;color:hsla(0,0%,100%,.6)}.audio-name[data-v-5654d512]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.overlay-actions[data-v-5654d512]{display:flex;gap:8px}.action-btn[data-v-5654d512]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);backdrop-filter:blur(8px);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6)}.action-btn svg[data-v-5654d512]{width:16px;height:16px}.action-btn[data-v-5654d512]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-5654d512]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px;min-height:100px}.floating-page-indicator[data-v-5654d512]{position:fixed;bottom:24px;right:24px;background:rgba(0,0,0,.6);backdrop-filter:blur(8px);color:hsla(0,0%,100%,.85);padding:6px 12px;border-radius:16px;font-size:12px;z-index:50;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:opacity .3s}@media (max-width:600px){.floating-page-indicator[data-v-5654d512]{bottom:16px;right:16px;padding:4px 10px;font-size:11px;border-radius:12px}}.loading-more[data-v-5654d512]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-5654d512]{color:#444;font-size:14px}.credit-link[data-v-5654d512]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-5654d512]:hover{color:#888}.preview-modal[data-v-5654d512]{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.97);display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-content[data-v-5654d512]{padding:60px 80px;box-sizing:border-box;overflow:hidden}.preview-content-mobile[data-v-5654d512],.preview-content[data-v-5654d512]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-content-mobile[data-v-5654d512]{flex-direction:column;padding:0;position:absolute;top:0;left:0}.mobile-video-native[data-v-5654d512]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#000}.mobile-audio-wrap[data-v-5654d512]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.mobile-audio-wrap .swipe-hint[data-v-5654d512]{margin-top:20px}.swipe-hint[data-v-5654d512]{font-size:12px;color:hsla(0,0%,100%,.4)}.other-file-preview[data-v-5654d512]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6);gap:16px}.other-file-preview svg[data-v-5654d512]{width:64px;height:64px}.other-file-preview .file-name[data-v-5654d512]{font-size:14px;color:hsla(0,0%,100%,.7);text-align:center;padding:0 20px;word-break:break-all}.swipe-viewport[data-v-5654d512]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-5654d512]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-5654d512]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-5654d512],.preview-video[data-v-5654d512]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.preview-close[data-v-5654d512]{position:fixed;top:20px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-close[data-v-5654d512]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-5654d512]{width:28px;height:28px}.page-indicator[data-v-5654d512]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-5654d512],.preview-prev[data-v-5654d512]{position:fixed;top:50%;transform:translateY(-50%);background:hsla(0,0%,100%,.1);border:none;color:#fff;padding:16px;cursor:pointer;border-radius:50%;width:56px;height:56px;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-next[data-v-5654d512]:hover,.preview-prev[data-v-5654d512]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-5654d512],.preview-prev svg[data-v-5654d512]{width:32px;height:32px}.preview-prev[data-v-5654d512]{left:20px}.preview-next[data-v-5654d512]{right:20px}.rotate-btn[data-v-5654d512]{position:fixed;bottom:30px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.rotate-btn[data-v-5654d512]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-5654d512]{width:24px;height:24px}@media (max-width:768px){.page-indicator[data-v-5654d512]{bottom:40px}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-5654d512]{padding:12px}.waterfall-column[data-v-5654d512],.waterfall[data-v-5654d512]{gap:10px}.image-wrapper[data-v-5654d512]{border-radius:8px}}@media (max-width:600px){.header[data-v-5654d512]{padding:10px 12px}.header-left .logo[data-v-5654d512]{font-size:16px}.breadcrumb[data-v-5654d512]{font-size:12px}.breadcrumb-item[data-v-5654d512]{padding:4px 8px}.file-count[data-v-5654d512]{font-size:12px}.gallery-container[data-v-5654d512]{padding:6px}.waterfall-column[data-v-5654d512],.waterfall[data-v-5654d512]{gap:6px}.image-wrapper[data-v-5654d512]{border-radius:6px;min-height:120px}.folders-section[data-v-5654d512]{margin-bottom:12px}.folders-grid[data-v-5654d512]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-5654d512]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-5654d512]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-5654d512]{font-size:12px}.load-trigger[data-v-5654d512]{padding:24px;min-height:60px}}.copy-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(0,0,0,.8);color:#fff;padding:10px 24px;border-radius:20px;font-size:14px;opacity:0;transition:all .3s ease;z-index:9999;pointer-events:none}.copy-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}:root:not(.dark) .public-browse[data-v-5654d512]{background:#f5f5f5;color:#333}:root:not(.dark) .header[data-v-5654d512]{background:hsla(0,0%,100%,.95);border-bottom-color:#e0e0e0}:root:not(.dark) .logo[data-v-5654d512]{color:#333}:root:not(.dark) .breadcrumb-item[data-v-5654d512]{color:#666}:root:not(.dark) .breadcrumb-item[data-v-5654d512]:hover{background:#e8e8e8;color:#333}:root:not(.dark) .breadcrumb-sep[data-v-5654d512]{color:#ccc}:root:not(.dark) .file-count[data-v-5654d512]{color:#999}:root:not(.dark) .search-box[data-v-5654d512]{background:rgba(0,0,0,.08)}:root:not(.dark) .search-box.expanded[data-v-5654d512]{background:hsla(0,0%,100%,.98);box-shadow:0 4px 20px rgba(0,0,0,.15)}:root:not(.dark) .search-box.expanded .search-input[data-v-5654d512]{color:#333}:root:not(.dark) .search-box.expanded .search-input[data-v-5654d512]::-moz-placeholder{color:rgba(0,0,0,.4)}:root:not(.dark) .search-box.expanded .search-input[data-v-5654d512]::placeholder{color:rgba(0,0,0,.4)}:root:not(.dark) .search-box .search-icon[data-v-5654d512]{color:rgba(0,0,0,.6)}:root:not(.dark) .search-box .search-icon[data-v-5654d512]:hover{color:#333}:root:not(.dark) .error-container[data-v-5654d512],:root:not(.dark) .loading-container[data-v-5654d512]{color:#999}:root:not(.dark) .error-credit[data-v-5654d512]{color:rgba(0,0,0,.4)}:root:not(.dark) .error-credit-links a[data-v-5654d512]{color:rgba(0,0,0,.5)}:root:not(.dark) .loading-spinner-small[data-v-5654d512],:root:not(.dark) .loading-spinner[data-v-5654d512]{border-color:#ddd;border-top-color:#3b82f6}:root:not(.dark) .folder-card[data-v-5654d512]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .folder-card[data-v-5654d512]:hover{background:#fafafa;border-color:#ccc}:root:not(.dark) .folder-icon[data-v-5654d512]{color:#999}:root:not(.dark) .folder-name[data-v-5654d512]{color:#666}:root:not(.dark) .image-wrapper[data-v-5654d512]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .image-wrapper[data-v-5654d512]:before{background:linear-gradient(90deg,#f5f5f5 25%,#fff 50%,#f5f5f5 75%)}:root:not(.dark) .image-wrapper[data-v-5654d512]:hover{border-color:#ccc}:root:not(.dark) .file-placeholder[data-v-5654d512]{background:#f5f5f5;color:#999}:root:not(.dark) .file-name[data-v-5654d512]{color:rgba(0,0,0,.6)}:root:not(.dark) .audio-placeholder[data-v-5654d512]{background:linear-gradient(135deg,#e8f4f8,#d4e5f7)}:root:not(.dark) .audio-icon[data-v-5654d512]{color:rgba(0,0,0,.4)}:root:not(.dark) .audio-name[data-v-5654d512]{color:rgba(0,0,0,.6)}:root:not(.dark) .no-more[data-v-5654d512]{color:#bbb}:root:not(.dark) .credit-link[data-v-5654d512]{color:#aaa}:root:not(.dark) .credit-link[data-v-5654d512]:hover{color:#666}:root:not(.dark) .loading-more[data-v-5654d512]{color:#999}:root:not(.dark) .theme-toggle-btn[data-v-5654d512]:hover{background:rgba(0,0,0,.08)}:root:not(.dark) .floating-page-indicator[data-v-5654d512]{background:hsla(0,0%,100%,.85);color:rgba(0,0,0,.7);box-shadow:0 2px 8px rgba(0,0,0,.1)} \ No newline at end of file +@charset "UTF-8";@keyframes plyr-progress{to{background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{0%{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;align-items:center;direction:ltr;display:flex;flex-direction:column;font-family:inherit;font-family:var(--plyr-font-family,inherit);font-variant-numeric:tabular-nums;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);line-height:1.7;line-height:var(--plyr-line-height,1.7);max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui :after,.plyr--full-ui :before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5464;background:var(--plyr-badge-background,#4a5464);border-radius:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:13px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;padding:var(--plyr-control-spacing,10px);position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:15px;font-size:var(--plyr-font-size-base,15px);padding:20px;padding:calc(var(--plyr-control-spacing, 10px)*2)}}@media (min-width:768px){.plyr__captions{font-size:18px;font-size:var(--plyr-font-size-large,18px)}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px);transform:translateY(calc(var(--plyr-control-spacing, 10px)*-4))}.plyr__caption{background:#000c;background:var(--plyr-captions-background,#000c);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#fff;color:var(--plyr-captions-text-color,#fff);line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__caption div{display:inline}.plyr__control{background:#0000;border:0;border-radius:4px;border-radius:var(--plyr-control-radius,4px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7);position:relative;transition:all .1s ease-in-out}.plyr__control svg{display:block;fill:currentColor;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control:focus-visible{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}a.plyr__control{text-decoration:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed,a.plyr__control:after,a.plyr__control:before{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px;margin-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px;padding-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px;padding:0 calc(var(--plyr-control-spacing, 10px)/2)}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip],.plyr__controls:empty{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:#ffffffe6;background:var(--plyr-menu-background,#ffffffe6);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-menu-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:15px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container:after{border:4px solid #0000;border-top-color:#ffffffe6;border:var(--plyr-menu-arrow-size,4px) solid #0000;border-top-color:var(--plyr-menu-background,#ffffffe6);content:"";height:0;position:absolute;right:14px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7 - var(--plyr-menu-arrow-size, 4px)/2);top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5464;color:var(--plyr-menu-color,#4a5464);display:flex;font-size:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:4.66667px 10.5px;padding:calc(var(--plyr-control-spacing, 10px)*.7/1.5) calc(var(--plyr-control-spacing, 10px)*.7*1.5);-webkit-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control:after{border:4px solid #0000;border:var(--plyr-menu-item-arrow-size,4px) solid #0000;content:"";position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px;padding-right:calc(var(--plyr-control-spacing, 10px)*.7*4)}.plyr__menu__container .plyr__control--forward:after{border-left-color:#728197;border-left-color:var(--plyr-menu-arrow-color,#728197);right:6.5px;right:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--forward:focus-visible:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:initial}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:7px;margin:calc(var(--plyr-control-spacing, 10px)*.7);margin-bottom:3.5px;margin-bottom:calc(var(--plyr-control-spacing, 10px)*.7/2);padding-left:28px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*4);position:relative;width:calc(100% - 14px);width:calc(100% - var(--plyr-control-spacing, 10px)*.7*2)}.plyr__menu__container .plyr__control--back:after{border-right-color:#728197;border-right-color:var(--plyr-menu-arrow-color,#728197);left:6.5px;left:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--back:before{background:#dcdfe5;background:var(--plyr-menu-back-border-color,#dcdfe5);box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:"";height:1px;left:0;margin-top:3.5px;margin-top:calc(var(--plyr-control-spacing, 10px)*.7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back:focus-visible:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:initial}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container .plyr__control[role=menuitemradio]:after,.plyr__menu__container .plyr__control[role=menuitemradio]:before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]:before{background:#0000001a;content:"";display:block;flex-shrink:0;height:16px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:before{background:#00b2ff;background:var(--plyr-control-toggle-checked-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)))}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio]:focus-visible:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:#23282f1a}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;margin-right:calc(var(--plyr-control-spacing, 10px)*.7*-1 + 2px);overflow:hidden;padding-left:24.5px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*3.5);pointer-events:none}.plyr--full-ui input[type=range]{appearance:none;background:#0000;border:0;border-radius:26px;border-radius:calc(var(--plyr-range-thumb-height, 13px)*2);color:#00b2ff;color:var(--plyr-range-fill-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));display:block;height:19px;height:calc(var(--plyr-range-thumb-active-shadow-width, 3px)*2 + var(--plyr-range-thumb-height, 13px));margin:0;min-width:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:#0000;background-image:linear-gradient(90deg,currentColor,#0000 0);background-image:linear-gradient(to right,currentColor var(--value,0),#0000 var(--value,0));border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-webkit-slider-thumb{appearance:none;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:-4px;margin-top:calc((var(--plyr-range-thumb-height, 13px) - var(--plyr-range-track-height, 5px))/2*-1);position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:#0000}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:#0000;background:currentColor;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]:focus-visible::-webkit-slider-runnable-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-moz-range-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-ms-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr__poster{background-color:#000;background-color:var(--plyr-video-background,var(--plyr-video-background,#000));background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr--youtube.plyr--paused.plyr__poster-enabled:not(.plyr--stopped) .plyr__poster{display:none}.plyr__time{font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:"⁄";margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:#fff;background:var(--plyr-tooltip-background,#fff);border-radius:5px;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:13px;font-size:var(--plyr-font-size-small,13px);font-weight:400;font-weight:var(--plyr-font-weight-regular,400);left:50%;line-height:1.3;margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:5px 7.5px;padding:calc(var(--plyr-control-spacing, 10px)/2) calc(var(--plyr-control-spacing, 10px)/2*1.5);pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;white-space:nowrap;z-index:2}.plyr__tooltip:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control:focus-visible .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translateY(10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip:before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip:before{left:16px;left:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7)}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translateY(10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:16px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7);transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0) scale(1)}.plyr__progress{left:6.5px;left:calc(var(--plyr-range-thumb-height, 13px)*.5);margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-left:calc(var(--plyr-range-thumb-height, 13px)*-.5);margin-right:-6.5px;margin-right:calc(var(--plyr-range-thumb-height, 13px)*-.5);width:calc(100% + 13px);width:calc(100% + var(--plyr-range-thumb-height, 13px))}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{left:0;max-width:120px;overflow-wrap:break-word}.plyr__progress__buffer{-webkit-appearance:none;background:#0000;border:0;border-radius:100px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:-2.5px;margin-top:calc(var(--plyr-range-track-height, 5px)/2*-1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:#0000}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,#23282f99 25%,#0000 0,#0000 50%,#23282f99 0,#23282f99 75%,#0000 0,#0000);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,#23282f99) 25%,#0000 25%,#0000 50%,var(--plyr-progress-loading-background,#23282f99) 50%,var(--plyr-progress-loading-background,#23282f99) 75%,#0000 75%,#0000);background-repeat:repeat-x;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:#0000}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:#ffffff40;background-color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:#c1c8d199;background-color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr__progress__marker{background-color:#fff;background-color:var(--plyr-progress-marker-background,#fff);border-radius:1px;height:5px;height:var(--plyr-range-track-height,5px);position:absolute;top:50%;transform:translate(-50%,-50%);width:3px;width:var(--plyr-progress-marker-width,3px);z-index:3}.plyr__volume{align-items:center;display:flex;position:relative}.plyr__volume input[type=range]{margin-left:5px;margin-left:calc(var(--plyr-control-spacing, 10px)/2);margin-right:5px;margin-right:calc(var(--plyr-control-spacing, 10px)/2);max-width:90px;min-width:60px;position:relative;z-index:2}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;background:var(--plyr-audio-controls-background,#fff);border-radius:inherit;color:#4a5464;color:var(--plyr-audio-control-color,#4a5464);padding:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control:focus-visible,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-audio-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-audio-control-color-hover,#fff)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--audio .plyr__progress__buffer{color:#c1c8d199;color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr--video{overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));border-radius:inherit;height:100%;margin:auto;overflow:hidden;position:relative;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{aspect-ratio:16/9}@supports not (aspect-ratio:16/9){.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%;position:relative}}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:5px;padding:calc(var(--plyr-control-spacing, 10px)/2);padding-top:20px;padding-top:calc(var(--plyr-control-spacing, 10px)*2);position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:10px;padding:var(--plyr-control-spacing,10px);padding-top:35px;padding-top:calc(var(--plyr-control-spacing, 10px)*3.5)}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr--video .plyr__control:focus-visible,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-video-control-color-hover,#fff)}.plyr__control--overlaid{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));border:0;border-radius:100%;color:#fff;color:var(--plyr-video-control-color,#fff);display:none;left:50%;opacity:.9;padding:15px;padding:calc(var(--plyr-control-spacing, 10px)*1.5);position:absolute;top:50%;transform:translate(-50%,-50%);transition:.3s;z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{opacity:1}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--video .plyr__progress__buffer{color:#ffffff40;color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen video{height:100%}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;inset:0;margin:0;position:fixed;width:100%;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;cursor:pointer;inset:0;overflow:hidden;position:absolute;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:2px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;transform:translateY(-50%);width:3px;z-index:3}.plyr__preview-thumb{background-color:#fff;background-color:var(--plyr-tooltip-background,#fff);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translateY(10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0) scale(1)}.plyr__preview-thumb:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:calc(50% + var(--preview-arrow-offset));position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:7px;border-radius:calc(var(--plyr-menu-radius, 8px) - 1px);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img,.plyr__preview-thumb__image-container:after{height:100%;left:0;position:absolute;top:0;width:100%}.plyr__preview-thumb__image-container:after{border-radius:inherit;box-shadow:inset 0 0 0 1px #00000026;content:"";pointer-events:none}.plyr__preview-thumb__image-container img{max-height:none;max-width:none}.plyr__preview-thumb__time-container{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:7px;border-bottom-left-radius:calc(var(--plyr-menu-radius, 8px) - 1px);border-bottom-right-radius:7px;border-bottom-right-radius:calc(var(--plyr-menu-radius, 8px) - 1px);bottom:0;left:0;line-height:1.1;padding:20px 6px 6px;position:absolute;right:0;z-index:3}.plyr__preview-thumb__time-container span{color:#fff;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__preview-scrubbing{filter:blur(1px);height:100%;inset:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);border:0!important;height:1px!important;overflow:hidden;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.tm-viewport[data-v-53b527ba]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tm-media[data-v-53b527ba]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.tm-video-wrap[data-v-53b527ba]{width:100%;max-width:800px;touch-action:auto}.plyr-video[data-v-53b527ba]{width:100%}.tm-audio-wrap[data-v-53b527ba]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;width:100%;max-width:400px;touch-action:auto}.plyr-audio[data-v-53b527ba]{width:100%}.audio-cover[data-v-53b527ba]{width:200px;height:200px;border-radius:12px;overflow:hidden;background:hsla(0,0%,100%,.1);display:flex;align-items:center;justify-content:center;box-shadow:none}.cover-img[data-v-53b527ba]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.audio-icon-large[data-v-53b527ba]{width:80px;height:80px;color:#a1a1aa}.audio-info[data-v-53b527ba]{text-align:center;width:100%}.audio-title[data-v-53b527ba]{font-size:18px;font-weight:600;color:#fff;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-artist[data-v-53b527ba]{font-size:14px;color:#c8c9cc}.audio-placeholder[data-v-53b527ba],.video-placeholder[data-v-53b527ba]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:#a1a1aa}.video-placeholder svg[data-v-53b527ba]{width:80px;height:80px}.audio-placeholder .audio-name[data-v-53b527ba]{font-size:14px;color:#c8c9cc;text-align:center;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plyr{--plyr-color-main:#3b82f6}.plyr--audio .plyr__controls{background:hsla(0,0%,100%,.1);border-radius:8px}.plyr-custom-menu{position:relative;display:flex;align-items:center}.plyr-menu-btn{background:none;border:none;cursor:pointer;padding:8px;color:inherit;display:flex;align-items:center;justify-content:center}.plyr-menu-btn:hover{opacity:.8}.plyr-menu-dropdown{position:absolute;bottom:100%;right:0;background:#fff;border:1px solid var(--glass-border);border-radius:8px;box-shadow:none;min-width:160px;display:none;z-index:100;overflow:hidden;margin-bottom:8px}.plyr-menu-dropdown.show{display:block}.plyr-menu-item{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;color:#333;font-size:14px;transition:background .15s}.plyr-menu-item:hover{background:#f5f5f5}.plyr-menu-item svg{flex-shrink:0}.plyr-menu-item .arrow{margin-left:auto}.plyr-playmode-submenu,.plyr-speed-submenu{display:none;border-top:1px solid #eee}.plyr-playmode-submenu.show,.plyr-speed-submenu.show{display:block}.plyr-playmode-option,.plyr-speed-option{padding-left:32px;position:relative}.plyr-playmode-option.active,.plyr-speed-option.active{color:#3b82f6;font-weight:600}.plyr-playmode-option.active:before,.plyr-speed-option.active:before{content:"✓";position:absolute;left:12px}@media (max-width:768px),(pointer:coarse){.plyr--audio .plyr__volume{position:relative}.plyr--audio .plyr__volume input[type=range]{position:absolute;bottom:100%;left:50%;transform:translateX(-50%) rotate(-90deg);transform-origin:center center;width:80px;margin-bottom:40px;display:none}.plyr--audio .plyr__volume:focus-within input[type=range],.plyr--audio .plyr__volume:hover input[type=range]{display:block}.plyr--audio .plyr__volume:before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%);width:36px;height:100px;background:rgba(0,0,0,.8);border-radius:8px;display:none;margin-bottom:8px}.plyr--audio .plyr__volume:focus-within:before,.plyr--audio .plyr__volume:hover:before{display:block}}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.public-browse[data-v-58d060c5]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-58d060c5]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:hsla(0,0%,6%,.95);border-bottom:1px solid #1a1a1a;position:relative}.header-left[data-v-58d060c5]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:8px}.header-right[data-v-58d060c5]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:10px}.search-box[data-v-58d060c5]{display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);border-radius:50%;width:28px;height:28px;padding:0;transition:all .3s ease;cursor:pointer}.search-box .search-icon[data-v-58d060c5]{color:hsla(0,0%,100%,.8);display:flex;align-items:center;justify-content:center}.search-box .search-icon svg[data-v-58d060c5]{width:14px;height:14px}.search-box.expanded[data-v-58d060c5]{width:auto;min-width:160px;border-radius:14px;padding:4px 10px;background:rgba(30,30,30,.98);box-shadow:none}.search-box.expanded .search-icon svg[data-v-58d060c5]{width:12px;height:12px}.search-box.expanded .search-input[data-v-58d060c5]{width:110px;font-size:12px}.search-box[data-v-58d060c5]:focus-within{box-shadow:0 0 0 2px rgba(59,130,246,.5)}.search-input[data-v-58d060c5]{background:transparent;border:none;outline:none;color:#fff;font-size:12px;transition:width .3s}.search-input[data-v-58d060c5]::-moz-placeholder{color:#c8c9cc;font-size:11px}.search-input[data-v-58d060c5]::placeholder{color:#c8c9cc;font-size:11px}.theme-toggle-btn[data-v-58d060c5]{display:flex;align-items:center;justify-content:center;background:transparent;border-radius:8px;transition:background .2s}.theme-toggle-btn[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.1)}@media (max-width:600px){.header-right[data-v-58d060c5]{gap:8px}.search-box[data-v-58d060c5]{width:26px;height:26px}.search-box .search-icon svg[data-v-58d060c5]{width:12px;height:12px}.search-box.expanded[data-v-58d060c5]{min-width:140px;padding:3px 8px}.search-box.expanded .search-input[data-v-58d060c5]{width:90px;font-size:11px}.search-box.expanded .search-icon svg[data-v-58d060c5]{width:11px;height:11px}}.header-center[data-v-58d060c5]{position:absolute;left:50%;transform:translateX(-50%);z-index:0}.logo[data-v-58d060c5]{font-size:20px;font-weight:600;color:#fff;text-decoration:none;cursor:pointer;transition:opacity .2s}.logo[data-v-58d060c5]:hover{opacity:.8}.breadcrumb[data-v-58d060c5]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-58d060c5]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-58d060c5]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-58d060c5]{color:#444}.file-count[data-v-58d060c5]{color:#666;font-size:14px}.error-container[data-v-58d060c5],.loading-container[data-v-58d060c5]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.error-credit[data-v-58d060c5]{margin-top:40px;text-align:center;color:#a1a1aa;font-size:14px}.error-credit p[data-v-58d060c5]{margin-bottom:12px}.error-credit-links[data-v-58d060c5]{display:flex;gap:24px;justify-content:center}.error-credit-links a[data-v-58d060c5]{display:flex;align-items:center;gap:6px;color:#c8c9cc;text-decoration:none;transition:color .2s}.error-credit-links a[data-v-58d060c5]:hover{color:#3b82f6}.loading-spinner[data-v-58d060c5]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-58d060c5 1s linear infinite}.loading-spinner-small[data-v-58d060c5]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-58d060c5 1s linear infinite}@keyframes spin-58d060c5{to{transform:rotate(1turn)}}.retry-btn[data-v-58d060c5]{margin-top:20px;padding:10px 32px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;transition:background .2s}.retry-btn[data-v-58d060c5]:hover{background:#2563eb}.gallery-container[data-v-58d060c5]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-58d060c5]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-58d060c5]{margin-bottom:24px}.folders-grid[data-v-58d060c5]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-58d060c5]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:#141414;border-radius:12px;border:1px solid #1a1a1a;cursor:pointer;transition:all .2s}.folder-card[data-v-58d060c5]:hover{background:#1a1a1a;border-color:#333}.folder-icon[data-v-58d060c5]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-58d060c5]{width:100%;height:100%}.folder-name[data-v-58d060c5]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-58d060c5]{display:flex;gap:16px}.waterfall-column[data-v-58d060c5]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-58d060c5]{cursor:pointer}.image-wrapper[data-v-58d060c5]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-58d060c5]:before{content:"";position:absolute;inset:0;background:#1a1a1a;background-size:200% 100%;animation:shimmer-58d060c5 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-58d060c5]:before{display:none}.image-wrapper.loaded[data-v-58d060c5]{min-height:auto}.image-wrapper img[data-v-58d060c5],.image-wrapper video[data-v-58d060c5]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-58d060c5{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-58d060c5]:hover{border-color:#333}.overlay[data-v-58d060c5]{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .2s;display:flex;align-items:flex-end;justify-content:flex-end;padding:12px;z-index:10}.image-wrapper:hover .overlay[data-v-58d060c5]{opacity:1}.file-placeholder[data-v-58d060c5]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#141414;color:#555;gap:12px;padding:16px;box-sizing:border-box}.file-placeholder svg[data-v-58d060c5]{width:48px;height:48px}.file-name[data-v-58d060c5]{font-size:12px;color:#fafafa;text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.audio-placeholder[data-v-58d060c5]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#16213e;gap:12px;padding:16px;box-sizing:border-box}.audio-icon[data-v-58d060c5]{width:48px;height:48px;color:#c8c9cc}.audio-name[data-v-58d060c5]{font-size:12px;color:#fafafa;text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.overlay-actions[data-v-58d060c5]{display:flex;gap:8px}.action-btn[data-v-58d060c5]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:#c8c9cc}.action-btn svg[data-v-58d060c5]{width:16px;height:16px}.action-btn[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-58d060c5]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px;min-height:100px}.floating-page-indicator[data-v-58d060c5]{position:fixed;bottom:24px;right:24px;background:rgba(0,0,0,.6);border:1px solid var(--glass-border);color:hsla(0,0%,100%,.85);padding:6px 12px;border-radius:16px;font-size:12px;z-index:50;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:opacity .3s}@media (max-width:600px){.floating-page-indicator[data-v-58d060c5]{bottom:16px;right:16px;padding:4px 10px;font-size:11px;border-radius:12px}}.loading-more[data-v-58d060c5]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-58d060c5]{color:#444;font-size:14px}.credit-link[data-v-58d060c5]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-58d060c5]:hover{color:#888}.preview-modal[data-v-58d060c5]{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.97);display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-content[data-v-58d060c5]{padding:60px 80px;box-sizing:border-box;overflow:hidden}.preview-content-mobile[data-v-58d060c5],.preview-content[data-v-58d060c5]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-content-mobile[data-v-58d060c5]{flex-direction:column;padding:0;position:absolute;top:0;left:0}.mobile-video-native[data-v-58d060c5]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#000}.mobile-audio-wrap[data-v-58d060c5]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.mobile-audio-wrap .swipe-hint[data-v-58d060c5]{margin-top:20px}.swipe-hint[data-v-58d060c5]{font-size:12px;color:#a1a1aa}.other-file-preview[data-v-58d060c5]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#c8c9cc;gap:16px}.other-file-preview svg[data-v-58d060c5]{width:64px;height:64px}.other-file-preview .file-name[data-v-58d060c5]{font-size:14px;color:#fafafa;text-align:center;padding:0 20px;word-break:break-all}.swipe-viewport[data-v-58d060c5]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-58d060c5]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-58d060c5]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-58d060c5],.preview-video[data-v-58d060c5]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.preview-close[data-v-58d060c5]{position:fixed;top:20px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-close[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-58d060c5]{width:28px;height:28px}.page-indicator[data-v-58d060c5]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);border:1px solid var(--glass-border);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-58d060c5],.preview-prev[data-v-58d060c5]{position:fixed;top:50%;transform:translateY(-50%);background:hsla(0,0%,100%,.1);border:none;color:#fff;padding:16px;cursor:pointer;border-radius:50%;width:56px;height:56px;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-next[data-v-58d060c5]:hover,.preview-prev[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-58d060c5],.preview-prev svg[data-v-58d060c5]{width:32px;height:32px}.preview-prev[data-v-58d060c5]{left:20px}.preview-next[data-v-58d060c5]{right:20px}.rotate-btn[data-v-58d060c5]{position:fixed;bottom:30px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.rotate-btn[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-58d060c5]{width:24px;height:24px}@media (max-width:768px){.page-indicator[data-v-58d060c5]{bottom:40px}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-58d060c5]{padding:12px}.waterfall-column[data-v-58d060c5],.waterfall[data-v-58d060c5]{gap:10px}.image-wrapper[data-v-58d060c5]{border-radius:8px}}@media (max-width:600px){.header[data-v-58d060c5]{padding:10px 12px}.header-left .logo[data-v-58d060c5]{font-size:16px}.breadcrumb[data-v-58d060c5]{font-size:12px}.breadcrumb-item[data-v-58d060c5]{padding:4px 8px}.file-count[data-v-58d060c5]{font-size:12px}.gallery-container[data-v-58d060c5]{padding:6px}.waterfall-column[data-v-58d060c5],.waterfall[data-v-58d060c5]{gap:6px}.image-wrapper[data-v-58d060c5]{border-radius:6px;min-height:120px}.folders-section[data-v-58d060c5]{margin-bottom:12px}.folders-grid[data-v-58d060c5]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-58d060c5]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-58d060c5]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-58d060c5]{font-size:12px}.load-trigger[data-v-58d060c5]{padding:24px;min-height:60px}}.copy-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(0,0,0,.8);color:#fff;padding:10px 24px;border-radius:20px;font-size:14px;opacity:0;transition:all .3s ease;z-index:9999;pointer-events:none}.copy-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}:root:not(.dark) .public-browse[data-v-58d060c5]{background:#f5f5f5;color:#333}:root:not(.dark) .header[data-v-58d060c5]{background:hsla(0,0%,100%,.95);border-bottom-color:#e0e0e0}:root:not(.dark) .logo[data-v-58d060c5]{color:#333}:root:not(.dark) .breadcrumb-item[data-v-58d060c5]{color:#666}:root:not(.dark) .breadcrumb-item[data-v-58d060c5]:hover{background:#e8e8e8;color:#333}:root:not(.dark) .breadcrumb-sep[data-v-58d060c5]{color:#ccc}:root:not(.dark) .file-count[data-v-58d060c5]{color:#59636e}:root:not(.dark) .search-box[data-v-58d060c5]{background:rgba(0,0,0,.08)}:root:not(.dark) .search-box.expanded[data-v-58d060c5]{background:hsla(0,0%,100%,.98);box-shadow:none}:root:not(.dark) .search-box.expanded .search-input[data-v-58d060c5]{color:#333}:root:not(.dark) .search-box.expanded .search-input[data-v-58d060c5]::-moz-placeholder{color:#4e5969}:root:not(.dark) .search-box.expanded .search-input[data-v-58d060c5]::placeholder{color:#4e5969}:root:not(.dark) .search-box .search-icon[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .search-box .search-icon[data-v-58d060c5]:hover{color:#333}:root:not(.dark) .error-container[data-v-58d060c5],:root:not(.dark) .loading-container[data-v-58d060c5]{color:#59636e}:root:not(.dark) .error-credit[data-v-58d060c5]{color:#4e5969}:root:not(.dark) .error-credit-links a[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .loading-spinner-small[data-v-58d060c5],:root:not(.dark) .loading-spinner[data-v-58d060c5]{border-color:#ddd;border-top-color:#3b82f6}:root:not(.dark) .folder-card[data-v-58d060c5]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .folder-card[data-v-58d060c5]:hover{background:#fafafa;border-color:#ccc}:root:not(.dark) .folder-icon[data-v-58d060c5]{color:#59636e}:root:not(.dark) .folder-name[data-v-58d060c5]{color:#666}:root:not(.dark) .image-wrapper[data-v-58d060c5]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .image-wrapper[data-v-58d060c5]:before{background:#e5e6eb}:root:not(.dark) .image-wrapper[data-v-58d060c5]:hover{border-color:#ccc}:root:not(.dark) .file-placeholder[data-v-58d060c5]{background:#f5f5f5;color:#59636e}:root:not(.dark) .file-name[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .audio-placeholder[data-v-58d060c5]{background:#eff6ff}:root:not(.dark) .audio-icon[data-v-58d060c5]{color:#4e5969}:root:not(.dark) .audio-name[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .no-more[data-v-58d060c5]{color:#bbb}:root:not(.dark) .credit-link[data-v-58d060c5]{color:#aaa}:root:not(.dark) .credit-link[data-v-58d060c5]:hover{color:#666}:root:not(.dark) .loading-more[data-v-58d060c5]{color:#59636e}:root:not(.dark) .theme-toggle-btn[data-v-58d060c5]:hover{background:rgba(0,0,0,.08)}:root:not(.dark) .floating-page-indicator[data-v-58d060c5]{background:hsla(0,0%,100%,.85);color:#1d2129;box-shadow:none} \ No newline at end of file diff --git a/frontend-dist/css/412.ba63fb59.css.gz b/frontend-dist/css/412.ba63fb59.css.gz new file mode 100644 index 00000000..1d5dc372 Binary files /dev/null and b/frontend-dist/css/412.ba63fb59.css.gz differ diff --git a/frontend-dist/css/438.db2aa0ca.css.gz b/frontend-dist/css/438.db2aa0ca.css.gz deleted file mode 100644 index 26265dea..00000000 Binary files a/frontend-dist/css/438.db2aa0ca.css.gz and /dev/null differ diff --git a/frontend-dist/css/664.dc611f7b.css b/frontend-dist/css/449.0a847317.css similarity index 58% rename from frontend-dist/css/664.dc611f7b.css rename to frontend-dist/css/449.0a847317.css index eb72a121..8070a0f6 100644 --- a/frontend-dist/css/664.dc611f7b.css +++ b/frontend-dist/css/449.0a847317.css @@ -1 +1 @@ -.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.main-table[data-v-569a482a]{width:95%;max-width:1400px;border-radius:16px;box-shadow:var(--glass-shadow);min-height:530px;overflow:hidden;border:1px solid var(--glass-border);background:var(--glass-bg)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.main-table[data-v-569a482a] .el-table__inner-wrapper{background:transparent!important}.main-table[data-v-569a482a] .el-table__header-wrapper{background:var(--glass-header-bg)!important}.main-table[data-v-569a482a] .el-table__body-wrapper,.main-table[data-v-569a482a] .el-table__header th,.main-table[data-v-569a482a] .el-table__row,.main-table[data-v-569a482a] .el-table__row td{background:transparent!important}.main-table[data-v-569a482a] .el-table__expanded-cell,.main-table[data-v-569a482a] .el-table__row:hover td{background:var(--glass-header-bg)!important}.container[data-v-569a482a]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}.header-content[data-v-569a482a]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-569a482a]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-569a482a]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-569a482a]{font-size:.95em}}.header-content[data-v-569a482a]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%)}html.dark .header-content[data-v-569a482a]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-569a482a]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-569a482a]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-569a482a]{display:flex;gap:10px}.main-container[data-v-569a482a]{display:flex;flex-direction:column;align-items:center;margin-top:32px}@media (max-width:768px){.main-container[data-v-569a482a]{margin-top:60px}}.pagination-container[data-v-569a482a]{display:flex;justify-content:center;align-items:center;margin-top:24px;padding-bottom:30px;gap:15px}.pagination-container[data-v-569a482a] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-569a482a] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-569a482a] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-569a482a] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-569a482a] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-569a482a] .btn-next,.pagination-container[data-v-569a482a] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-569a482a] .btn-next:hover,.pagination-container[data-v-569a482a] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.load-more[data-v-569a482a]{cursor:pointer;background-color:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:var(--admin-dashboard-btn-color);border:none;transition:all .3s ease;margin-left:0;border-radius:8px;padding:8px 20px;height:36px}.load-more[data-v-569a482a]:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)} \ No newline at end of file +.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.main-table[data-v-7f64b3e6]{width:95%;max-width:1400px;border-radius:16px;box-shadow:var(--glass-shadow);min-height:530px;overflow:hidden;border:1px solid var(--glass-border);background:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.main-table[data-v-7f64b3e6] .el-table__inner-wrapper{background:transparent!important}.main-table[data-v-7f64b3e6] .el-table__header-wrapper{background:var(--glass-header-bg)!important}.main-table[data-v-7f64b3e6] .el-table__body-wrapper,.main-table[data-v-7f64b3e6] .el-table__header th,.main-table[data-v-7f64b3e6] .el-table__row,.main-table[data-v-7f64b3e6] .el-table__row td{background:transparent!important}.main-table[data-v-7f64b3e6] .el-table__expanded-cell,.main-table[data-v-7f64b3e6] .el-table__row:hover td{background:var(--glass-header-bg)!important}.container[data-v-7f64b3e6]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}.header-content[data-v-7f64b3e6]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-7f64b3e6]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-7f64b3e6]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-7f64b3e6]{font-size:.95em}}.header-content[data-v-7f64b3e6]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-7f64b3e6]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-7f64b3e6]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-7f64b3e6]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-7f64b3e6]{display:flex;gap:10px}.main-container[data-v-7f64b3e6]{display:flex;flex-direction:column;align-items:center;margin-top:32px}@media (max-width:768px){.main-container[data-v-7f64b3e6]{margin-top:60px}}.pagination-container[data-v-7f64b3e6]{display:flex;justify-content:center;align-items:center;margin-top:24px;padding-bottom:30px;gap:15px}.pagination-container[data-v-7f64b3e6] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-7f64b3e6] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-7f64b3e6] .el-pager li:hover{color:#38bdf8;box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-7f64b3e6] .el-pager li.is-active{background:#2563eb!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-7f64b3e6] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-7f64b3e6] .btn-next,.pagination-container[data-v-7f64b3e6] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-7f64b3e6] .btn-next:hover,.pagination-container[data-v-7f64b3e6] .btn-prev:hover{color:#38bdf8;box-shadow:var(--admin-dashboard-btn-hover-shadow)}.load-more[data-v-7f64b3e6]{cursor:pointer;background-color:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:var(--admin-dashboard-btn-color);border:none;transition:all .3s ease;margin-left:0;border-radius:8px;padding:8px 20px;height:36px}.load-more[data-v-7f64b3e6]:hover{box-shadow:none} \ No newline at end of file diff --git a/frontend-dist/css/449.0a847317.css.gz b/frontend-dist/css/449.0a847317.css.gz new file mode 100644 index 00000000..de8a9e62 Binary files /dev/null and b/frontend-dist/css/449.0a847317.css.gz differ diff --git a/frontend-dist/css/491.f982b4e1.css b/frontend-dist/css/491.f982b4e1.css deleted file mode 100644 index 95ed2935..00000000 --- a/frontend-dist/css/491.f982b4e1.css +++ /dev/null @@ -1 +0,0 @@ -.history-container[data-v-550797ce]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-550797ce]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(20px);background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-550797ce]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-550797ce]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-550797ce]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-550797ce]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-550797ce]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-550797ce]{display:flex;gap:10px}.header-right .el-button[data-v-550797ce]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-550797ce]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-550797ce]{background:linear-gradient(135deg,#ff6b6b,#ee5a5a);color:#fff}.history-content[data-v-550797ce]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-550797ce]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-550797ce]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:none;backdrop-filter:blur(10px)}.grid-item[data-v-550797ce]:hover{transform:translateY(-5px);box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-550797ce]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-550797ce],.grid-preview video[data-v-550797ce]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-550797ce]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-550797ce]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-550797ce]{opacity:1}.grid-actions[data-v-550797ce]{display:flex;gap:15px}.grid-actions .el-button[data-v-550797ce]{backdrop-filter:blur(10px)}.grid-info[data-v-550797ce]{padding:12px}.file-name[data-v-550797ce]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-550797ce]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-550797ce]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-550797ce]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none;transition:all .3s ease}.list-item[data-v-550797ce]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-550797ce]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-550797ce],.list-preview video[data-v-550797ce]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-550797ce]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-550797ce]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-550797ce]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-550797ce]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-550797ce]{display:flex;gap:8px}.list-actions .el-button[data-v-550797ce]{backdrop-filter:blur(10px)}.empty-state[data-v-550797ce]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-550797ce]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-550797ce]::-webkit-scrollbar{width:8px}.history-content[data-v-550797ce]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-550797ce]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-550797ce]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-550797ce]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-550797ce]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-550797ce]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-550797ce]:last-child{border-left:2px solid transparent}.timeline-header[data-v-550797ce]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-550797ce]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:0 0 10px var(--el-upload-dragger-uniform-color);z-index:2;box-sizing:border-box}.date-label[data-v-550797ce]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-550797ce]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-550797ce]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-550797ce],.no-more-hint[data-v-550797ce]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-550797ce]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-550797ce]{padding:15px 20px}.header-left h2[data-v-550797ce]{font-size:20px}.history-content[data-v-550797ce]{padding:15px 20px}.grid-view[data-v-550797ce]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-550797ce]{height:120px}.list-meta[data-v-550797ce]{display:none}.list-info[data-v-550797ce]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-4848c2b0]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(64,158,255,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,linear-gradient(135deg,hsla(0,0%,100%,.9) 0,hsla(0,0%,100%,.7) 100%));backdrop-filter:blur(10px);box-shadow:0 2px 8px var(--upload-list-item-shadow,rgba(0,0,0,.04));transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-4848c2b0]:hover{border-color:var(--upload-list-item-hover-border,rgba(64,158,255,.25));box-shadow:0 4px 16px var(--upload-list-item-hover-shadow,rgba(64,158,255,.12));transform:translateY(-2px)}.upload-list-item-content[data-v-4848c2b0]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-4848c2b0]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-4848c2b0]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-4848c2b0]:last-child{margin-bottom:0}.upload-list-item-url[data-v-4848c2b0]{display:flex;flex-direction:column}.file-icon[data-v-4848c2b0]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-4848c2b0]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,linear-gradient(135deg,rgba(64,158,255,.08) 0,rgba(64,158,255,.03) 100%));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(64,158,255,.12));backdrop-filter:blur(4px);transition:all .3s ease}.upload-list-item-name-wrapper[data-v-4848c2b0]:hover{background:var(--file-name-hover-bg,linear-gradient(135deg,rgba(64,158,255,.12) 0,rgba(64,158,255,.06) 100%));border-color:var(--file-name-hover-border,rgba(64,158,255,.2))}.upload-list-item-name[data-v-4848c2b0]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-4848c2b0]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,linear-gradient(135deg,rgba(64,158,255,.05) 0,rgba(64,158,255,.02) 100%));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(64,158,255,.1))}.upload-list-item-progress[data-v-4848c2b0] .el-progress{--el-color-primary:#409eff}.upload-list-item-progress[data-v-4848c2b0] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-4848c2b0] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,linear-gradient(135deg,rgba(0,0,0,.06) 0,rgba(0,0,0,.03) 100%));box-shadow:inset 0 1px 3px rgba(0,0,0,.08);overflow:hidden}.upload-list-item-progress[data-v-4848c2b0] .el-progress-bar__inner{border-radius:8px;background:linear-gradient(90deg,#409eff,#66b1ff 50%,#409eff)!important;box-shadow:0 0 12px rgba(64,158,255,.5),0 0 4px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.3);position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-4848c2b0] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2) 50%,transparent);pointer-events:none}.upload-list-item-progress[data-v-4848c2b0] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-4848c2b0 1s linear infinite}.upload-list-item-progress[data-v-4848c2b0] .el-progress--success .el-progress-bar__inner{background:linear-gradient(90deg,#67c23a,#85ce61 25%,#95d475 50%,#85ce61 75%,#67c23a)!important;background-size:200% 100%;box-shadow:0 0 12px rgba(103,194,58,.5),0 0 4px rgba(103,194,58,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:none}.upload-list-item-progress[data-v-4848c2b0] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-4848c2b0] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-4848c2b0] .el-progress--exception .el-progress-bar__inner{background:linear-gradient(90deg,#f56c6c,#f78989 25%,#f9a7a7 50%,#f78989 75%,#f56c6c)!important;background-size:200% 100%;box-shadow:0 0 12px hsla(0,87%,69%,.5),0 0 4px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:progressPulse-4848c2b0 1s ease-in-out infinite}.upload-list-item-progress[data-v-4848c2b0] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-4848c2b0{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-4848c2b0{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-4848c2b0] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-4848c2b0] .el-input:hover{transform:translateY(-1px)}.upload-list-item-url[data-v-4848c2b0] .el-input__wrapper{border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.08);transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-4848c2b0] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-4848c2b0] .el-input__wrapper:hover{box-shadow:0 2px 8px rgba(0,0,0,.12);border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-4848c2b0] .el-input__wrapper.is-focus{box-shadow:0 0 0 2px var(--el-color-primary-light-8),0 4px 12px rgba(0,0,0,.15);border-color:var(--el-color-primary)}.upload-list-item-url[data-v-4848c2b0] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(64,158,255,.08),transparent);animation:shimmer-4848c2b0 2s infinite;z-index:0}@keyframes shimmer-4848c2b0{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-4848c2b0] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-4848c2b0] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-4848c2b0] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-4848c2b0] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-4848c2b0] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-4848c2b0] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-4848c2b0] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-4848c2b0] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-4848c2b0 2s ease-in-out infinite}.upload-list-item-url[data-v-4848c2b0] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-4848c2b0{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-4848c2b0]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-4848c2b0]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-4848c2b0]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-4848c2b0]{background:var(--file-action-primary-bg,linear-gradient(145deg,#409eff 0,#53a8ff 50%,#66b1ff 100%));color:#fff;box-shadow:0 3px 10px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-primary[data-v-4848c2b0]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-primary[data-v-4848c2b0]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-4848c2b0]{background:var(--file-action-danger-bg,linear-gradient(145deg,#f56c6c 0,#f78989 50%,#f9a7a7 100%));color:#fff;box-shadow:0 3px 10px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-danger[data-v-4848c2b0]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px hsla(0,87%,69%,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-danger[data-v-4848c2b0]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-4848c2b0]{margin-left:2px}.upload-list-item-url-row[data-v-4848c2b0]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-4848c2b0]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-4848c2b0] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-4848c2b0] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-4848c2b0] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-4848c2b0] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-4848c2b0]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-4848c2b0]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-4848c2b0]{font-size:12px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-5f291428{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-5f291428],.upload-list-card[data-v-5f291428]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-5f291428]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--upload-list-card-bg-color);backdrop-filter:blur(10px);border:var(--upload-list-card-border);box-shadow:var(--upload-list-card-box-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-5f291428] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-5f291428]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-5f291428],.upload-list-container[data-v-5f291428]{width:70vw}}.upload-list-card.upload-list-busy[data-v-5f291428],.upload-list-container.upload-list-busy[data-v-5f291428]{height:40vh}.upload-list-card.is-uploading[data-v-5f291428]{border:1px solid var(--el-upload-dragger-uniform-color,#409eff)!important;box-shadow:0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 30%,transparent),0 0 40px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 15%,transparent),inset 0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 8%,transparent)!important}.upload-card-wrapper[data-v-5f291428]{position:relative;overflow:visible}.upload-card-glow[data-v-5f291428]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-5f291428]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-5f291428]{width:70vw}}.upload-card-busy[data-v-5f291428] .el-upload-dragger{height:17vh}[data-v-5f291428] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease}[data-v-5f291428] .el-upload:focus .el-upload-dragger{border-color:var(--el-upload-dragger-border-color)}[data-v-5f291428] .el-upload-dragger.is-dragover,[data-v-5f291428] .el-upload-dragger:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.is-uploading[data-v-5f291428] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-5f291428]{position:relative;background:none}.upload-card.is-uploading[data-v-5f291428]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5f291428 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-5f291428]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-5f291428]{font-size:small}}.el-upload__text.upload-list-busy[data-v-5f291428]{font-size:small}.el-icon--upload[data-v-5f291428]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-5f291428]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-5f291428]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-5f291428]{font-size:30px}}.paste-card[data-v-5f291428]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-5f291428]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-5f291428]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-5f291428]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5f291428 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-5f291428] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-5f291428]{height:17vh}.upload-card-textarea[data-v-5f291428]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,linear-gradient(135deg,rgba(64,158,255,.03) 0,rgba(64,158,255,.01) 100%));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-5f291428]{height:50%}.upload-card-textarea[data-v-5f291428]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:linear-gradient(135deg,rgba(64,158,255,.3),rgba(64,158,255,.1) 50%,rgba(64,158,255,.3));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-5f291428]:hover:before{opacity:1}.upload-card-textarea[data-v-5f291428]:focus-within:before{opacity:1;background:linear-gradient(135deg,rgba(64,158,255,.6),rgba(64,158,255,.2) 50%,rgba(64,158,255,.6))}[data-v-5f291428] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-5f291428] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5f291428] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5f291428] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(64,158,255,.03))}[data-v-5f291428] .el-textarea__inner:focus{border-color:transparent;box-shadow:0 0 0 3px rgba(64,158,255,.15),0 4px 20px rgba(64,158,255,.1),inset 0 1px 3px rgba(0,0,0,.05);background:var(--textarea-inner-focus-bg,rgba(64,158,255,.02))}.upload-card-textarea[data-v-5f291428] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-5f291428] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-5f291428] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(64,158,255,.4),rgba(64,158,255,.6));border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-5f291428] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(64,158,255,.6),rgba(64,158,255,.8))}.paste-card-actions[data-v-5f291428]{display:flex;justify-content:space-between;align-items:center;width:50vw;margin-top:3%}.paste-card-upload-button[data-v-5f291428]{min-width:100px;height:42px;border-radius:14px!important;font-weight:600;font-size:15px;letter-spacing:2px;background:linear-gradient(135deg,#409eff,#66b1ff)!important;border:none!important;box-shadow:0 4px 15px rgba(64,158,255,.35),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.paste-card-upload-button[data-v-5f291428]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.25),transparent);transition:left .6s ease}.paste-card-upload-button[data-v-5f291428]:hover{transform:translateY(-3px) scale(1.02);box-shadow:0 8px 25px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.paste-card-upload-button[data-v-5f291428]:hover:before{left:100%}.paste-card-upload-button[data-v-5f291428]:active{transform:translateY(-1px) scale(.98)}.upload-card-busy .paste-card-upload-button[data-v-5f291428]{min-width:70px;height:32px;border-radius:10px!important;font-size:13px;letter-spacing:1px}.upload-card-busy .paste-card-actions[data-v-5f291428]{margin-top:2%}.paste-card-method-group[data-v-5f291428]{background:var(--paste-method-group-bg,rgba(64,158,255,.08));border-radius:14px;padding:4px;border:1px solid var(--paste-method-group-border,rgba(64,158,255,.15))}.paste-card-method-group[data-v-5f291428] .el-radio-button__inner{transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:10px!important;border:none!important;background:transparent;font-weight:500;padding:10px 20px;color:var(--el-text-color-regular)}.paste-card-method-group[data-v-5f291428] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-5f291428] .el-radio-button:last-child .el-radio-button__inner{border-radius:10px!important}.paste-card-method-group[data-v-5f291428] .el-radio-button__inner:hover{background:var(--paste-method-hover-bg,rgba(64,158,255,.12));color:var(--el-color-primary)}.paste-card-method-group[data-v-5f291428] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:linear-gradient(135deg,#409eff,#66b1ff)!important;color:#fff!important;box-shadow:0 3px 10px rgba(64,158,255,.35)}@media (max-width:768px){.paste-card[data-v-5f291428]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-5f291428]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-5f291428]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-5f291428]:before{border-radius:11px}[data-v-5f291428] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-5f291428]{width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-5f291428]{height:30px;min-width:55px;border-radius:8px!important;font-size:12px;letter-spacing:.5px;padding:0 10px}.paste-card-method-group[data-v-5f291428]{border-radius:8px;padding:2px;height:30px;display:flex;align-items:center}.paste-card-method-group[data-v-5f291428] .el-radio-button__inner{padding:4px 10px;font-size:11px;border-radius:6px!important;height:26px;display:flex;align-items:center}}.upload-list-dashboard[data-v-5f291428]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;position:sticky;top:0;z-index:1;border-radius:15px;transition:all .3s ease}.upload-list-dashboard.list-scrolled[data-v-5f291428]{background-color:var(--upload-list-dashboard-bg-color);box-shadow:var(--upload-list-dashboard-shadow)}[data-v-5f291428] .el-upload-dragger{position:relative;overflow:hidden}[data-v-5f291428] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-5f291428] .el-upload-dragger:after,[data-v-5f291428] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-5f291428] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-5f291428]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-5f291428 60s linear infinite}.upload-card[data-v-5f291428]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-5f291428 40s linear infinite,starPulse-5f291428 4s ease-in-out infinite}@keyframes starScroll-5f291428{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-5f291428{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-5f291428]{display:flex;align-items:center;gap:5px;padding:5px;background:var(--upload-action-toolbar-bg);border-radius:18px;border:1px solid var(--upload-action-toolbar-border);box-shadow:var(--upload-action-toolbar-shadow);backdrop-filter:blur(14px) saturate(1.08);-webkit-backdrop-filter:blur(14px) saturate(1.08);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease,transform .25s ease}.modern-action-group[data-v-5f291428]:hover{background:var(--upload-action-toolbar-hover-bg);border-color:var(--upload-action-toolbar-hover-border);box-shadow:var(--upload-action-toolbar-hover-shadow)}.modern-action-btn[data-v-5f291428]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-5f291428]:focus,.modern-action-btn[data-v-5f291428]:focus-visible{outline:none!important}.modern-action-btn[data-v-5f291428]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-5f291428]:hover{transform:translateY(-1px);background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-5f291428]:hover:before{opacity:.08}.modern-action-btn[data-v-5f291428]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-5f291428]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-5f291428]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-5f291428]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-5f291428]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-5f291428]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-5f291428]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-5f291428]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;padding:6px 14px;background:var(--dashboard-title-bg,linear-gradient(135deg,rgba(64,158,255,.06) 0,transparent 100%));border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-5f291428]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-5f291428]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-5f291428]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-5f291428]{font-size:12px;padding:4px 10px}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-0ff63416]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-0ff63416]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:none;background-color:var(--popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-0ff63416]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-0ff63416]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-0ff63416]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.container[data-v-60c7ff10]{background:var(--bg-color);min-height:100vh}.rotate[data-v-60c7ff10]{animation:spin-60c7ff10 2s ease-in-out}.scale[data-v-60c7ff10]{animation:scale-60c7ff10 .5s ease-in-out}@keyframes spin-60c7ff10{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-60c7ff10{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-60c7ff10{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-60c7ff10{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-60c7ff10{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-60c7ff10]{display:inline-block}.mobile-only[data-v-60c7ff10]{display:none}@media (max-width:768px){.desktop-only[data-v-60c7ff10]{display:none!important}.mobile-only[data-v-60c7ff10]{display:flex!important}}.toggle-dark-button[data-v-60c7ff10]{border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px;position:fixed;top:30px;right:80px}.more-dropdown[data-v-60c7ff10]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-60c7ff10]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.more-dropdown .more-button[data-v-60c7ff10]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.upload-method-button[data-v-60c7ff10]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none}@media (max-width:768px){.upload-method-button[data-v-60c7ff10]{width:2rem;height:2rem}}.upload-method-icon[data-v-60c7ff10]{outline:none}.mobile-more-dropdown[data-v-60c7ff10]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-60c7ff10]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-60c7ff10]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.upload-folder-container[data-v-60c7ff10]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-60c7ff10]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-60c7ff10],.upload-folder-container[data-v-60c7ff10]{right:58px}}.upload-folder[data-v-60c7ff10]{width:100px;height:2.5rem;border-radius:12px;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-60c7ff10]{width:200px}@media (max-width:768px){.upload-folder[data-v-60c7ff10]{width:80px;height:2rem}.upload-folder.active[data-v-60c7ff10]{width:120px}}.directory-tree-trigger[data-v-60c7ff10]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border:none;margin-left:10px;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none}.directory-tree-trigger[data-v-60c7ff10]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}@media (max-width:768px){.directory-tree-trigger[data-v-60c7ff10]{width:2rem;height:2rem}}.upload-folder[data-v-60c7ff10] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-60c7ff10] .el-input{height:100%}.upload-folder[data-v-60c7ff10] .el-input__wrapper{border-radius:12px;backdrop-filter:blur(10px);border:none;height:100%}.quick-toolbar[data-v-60c7ff10],.upload-folder[data-v-60c7ff10] .el-input__wrapper{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow)}.quick-toolbar[data-v-60c7ff10]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:background-color .24s ease,box-shadow .24s ease}.quick-toolbar-button[data-v-60c7ff10]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-60c7ff10]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-60c7ff10]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-60c7ff10]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-60c7ff10]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-60c7ff10]{margin-top:4px}.quick-toolbar-icon[data-v-60c7ff10]{font-size:16px}.quick-toolbar-toggle-icon[data-v-60c7ff10]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-60c7ff10]{transform:rotate(0deg)}.info-container[data-v-60c7ff10]:hover,.quick-toolbar-button[data-v-60c7ff10]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-60c7ff10]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.quick-toolbar-button[data-v-60c7ff10]:hover{transform:none}.directory-tree-trigger[data-v-60c7ff10]:hover,.mobile-more-button[data-v-60c7ff10]:hover,.more-dropdown .more-button[data-v-60c7ff10]:hover,.toggle-dark-button[data-v-60c7ff10]:hover,.upload-method-button[data-v-60c7ff10]:hover{transform:scale(1.05);background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow-hover)}.upload-folder[data-v-60c7ff10]:hover{box-shadow:var(--toolbar-button-shadow-hover)}@media (max-width:768px){.quick-toolbar[data-v-60c7ff10]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-60c7ff10]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-60c7ff10]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-60c7ff10]{gap:2px}.quick-toolbar-more[data-v-60c7ff10]{margin-top:3px}.quick-toolbar-icon[data-v-60c7ff10]{font-size:14px}}[data-v-60c7ff10] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-60c7ff10]{display:flex;justify-content:center;margin-top:20px}.header[data-v-60c7ff10]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-60c7ff10]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-60c7ff10 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-60c7ff10]:hover{transform:scale(1.08) translateY(-3px);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-60c7ff10]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-60c7ff10]:hover:after{width:80%}.main-title[data-v-60c7ff10]{background:var(--upload-main-title-color);background-clip:text;-webkit-background-clip:text;color:transparent;text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-60c7ff10]{opacity:0}.title[data-v-60c7ff10]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-60c7ff10]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:transparent;opacity:0;background:repeating-linear-gradient(108deg,var(--upload-title-crayon-base) 0 5px,var(--upload-title-crayon-light) 5px 8px,transparent 8px 10px),repeating-linear-gradient(72deg,transparent 0 7px,var(--upload-title-crayon-fleck) 7px 8px,transparent 8px 12px),linear-gradient(90deg,var(--upload-title-crayon-deep),var(--upload-title-crayon-light));background-clip:text;-webkit-background-clip:text;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-60c7ff10]{animation:crayonWrite-60c7ff10 .82s steps(18) forwards,crayonScratch-60c7ff10 .16s steps(2) .82s 3}@keyframes float-60c7ff10{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-60c7ff10{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-60c7ff10{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-60c7ff10]{font-size:1.55rem;letter-spacing:1px}.title[data-v-60c7ff10]:hover{transform:scale(1.05) translateY(-2px)}}.upload-home[data-v-60c7ff10]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-60c7ff10]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-60c7ff10]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-60c7ff10]{padding-bottom:5px}.upload[data-v-60c7ff10]{top:-3.8vh}}.footer[data-v-60c7ff10]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/491.f982b4e1.css.gz b/frontend-dist/css/491.f982b4e1.css.gz deleted file mode 100644 index 6be46dc1..00000000 Binary files a/frontend-dist/css/491.f982b4e1.css.gz and /dev/null differ diff --git a/frontend-dist/css/51.1dd65d6c.css b/frontend-dist/css/51.1dd65d6c.css deleted file mode 100644 index 53118dee..00000000 --- a/frontend-dist/css/51.1dd65d6c.css +++ /dev/null @@ -1 +0,0 @@ -.whitelist-container[data-v-46822ec2]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,linear-gradient(135deg,#667eea 0,#764ba2 100%));color:var(--text-color,#333)}.background-wrapper[data-v-46822ec2]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.whitelist-content[data-v-46822ec2]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);backdrop-filter:blur(20px);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1)}.back-button-wrapper[data-v-46822ec2]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-46822ec2]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:0 4px 20px rgba(0,0,0,.15);transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-46822ec2]:hover{transform:translateY(-2px) scale(1.1);box-shadow:0 6px 25px rgba(0,0,0,.2);background:var(--primary-color,#409eff);color:#fff}.status-animation[data-v-46822ec2]{margin-bottom:2rem;position:relative}.status-icon[data-v-46822ec2]{position:relative;display:inline-block;margin-bottom:1rem}.shield-icon[data-v-46822ec2]{font-size:4rem;color:var(--primary-color,#409eff);animation:pulse-46822ec2 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(64,158,255,.3))}.status-badge[data-v-46822ec2]{position:absolute;bottom:-5px;right:-5px;background:#f56c6c;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.2)}.clock-icon[data-v-46822ec2]{color:#fff;font-size:.8rem;animation:tick-46822ec2 1s ease-in-out infinite}.status-info[data-v-46822ec2]{animation:fadeInUp-46822ec2 1s ease-out .5s both}.status-title[data-v-46822ec2]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.status-description[data-v-46822ec2]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-46822ec2]{font-size:.95rem;line-height:1.5;margin-bottom:2rem;opacity:.7;color:var(--text-color-secondary,#666);font-style:italic}.status-actions[data-v-46822ec2]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-46822ec2]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 15px rgba(0,0,0,.1);border:none;min-width:140px}.primary-btn[data-v-46822ec2]{background:var(--primary-color,#409eff);color:#fff}.secondary-btn[data-v-46822ec2]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-46822ec2]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.15)}.btn-icon[data-v-46822ec2]{margin-right:8px}.help-info[data-v-46822ec2]{animation:fadeInUp-46822ec2 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-46822ec2]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-46822ec2]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-46822ec2]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(64,158,255,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-46822ec2]:hover{background:var(--primary-color,#409eff);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(64,158,255,.3)}.powered-by[data-v-46822ec2]{animation:fadeInUp-46822ec2 1s ease-out 1.2s both;padding-top:1rem;border-top:1px solid hsla(0,0%,100%,.2);opacity:.8}.powered-by p[data-v-46822ec2]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-46822ec2]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-46822ec2]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-46822ec2]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-46822ec2]{position:absolute;background:rgba(64,158,255,.1);border-radius:50%;animation:floatShapes-46822ec2 8s ease-in-out infinite}.shape-1[data-v-46822ec2]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-46822ec2]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-46822ec2]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-46822ec2]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-46822ec2]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes pulse-46822ec2{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}@keyframes tick-46822ec2{0%,to{transform:rotate(0deg)}50%{transform:rotate(180deg)}}@keyframes floatShapes-46822ec2{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-46822ec2{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.whitelist-content[data-v-46822ec2]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-46822ec2]{top:-20px;right:-20px}.shield-icon[data-v-46822ec2]{font-size:3rem}.status-title[data-v-46822ec2]{font-size:1.5rem}.status-description[data-v-46822ec2]{font-size:1rem}.status-description-en[data-v-46822ec2]{font-size:.9rem}.status-actions[data-v-46822ec2]{flex-direction:column;align-items:center}.action-btn[data-v-46822ec2]{width:200px}.quick-links[data-v-46822ec2]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-46822ec2]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.whitelist-content[data-v-46822ec2]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-46822ec2]{font-size:1.3rem}.status-description[data-v-46822ec2]{font-size:.95rem}.status-description-en[data-v-46822ec2]{font-size:.85rem}.shield-icon[data-v-46822ec2]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.whitelist-container[data-v-46822ec2]{background:var(--bg-color,linear-gradient(135deg,#2c3e50 0,#34495e 100%));color:var(--text-color,#e4e7ed)}.whitelist-content[data-v-46822ec2]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-46822ec2],.status-title[data-v-46822ec2]{color:var(--text-color,#e4e7ed)}.help-text[data-v-46822ec2],.powered-by p[data-v-46822ec2],.status-description-en[data-v-46822ec2]{color:var(--text-color-secondary,#909399)}} \ No newline at end of file diff --git a/frontend-dist/css/51.1dd65d6c.css.gz b/frontend-dist/css/51.1dd65d6c.css.gz deleted file mode 100644 index 2f23a2ec..00000000 Binary files a/frontend-dist/css/51.1dd65d6c.css.gz and /dev/null differ diff --git a/frontend-dist/css/535.9adbb9e0.css b/frontend-dist/css/535.9adbb9e0.css deleted file mode 100644 index 03ba32c5..00000000 --- a/frontend-dist/css/535.9adbb9e0.css +++ /dev/null @@ -1 +0,0 @@ -.sidebar-container[data-v-2718059d]{display:flex;flex-direction:column;position:fixed;top:50%;left:8px;transform:translateY(-50%);z-index:2001;max-width:200px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-radius:16px;box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:width .3s ease,box-shadow .3s ease;overflow:hidden}.sidebar-container.is-collapsed[data-v-2718059d]{width:56px}html.dark .sidebar-container[data-v-2718059d]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}.sidebar-container[data-v-2718059d]:hover{box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5)}html.dark .sidebar-container[data-v-2718059d]:hover{box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.menu-list[data-v-2718059d]{padding:8px}.menu-item[data-v-2718059d]{display:flex;align-items:center;justify-content:flex-start;padding:12px 12px 12px 0;height:42px;box-sizing:border-box;border-radius:10px;cursor:pointer;transition:background .2s ease,color .2s ease;color:var(--admin-container-color,#333);gap:0;overflow:hidden}.menu-item[data-v-2718059d]:hover{background:rgba(0,0,0,.06)}html.dark .menu-item[data-v-2718059d]:hover{background:hsla(0,0%,100%,.1)}.menu-item.is-active[data-v-2718059d]{background:linear-gradient(135deg,rgba(64,158,255,.15),rgba(56,189,248,.25));color:#409eff}html.dark .menu-item.is-active[data-v-2718059d]{background:linear-gradient(135deg,rgba(64,158,255,.2),rgba(56,189,248,.35))}.menu-icon[data-v-2718059d]{width:40px;min-width:40px;font-size:16px;flex-shrink:0;text-align:center}.menu-text[data-v-2718059d]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .2s ease .05s,max-width .25s ease}.sidebar-container.is-collapsed .menu-text[data-v-2718059d]{opacity:0;max-width:0;transition:opacity .1s ease,max-width .2s ease}.toggle-button[data-v-2718059d]{padding:12px;text-align:center;cursor:pointer;border-top:1px solid rgba(0,0,0,.08);transition:all .2s ease;color:var(--admin-container-color,#333)}html.dark .toggle-button[data-v-2718059d]{border-top:1px solid hsla(0,0%,100%,.08)}.toggle-button[data-v-2718059d]:hover{background:rgba(0,0,0,.04)}html.dark .toggle-button[data-v-2718059d]:hover{background:hsla(0,0%,100%,.06)}@media (max-width:768px){.sidebar-container[data-v-2718059d]{left:4px;max-width:170px}.sidebar-container.is-collapsed[data-v-2718059d]{width:50px}.menu-icon[data-v-2718059d]{width:34px;min-width:34px}}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.date-range-calendar[data-v-65a4b58c]{width:min(336px,100%);max-width:100%;min-width:0;box-sizing:border-box;color:var(--admin-container-color);-webkit-user-select:none;-moz-user-select:none;user-select:none}.selected-range[data-v-65a4b58c]{margin-bottom:16px}.selected-range-inputs[data-v-65a4b58c]{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.date-input[data-v-65a4b58c]{width:100%;min-width:0;height:34px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:8px;padding:0 8px;background:var(--glass-bg);color:var(--admin-container-color);font-size:13px;outline:none;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.date-input[data-v-65a4b58c]:focus,.date-input[data-v-65a4b58c]:hover{border-color:var(--el-color-primary);box-shadow:0 0 0 2px rgba(64,158,255,.12)}.date-range-separator[data-v-65a4b58c]{color:#8a8f98;font-size:12px;font-weight:700}.calendar-header[data-v-65a4b58c]{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;margin-bottom:14px}.calendar-title[data-v-65a4b58c]{text-align:center;font-size:16px;font-weight:700}.calendar-nav[data-v-65a4b58c]{width:36px;height:36px;border:1px solid var(--glass-border);border-radius:50%;background:var(--glass-bg);color:var(--admin-container-color);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease,box-shadow .2s ease}.calendar-nav[data-v-65a4b58c]:focus,.calendar-nav[data-v-65a4b58c]:hover{color:var(--el-color-primary);border-color:var(--el-color-primary);background:rgba(64,158,255,.08);box-shadow:0 2px 8px rgba(64,158,255,.18)}.calendar-grid[data-v-65a4b58c],.calendar-weekdays[data-v-65a4b58c]{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekdays[data-v-65a4b58c]{margin-bottom:8px;color:#8a8f98;font-size:12px;font-weight:600;text-align:center}.calendar-weekdays span[data-v-65a4b58c]{height:24px;line-height:24px}.calendar-grid[data-v-65a4b58c]{gap:4px}.calendar-day[data-v-65a4b58c]{position:relative;height:38px;border:1px solid transparent;border-radius:50%;background:transparent;color:var(--admin-container-color);font-size:14px;font-weight:600;cursor:pointer;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.calendar-day[data-v-65a4b58c]:focus,.calendar-day[data-v-65a4b58c]:hover{border-color:rgba(64,158,255,.45);background:rgba(64,158,255,.1);color:var(--el-color-primary)}.calendar-day.is-muted[data-v-65a4b58c]{color:#a8adb6;opacity:.62}.calendar-day.is-today[data-v-65a4b58c]{border-color:rgba(249,115,22,.7)}.calendar-day.is-in-range[data-v-65a4b58c]{border-radius:12px;background:rgba(64,158,255,.12);color:var(--el-color-primary)}.calendar-day.is-range-end[data-v-65a4b58c],.calendar-day.is-range-start[data-v-65a4b58c]{background:var(--el-color-primary);border-color:var(--el-color-primary);color:#fff;box-shadow:0 4px 10px rgba(64,158,255,.28)}html.dark .calendar-weekdays[data-v-65a4b58c]{color:#9ca3af}html.dark .calendar-day.is-muted[data-v-65a4b58c]{color:#737b88}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.status-panel[data-v-90d03e30]{padding:20px;background:transparent;min-height:100vh}.overview-cards[data-v-90d03e30]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.overview-card[data-v-90d03e30]{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;padding:24px;display:flex;align-items:center;box-shadow:var(--glass-shadow);transition:all .3s ease;border:1px solid var(--glass-border);cursor:pointer}.overview-card[data-v-90d03e30]:hover{transform:translateY(-2px);box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.card-icon[data-v-90d03e30]{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-right:20px;background:linear-gradient(135deg,#60a5fa,#93c5fd);color:#fff}.card-content[data-v-90d03e30]{flex:1}.card-title[data-v-90d03e30]{font-size:14px;color:#666;margin-bottom:8px;font-weight:500}.card-value[data-v-90d03e30]{font-size:28px;font-weight:700;color:var(--admin-container-color);line-height:1}.card-subtitle[data-v-90d03e30]{font-size:11px;color:#999;margin-top:4px;opacity:.8}.charts-section[data-v-90d03e30]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:30px;overflow:visible}@media (max-width:768px){.charts-section[data-v-90d03e30]{grid-template-columns:1fr}}.chart-card[data-v-90d03e30]{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;padding:24px;box-shadow:var(--glass-shadow);transition:all .3s ease;border:1px solid var(--glass-border)}.chart-card[data-v-90d03e30]:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.chart-card[data-v-90d03e30],.chart-content[data-v-90d03e30],.pie-chart-container[data-v-90d03e30],.pie-chart-wrapper[data-v-90d03e30]{overflow:visible}.chart-header[data-v-90d03e30]{display:flex;gap:8px;align-items:center;margin-bottom:20px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.chart-header .fa-icon[data-v-90d03e30]{margin-right:10px;color:var(--admin-purple)}.trend-chart-card[data-v-90d03e30]{grid-column:1/-1}.trend-chart-header[data-v-90d03e30]{justify-content:space-between;gap:14px;flex-wrap:wrap}.chart-title[data-v-90d03e30]{display:flex;align-items:center;gap:8px}.trend-controls[data-v-90d03e30]{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.trend-calendar-btn[data-v-90d03e30]{width:32px;min-width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--admin-container-color);background:var(--glass-bg);border:1px solid var(--glass-border);transition:color .2s ease,border-color .2s ease,background-color .2s ease,box-shadow .2s ease}.trend-calendar-btn[data-v-90d03e30]:hover{color:var(--el-color-primary);border-color:var(--el-color-primary);background:rgba(64,158,255,.08);box-shadow:0 2px 8px rgba(64,158,255,.18)}.trend-date-dialog[data-v-90d03e30]{overflow:visible;max-width:calc(100vw - 32px);box-sizing:border-box}.trend-date-dialog[data-v-90d03e30] .el-dialog__body{overflow:visible;padding:16px 24px 24px}.trend-date-panel[data-v-90d03e30]{width:100%;max-width:100%;min-width:0;box-sizing:border-box;display:flex;justify-content:center;overflow:hidden}.trend-group-switch[data-v-90d03e30]{flex-shrink:0;height:32px;display:flex}.trend-group-switch[data-v-90d03e30] .el-radio-button__inner{height:32px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0 14px}.chart-content.trend-chart-content[data-v-90d03e30]{min-height:320px;padding:0;margin:0;min-width:0;max-width:100%;overflow:hidden}.line-chart-wrapper[data-v-90d03e30]{position:relative;width:100%;max-width:100%;min-width:0;height:320px;overflow:hidden}.line-chart-wrapper[data-v-90d03e30] canvas{display:block;width:100%!important;max-width:100%!important}.trend-empty-state[data-v-90d03e30]{height:320px}.chart-content[data-v-90d03e30]{min-height:160px;padding:15px;margin:-5px}.empty-state[data-v-90d03e30]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;color:#999;font-size:14px}.empty-state .fa-icon[data-v-90d03e30]{font-size:32px;margin-bottom:10px}.stats-list[data-v-90d03e30]{display:flex;flex-direction:column;gap:16px}.stats-item[data-v-90d03e30]{display:flex;align-items:center;gap:12px}.stats-label[data-v-90d03e30]{min-width:80px;font-size:13px;color:#666;font-weight:500}.stats-bar[data-v-90d03e30]{flex:1;height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden}.stats-fill[data-v-90d03e30]{height:100%;background:linear-gradient(90deg,var(--admin-purple),#e1bee7);border-radius:4px;transition:width .6s ease}.type-fill[data-v-90d03e30]{background:linear-gradient(90deg,#4caf50,#81c784)}.stats-value[data-v-90d03e30]{min-width:50px;text-align:right;font-size:13px;font-weight:600;color:var(--admin-container-color)}.pie-chart-container[data-v-90d03e30]{display:flex;align-items:center;gap:24px;flex-wrap:wrap;justify-content:center}.pie-chart-wrapper[data-v-90d03e30]{position:relative;width:180px;height:180px;flex-shrink:0;padding:15px;box-sizing:content-box;overflow:visible;isolation:isolate}.chart-center-text[data-v-90d03e30]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;z-index:-1}.center-value[data-v-90d03e30]{font-size:22px;font-weight:700;color:var(--admin-container-color);line-height:1.2}.center-label[data-v-90d03e30]{font-size:11px;color:#888;margin-top:2px}.chart-legend[data-v-90d03e30]{display:flex;flex-direction:column;gap:10px;flex:1;min-width:180px}.legend-item[data-v-90d03e30]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:rgba(0,0,0,.03);border-radius:8px;transition:all .2s ease}.legend-item[data-v-90d03e30]:hover{background:rgba(0,0,0,.06);transform:translateX(4px)}html.dark .legend-item[data-v-90d03e30]{background:hsla(0,0%,100%,.05)}html.dark .legend-item[data-v-90d03e30]:hover{background:hsla(0,0%,100%,.1)}.legend-color[data-v-90d03e30]{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-label[data-v-90d03e30]{flex:1;font-size:13px;color:var(--admin-container-color);font-weight:500}.legend-value[data-v-90d03e30]{font-size:13px;font-weight:600;color:var(--admin-container-color);min-width:50px;text-align:right}.legend-percent[data-v-90d03e30]{font-size:12px;color:#888;min-width:40px;text-align:right}.actions-section[data-v-90d03e30]{margin-bottom:30px}.action-card[data-v-90d03e30]{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;padding:24px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.action-card[data-v-90d03e30]:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.action-header[data-v-90d03e30]{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.action-header .fa-icon[data-v-90d03e30]{margin-right:10px;color:var(--admin-purple)}.action-content[data-v-90d03e30]{display:flex;justify-content:center;padding:20px 0}.action-buttons[data-v-90d03e30]{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:center;width:100%}.action-btn[data-v-90d03e30]{border:none;border-radius:14px;padding:14px 28px;margin-left:0;font-weight:600;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:150px;width:150px;height:52px;position:relative;overflow:hidden;box-shadow:0 4px 12px rgba(0,0,0,.15)}@media (max-width:768px){.action-btn[data-v-90d03e30]{flex:1;width:auto;min-width:0;height:auto}}.action-btn[data-v-90d03e30]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s ease}.action-btn[data-v-90d03e30]:hover:before{left:100%}.action-btn[data-v-90d03e30]:hover{transform:translateY(-3px)}.action-btn[data-v-90d03e30]:active{transform:translateY(-1px)}.action-btn .fa-icon[data-v-90d03e30]{margin-right:10px;font-size:15px}.rebuild-btn[data-v-90d03e30]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.rebuild-btn[data-v-90d03e30]:hover{box-shadow:0 8px 24px rgba(102,126,234,.45);background:linear-gradient(135deg,#5a6fd6,#6a4190)}.backup-btn[data-v-90d03e30]{background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.backup-btn[data-v-90d03e30]:hover{box-shadow:0 8px 24px rgba(17,153,142,.45);background:linear-gradient(135deg,#0f8a80,#32d970)}.restore-btn[data-v-90d03e30]{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.restore-btn[data-v-90d03e30]:hover{box-shadow:0 8px 24px rgba(245,87,108,.45);background:linear-gradient(135deg,#e085eb,#e04d61)}.restore-section[data-v-90d03e30]{display:inline-block}@media (max-width:768px){.action-buttons>.el-tooltip[data-v-90d03e30],.action-buttons>.restore-section[data-v-90d03e30],.restore-section[data-v-90d03e30]{flex:1;width:100%}.action-btn[data-v-90d03e30]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-90d03e30]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-90d03e30]{position:relative;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease;height:300px;overflow:hidden;cursor:pointer}.card-bg-media[data-v-90d03e30]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-90d03e30],.card-bg-media[data-v-90d03e30] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-90d03e30] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-90d03e30]{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-dashborad-stats-bg-color);display:flex;align-items:center;justify-content:center}.fallback-icon[data-v-90d03e30]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-90d03e30]{position:absolute;top:0;left:0;right:0;display:flex;gap:8px;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,rgba(0,0,0,.6),transparent);z-index:2}.file-card-header .fa-icon[data-v-90d03e30]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-90d03e30]{color:#f59e0b}.info-card-footer[data-v-90d03e30]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.7),transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-90d03e30]{font-size:14px;color:#fff;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.5)}.info-card-footer .file-meta[data-v-90d03e30]{font-size:12px;color:hsla(0,0%,100%,.8);text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-90d03e30]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-90d03e30]{height:450px}}.file-info-card[data-v-90d03e30]:hover{transform:translateY(-2px);box-shadow:var(--glass-shadow-hover)}.file-info-card:hover .card-bg-media[data-v-90d03e30]{transform:scale(1.05)}@media (max-width:768px){.status-panel[data-v-90d03e30]{padding:15px}.charts-section[data-v-90d03e30],.overview-cards[data-v-90d03e30]{grid-template-columns:1fr;gap:15px}.trend-chart-header[data-v-90d03e30]{align-items:stretch}.chart-title[data-v-90d03e30]{width:100%}.trend-controls[data-v-90d03e30]{width:100%;justify-content:stretch}.trend-date-dialog[data-v-90d03e30] .el-dialog__body{padding:12px 14px 18px}.trend-group-switch[data-v-90d03e30]{width:100%}.trend-group-switch[data-v-90d03e30] .el-radio-button{flex:1}.trend-group-switch[data-v-90d03e30] .el-radio-button__inner{width:100%;padding:0 10px}.line-chart-wrapper[data-v-90d03e30],.trend-empty-state[data-v-90d03e30]{height:280px}.file-info-section[data-v-90d03e30]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-90d03e30]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-90d03e30]{font-size:24px}.action-buttons[data-v-90d03e30]{flex-direction:column;gap:12px}.action-btn[data-v-90d03e30]{width:100%;min-width:unset}}.stats-fill[data-v-90d03e30]{animation:fillAnimation-90d03e30 1s ease-out}@keyframes fillAnimation-90d03e30{0%{width:0}}.progress-container[data-v-90d03e30]{width:100%;padding:20px;text-align:center}.progress-header[data-v-90d03e30]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-90d03e30]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-90d03e30]{font-size:18px;font-weight:700;color:var(--admin-purple)}.progress-bar[data-v-90d03e30]{margin-bottom:16px}.progress-bar[data-v-90d03e30] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-90d03e30] .el-progress-bar__inner{background:linear-gradient(90deg,var(--admin-purple),#e1bee7);border-radius:6px;transition:width .3s ease}.progress-details[data-v-90d03e30]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-90d03e30],.progress-time[data-v-90d03e30]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-90d03e30],.progress-time .fa-icon[data-v-90d03e30]{color:var(--admin-purple);font-size:12px}.progress-message[data-v-90d03e30]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-90d03e30]{margin-top:12px;border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#ef4444}.cancel-btn[data-v-90d03e30]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);transform:translateY(-2px);box-shadow:0 4px 12px rgba(239,68,68,.25)}.cancel-btn .fa-icon[data-v-90d03e30]{margin-right:8px}.error-container[data-v-90d03e30]{width:100%;padding:20px;display:flex;flex-direction:column;align-items:center;gap:16px;background:rgba(239,68,68,.05);border-radius:12px;border:1px solid rgba(239,68,68,.2)}.error-icon[data-v-90d03e30]{width:48px;height:48px;border-radius:50%;background:rgba(239,68,68,.1);display:flex;align-items:center;justify-content:center;color:#ef4444;font-size:24px}.error-content[data-v-90d03e30]{text-align:center}.error-message[data-v-90d03e30]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-90d03e30]{font-size:13px;color:#666}.error-actions[data-v-90d03e30]{display:flex;gap:12px}.error-actions .el-button[data-v-90d03e30]{border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:100px}.error-actions .el-button--primary[data-v-90d03e30]{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff}.error-actions .el-button--primary[data-v-90d03e30]:hover{background:linear-gradient(135deg,#5a6fd6,#6a4190);transform:translateY(-2px);box-shadow:0 6px 16px rgba(102,126,234,.4)}.error-actions .el-button--default[data-v-90d03e30]{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);color:var(--el-text-color-regular)}.error-actions .el-button--default[data-v-90d03e30]:hover{background:hsla(0,0%,100%,.15);border-color:hsla(0,0%,100%,.3);transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.error-actions .fa-icon[data-v-90d03e30]{margin-right:8px}html.dark .progress-count[data-v-90d03e30],html.dark .progress-time[data-v-90d03e30]{color:#aaa}html.dark .progress-message[data-v-90d03e30]{color:#999}html.dark .error-container[data-v-90d03e30]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-90d03e30]{color:#aaa}@media (max-width:768px){.error-container[data-v-90d03e30],.progress-container[data-v-90d03e30]{padding:16px}.progress-header[data-v-90d03e30]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-90d03e30]{flex-direction:column;gap:8px}.error-actions[data-v-90d03e30]{flex-direction:column;width:100%}.error-actions .el-button[data-v-90d03e30]{width:100%;margin:0}}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon,.el-input-number{display:inline-flex}.el-input-number{line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.custom-select[data-v-3c680cc7]{position:relative}.custom-select-trigger[data-v-3c680cc7]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:var(--el-bg-color);border:1px solid var(--el-border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;box-sizing:border-box}.custom-select-trigger[data-v-3c680cc7]:hover{border-color:var(--el-color-primary-light-5)}.custom-select.is-open .custom-select-trigger[data-v-3c680cc7]{border-color:var(--el-color-primary)}.custom-select-value[data-v-3c680cc7]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-3c680cc7],.custom-select-value.is-placeholder[data-v-3c680cc7]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-3c680cc7]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-3c680cc7]{transform:rotate(180deg)}.custom-select-dropdown[data-v-3c680cc7]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:8px;box-shadow:var(--el-box-shadow-light);z-index:2000;overflow:hidden}.custom-select-option[data-v-3c680cc7]{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;font-size:14px;color:var(--el-text-color-regular);cursor:pointer;transition:background .2s ease}.custom-select-option[data-v-3c680cc7]:hover{background:var(--el-fill-color-light)}.custom-select-option.is-selected[data-v-3c680cc7]{color:var(--el-color-primary);font-weight:500}.option-icon[data-v-3c680cc7]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-3c680cc7],.dropdown-fade-leave-active[data-v-3c680cc7]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-3c680cc7],.dropdown-fade-leave-to[data-v-3c680cc7]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-9a9d7c2a]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-9a9d7c2a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-9a9d7c2a]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-9a9d7c2a]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.inline-warning-icon[data-v-9a9d7c2a]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-warning-icon[data-v-9a9d7c2a]:hover{color:var(--el-color-primary)}.add-btn[data-v-9a9d7c2a]{border-radius:8px}.header-actions[data-v-9a9d7c2a]{display:flex;gap:12px}.header-actions[data-v-9a9d7c2a] .el-button{border-radius:8px}.channel-group[data-v-9a9d7c2a]{margin-bottom:32px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow);transition:all .3s ease}.channel-group[data-v-9a9d7c2a]:hover{box-shadow:var(--glass-shadow-hover)}.group-header[data-v-9a9d7c2a]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.group-title[data-v-9a9d7c2a]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-9a9d7c2a]{font-size:20px;color:var(--el-color-primary)}.channel-count[data-v-9a9d7c2a]{font-size:12px}.load-balance-switch[data-v-9a9d7c2a]{display:flex;align-items:center;gap:8px}.switch-label[data-v-9a9d7c2a]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-9a9d7c2a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-9a9d7c2a]{background:var(--glass-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:10px;border:1px solid var(--glass-border);border-left:3px solid var(--el-border-color-light);transition:all .25s ease;overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:0 4px 16px rgba(0,0,0,.08)}.card-glow[data-v-9a9d7c2a]{position:absolute;width:150px;height:150px;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%);transition:opacity .3s ease;z-index:0;background:radial-gradient(circle,rgba(56,189,248,.15) 0,transparent 70%)}.channel-card.telegram .card-glow[data-v-9a9d7c2a]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-9a9d7c2a]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-9a9d7c2a]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-9a9d7c2a]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-9a9d7c2a]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card.webdav .card-glow[data-v-9a9d7c2a]{background:radial-gradient(circle,rgba(20,184,166,.2) 0,transparent 70%)}.channel-card[data-v-9a9d7c2a]:hover{border-color:var(--glass-border-hover);box-shadow:0 8px 24px rgba(0,0,0,.12);background:var(--glass-bg-hover)}.channel-card.disabled[data-v-9a9d7c2a]{opacity:.6;background:var(--el-fill-color-lighter)}.channel-card.telegram[data-v-9a9d7c2a]{border-left-color:#54a9eb}.channel-card.cfr2[data-v-9a9d7c2a]{border-left-color:#f6821f}.channel-card.s3[data-v-9a9d7c2a]{border-left-color:#569a31}.channel-card.discord[data-v-9a9d7c2a]{border-left-color:#5865f2}.channel-card.huggingface[data-v-9a9d7c2a]{border-left-color:#ffd21e}.channel-card.webdav[data-v-9a9d7c2a]{border-left-color:#14b8a6}.channel-card.fixed[data-v-9a9d7c2a]{border-left-width:3px;border-left-style:dashed}.card-header[data-v-9a9d7c2a]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.card-title[data-v-9a9d7c2a]{display:flex;align-items:center;gap:8px}.channel-name[data-v-9a9d7c2a]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-9a9d7c2a]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-9a9d7c2a]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-9a9d7c2a]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--el-text-color-secondary);min-width:0;width:100%;max-width:100%}.info-text[data-v-9a9d7c2a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-9a9d7c2a]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-9a9d7c2a]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-9a9d7c2a] .el-progress{margin-bottom:4px}.quota-text[data-v-9a9d7c2a]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-9a9d7c2a]{display:flex;justify-content:flex-end;gap:4px;padding:10px 16px;border-top:1px solid var(--glass-header-border);background:var(--glass-header-bg);margin-top:auto}.empty-tip[data-v-9a9d7c2a]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--el-text-color-placeholder);gap:12px}.empty-icon[data-v-9a9d7c2a]{font-size:32px}.channel-warning[data-v-9a9d7c2a]{margin:0 20px 16px;padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning)}.channel-type-option[data-v-9a9d7c2a]{display:inline-flex;align-items:center;gap:8px;line-height:1}.select-option-icon[data-v-9a9d7c2a]{width:16px;height:16px;font-size:16px;text-align:center}.form-warning[data-v-9a9d7c2a]{padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning);margin-top:8px}.quota-status[data-v-9a9d7c2a]{width:100%}.quota-status[data-v-9a9d7c2a] .el-progress{margin-bottom:8px}.quota-info[data-v-9a9d7c2a]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border-radius:6px}.quota-info.quota-warning[data-v-9a9d7c2a]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-9a9d7c2a]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-9a9d7c2a]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-9a9d7c2a]{animation:fa-spin-9a9d7c2a 1s linear infinite}@keyframes fa-spin-9a9d7c2a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-9a9d7c2a]{padding:12px}.page-header[data-v-9a9d7c2a]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-9a9d7c2a]{grid-template-columns:1fr;padding:12px}.group-header[data-v-9a9d7c2a]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-9a9d7c2a] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-9a9d7c2a] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-53091626]{position:fixed;right:var(--floating-btn-right,24px);bottom:var(--floating-btn-bottom,24px);display:flex;align-items:center;gap:6px;padding:10px 18px;background:var(--floating-btn-bg);color:var(--floating-btn-color);border-radius:50px;cursor:pointer;box-shadow:var(--floating-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100;font-weight:500;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floating-save-btn[data-v-53091626]:hover{transform:translateY(-2px);box-shadow:var(--floating-btn-shadow-hover)}.floating-save-btn[data-v-53091626]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-53091626]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-53091626]:hover{transform:none}.floating-save-btn svg[data-v-53091626]{font-size:14px}.fade-up-enter-active[data-v-53091626]{transition:all .3s ease-out}.fade-up-leave-active[data-v-53091626]{transition:all .2s ease-in}.fade-up-enter-from[data-v-53091626]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-53091626]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-53091626]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-53091626]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-53091626]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-53091626]{display:none}.floating-save-btn svg[data-v-53091626]{font-size:16px}}.security-settings[data-v-906380e0]{padding:20px;min-height:500px}.first-settings[data-v-906380e0]{margin-bottom:40px}.first-title[data-v-906380e0]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-906380e0]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-906380e0] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-906380e0] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-906380e0] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-906380e0] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-906380e0] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-906380e0] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-906380e0] .el-input,.first-settings[data-v-906380e0] .el-select{width:100%}.first-settings[data-v-906380e0] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-906380e0]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.query-param-list[data-v-906380e0]{display:flex;flex-direction:column;gap:10px;width:100%}.query-param-row[data-v-906380e0]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,1.4fr) auto;gap:8px;align-items:center;width:100%}.response-field-row[data-v-906380e0]{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:4px;align-items:center;width:100%}.response-field-row[data-v-906380e0] .el-button+.el-button{margin-left:0}.token-title[data-v-906380e0]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-906380e0]{margin-left:5px}.token-table-container[data-v-906380e0]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-906380e0]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border)}.token-table[data-v-906380e0] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-906380e0] .el-table__body-wrapper{border-radius:0 0 12px 12px}.token-table[data-v-906380e0] .el-table{border-radius:12px}.token-table[data-v-906380e0] .el-table__header{background-color:#f8f9fa}.token-table[data-v-906380e0] .el-table th{background-color:#f8f9fa!important;border-bottom:1px solid #ebeef5;text-align:center}.token-table[data-v-906380e0] .el-table td{border-bottom:1px solid #ebeef5}.token-table[data-v-906380e0] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-906380e0]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;padding:8px 4px;min-height:40px;text-align:center}.action-buttons[data-v-906380e0]{gap:8px}.action-button[data-v-906380e0]{margin-left:0}.permission-tag[data-v-906380e0]{margin:2px!important}.token-display[data-v-906380e0]{font-family:Courier New,monospace;background-color:var(--text-bg-color);padding:4px 8px;border-radius:6px;font-size:12px;word-break:break-all;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width:768px){.security-settings[data-v-906380e0]{padding:15px;padding-bottom:80px}.first-settings[data-v-906380e0] .el-form{padding:12px 15px}.first-settings[data-v-906380e0] .el-form-item__content{max-width:100%}.query-param-row[data-v-906380e0]{grid-template-columns:1fr}.response-field-row[data-v-906380e0]{grid-template-columns:1fr auto auto auto}.token-table-container[data-v-906380e0]{padding:0 10px}.table-cell-content[data-v-906380e0]{padding:6px 2px;min-height:36px}.token-display[data-v-906380e0]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-906380e0]{padding:0 5px}.table-cell-content[data-v-906380e0]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-906380e0]{padding:4px 8px;font-size:12px}.permission-tag[data-v-906380e0]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-906380e0]{padding:10px 0}.token-result .el-form-item[data-v-906380e0]{margin-bottom:20px}.dialog-footer[data-v-906380e0]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-906380e0],.fade-slide-leave-active[data-v-906380e0]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-906380e0],.fade-slide-leave-to[data-v-906380e0]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-906380e0],.fade-slide-leave-from[data-v-906380e0]{opacity:1;transform:translateY(0)}[data-v-906380e0] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-01b71420]{padding:20px;min-height:500px}.first-settings[data-v-01b71420]{margin-bottom:40px}.first-title[data-v-01b71420]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-01b71420]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-01b71420] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-01b71420] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-01b71420] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-01b71420] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-01b71420] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-01b71420] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-01b71420] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-01b71420] .el-input,.first-settings[data-v-01b71420] .el-select{width:100%}.first-settings[data-v-01b71420] .el-switch{--el-switch-on-color:var(--el-color-primary)}.announcement-refresh-option[data-v-01b71420]{width:100%;margin-top:10px;display:flex;justify-content:flex-start}.first-settings[data-v-01b71420] .el-form-item:has(.announcement-refresh-option) .el-form-item__content{flex-direction:column;align-items:flex-start}@media (max-width:768px){.page-settings[data-v-01b71420]{padding:15px;padding-bottom:80px}.first-settings[data-v-01b71420] .el-form{padding:12px 15px}.first-settings[data-v-01b71420] .el-form-item__content{max-width:100%}}.others-settings[data-v-67b1b002]{padding:20px;min-height:500px}.first-settings[data-v-67b1b002]{margin-bottom:40px}.first-title[data-v-67b1b002]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-67b1b002]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-67b1b002] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-67b1b002] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-67b1b002] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-67b1b002] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-67b1b002] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-67b1b002] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-67b1b002] .el-input{width:100%}.first-settings[data-v-67b1b002] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-67b1b002]{padding:15px;padding-bottom:80px}.first-settings[data-v-67b1b002] .el-form{padding:12px 15px}.first-settings[data-v-67b1b002] .el-form-item__content{max-width:100%}}.container[data-v-ad570976]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0;overflow-x:hidden}.header-content[data-v-ad570976]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-ad570976]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-ad570976]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-ad570976]{font-size:.95em}}.header-content[data-v-ad570976]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%)}html.dark .header-content[data-v-ad570976]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-ad570976]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-ad570976]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-ad570976]{display:flex;gap:10px}.main-container[data-v-ad570976]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-ad570976]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-ad570976],.main-container[data-v-ad570976]{width:auto;margin-left:65px;margin-right:15px;padding:0;min-height:calc(100vh - 60px);box-sizing:border-box}} \ No newline at end of file diff --git a/frontend-dist/css/535.9adbb9e0.css.gz b/frontend-dist/css/535.9adbb9e0.css.gz deleted file mode 100644 index 683361cf..00000000 Binary files a/frontend-dist/css/535.9adbb9e0.css.gz and /dev/null differ diff --git a/frontend-dist/css/63.68965781.css b/frontend-dist/css/63.68965781.css new file mode 100644 index 00000000..72b0c59a --- /dev/null +++ b/frontend-dist/css/63.68965781.css @@ -0,0 +1 @@ +.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-3b79a1b6]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-3b79a1b6]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-3b79a1b6]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-3b79a1b6]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:rgba(56,189,248,.1);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-3b79a1b6]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-3b79a1b6]:before{content:"";display:inline-block;width:4px;height:16px;background:#38bdf8;border-radius:2px}.mobile-drawer-close[data-v-3b79a1b6]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-3b79a1b6]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-3b79a1b6]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-3b79a1b6]{background:rgba(56,189,248,.15);color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-3b79a1b6]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-3b79a1b6]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-3b79a1b6]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-3b79a1b6]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-3b79a1b6]{animation:slideInLeft-3b79a1b6 .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-3b79a1b6]{animation:slideOutLeft-3b79a1b6 .2s ease-in}.drawer-slide-enter-from[data-v-3b79a1b6],.drawer-slide-leave-to[data-v-3b79a1b6]{opacity:0}@keyframes slideInLeft-3b79a1b6{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-3b79a1b6{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-efef5a4c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-efef5a4c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-efef5a4c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:none}.bottom-sheet-header[data-v-efef5a4c]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-efef5a4c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-efef5a4c]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.dark .bottom-sheet-title[data-v-efef5a4c]{color:#f0f0f0}.bottom-sheet-content[data-v-efef5a4c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-efef5a4c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-efef5a4c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-efef5a4c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-efef5a4c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-efef5a4c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-efef5a4c],.bottom-sheet-danger[data-v-efef5a4c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-efef5a4c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-efef5a4c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-efef5a4c]{animation:slideUp-efef5a4c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-efef5a4c]{animation:slideDown-efef5a4c .2s ease-in}.bottom-sheet-enter-from[data-v-efef5a4c],.bottom-sheet-leave-to[data-v-efef5a4c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-efef5a4c],.bottom-sheet-leave-to .bottom-sheet[data-v-efef5a4c]{transform:translateY(100%)}@keyframes slideUp-efef5a4c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-efef5a4c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-0d04afa1]{padding:0}.tab-content[data-v-0d04afa1]{padding:20px}.tab-description[data-v-0d04afa1]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-0d04afa1]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-0d04afa1]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-0d04afa1]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-0d04afa1]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-0d04afa1],.tags-to-add-section[data-v-0d04afa1]{margin-bottom:20px}.common-tags-section h4[data-v-0d04afa1],.tags-to-add-section h4[data-v-0d04afa1]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-0d04afa1]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-0d04afa1]{cursor:default}.empty-message[data-v-0d04afa1]{color:#59636e;font-size:13px;padding:10px 0}.action-buttons[data-v-0d04afa1]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-24c809e4]{padding:10px 0}.input-section[data-v-24c809e4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-24c809e4]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-24c809e4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-24c809e4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-24c809e4],.popular-tags-section[data-v-24c809e4]{margin-bottom:20px}.current-tags-section h4[data-v-24c809e4],.popular-tags-section h4[data-v-24c809e4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-24c809e4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-24c809e4]{cursor:default}.tag-item.clickable[data-v-24c809e4]{cursor:pointer;transition:transform .2s}.empty-message[data-v-24c809e4]{color:#59636e;font-size:13px;padding:10px 0}.dialog-footer[data-v-24c809e4]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-38a97614]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-38a97614]{margin-left:0!important}.video-preview[data-v-38a97614]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-38a97614],.video-preview[data-v-38a97614]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-38a97614]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-38a97614] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-38a97614]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-38a97614]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-38a97614]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-38a97614] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-38a97614] .el-descriptions__content .el-tag,[data-v-38a97614] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-38a97614] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-38a97614] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-38a97614]{justify-content:center}}.batch-floating-bar[data-v-6de9da06]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow)}.batch-selection-summary[data-v-6de9da06]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-6de9da06]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-6de9da06]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-6de9da06]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-6de9da06]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-6de9da06]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-6de9da06]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-6de9da06],.batch-floating-btn.tag[data-v-6de9da06],.batch-floating-btn.white[data-v-6de9da06]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-6de9da06]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-6de9da06]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-6de9da06],.batch-toolbar-leave-active[data-v-6de9da06]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-6de9da06]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-6de9da06]{padding:0 1px}.batch-selection-count[data-v-6de9da06]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-6de9da06]{height:14px}.batch-floating-actions[data-v-6de9da06]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-6de9da06]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-6de9da06]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-6de9da06]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.dashboard-checkbox[data-v-f8222714]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-f8222714]{width:18px;height:18px;border:2px solid #d9dce2;border-radius:5px;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--list[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--list[data-v-f8222714]:hover{border-color:#38bdf8;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--list[data-v-f8222714]:hover{background:rgba(22,22,24,.88)}.dashboard-checkbox--list[data-v-f8222714]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-f8222714],.dashboard-checkbox--list.indeterminate[data-v-f8222714]{border-color:#38bdf8;background:#0ea5e9}.dashboard-checkbox--breadcrumb[data-v-f8222714]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]{border:1px solid #34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid #d9dce2;border-radius:5px;background:transparent;transition:border-color .18s ease,background .18s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:before{border-color:#34343a}.dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#4a4a52;background:rgba(22,22,24,.88)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:focus-visible{outline:none;border-color:rgba(56,189,248,.34)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714],.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#d9dce2;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--breadcrumb.checked[data-v-f8222714],html.dark .dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]:before{border-color:hsla(0,0%,100%,.4);background:#0ea5e9}.dashboard-checkbox-mark[data-v-f8222714]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-f8222714]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-f8222714]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-f8222714]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-12b39bad]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-12b39bad]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-12b39bad] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-12b39bad] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-12b39bad]:hover{transform:scale(1.05)}.image-preview[data-v-12b39bad],.video-preview[data-v-12b39bad]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-12b39bad]{cursor:pointer}.img-card:hover .file-icon[data-v-12b39bad],.img-card:hover .image-preview[data-v-12b39bad],.img-card:hover .video-preview[data-v-12b39bad]{transform:scale(1.03)}.image-preview[data-v-12b39bad]:hover{opacity:.8}.file-short-info[data-v-12b39bad]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-12b39bad]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-12b39bad]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-12b39bad]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-12b39bad]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-12b39bad]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-12b39bad]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-12b39bad]{cursor:pointer}.card-bottom-overlay[data-v-12b39bad]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-12b39bad]{display:flex;align-items:center;justify-content:center}.file-name[data-v-12b39bad]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-12b39bad]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-12b39bad]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-12b39bad],.action-bar-right[data-v-12b39bad]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-12b39bad]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-12b39bad]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-12b39bad]:active{transform:scale(.95)}.action-btn-danger[data-v-12b39bad]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-12b39bad]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-12b39bad] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-12b39bad]:hover{transform:none}.file-short-info[data-v-12b39bad]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-12b39bad],.primary-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-12b39bad]{padding:22px 6px 6px}.file-name[data-v-12b39bad]{font-size:11px}.file-icon[data-v-12b39bad]{font-size:34px}.action-bar[data-v-12b39bad]{display:none!important}}@keyframes skeleton-shimmer-12b39bad{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-12b39bad]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-12b39bad 1.5s ease-in-out infinite}.error-wrapper[data-v-12b39bad]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-12b39bad]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-12b39bad]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-07286088]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-07286088] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-07286088] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-07286088]:hover{transform:scale(1.05)}.folder-card[data-v-07286088]{cursor:pointer}.folder-icon[data-v-07286088]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-07286088]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-07286088]{transform:scale(1.03)}.card-bottom-overlay[data-v-07286088]{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,.5);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-07286088]{display:flex;align-items:center;justify-content:center}.file-name[data-v-07286088]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-07286088]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-07286088]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-07286088],.action-bar-right[data-v-07286088]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-07286088]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-07286088]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-07286088]:active{transform:scale(.95)}.action-btn-danger[data-v-07286088]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-07286088]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-07286088] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-07286088]:hover{transform:none}.folder-icon-svg[data-v-07286088]{font-size:36px}.card-bottom-overlay[data-v-07286088]{padding:22px 6px 6px}.file-name[data-v-07286088]{font-size:11px}.action-bar[data-v-07286088]{display:none!important}}@keyframes skeleton-shimmer-ef863880{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-ef863880{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-ef863880]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-ef863880]{width:100%;height:100%;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-info[data-v-ef863880]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-ef863880]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-list-item[data-v-ef863880]{animation:skeleton-pulse-ef863880 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-ef863880]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-ef863880]{width:40px;height:40px;border-radius:6px}.skeleton-preview[data-v-ef863880],.skeleton-text-long[data-v-ef863880]{background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-text-long[data-v-ef863880]{height:14px;width:80%;border-radius:4px}.skeleton-text-short[data-v-ef863880]{width:60px}.skeleton-text-short[data-v-ef863880],.skeleton-text-tiny[data-v-ef863880]{height:14px;border-radius:4px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-text-tiny[data-v-ef863880]{width:40px}.skeleton-tag[data-v-ef863880]{height:20px;width:50px;border-radius:10px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-actions[data-v-ef863880]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-ef863880]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-ef863880]{display:flex;align-items:center}.list-col-checkbox[data-v-ef863880],.list-col-preview[data-v-ef863880]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-ef863880]{height:148px;border-radius:7px}.skeleton-info[data-v-ef863880]{padding:22px 6px 6px}.skeleton-text[data-v-ef863880]{height:11px;width:68%;border-radius:3px}.list-item[data-v-ef863880]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-ef863880]{width:16px;height:16px}.skeleton-preview[data-v-ef863880]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-ef863880],.skeleton-text-short[data-v-ef863880],.skeleton-text-tiny[data-v-ef863880]{height:10px;border-radius:3px}.skeleton-actions[data-v-ef863880]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-ef863880],.list-col-channel-name[data-v-ef863880],.list-col-channel[data-v-ef863880],.list-col-date[data-v-ef863880],.list-col-size[data-v-ef863880],.list-col-tags[data-v-ef863880]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-e6a38b20]{flex-shrink:0}.filter-trigger[data-v-e6a38b20]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-e6a38b20]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-e6a38b20]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-e6a38b20] .el-badge__content{background:#0ea5e9;border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-e6a38b20]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-e6a38b20]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-e6a38b20]:last-of-type{border-bottom:none}.filter-title[data-v-e6a38b20]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-e6a38b20],.filter-options[data-v-e6a38b20] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-e6a38b20] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-e6a38b20] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-e6a38b20]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-e6a38b20]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-e6a38b20]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-e6a38b20]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-e6a38b20]:hover:not(:disabled){background:#0ea5e9;border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-e6a38b20]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-e6a38b20]{min-width:160px;max-height:320px}.filter-section[data-v-e6a38b20]{padding:6px 10px}.filter-title[data-v-e6a38b20]{font-size:11px;margin-bottom:4px}.filter-options[data-v-e6a38b20] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:12px}.header-icon[data-v-e6a38b20]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.container[data-v-57eabdee]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-57eabdee] .el-container,[data-v-57eabdee] .el-main{overflow:visible}[data-v-57eabdee] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-57eabdee]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-57eabdee]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-57eabdee]{font-size:.95em}.header-content .actions[data-v-57eabdee]{gap:10px}.search-card[data-v-57eabdee] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-57eabdee] .el-input__wrapper{padding:0 10px}.search-card[data-v-57eabdee] .el-input__inner:focus{width:65vw}}.header-content[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-57eabdee]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-57eabdee]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-57eabdee]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb-view-toggle[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb-view-toggle[data-v-57eabdee]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .breadcrumb-view-toggle[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-view-button[data-v-57eabdee]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-57eabdee]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-57eabdee]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:none}.breadcrumb-view-icon[data-v-57eabdee]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-57eabdee]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-57eabdee]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-57eabdee]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-57eabdee]{width:12px;height:12px}}.stats-badge[data-v-57eabdee]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:hsla(0,0%,100%,.72);padding:4px 12px;border-radius:12px;border:1px solid #d9dce2;box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}html.dark .stats-badge[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.stats-badge[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .stats-badge[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.stats-badge-icon[data-v-57eabdee]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-57eabdee]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-57eabdee]{font-size:9px}}.header-content .actions[data-v-57eabdee]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-57eabdee]{margin-top:10px}}.header-content .actions i[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-57eabdee]{color:#c0c4cc;pointer-events:none}.header-content .actions .enabled[data-v-57eabdee]{color:var(--admin-purple)}.search-area[data-v-57eabdee]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-57eabdee]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-57eabdee]{display:flex;align-items:center}.search-card[data-v-57eabdee] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-57eabdee] .el-input__wrapper{border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-57eabdee] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-57eabdee] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-57eabdee] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-57eabdee] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner:focus{width:55vw}}.search-icon[data-v-57eabdee]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-57eabdee]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-57eabdee] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-57eabdee]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-57eabdee]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:86px}}.content[data-v-57eabdee]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-57eabdee],.list-view.is-drag-selecting[data-v-57eabdee]{cursor:crosshair}.content.is-drag-selecting[data-v-57eabdee] .img-card:hover,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-57eabdee] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-57eabdee] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-57eabdee] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-57eabdee]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-57eabdee]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-57eabdee]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-57eabdee]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-57eabdee]{padding:80px 20px}@media (max-width:768px){.content[data-v-57eabdee]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-57eabdee]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-57eabdee]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-57eabdee]{display:flex;align-items:center}.list-col-checkbox[data-v-57eabdee]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-57eabdee]{display:none}}.pagination-container[data-v-57eabdee]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-57eabdee]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-57eabdee] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-57eabdee] .el-pager li{background:hsla(0,0%,100%,.72);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .el-pager li{background:rgba(22,22,24,.75);border:1px solid #34343a}.pagination-container[data-v-57eabdee] .el-pager li:hover{color:#38bdf8;background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .pagination-container[data-v-57eabdee] .el-pager li:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.pagination-container[data-v-57eabdee] .el-pager li.is-active{background:#0ea5e9!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-57eabdee] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{background:hsla(0,0%,100%,.72)!important;border-radius:10px!important;min-width:36px;height:36px;border:1px solid #d9dce2!important;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .btn-next,html.dark .pagination-container[data-v-57eabdee] .btn-prev{background:rgba(22,22,24,.75)!important;border:1px solid #34343a!important}.pagination-container[data-v-57eabdee] .btn-next:hover,.pagination-container[data-v-57eabdee] .btn-prev:hover{color:#38bdf8;background:hsla(0,0%,100%,.85)!important;border-color:#bfc4cc!important}html.dark .pagination-container[data-v-57eabdee] .btn-next:hover,html.dark .pagination-container[data-v-57eabdee] .btn-prev:hover{background:rgba(22,22,24,.88)!important;border-color:#4a4a52!important}.pagination-right[data-v-57eabdee]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-57eabdee]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-57eabdee]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-57eabdee]{width:50px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:8px;padding:0 8px;height:28px}html.dark .page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:rgba(22,22,24,.75);border:1px solid #34343a}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-57eabdee]{background:#0ea5e9;border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:none;transition:all .3s ease}.page-jump .jump-btn[data-v-57eabdee]:hover{box-shadow:none}@media (max-width:768px){.pagination-container[data-v-57eabdee]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-57eabdee]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-57eabdee] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-57eabdee]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-57eabdee],.page-total[data-v-57eabdee]{font-size:12px}.page-jump .jump-input[data-v-57eabdee]{width:40px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-57eabdee]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-57eabdee]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-57eabdee],.refresh-btn[data-v-57eabdee]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-57eabdee]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-57eabdee]{cursor:pointer;background:hsla(0,0%,100%,.72);box-shadow:none;color:#38bdf8;border:1px solid #d9dce2;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .refresh-btn[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.refresh-btn[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc;color:#0ea5e9}html.dark .refresh-btn[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.load-more[data-v-57eabdee]{cursor:pointer;background:#0ea5e9;box-shadow:none;color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-57eabdee]:hover{box-shadow:none}[data-v-57eabdee] .btn-prev{left:8px}[data-v-57eabdee] .btn-next,[data-v-57eabdee] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-57eabdee] .btn-next{right:8px}@media (min-width:768px){[data-v-57eabdee] .el-pagination.is-background .btn-next,[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:rgba(22,22,24,.75);border:1px solid #34343a}[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}}.question-icon[data-v-57eabdee]{margin:0 3px}.breadcrumb[data-v-57eabdee]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb[data-v-57eabdee]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb[data-v-57eabdee]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .breadcrumb[data-v-57eabdee]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-home-icon[data-v-57eabdee]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-57eabdee]:hover{color:#38bdf8}[data-v-57eabdee] .el-breadcrumb__item{cursor:pointer}[data-v-57eabdee] .el-breadcrumb,[data-v-57eabdee] .el-breadcrumb__inner,[data-v-57eabdee] .el-breadcrumb__item,[data-v-57eabdee] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-57eabdee] .el-breadcrumb__inner{cursor:pointer}[data-v-57eabdee] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-57eabdee]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:hsla(0,0%,100%,.72);border-radius:8px;border:1px solid #d9dce2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .mobile-directory-trigger[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-directory-trigger[data-v-57eabdee]:active{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}.mobile-directory-icon[data-v-57eabdee]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-57eabdee]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-57eabdee]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-57eabdee]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-57eabdee]{display:flex}.desktop-only[data-v-57eabdee]{display:none!important}.breadcrumb-container[data-v-57eabdee]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-57eabdee]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file diff --git a/frontend-dist/css/63.68965781.css.gz b/frontend-dist/css/63.68965781.css.gz new file mode 100644 index 00000000..9f00e0d8 Binary files /dev/null and b/frontend-dist/css/63.68965781.css.gz differ diff --git a/frontend-dist/css/664.dc611f7b.css.gz b/frontend-dist/css/664.dc611f7b.css.gz deleted file mode 100644 index 2a9307e9..00000000 Binary files a/frontend-dist/css/664.dc611f7b.css.gz and /dev/null differ diff --git a/frontend-dist/css/679.e7484000.css b/frontend-dist/css/679.e7484000.css new file mode 100644 index 00000000..f7e8ad87 --- /dev/null +++ b/frontend-dist/css/679.e7484000.css @@ -0,0 +1 @@ +.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.login[data-v-583fe0d5]{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:100vh;height:auto;background:var(--admin-container-bg-color,var(--bg-color));overflow-y:auto;padding:20px 0;box-sizing:border-box;transition:height .35s ease-out,min-height .35s ease-out}.login-title[data-v-583fe0d5]{font-size:2.3rem;margin-bottom:15px;color:var(--login-title-color);font-family:Pacifico,Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease;letter-spacing:2px}@media (max-width:768px){.login-title[data-v-583fe0d5]{font-size:1.5rem}}.login-title[data-v-583fe0d5]:focus,.login-title[data-v-583fe0d5]:hover{text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-583fe0d5]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:600px;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--login-container-bg-color);border:1px solid var(--glass-border);transition:all .3s ease;padding:40px 0;gap:20px;position:relative;z-index:101}@media (max-width:768px){.login-container[data-v-583fe0d5]{width:85vw;padding:25px 0;gap:12px}}.login-container[data-v-583fe0d5]:hover{box-shadow:var(--login-container-hover-box-shadow)}.input-container[data-v-583fe0d5]{display:flex;flex-direction:column;align-items:flex-start;width:80%;margin-bottom:15px;position:relative;gap:8px}@media (max-width:768px){.input-container[data-v-583fe0d5]{width:85%;gap:4px;margin-bottom:8px}}.input-wrapper[data-v-583fe0d5]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-583fe0d5]{margin-right:6px;font-size:1rem}.input-name[data-v-583fe0d5]{font-size:.95rem;font-weight:600;color:var(--login-title-color);text-align:left;transition:all .3s ease;letter-spacing:.5px;position:relative;display:flex;align-items:center;justify-content:flex-start;padding-left:2px}.input-name[data-v-583fe0d5]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--login-input-underline-color,#5b9bd3);transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-583fe0d5]:after,.input-container:hover .input-name[data-v-583fe0d5]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-583fe0d5],.input-container:hover .input-name[data-v-583fe0d5]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-583fe0d5]{font-size:.85rem}}.submit[data-v-583fe0d5]{margin-bottom:10px;width:50%;height:48px;font-size:1.1rem;font-weight:600;letter-spacing:2px;border-radius:12px;background-color:var(--login-submit-btn-bg-color);transition:all .4s cubic-bezier(.4,0,.2,1);border:none;overflow:hidden;position:relative;padding:0;display:flex;justify-content:center;align-items:center}.submit.is-loading[data-v-583fe0d5]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-583fe0d5]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-583fe0d5 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-583fe0d5{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-583fe0d5]{width:50%}}.submit[data-v-583fe0d5]:not(.is-loading):focus,.submit[data-v-583fe0d5]:not(.is-loading):hover{transform:scale(1.05);box-shadow:none}.submit[data-v-583fe0d5]:disabled{cursor:default;transform:none}.password-input[data-v-583fe0d5]{width:100%;height:50px;position:relative}.password-input[data-v-583fe0d5] .el-input__prefix{color:var(--login-input-icon-color,#59636e);font-size:1rem;transition:color .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-583fe0d5] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:1px solid var(--glass-border);box-shadow:none;padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.password-input[data-v-583fe0d5] .el-input__wrapper:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.password-input[data-v-583fe0d5] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-583fe0d5] .el-input__wrapper:hover{box-shadow:none;border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:none}.password-input[data-v-583fe0d5] .el-input__inner{color:var(--text-color,var(--login-input-text-color,#333));font-size:1rem;font-weight:500;background:transparent;border:none;box-shadow:none}.dark .password-input[data-v-583fe0d5] .el-input__inner,[data-theme=dark] .password-input[data-v-583fe0d5] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-583fe0d5] .el-input__inner::-moz-placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;-moz-transition:opacity .3s ease;transition:opacity .3s ease}.password-input[data-v-583fe0d5] .el-input__inner::placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;transition:opacity .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-583fe0d5] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-583fe0d5] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-583fe0d5]{width:100%;height:40px}.password-input[data-v-583fe0d5] .el-input__wrapper{padding:8px 12px}}.footer[data-v-583fe0d5]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-583fe0d5]{position:fixed;top:30px;right:30px;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px}html.dark .toggle-dark[data-v-583fe0d5]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.toggle-dark[data-v-583fe0d5]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark[data-v-583fe0d5]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.language-switcher[data-v-583fe0d5]{position:fixed;top:30px;right:80px;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:12px;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;z-index:100}html.dark .language-switcher[data-v-583fe0d5]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.language-switcher[data-v-583fe0d5]{width:2rem;height:2rem}}.language-switcher[data-v-583fe0d5]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .language-switcher[data-v-583fe0d5]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52} \ No newline at end of file diff --git a/frontend-dist/css/679.e7484000.css.gz b/frontend-dist/css/679.e7484000.css.gz new file mode 100644 index 00000000..bed7314f Binary files /dev/null and b/frontend-dist/css/679.e7484000.css.gz differ diff --git a/frontend-dist/css/715.f5deda06.css b/frontend-dist/css/715.f5deda06.css new file mode 100644 index 00000000..3bc70302 --- /dev/null +++ b/frontend-dist/css/715.f5deda06.css @@ -0,0 +1 @@ +.sidebar-container[data-v-46f66664]{display:flex;flex-direction:column;position:fixed;top:50%;left:8px;transform:translateY(-50%);z-index:2001;max-width:200px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(12px) saturate(1.4);-webkit-backdrop-filter:blur(12px) saturate(1.4);border:1px solid #d9dce2;border-radius:16px;box-shadow:none;transition:width .3s ease,box-shadow .3s ease;overflow:hidden}.sidebar-container.is-collapsed[data-v-46f66664]{width:56px}html.dark .sidebar-container[data-v-46f66664]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}.sidebar-container[data-v-46f66664]:hover,html.dark .sidebar-container[data-v-46f66664]:hover{box-shadow:none}.menu-list[data-v-46f66664]{padding:8px}.menu-item[data-v-46f66664]{display:flex;align-items:center;justify-content:flex-start;padding:12px 12px 12px 0;height:42px;box-sizing:border-box;border-radius:10px;cursor:pointer;transition:background .2s ease,color .2s ease;color:var(--admin-container-color,#333);gap:0;overflow:hidden}.menu-item[data-v-46f66664]:hover{background:rgba(0,0,0,.06)}html.dark .menu-item[data-v-46f66664]:hover{background:hsla(0,0%,100%,.1)}.menu-item.is-active[data-v-46f66664]{background:rgba(37,99,235,.2);color:#2563eb}html.dark .menu-item.is-active[data-v-46f66664]{background:rgba(37,99,235,.3)}.menu-icon[data-v-46f66664]{width:40px;min-width:40px;font-size:16px;flex-shrink:0;text-align:center}.menu-text[data-v-46f66664]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .2s ease .05s,max-width .25s ease}.sidebar-container.is-collapsed .menu-text[data-v-46f66664]{opacity:0;max-width:0;transition:opacity .1s ease,max-width .2s ease}.toggle-button[data-v-46f66664]{padding:12px;text-align:center;cursor:pointer;border-top:1px solid rgba(0,0,0,.08);transition:all .2s ease;color:var(--admin-container-color,#333)}html.dark .toggle-button[data-v-46f66664]{border-top:1px solid hsla(0,0%,100%,.08)}.toggle-button[data-v-46f66664]:hover{background:rgba(0,0,0,.04)}html.dark .toggle-button[data-v-46f66664]:hover{background:hsla(0,0%,100%,.06)}@media (max-width:768px){.sidebar-container[data-v-46f66664]{left:4px;max-width:170px}.sidebar-container.is-collapsed[data-v-46f66664]{width:50px}.menu-icon[data-v-46f66664]{width:34px;min-width:34px}}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.date-range-calendar[data-v-67ce3158]{width:min(336px,100%);max-width:100%;min-width:0;box-sizing:border-box;color:var(--admin-container-color);-webkit-user-select:none;-moz-user-select:none;user-select:none}.selected-range[data-v-67ce3158]{margin-bottom:16px}.selected-range-inputs[data-v-67ce3158]{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.date-input[data-v-67ce3158]{width:100%;min-width:0;height:34px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:8px;padding:0 8px;background:var(--glass-bg);color:var(--admin-container-color);font-size:13px;outline:none;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.date-input[data-v-67ce3158]:focus,.date-input[data-v-67ce3158]:hover{border-color:var(--el-color-primary);box-shadow:none}.date-range-separator[data-v-67ce3158]{color:#59636e;font-size:12px;font-weight:700}.calendar-header[data-v-67ce3158]{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;margin-bottom:14px}.calendar-title[data-v-67ce3158]{text-align:center;font-size:16px;font-weight:700}.calendar-nav[data-v-67ce3158]{width:36px;height:36px;border:1px solid var(--glass-border);border-radius:50%;background:var(--glass-bg);color:var(--admin-container-color);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease,box-shadow .2s ease}.calendar-nav[data-v-67ce3158]:focus,.calendar-nav[data-v-67ce3158]:hover{color:var(--el-color-primary);border-color:var(--el-color-primary);background:rgba(37,99,235,.08);box-shadow:none}.calendar-grid[data-v-67ce3158],.calendar-weekdays[data-v-67ce3158]{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekdays[data-v-67ce3158]{margin-bottom:8px;color:#59636e;font-size:12px;font-weight:600;text-align:center}.calendar-weekdays span[data-v-67ce3158]{height:24px;line-height:24px}.calendar-grid[data-v-67ce3158]{gap:4px}.calendar-day[data-v-67ce3158]{position:relative;height:38px;border:1px solid transparent;border-radius:50%;background:transparent;color:var(--admin-container-color);font-size:14px;font-weight:600;cursor:pointer;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.calendar-day[data-v-67ce3158]:focus,.calendar-day[data-v-67ce3158]:hover{border-color:rgba(37,99,235,.45);background:rgba(37,99,235,.1);color:var(--el-color-primary)}.calendar-day.is-muted[data-v-67ce3158]{color:#86909c;opacity:.62}.calendar-day.is-today[data-v-67ce3158]{border-color:rgba(249,115,22,.7)}.calendar-day.is-in-range[data-v-67ce3158]{border-radius:12px;background:rgba(37,99,235,.12);color:var(--el-color-primary)}.calendar-day.is-range-end[data-v-67ce3158],.calendar-day.is-range-start[data-v-67ce3158]{background:var(--el-color-primary);border-color:var(--el-color-primary);color:#fff;box-shadow:none}html.dark .calendar-weekdays[data-v-67ce3158]{color:#a1a1aa}html.dark .calendar-day.is-muted[data-v-67ce3158]{color:#737b88}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.status-panel[data-v-5fc5ce27]{padding:20px;background:transparent;min-height:100vh}.overview-cards[data-v-5fc5ce27]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.overview-card[data-v-5fc5ce27]{border-radius:16px;padding:24px;display:flex;align-items:center;border:1px solid var(--glass-border);cursor:pointer}.overview-card[data-v-5fc5ce27],.overview-card[data-v-5fc5ce27]:hover{background:var(--glass-bg);box-shadow:var(--glass-shadow)}.card-icon[data-v-5fc5ce27]{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-right:20px;background:#2563eb;color:#fff}.card-content[data-v-5fc5ce27]{flex:1}.card-title[data-v-5fc5ce27]{font-size:14px;color:#666;margin-bottom:8px;font-weight:500}.card-value[data-v-5fc5ce27]{font-size:28px;font-weight:700;color:var(--admin-container-color);line-height:1}.card-subtitle[data-v-5fc5ce27]{font-size:11px;color:#59636e;margin-top:4px;opacity:.8}.charts-section[data-v-5fc5ce27]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:30px;overflow:visible}@media (max-width:768px){.charts-section[data-v-5fc5ce27]{grid-template-columns:1fr}}.chart-card[data-v-5fc5ce27]{border-radius:16px;padding:24px;border:1px solid var(--glass-border)}.chart-card[data-v-5fc5ce27],.chart-card[data-v-5fc5ce27]:hover{background:var(--glass-bg);box-shadow:var(--glass-shadow)}.chart-card[data-v-5fc5ce27],.chart-content[data-v-5fc5ce27],.pie-chart-container[data-v-5fc5ce27],.pie-chart-wrapper[data-v-5fc5ce27]{overflow:visible}.chart-header[data-v-5fc5ce27]{display:flex;gap:8px;align-items:center;margin-bottom:20px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.chart-header .fa-icon[data-v-5fc5ce27]{margin-right:10px;color:var(--admin-purple)}.trend-chart-card[data-v-5fc5ce27]{grid-column:1/-1}.trend-chart-header[data-v-5fc5ce27]{justify-content:space-between;gap:14px;flex-wrap:wrap}.chart-title[data-v-5fc5ce27]{display:flex;align-items:center;gap:8px}.trend-controls[data-v-5fc5ce27]{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.trend-calendar-btn[data-v-5fc5ce27]{width:32px;min-width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--admin-container-color);background:var(--glass-bg);border:1px solid var(--glass-border)}.trend-calendar-btn[data-v-5fc5ce27]:hover{color:var(--el-color-primary);border-color:var(--glass-border);background:var(--glass-bg);box-shadow:none}.trend-date-dialog[data-v-5fc5ce27]{overflow:visible;max-width:calc(100vw - 32px);box-sizing:border-box}.trend-date-dialog[data-v-5fc5ce27] .el-dialog__body{overflow:visible;padding:16px 24px 24px}.trend-date-panel[data-v-5fc5ce27]{width:100%;max-width:100%;min-width:0;box-sizing:border-box;display:flex;justify-content:center;overflow:hidden}.trend-group-switch[data-v-5fc5ce27]{flex-shrink:0;height:32px;display:flex}.trend-group-switch[data-v-5fc5ce27] .el-radio-button__inner{height:32px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0 14px}.chart-content.trend-chart-content[data-v-5fc5ce27]{min-height:320px;padding:0;margin:0;min-width:0;max-width:100%;overflow:hidden}.line-chart-wrapper[data-v-5fc5ce27]{position:relative;width:100%;max-width:100%;min-width:0;height:320px;overflow:hidden}.line-chart-wrapper[data-v-5fc5ce27] canvas{display:block;width:100%!important;max-width:100%!important}.trend-empty-state[data-v-5fc5ce27]{height:320px}.chart-content[data-v-5fc5ce27]{min-height:160px;padding:15px;margin:-5px}.empty-state[data-v-5fc5ce27]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;color:#59636e;font-size:14px}.empty-state .fa-icon[data-v-5fc5ce27]{font-size:32px;margin-bottom:10px}.stats-list[data-v-5fc5ce27]{display:flex;flex-direction:column;gap:16px}.stats-item[data-v-5fc5ce27]{display:flex;align-items:center;gap:12px}.stats-label[data-v-5fc5ce27]{min-width:80px;font-size:13px;color:#666;font-weight:500}.stats-bar[data-v-5fc5ce27]{flex:1;height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden}.stats-fill[data-v-5fc5ce27]{height:100%;background:#6366f1;border-radius:4px;transition:width .6s ease}.type-fill[data-v-5fc5ce27]{background:#16a34a}.stats-value[data-v-5fc5ce27]{min-width:50px;text-align:right;font-size:13px;font-weight:600;color:var(--admin-container-color)}.pie-chart-container[data-v-5fc5ce27]{display:flex;align-items:center;gap:24px;flex-wrap:wrap;justify-content:center}.pie-chart-wrapper[data-v-5fc5ce27]{position:relative;width:180px;height:180px;flex-shrink:0;padding:15px;box-sizing:content-box;overflow:visible;isolation:isolate}.chart-center-text[data-v-5fc5ce27]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;z-index:-1}.center-value[data-v-5fc5ce27]{font-size:22px;font-weight:700;color:var(--admin-container-color);line-height:1.2}.center-label[data-v-5fc5ce27]{font-size:11px;color:#888;margin-top:2px}.chart-legend[data-v-5fc5ce27]{display:flex;flex-direction:column;gap:10px;flex:1;min-width:180px}.legend-item[data-v-5fc5ce27]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:rgba(0,0,0,.03);border:1px solid var(--glass-border);border-radius:8px}.legend-item[data-v-5fc5ce27]:hover{background:rgba(0,0,0,.03)}html.dark .legend-item[data-v-5fc5ce27],html.dark .legend-item[data-v-5fc5ce27]:hover{background:hsla(0,0%,100%,.05)}.legend-color[data-v-5fc5ce27]{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-label[data-v-5fc5ce27]{flex:1;font-size:13px;color:var(--admin-container-color);font-weight:500}.legend-value[data-v-5fc5ce27]{font-size:13px;font-weight:600;color:var(--admin-container-color);min-width:50px;text-align:right}.legend-percent[data-v-5fc5ce27]{font-size:12px;color:#888;min-width:40px;text-align:right}.actions-section[data-v-5fc5ce27]{margin-bottom:30px}.action-card[data-v-5fc5ce27]{border-radius:16px;padding:24px;border:1px solid var(--glass-border)}.action-card[data-v-5fc5ce27],.action-card[data-v-5fc5ce27]:hover{background:var(--glass-bg);box-shadow:var(--glass-shadow)}.action-header[data-v-5fc5ce27]{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.action-header .fa-icon[data-v-5fc5ce27]{margin-right:10px;color:var(--admin-purple)}.action-content[data-v-5fc5ce27]{display:flex;justify-content:center;padding:20px 0}.action-buttons[data-v-5fc5ce27]{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:center;width:100%}.action-btn[data-v-5fc5ce27]{border-radius:10px;padding:12px 24px;margin-left:0;font-weight:500;font-size:14px;transition:background-color .2s ease,border-color .2s ease,color .2s ease;min-width:150px;width:150px;height:48px;box-shadow:none}@media (max-width:768px){.action-btn[data-v-5fc5ce27]{flex:1;width:auto;min-width:0;height:auto}}.action-btn .fa-icon[data-v-5fc5ce27]{margin-right:8px;font-size:14px}.rebuild-btn[data-v-5fc5ce27]{background:#fff;border-color:#e5e6eb;color:#2563eb}.rebuild-btn[data-v-5fc5ce27]:hover{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.backup-btn[data-v-5fc5ce27]{background:#fff;border-color:#e5e6eb;color:#16a34a}.backup-btn[data-v-5fc5ce27]:hover{background:#f0fdf4;border-color:#86efac;color:#15803d}.restore-btn[data-v-5fc5ce27]{background:#fff;border-color:#e5e6eb;color:#d97706}.restore-btn[data-v-5fc5ce27]:hover{background:#fffbeb;border-color:#fcd34d;color:#b45309}.dark .rebuild-btn[data-v-5fc5ce27]{background:#1f1f22;border-color:#2a2a2e;color:#60a5fa}.dark .rebuild-btn[data-v-5fc5ce27]:hover{background:rgba(59,130,246,.12);border-color:rgba(96,165,250,.4);color:#93c5fd}.dark .backup-btn[data-v-5fc5ce27]{background:#1f1f22;border-color:#2a2a2e;color:#4ade80}.dark .backup-btn[data-v-5fc5ce27]:hover{background:rgba(34,197,94,.12);border-color:rgba(74,222,128,.4);color:#86efac}.dark .restore-btn[data-v-5fc5ce27]{background:#1f1f22;border-color:#2a2a2e;color:#fbbf24}.dark .restore-btn[data-v-5fc5ce27]:hover{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.4);color:#fcd34d}.restore-section[data-v-5fc5ce27]{display:inline-block}@media (max-width:768px){.action-buttons>.el-tooltip[data-v-5fc5ce27],.action-buttons>.restore-section[data-v-5fc5ce27],.restore-section[data-v-5fc5ce27]{flex:1;width:100%}.action-btn[data-v-5fc5ce27]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-5fc5ce27]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-5fc5ce27]{position:relative;background:var(--glass-bg);border-radius:16px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease;height:300px;overflow:hidden;cursor:pointer}.card-bg-media[data-v-5fc5ce27]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-5fc5ce27],.card-bg-media[data-v-5fc5ce27] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-5fc5ce27] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-5fc5ce27]{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-dashborad-stats-bg-color);display:flex;align-items:center;justify-content:center}.fallback-icon[data-v-5fc5ce27]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-5fc5ce27]{position:absolute;top:0;left:0;right:0;display:flex;gap:8px;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,rgba(0,0,0,.5) 0,rgba(0,0,0,.2) 55%,transparent);z-index:2}.file-card-header .fa-icon[data-v-5fc5ce27]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-5fc5ce27]{color:#f59e0b}.info-card-footer[data-v-5fc5ce27]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-5fc5ce27]{font-size:14px;color:#fff;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.5)}.info-card-footer .file-meta[data-v-5fc5ce27]{font-size:12px;color:#fafafa;text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-5fc5ce27]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-5fc5ce27]{height:450px}}.file-info-card[data-v-5fc5ce27]:hover{box-shadow:var(--glass-shadow)}.file-info-card:hover .card-bg-media[data-v-5fc5ce27]{transform:scale(1)}@media (max-width:768px){.status-panel[data-v-5fc5ce27]{padding:15px}.charts-section[data-v-5fc5ce27],.overview-cards[data-v-5fc5ce27]{grid-template-columns:1fr;gap:15px}.trend-chart-header[data-v-5fc5ce27]{align-items:stretch}.chart-title[data-v-5fc5ce27]{width:100%}.trend-controls[data-v-5fc5ce27]{width:100%;justify-content:stretch}.trend-date-dialog[data-v-5fc5ce27] .el-dialog__body{padding:12px 14px 18px}.trend-group-switch[data-v-5fc5ce27]{width:100%}.trend-group-switch[data-v-5fc5ce27] .el-radio-button{flex:1}.trend-group-switch[data-v-5fc5ce27] .el-radio-button__inner{width:100%;padding:0 10px}.line-chart-wrapper[data-v-5fc5ce27],.trend-empty-state[data-v-5fc5ce27]{height:280px}.file-info-section[data-v-5fc5ce27]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-5fc5ce27]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-5fc5ce27]{font-size:24px}.action-buttons[data-v-5fc5ce27]{flex-direction:column;gap:12px}.action-btn[data-v-5fc5ce27]{width:100%;min-width:unset}}.stats-fill[data-v-5fc5ce27]{animation:fillAnimation-5fc5ce27 1s ease-out}@keyframes fillAnimation-5fc5ce27{0%{width:0}}.progress-container[data-v-5fc5ce27]{width:100%;padding:20px;text-align:center}.progress-header[data-v-5fc5ce27]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-5fc5ce27]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-5fc5ce27]{font-size:18px;font-weight:700;color:var(--admin-purple)}.progress-bar[data-v-5fc5ce27]{margin-bottom:16px}.progress-bar[data-v-5fc5ce27] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-5fc5ce27] .el-progress-bar__inner{background:#6366f1;border-radius:6px;transition:width .3s ease}.progress-details[data-v-5fc5ce27]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-5fc5ce27],.progress-time[data-v-5fc5ce27]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-5fc5ce27],.progress-time .fa-icon[data-v-5fc5ce27]{color:var(--admin-purple);font-size:12px}.progress-message[data-v-5fc5ce27]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-5fc5ce27]{margin-top:12px;border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#ef4444}.cancel-btn[data-v-5fc5ce27]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);box-shadow:none}.cancel-btn .fa-icon[data-v-5fc5ce27]{margin-right:8px}.error-container[data-v-5fc5ce27]{width:100%;padding:20px;display:flex;flex-direction:column;align-items:center;gap:16px;background:rgba(239,68,68,.05);border-radius:12px;border:1px solid rgba(239,68,68,.2)}.error-icon[data-v-5fc5ce27]{width:48px;height:48px;border-radius:50%;background:rgba(239,68,68,.1);display:flex;align-items:center;justify-content:center;color:#ef4444;font-size:24px}.error-content[data-v-5fc5ce27]{text-align:center}.error-message[data-v-5fc5ce27]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-5fc5ce27]{font-size:13px;color:#666}.error-actions[data-v-5fc5ce27]{display:flex;gap:12px}.error-actions .el-button[data-v-5fc5ce27]{border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:100px}.error-actions .el-button--primary[data-v-5fc5ce27]{background:#6366f1;border:none;color:#fff}.error-actions .el-button--primary[data-v-5fc5ce27]:hover{background:#4f46e5;box-shadow:none}.error-actions .el-button--default[data-v-5fc5ce27]{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);color:var(--el-text-color-regular)}.error-actions .el-button--default[data-v-5fc5ce27]:hover{background:hsla(0,0%,100%,.15);border-color:#4a4a52;box-shadow:none}.error-actions .fa-icon[data-v-5fc5ce27]{margin-right:8px}html.dark .progress-count[data-v-5fc5ce27],html.dark .progress-time[data-v-5fc5ce27]{color:#aaa}html.dark .progress-message[data-v-5fc5ce27]{color:#999}html.dark .error-container[data-v-5fc5ce27]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-5fc5ce27]{color:#aaa}@media (max-width:768px){.error-container[data-v-5fc5ce27],.progress-container[data-v-5fc5ce27]{padding:16px}.progress-header[data-v-5fc5ce27]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-5fc5ce27]{flex-direction:column;gap:8px}.error-actions[data-v-5fc5ce27]{flex-direction:column;width:100%}.error-actions .el-button[data-v-5fc5ce27]{width:100%;margin:0}}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon,.el-input-number{display:inline-flex}.el-input-number{line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.custom-select[data-v-0496d320]{position:relative}.custom-select-trigger[data-v-0496d320]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:8px;cursor:pointer;transition:background-color .2s ease,border-color .2s ease;box-sizing:border-box}html.dark .custom-select-trigger[data-v-0496d320]{background:rgba(22,22,24,.75);border:1px solid #34343a}.custom-select-trigger[data-v-0496d320]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .custom-select-trigger[data-v-0496d320]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.custom-select.is-open .custom-select-trigger[data-v-0496d320]{border-color:var(--el-color-primary)}.custom-select-value[data-v-0496d320]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-0496d320],.custom-select-value.is-placeholder[data-v-0496d320]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-0496d320]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-0496d320]{transform:rotate(180deg)}.custom-select-dropdown[data-v-0496d320]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:hsla(0,0%,100%,.88);border:1px solid #d9dce2;border-radius:8px;box-shadow:none;z-index:2000;overflow:hidden}html.dark .custom-select-dropdown[data-v-0496d320]{background:rgba(22,22,24,.9);border:1px solid #34343a}.custom-select-option[data-v-0496d320]{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;font-size:14px;color:var(--el-text-color-regular);cursor:pointer;transition:background .2s ease}.custom-select-option[data-v-0496d320]:hover{background:rgba(0,0,0,.04)}html.dark .custom-select-option[data-v-0496d320]:hover{background:hsla(0,0%,100%,.08)}.custom-select-option.is-selected[data-v-0496d320]{color:var(--el-color-primary);font-weight:500}.option-icon[data-v-0496d320]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-0496d320],.dropdown-fade-leave-active[data-v-0496d320]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-0496d320],.dropdown-fade-leave-to[data-v-0496d320]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-13fe94f8]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-13fe94f8]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-13fe94f8]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-13fe94f8]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.inline-warning-icon[data-v-13fe94f8]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-warning-icon[data-v-13fe94f8]:hover{color:var(--el-color-primary)}.add-btn[data-v-13fe94f8]{border-radius:8px;background-color:rgba(37,99,235,.9)!important;border-color:rgba(37,99,235,.9)!important;color:#fff!important;transition:background-color .2s ease,border-color .2s ease}html.dark .add-btn[data-v-13fe94f8]{background-color:rgba(59,130,246,.9)!important;border-color:rgba(59,130,246,.9)!important}.add-btn[data-v-13fe94f8]:hover{background-color:rgba(37,99,235,.78)!important;border-color:rgba(37,99,235,.78)!important}html.dark .add-btn[data-v-13fe94f8]:hover{background-color:rgba(59,130,246,.78)!important;border-color:rgba(59,130,246,.78)!important}.header-actions[data-v-13fe94f8]{display:flex;gap:12px}.header-actions[data-v-13fe94f8] .el-button{border-radius:8px}.channel-group[data-v-13fe94f8]{margin-bottom:32px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow)}.group-header[data-v-13fe94f8]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.group-title[data-v-13fe94f8]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-13fe94f8]{font-size:20px;color:var(--el-color-primary)}.channel-count[data-v-13fe94f8]{font-size:12px}.load-balance-switch[data-v-13fe94f8]{display:flex;align-items:center;gap:8px}.switch-label[data-v-13fe94f8]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-13fe94f8]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-13fe94f8]{background:var(--glass-bg);border-radius:10px;border:1px solid var(--glass-border);overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:var(--glass-shadow)}.card-glow[data-v-13fe94f8]{position:absolute;width:150px;height:150px;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%);transition:opacity .3s ease;z-index:0;background:rgba(56,189,248,.15)}.channel-card.telegram .card-glow[data-v-13fe94f8]{background:rgba(84,169,235,.2)}.channel-card.cfr2 .card-glow[data-v-13fe94f8]{background:rgba(246,130,31,.2)}.channel-card.s3 .card-glow[data-v-13fe94f8]{background:rgba(86,154,49,.2)}.channel-card.discord .card-glow[data-v-13fe94f8]{background:rgba(88,101,242,.2)}.channel-card.huggingface .card-glow[data-v-13fe94f8]{background:rgba(255,210,30,.2)}.channel-card.webdav .card-glow[data-v-13fe94f8]{background:rgba(20,184,166,.2)}.channel-card[data-v-13fe94f8]:hover{border-color:var(--glass-border);box-shadow:var(--glass-shadow);background:var(--glass-bg)}.channel-card.disabled[data-v-13fe94f8]{opacity:.6;background:var(--el-fill-color-lighter)}.card-header[data-v-13fe94f8]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.card-title[data-v-13fe94f8]{display:flex;align-items:center;gap:8px}.channel-name[data-v-13fe94f8]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-13fe94f8]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-13fe94f8]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-13fe94f8]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--el-text-color-secondary);min-width:0;width:100%;max-width:100%}.info-text[data-v-13fe94f8]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-13fe94f8]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-13fe94f8]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-13fe94f8] .el-progress{margin-bottom:4px}.quota-text[data-v-13fe94f8]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-13fe94f8]{display:flex;justify-content:flex-end;gap:4px;padding:10px 16px;border-top:1px solid var(--glass-header-border);background:var(--glass-header-bg);margin-top:auto}.empty-tip[data-v-13fe94f8]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--el-text-color-placeholder);gap:12px}.empty-icon[data-v-13fe94f8]{font-size:32px}.channel-warning[data-v-13fe94f8]{margin:0 20px 16px;padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning)}.channel-type-option[data-v-13fe94f8]{display:inline-flex;align-items:center;gap:8px;line-height:1}.select-option-icon[data-v-13fe94f8]{width:16px;height:16px;font-size:16px;text-align:center}.form-warning[data-v-13fe94f8]{padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning);margin-top:8px}.quota-status[data-v-13fe94f8]{width:100%}.quota-status[data-v-13fe94f8] .el-progress{margin-bottom:8px}.quota-info[data-v-13fe94f8]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border:1px solid var(--glass-border);border-radius:6px}.quota-info.quota-warning[data-v-13fe94f8]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-13fe94f8]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-13fe94f8]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-13fe94f8]{animation:fa-spin-13fe94f8 1s linear infinite}@keyframes fa-spin-13fe94f8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-13fe94f8]{padding:12px}.page-header[data-v-13fe94f8]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-13fe94f8]{grid-template-columns:1fr;padding:12px}.group-header[data-v-13fe94f8]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-13fe94f8] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-13fe94f8] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-a230355c]{position:fixed;right:var(--floating-btn-right,24px);bottom:var(--floating-btn-bottom,24px);display:flex;align-items:center;gap:6px;padding:10px 18px;background:var(--floating-btn-bg);color:var(--floating-btn-color);border-radius:50px;cursor:pointer;box-shadow:var(--floating-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100;font-weight:500;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floating-save-btn[data-v-a230355c]:hover{box-shadow:var(--floating-btn-shadow-hover)}.floating-save-btn[data-v-a230355c]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-a230355c]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-a230355c]:hover{transform:none}.floating-save-btn svg[data-v-a230355c]{font-size:14px}.fade-up-enter-active[data-v-a230355c]{transition:all .3s ease-out}.fade-up-leave-active[data-v-a230355c]{transition:all .2s ease-in}.fade-up-enter-from[data-v-a230355c]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-a230355c]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-a230355c]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-a230355c]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-a230355c]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-a230355c]{display:none}.floating-save-btn svg[data-v-a230355c]{font-size:16px}}.security-settings[data-v-d23348da]{padding:20px;min-height:500px}.first-settings[data-v-d23348da]{margin-bottom:40px}.first-title[data-v-d23348da]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-d23348da]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-d23348da] .el-form{padding:20px 24px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-d23348da] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-d23348da] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-d23348da] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-d23348da] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-d23348da] .el-input,.first-settings[data-v-d23348da] .el-select{width:100%}.first-settings[data-v-d23348da] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-d23348da]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.query-param-list[data-v-d23348da]{display:flex;flex-direction:column;gap:10px;width:100%}.query-param-row[data-v-d23348da]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,1.4fr) auto;gap:8px;align-items:center;width:100%}.response-field-row[data-v-d23348da]{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:4px;align-items:center;width:100%}.response-field-row[data-v-d23348da] .el-button+.el-button{margin-left:0}.token-title[data-v-d23348da]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-d23348da]{margin-left:5px}.token-table-container[data-v-d23348da]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-d23348da]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background:var(--glass-bg);border:1px solid var(--glass-border)}.token-table[data-v-d23348da] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-d23348da] .el-table__body-wrapper{border-radius:0 0 12px 12px;background:transparent}.token-table[data-v-d23348da] .el-table{border-radius:12px;background:transparent}.token-table[data-v-d23348da] .el-table__header{background-color:rgba(0,0,0,.04)}.token-table[data-v-d23348da] .el-table th{background-color:rgba(0,0,0,.04)!important;border-bottom:1px solid #d9dce2;text-align:center}.token-table[data-v-d23348da] .el-table td{background-color:transparent!important;border-bottom:1px solid #d9dce2}html.dark .token-table[data-v-d23348da] .el-table th{background-color:hsla(0,0%,100%,.05)!important;border-bottom:1px solid #34343a}html.dark .token-table[data-v-d23348da] .el-table td{border-bottom:1px solid #34343a}.token-table[data-v-d23348da] .el-table__row:hover td{background-color:rgba(0,0,0,.03)!important}html.dark .token-table[data-v-d23348da] .el-table__row:hover td{background-color:hsla(0,0%,100%,.05)!important}.token-table[data-v-d23348da] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-d23348da]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;padding:8px 4px;min-height:40px;text-align:center}.action-buttons[data-v-d23348da]{gap:8px}.action-button[data-v-d23348da]{margin-left:0}.permission-tag[data-v-d23348da]{margin:2px!important}.token-display[data-v-d23348da]{font-family:Courier New,monospace;background-color:var(--text-bg-color);padding:4px 8px;border-radius:6px;font-size:12px;word-break:break-all;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width:768px){.security-settings[data-v-d23348da]{padding:15px;padding-bottom:80px}.first-settings[data-v-d23348da] .el-form{padding:12px 15px}.first-settings[data-v-d23348da] .el-form-item__content{max-width:100%}.query-param-row[data-v-d23348da]{grid-template-columns:1fr}.response-field-row[data-v-d23348da]{grid-template-columns:1fr auto auto auto}.token-table-container[data-v-d23348da]{padding:0 10px}.table-cell-content[data-v-d23348da]{padding:6px 2px;min-height:36px}.token-display[data-v-d23348da]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-d23348da]{padding:0 5px}.table-cell-content[data-v-d23348da]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-d23348da]{padding:4px 8px;font-size:12px}.permission-tag[data-v-d23348da]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-d23348da]{padding:10px 0}.token-result .el-form-item[data-v-d23348da]{margin-bottom:20px}.dialog-footer[data-v-d23348da]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-d23348da],.fade-slide-leave-active[data-v-d23348da]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-d23348da],.fade-slide-leave-to[data-v-d23348da]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-d23348da],.fade-slide-leave-from[data-v-d23348da]{opacity:1;transform:translateY(0)}[data-v-d23348da] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);border:1px solid var(--glass-border);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-65cb1659]{padding:20px;min-height:500px}.first-settings[data-v-65cb1659]{margin-bottom:40px}.first-title[data-v-65cb1659]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-65cb1659]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-65cb1659] .el-form{padding:20px 24px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.first-settings[data-v-65cb1659] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-65cb1659] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-65cb1659] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-65cb1659] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-65cb1659] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-65cb1659] .el-input,.first-settings[data-v-65cb1659] .el-select{width:100%}.first-settings[data-v-65cb1659] .el-switch{--el-switch-on-color:var(--el-color-primary)}.announcement-refresh-option[data-v-65cb1659]{width:100%;margin-top:10px;display:flex;justify-content:flex-start}.first-settings[data-v-65cb1659] .el-form-item:has(.announcement-refresh-option) .el-form-item__content{flex-direction:column;align-items:flex-start}@media (max-width:768px){.page-settings[data-v-65cb1659]{padding:15px;padding-bottom:80px}.first-settings[data-v-65cb1659] .el-form{padding:12px 15px}.first-settings[data-v-65cb1659] .el-form-item__content{max-width:100%}}.others-settings[data-v-2f9ad0d5]{padding:20px;min-height:500px}.first-settings[data-v-2f9ad0d5]{margin-bottom:40px}.first-title[data-v-2f9ad0d5]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-2f9ad0d5]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-2f9ad0d5] .el-form{padding:20px 24px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-2f9ad0d5] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-2f9ad0d5] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-2f9ad0d5] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-2f9ad0d5] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-2f9ad0d5] .el-input{width:100%}.first-settings[data-v-2f9ad0d5] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-2f9ad0d5]{padding:15px;padding-bottom:80px}.first-settings[data-v-2f9ad0d5] .el-form{padding:12px 15px}.first-settings[data-v-2f9ad0d5] .el-form-item__content{max-width:100%}}.container[data-v-036a2d40]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0;overflow-x:hidden}.header-content[data-v-036a2d40]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-036a2d40]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-036a2d40]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-036a2d40]{font-size:.95em}}.header-content[data-v-036a2d40]:hover{background:hsla(0,0%,100%,.72);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-036a2d40]:hover{background:rgba(22,22,24,.75);box-shadow:none}.header-icon[data-v-036a2d40]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-036a2d40]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-036a2d40]{display:flex;gap:10px}.main-container[data-v-036a2d40]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-036a2d40]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-036a2d40],.main-container[data-v-036a2d40]{width:auto;margin-left:65px;margin-right:15px;padding:0;min-height:calc(100vh - 60px);box-sizing:border-box}} \ No newline at end of file diff --git a/frontend-dist/css/715.f5deda06.css.gz b/frontend-dist/css/715.f5deda06.css.gz new file mode 100644 index 00000000..4808721b Binary files /dev/null and b/frontend-dist/css/715.f5deda06.css.gz differ diff --git a/frontend-dist/css/718.d0974d1c.css.gz b/frontend-dist/css/718.d0974d1c.css.gz deleted file mode 100644 index be76d36c..00000000 Binary files a/frontend-dist/css/718.d0974d1c.css.gz and /dev/null differ diff --git a/frontend-dist/css/789.1353235b.css b/frontend-dist/css/789.1353235b.css deleted file mode 100644 index 17eb982e..00000000 --- a/frontend-dist/css/789.1353235b.css +++ /dev/null @@ -1 +0,0 @@ -.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.login[data-v-3bf86f06]{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:100vh;height:auto;background:var(--admin-container-bg-color,var(--bg-color));overflow-y:auto;padding:20px 0;box-sizing:border-box;transition:height .35s ease-out,min-height .35s ease-out}.login-title[data-v-3bf86f06]{font-size:2.3rem;margin-bottom:15px;color:var(--login-title-color);font-family:Pacifico,Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease;letter-spacing:2px}@media (max-width:768px){.login-title[data-v-3bf86f06]{font-size:1.5rem}}.login-title[data-v-3bf86f06]:focus,.login-title[data-v-3bf86f06]:hover{transform:translateY(-2px);text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-3bf86f06]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:600px;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--login-container-bg-color);backdrop-filter:blur(8px);transition:all .3s ease;padding:40px 0;gap:20px;position:relative;z-index:101}@media (max-width:768px){.login-container[data-v-3bf86f06]{width:85vw;padding:25px 0;gap:12px}}.login-container[data-v-3bf86f06]:hover{box-shadow:var(--login-container-hover-box-shadow);transform:translateY(-5px)}.input-container[data-v-3bf86f06]{display:flex;flex-direction:column;align-items:flex-start;width:80%;margin-bottom:15px;position:relative;gap:8px}@media (max-width:768px){.input-container[data-v-3bf86f06]{width:85%;gap:4px;margin-bottom:8px}}.input-wrapper[data-v-3bf86f06]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-3bf86f06]{margin-right:6px;font-size:1rem}.input-name[data-v-3bf86f06]{font-size:.95rem;font-weight:600;color:var(--login-title-color);text-align:left;transition:all .3s ease;letter-spacing:.5px;position:relative;display:flex;align-items:center;justify-content:flex-start;padding-left:2px}.input-name[data-v-3bf86f06]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:linear-gradient(90deg,var(--login-input-underline-color,#5b9bd3),var(--login-input-underline-secondary-color,#7ba9d8));transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-3bf86f06]:after,.input-container:hover .input-name[data-v-3bf86f06]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-3bf86f06],.input-container:hover .input-name[data-v-3bf86f06]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-3bf86f06]{font-size:.85rem}}.submit[data-v-3bf86f06]{margin-bottom:10px;width:50%;height:48px;font-size:1.1rem;font-weight:600;letter-spacing:2px;border-radius:12px;background-color:var(--login-submit-btn-bg-color);transition:all .4s cubic-bezier(.4,0,.2,1);border:none;overflow:hidden;position:relative;padding:0;display:flex;justify-content:center;align-items:center}.submit.is-loading[data-v-3bf86f06]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-3bf86f06]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-3bf86f06 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-3bf86f06{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-3bf86f06]{width:50%}}.submit[data-v-3bf86f06]:not(.is-loading):focus,.submit[data-v-3bf86f06]:not(.is-loading):hover{transform:translateY(-3px) scale(1.05);box-shadow:0 4px 12px rgba(0,0,0,.2)}.submit[data-v-3bf86f06]:disabled{cursor:default;transform:none}.password-input[data-v-3bf86f06]{width:100%;height:50px;position:relative}.password-input[data-v-3bf86f06] .el-input__prefix{color:var(--login-input-icon-color,#909399);font-size:1rem;transition:color .3s ease}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-3bf86f06] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:2px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(10px);position:relative;overflow:hidden}.password-input[data-v-3bf86f06] .el-input__wrapper:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.password-input[data-v-3bf86f06] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-3bf86f06] .el-input__wrapper:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.15);border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:0 0 0 3px rgba(91,155,211,.1);transform:translateY(-1px)}.password-input[data-v-3bf86f06] .el-input__inner{color:var(--text-color,var(--login-input-text-color,#333));font-size:1rem;font-weight:500;background:transparent;border:none;box-shadow:none}.dark .password-input[data-v-3bf86f06] .el-input__inner,[data-theme=dark] .password-input[data-v-3bf86f06] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-3bf86f06] .el-input__inner::-moz-placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;-moz-transition:opacity .3s ease;transition:opacity .3s ease}.password-input[data-v-3bf86f06] .el-input__inner::placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;transition:opacity .3s ease}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-3bf86f06] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-3bf86f06] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-3bf86f06] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-3bf86f06] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-3bf86f06]{width:100%;height:40px}.password-input[data-v-3bf86f06] .el-input__wrapper{padding:8px 12px}}.footer[data-v-3bf86f06]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-3bf86f06]{position:fixed;top:30px;right:30px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px}.toggle-dark[data-v-3bf86f06]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.language-switcher[data-v-3bf86f06]{position:fixed;top:30px;right:80px;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;z-index:100}@media (max-width:768px){.language-switcher[data-v-3bf86f06]{width:2rem;height:2rem}}.language-switcher[data-v-3bf86f06]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)} \ No newline at end of file diff --git a/frontend-dist/css/789.1353235b.css.gz b/frontend-dist/css/789.1353235b.css.gz deleted file mode 100644 index 0011733d..00000000 Binary files a/frontend-dist/css/789.1353235b.css.gz and /dev/null differ diff --git a/frontend-dist/css/824.0d0483a0.css b/frontend-dist/css/824.0d0483a0.css deleted file mode 100644 index 71eeb6d1..00000000 --- a/frontend-dist/css/824.0d0483a0.css +++ /dev/null @@ -1 +0,0 @@ -.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-768efd1f]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000;backdrop-filter:blur(4px)}.mobile-drawer[data-v-768efd1f]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-768efd1f]{background:rgba(40,40,45,.98);box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3)}.mobile-drawer-header[data-v-768efd1f]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,rgba(56,189,248,.12),rgba(14,165,233,.08));border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-768efd1f]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-768efd1f]:before{content:"";display:inline-block;width:4px;height:16px;background:linear-gradient(180deg,#38bdf8,rgba(14,165,233,.5));border-radius:2px}.mobile-drawer-close[data-v-768efd1f]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-768efd1f]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-768efd1f]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-768efd1f]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-768efd1f]{background:linear-gradient(135deg,rgba(56,189,248,.2),rgba(14,165,233,.12));color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-768efd1f]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-768efd1f]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-768efd1f]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-768efd1f]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-768efd1f]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-768efd1f]{animation:slideInLeft-768efd1f .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-768efd1f]{animation:slideOutLeft-768efd1f .2s ease-in}.drawer-slide-enter-from[data-v-768efd1f],.drawer-slide-leave-to[data-v-768efd1f]{opacity:0}@keyframes slideInLeft-768efd1f{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-768efd1f{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-62bb601c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-62bb601c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:0 -4px 30px rgba(0,0,0,.15);border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-62bb601c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:0 -4px 30px rgba(0,0,0,.4)}.bottom-sheet-header[data-v-62bb601c]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-62bb601c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-62bb601c]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.dark .bottom-sheet-title[data-v-62bb601c]{color:#f0f0f0}.bottom-sheet-content[data-v-62bb601c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-62bb601c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-62bb601c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-62bb601c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-62bb601c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-62bb601c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-62bb601c],.bottom-sheet-danger[data-v-62bb601c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-62bb601c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-62bb601c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-62bb601c]{animation:slideUp-62bb601c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-62bb601c]{animation:slideDown-62bb601c .2s ease-in}.bottom-sheet-enter-from[data-v-62bb601c],.bottom-sheet-leave-to[data-v-62bb601c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-62bb601c],.bottom-sheet-leave-to .bottom-sheet[data-v-62bb601c]{transform:translateY(100%)}@keyframes slideUp-62bb601c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-62bb601c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-ec3adcfc]{padding:0}.tab-content[data-v-ec3adcfc]{padding:20px}.tab-description[data-v-ec3adcfc]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-ec3adcfc]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-ec3adcfc]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-ec3adcfc]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-ec3adcfc]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-ec3adcfc],.tags-to-add-section[data-v-ec3adcfc]{margin-bottom:20px}.common-tags-section h4[data-v-ec3adcfc],.tags-to-add-section h4[data-v-ec3adcfc]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-ec3adcfc]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-ec3adcfc]{cursor:default}.empty-message[data-v-ec3adcfc]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-ec3adcfc]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-689f94e2]{padding:10px 0}.input-section[data-v-689f94e2]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-689f94e2]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-689f94e2]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-689f94e2]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-689f94e2],.popular-tags-section[data-v-689f94e2]{margin-bottom:20px}.current-tags-section h4[data-v-689f94e2],.popular-tags-section h4[data-v-689f94e2]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-689f94e2]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-689f94e2]{cursor:default}.tag-item.clickable[data-v-689f94e2]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-689f94e2]:hover{transform:translateY(-2px)}.empty-message[data-v-689f94e2]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-689f94e2]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-3f80812c]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-3f80812c]{margin-left:0!important}.video-preview[data-v-3f80812c]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-3f80812c],.video-preview[data-v-3f80812c]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-3f80812c]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-3f80812c] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-3f80812c]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-3f80812c]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border-radius:8px;min-height:60px}.preview-content[data-v-3f80812c]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-3f80812c] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-3f80812c] .el-descriptions__content .el-tag,[data-v-3f80812c] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-3f80812c] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-3f80812c] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-3f80812c]{justify-content:center}}.batch-floating-bar[data-v-4937e2f0]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.batch-selection-summary[data-v-4937e2f0]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-4937e2f0]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-4937e2f0]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-4937e2f0]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-4937e2f0]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-4937e2f0]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-4937e2f0]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-4937e2f0],.batch-floating-btn.tag[data-v-4937e2f0],.batch-floating-btn.white[data-v-4937e2f0]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-4937e2f0]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-4937e2f0]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-4937e2f0],.batch-toolbar-leave-active[data-v-4937e2f0]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-4937e2f0],.batch-toolbar-leave-to[data-v-4937e2f0]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-4937e2f0],.batch-toolbar-leave-from[data-v-4937e2f0]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-4937e2f0]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-4937e2f0]{padding:0 1px}.batch-selection-count[data-v-4937e2f0]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-4937e2f0]{height:14px}.batch-floating-actions[data-v-4937e2f0]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-4937e2f0]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-4937e2f0]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-4937e2f0]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-4937e2f0],.batch-toolbar-leave-to[data-v-4937e2f0]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-4937e2f0],.batch-toolbar-leave-from[data-v-4937e2f0]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.dashboard-checkbox[data-v-2743517c]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-2743517c]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;background:transparent}.dashboard-checkbox--list[data-v-2743517c]:hover{border-color:#38bdf8}.dashboard-checkbox--list[data-v-2743517c]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-2743517c],.dashboard-checkbox--list.indeterminate[data-v-2743517c]{border-color:#38bdf8;background:linear-gradient(135deg,#0ea5e9,#38bdf8)}.dashboard-checkbox--breadcrumb[data-v-2743517c]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid var(--el-border-color-lighter);border-radius:6px;background:var(--el-fill-color-light);box-shadow:var(--admin-dashboard-stats-shadow);backdrop-filter:blur(12px) saturate(140%)}.dashboard-checkbox--breadcrumb[data-v-2743517c]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid rgba(148,163,184,.24);border-radius:4px;background:hsla(0,0%,100%,.08);transition:border-color .18s ease,background .18s ease}.dashboard-checkbox--breadcrumb[data-v-2743517c]:hover{border-color:rgba(56,189,248,.24);background:var(--el-fill-color-lighter);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.dashboard-checkbox--breadcrumb[data-v-2743517c]:focus-visible{outline:none;border-color:rgba(56,189,248,.34);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.dashboard-checkbox--breadcrumb.checked[data-v-2743517c],.dashboard-checkbox--breadcrumb.indeterminate[data-v-2743517c]{border-color:rgba(56,189,248,.34);background:var(--el-fill-color-light);box-shadow:var(--admin-dashboard-stats-shadow)}.dashboard-checkbox--breadcrumb.checked[data-v-2743517c]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-2743517c]:before{border-color:hsla(0,0%,100%,.4);background:linear-gradient(135deg,#0ea5e9,#38bdf8)}.dashboard-checkbox-mark[data-v-2743517c]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-2743517c]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-2743517c]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-2743517c]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-2743517c]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-2743517c]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-2743517c]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-2d81bde2]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-2d81bde2] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-2d81bde2] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-2d81bde2]:hover{transform:scale(1.05)}.image-preview[data-v-2d81bde2],.video-preview[data-v-2d81bde2]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-2d81bde2]{cursor:pointer}.img-card:hover .file-icon[data-v-2d81bde2],.img-card:hover .image-preview[data-v-2d81bde2],.img-card:hover .video-preview[data-v-2d81bde2]{transform:scale(1.03)}.image-preview[data-v-2d81bde2]:hover{opacity:.8}.file-short-info[data-v-2d81bde2]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-2d81bde2]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-2d81bde2],.success-tag[data-v-2d81bde2]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.fail-tag[data-v-2d81bde2]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-2d81bde2]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.file-preview[data-v-2d81bde2]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-2d81bde2]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-2d81bde2]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-2d81bde2]{cursor:pointer}.card-bottom-overlay[data-v-2d81bde2]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-2d81bde2]{display:flex;align-items:center;justify-content:center}.file-name[data-v-2d81bde2]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-2d81bde2]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-2d81bde2]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-2d81bde2],.action-bar-right[data-v-2d81bde2]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-2d81bde2]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-2d81bde2]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-2d81bde2]:active{transform:scale(.95)}.action-btn-danger[data-v-2d81bde2]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-2d81bde2]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-2d81bde2] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-2d81bde2]:hover{transform:none}.file-short-info[data-v-2d81bde2]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-2d81bde2],.primary-tag[data-v-2d81bde2],.success-tag[data-v-2d81bde2]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-2d81bde2]{padding:22px 6px 6px}.file-name[data-v-2d81bde2]{font-size:11px}.file-icon[data-v-2d81bde2]{font-size:34px}.action-bar[data-v-2d81bde2]{display:none!important}}@keyframes skeleton-shimmer-2d81bde2{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-2d81bde2]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-2d81bde2 1.5s ease-in-out infinite}.error-wrapper[data-v-2d81bde2]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-2d81bde2]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-2d81bde2]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-81302b22]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-81302b22] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-81302b22] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-81302b22]:hover{transform:scale(1.05)}.folder-card[data-v-81302b22]{cursor:pointer}.folder-icon[data-v-81302b22]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-81302b22]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-81302b22]{transform:scale(1.03)}.card-bottom-overlay[data-v-81302b22]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-81302b22]{display:flex;align-items:center;justify-content:center}.file-name[data-v-81302b22]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-81302b22]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-81302b22]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-81302b22],.action-bar-right[data-v-81302b22]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-81302b22]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-81302b22]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-81302b22]:active{transform:scale(.95)}.action-btn-danger[data-v-81302b22]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-81302b22]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-81302b22] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-81302b22]:hover{transform:none}.folder-icon-svg[data-v-81302b22]{font-size:36px}.card-bottom-overlay[data-v-81302b22]{padding:22px 6px 6px}.file-name[data-v-81302b22]{font-size:11px}.action-bar[data-v-81302b22]{display:none!important}}@keyframes skeleton-shimmer-f8099fd2{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-f8099fd2{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-f8099fd2]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-f8099fd2]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-f8099fd2 1.5s ease-in-out infinite}.skeleton-info[data-v-f8099fd2]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-f8099fd2]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-f8099fd2 1.5s ease-in-out infinite}.skeleton-list-item[data-v-f8099fd2]{animation:skeleton-pulse-f8099fd2 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-f8099fd2]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-f8099fd2]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-f8099fd2 1.5s ease-in-out infinite}.skeleton-text-long[data-v-f8099fd2]{width:80%}.skeleton-text-long[data-v-f8099fd2],.skeleton-text-short[data-v-f8099fd2]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-f8099fd2 1.5s ease-in-out infinite}.skeleton-text-short[data-v-f8099fd2]{width:60px}.skeleton-text-tiny[data-v-f8099fd2]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-f8099fd2],.skeleton-text-tiny[data-v-f8099fd2]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-f8099fd2 1.5s ease-in-out infinite}.skeleton-tag[data-v-f8099fd2]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-f8099fd2]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-f8099fd2]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-f8099fd2]{display:flex;align-items:center}.list-col-checkbox[data-v-f8099fd2],.list-col-preview[data-v-f8099fd2]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-f8099fd2]{height:148px;border-radius:7px}.skeleton-info[data-v-f8099fd2]{padding:22px 6px 6px}.skeleton-text[data-v-f8099fd2]{height:11px;width:68%;border-radius:3px}.list-item[data-v-f8099fd2]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-f8099fd2]{width:16px;height:16px}.skeleton-preview[data-v-f8099fd2]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-f8099fd2],.skeleton-text-short[data-v-f8099fd2],.skeleton-text-tiny[data-v-f8099fd2]{height:10px;border-radius:3px}.skeleton-actions[data-v-f8099fd2]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-f8099fd2],.list-col-channel-name[data-v-f8099fd2],.list-col-channel[data-v-f8099fd2],.list-col-date[data-v-f8099fd2],.list-col-size[data-v-f8099fd2],.list-col-tags[data-v-f8099fd2]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-c3aeeea0]{flex-shrink:0}.filter-trigger[data-v-c3aeeea0]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-c3aeeea0]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-c3aeeea0]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-c3aeeea0] .el-badge__content{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-c3aeeea0]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-c3aeeea0]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-c3aeeea0]:last-of-type{border-bottom:none}.filter-title[data-v-c3aeeea0]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-c3aeeea0],.filter-options[data-v-c3aeeea0] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-c3aeeea0] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-c3aeeea0] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-c3aeeea0]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-c3aeeea0]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-c3aeeea0]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-c3aeeea0]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-c3aeeea0]:hover:not(:disabled){background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-c3aeeea0]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-c3aeeea0]{min-width:160px;max-height:320px}.filter-section[data-v-c3aeeea0]{padding:6px 10px}.filter-title[data-v-c3aeeea0]{font-size:11px;margin-bottom:4px}.filter-options[data-v-c3aeeea0] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:12px}.header-icon[data-v-c3aeeea0]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-2552c720]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-2552c720]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-2552c720]{z-index:1200}.page-switcher-sheet[data-v-2552c720]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-2552c720]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-2552c720]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-2552c720]{line-height:1}.page-switcher-arrow[data-v-2552c720]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-2552c720]{transform:rotate(180deg)}.page-option[data-v-2552c720]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-2552c720]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-2552c720]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-2552c720]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-2552c720]{opacity:1}.page-switcher.is-open .page-option-list[data-v-2552c720]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-2552c720]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);box-shadow:inset 0 0 0 1px var(--tabs-switcher-current-border-color),var(--tabs-switcher-current-shadow);font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-2552c720]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-2552c720],.page-option.is-current>.page-switcher-arrow[data-v-2552c720],.page-option.is-current>.page-switcher-title[data-v-2552c720]{translate:0 1px}.page-option[data-v-2552c720]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-2552c720]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-2552c720]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-2552c720]{gap:6px}.page-switcher-title[data-v-2552c720]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-2552c720]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-2552c720]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-2552c720]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-2552c720]{width:15px}.page-option-list[data-v-2552c720]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-2552c720]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-2552c720]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-2552c720]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-2552c720]{margin-left:4px}.tabs-language-switcher[data-v-2552c720]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-2552c720]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.container[data-v-119132e1]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-119132e1] .el-container,[data-v-119132e1] .el-main{overflow:visible}[data-v-119132e1] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-119132e1]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-119132e1]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-119132e1]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-119132e1]{font-size:.95em}.header-content .actions[data-v-119132e1]{gap:10px}.search-card[data-v-119132e1] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-119132e1] .el-input__wrapper{padding:0 10px}.search-card[data-v-119132e1] .el-input__inner:focus{width:65vw}}.header-content[data-v-119132e1]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%)}html.dark .header-content[data-v-119132e1]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-119132e1]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-119132e1]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-119132e1]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-119132e1]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--el-border-color-lighter);border-radius:6px;background:var(--el-fill-color-light);box-shadow:var(--admin-dashboard-stats-shadow);transition:border-color .2s ease,box-shadow .2s ease}.breadcrumb-view-toggle[data-v-119132e1]:hover{border-color:rgba(56,189,248,.24);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-view-button[data-v-119132e1]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-119132e1]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-119132e1]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:inset 0 0 0 1px rgba(56,189,248,.18)}.breadcrumb-view-icon[data-v-119132e1]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-119132e1]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-119132e1]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-119132e1]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-119132e1]{width:12px;height:12px}}.stats-badge[data-v-119132e1]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--el-fill-color-light);padding:4px 10px;border-radius:12px;border:1px solid var(--el-border-color-lighter);transition:all .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}.stats-badge[data-v-119132e1]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-119132e1]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-119132e1]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-119132e1]{font-size:9px}}.header-content .actions[data-v-119132e1]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-119132e1]{margin-top:10px}}.header-content .actions i[data-v-119132e1]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-119132e1]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-119132e1]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-119132e1]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-119132e1]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-119132e1]{color:var(--admin-purple)}.search-area[data-v-119132e1]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-119132e1]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-119132e1]{display:flex;align-items:center}.search-card[data-v-119132e1] .el-input__wrapper{border-radius:20px;background:var(--admin-dashboard-search-card-bg-color);box-shadow:var(--admin-dashboard-search-card-box-shadow);transition:background-color .3s}.search-card[data-v-119132e1] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-119132e1] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-119132e1] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-119132e1] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-119132e1] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-119132e1] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-119132e1] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-119132e1] .el-input__inner:focus{width:55vw}}.search-icon[data-v-119132e1]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-119132e1]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-119132e1]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-119132e1] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-119132e1]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-119132e1]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-119132e1]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-119132e1]{padding-bottom:86px}}.content[data-v-119132e1]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-119132e1],.list-view.is-drag-selecting[data-v-119132e1]{cursor:crosshair}.content.is-drag-selecting[data-v-119132e1] .img-card:hover,.content.is-drag-selecting[data-v-119132e1] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-119132e1] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-119132e1] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-119132e1] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-119132e1] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-119132e1] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-119132e1] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-119132e1] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-119132e1] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-119132e1]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-119132e1]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-119132e1]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-119132e1]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-119132e1]{padding:80px 20px}@media (max-width:768px){.content[data-v-119132e1]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-119132e1]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-119132e1]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-119132e1]{display:flex;align-items:center}.list-col-checkbox[data-v-119132e1]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-119132e1]{display:none}}.pagination-container[data-v-119132e1]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-119132e1]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-119132e1] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-119132e1] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-119132e1] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-119132e1] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-119132e1] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-119132e1] .btn-next,.pagination-container[data-v-119132e1] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-119132e1] .btn-next:hover,.pagination-container[data-v-119132e1] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-119132e1]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-119132e1]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-119132e1]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-119132e1]{width:50px}.page-jump .jump-input[data-v-119132e1] .el-input__wrapper{background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);border-radius:8px;padding:0 8px;height:28px}.page-jump .jump-input[data-v-119132e1] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-119132e1]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:0 2px 8px rgba(56,189,248,.3);transition:all .3s ease}.page-jump .jump-btn[data-v-119132e1]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-119132e1]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-119132e1]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-119132e1] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-119132e1] .btn-next,.pagination-container[data-v-119132e1] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-119132e1]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-119132e1],.page-total[data-v-119132e1]{font-size:12px}.page-jump .jump-input[data-v-119132e1]{width:40px}.page-jump .jump-input[data-v-119132e1] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-119132e1] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-119132e1]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-119132e1]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-119132e1],.refresh-btn[data-v-119132e1]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-119132e1]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-119132e1]{cursor:pointer;background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:#38bdf8;border:none;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1)}.refresh-btn[data-v-119132e1]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-119132e1]{cursor:pointer;background:linear-gradient(135deg,#0ea5e9,#38bdf8);box-shadow:0 4px 15px rgba(56,189,248,.3);color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-119132e1]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-119132e1] .btn-prev{left:8px}[data-v-119132e1] .btn-next,[data-v-119132e1] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-119132e1] .btn-next{right:8px}@media (min-width:768px){[data-v-119132e1] .el-pagination.is-background .btn-next,[data-v-119132e1] .el-pagination.is-background .btn-prev{background-color:var(--admin-dashboard-btn-bg-color);backdrop-filter:blur(10px);box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s ease}[data-v-119132e1] .el-pagination.is-background .btn-next:hover,[data-v-119132e1] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-119132e1]{margin:0 3px}.breadcrumb[data-v-119132e1]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:var(--el-fill-color-light);border-radius:6px;font-size:.95em;box-shadow:var(--admin-dashboard-stats-shadow);cursor:pointer;transition:all .3s ease}.breadcrumb[data-v-119132e1]:hover{box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-119132e1]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-119132e1]:hover{color:#38bdf8}[data-v-119132e1] .el-breadcrumb__item{cursor:pointer}[data-v-119132e1] .el-breadcrumb,[data-v-119132e1] .el-breadcrumb__inner,[data-v-119132e1] .el-breadcrumb__item,[data-v-119132e1] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-119132e1] .el-breadcrumb__inner{cursor:pointer}[data-v-119132e1] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-119132e1]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:var(--el-fill-color-light);border-radius:8px;border:1px solid var(--el-border-color-lighter);cursor:pointer;transition:all .2s ease}.mobile-directory-trigger[data-v-119132e1]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-119132e1]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-119132e1]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-119132e1]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-119132e1]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-119132e1]{display:flex}.desktop-only[data-v-119132e1]{display:none!important}.breadcrumb-container[data-v-119132e1]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-119132e1]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file diff --git a/frontend-dist/css/824.0d0483a0.css.gz b/frontend-dist/css/824.0d0483a0.css.gz deleted file mode 100644 index 07889f76..00000000 Binary files a/frontend-dist/css/824.0d0483a0.css.gz and /dev/null differ diff --git a/frontend-dist/css/438.db2aa0ca.css b/frontend-dist/css/844.2b40f004.css similarity index 83% rename from frontend-dist/css/438.db2aa0ca.css rename to frontend-dist/css/844.2b40f004.css index d74ef9a9..bd4f8814 100644 --- a/frontend-dist/css/438.db2aa0ca.css +++ b/frontend-dist/css/844.2b40f004.css @@ -1 +1 @@ -.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.el-table__expand-icon{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:23px;line-height:12px;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out;width:min(23px,100%)}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-flex;flex-direction:column;height:14px;margin:0;outline:none;overflow:initial;padding:0;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out;vertical-align:middle;width:24px}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-block;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;text-align:center;width:20px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;outline:none;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;outline:none;padding:0 10px}.el-table-filter__list-item:focus,.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);margin:0;outline:none;padding:0 3px;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.tabs[data-v-2552c720]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-2552c720]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-2552c720]{z-index:1200}.page-switcher-sheet[data-v-2552c720]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-2552c720]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-2552c720]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-2552c720]{line-height:1}.page-switcher-arrow[data-v-2552c720]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-2552c720]{transform:rotate(180deg)}.page-option[data-v-2552c720]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-2552c720]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-2552c720]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-2552c720]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-2552c720]{opacity:1}.page-switcher.is-open .page-option-list[data-v-2552c720]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-2552c720]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);box-shadow:inset 0 0 0 1px var(--tabs-switcher-current-border-color),var(--tabs-switcher-current-shadow);font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-2552c720]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-2552c720],.page-option.is-current>.page-switcher-arrow[data-v-2552c720],.page-option.is-current>.page-switcher-title[data-v-2552c720]{translate:0 1px}.page-option[data-v-2552c720]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-2552c720]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-2552c720]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-2552c720]{gap:6px}.page-switcher-title[data-v-2552c720]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-2552c720]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-2552c720]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-2552c720]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-2552c720]{width:15px}.page-option-list[data-v-2552c720]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-2552c720]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-2552c720]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-2552c720]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-2552c720]{margin-left:4px}.tabs-language-switcher[data-v-2552c720]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-2552c720]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px} \ No newline at end of file +.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.el-table__expand-icon{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:23px;line-height:12px;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out;width:min(23px,100%)}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-flex;flex-direction:column;height:14px;margin:0;outline:none;overflow:initial;padding:0;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out;vertical-align:middle;width:24px}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-block;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;text-align:center;width:20px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;outline:none;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;outline:none;padding:0 10px}.el-table-filter__list-item:focus,.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);margin:0;outline:none;padding:0 3px;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important} \ No newline at end of file diff --git a/frontend-dist/css/844.2b40f004.css.gz b/frontend-dist/css/844.2b40f004.css.gz new file mode 100644 index 00000000..ac0224db Binary files /dev/null and b/frontend-dist/css/844.2b40f004.css.gz differ diff --git a/frontend-dist/css/915.9e4a657d.css b/frontend-dist/css/915.9e4a657d.css new file mode 100644 index 00000000..170971f0 --- /dev/null +++ b/frontend-dist/css/915.9e4a657d.css @@ -0,0 +1 @@ +.history-container[data-v-f70e7770]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-f70e7770]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-f70e7770]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-f70e7770]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-f70e7770]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-f70e7770]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-f70e7770]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-f70e7770]{display:flex;gap:10px}.header-right .el-button[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-f70e7770]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-f70e7770]{background:#dc2626;color:#fff}.history-content[data-v-f70e7770]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-f70e7770]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-f70e7770]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-f70e7770]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-f70e7770],.grid-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-f70e7770]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-f70e7770]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-f70e7770]{opacity:1}.grid-actions[data-v-f70e7770]{display:flex;gap:15px}.grid-info[data-v-f70e7770]{padding:12px}.file-name[data-v-f70e7770]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-f70e7770]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-f70e7770]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-f70e7770]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-f70e7770]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-f70e7770],.list-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-f70e7770]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-f70e7770]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-f70e7770]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-f70e7770]{display:flex;gap:8px}.empty-state[data-v-f70e7770]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-f70e7770]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-f70e7770]::-webkit-scrollbar{width:8px}.history-content[data-v-f70e7770]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-f70e7770]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-f70e7770]:last-child{border-left:2px solid transparent}.timeline-header[data-v-f70e7770]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-f70e7770]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-f70e7770]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-f70e7770]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-f70e7770]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-f70e7770],.no-more-hint[data-v-f70e7770]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-f70e7770]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-f70e7770]{padding:15px 20px}.header-left h2[data-v-f70e7770]{font-size:20px}.history-content[data-v-f70e7770]{padding:15px 20px}.grid-view[data-v-f70e7770]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-f70e7770]{height:120px}.list-meta[data-v-f70e7770]{display:none}.list-info[data-v-f70e7770]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-3620a174]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,hsla(0,0%,100%,.8));box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-3620a174]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-3620a174]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-3620a174]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-3620a174]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-3620a174]:last-child{margin-bottom:0}.upload-list-item-url[data-v-3620a174]{display:flex;flex-direction:column}.file-icon[data-v-3620a174]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-3620a174]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-3620a174]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-3620a174]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-3620a174]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-3620a174] .el-progress{--el-color-primary:#2563eb}.upload-list-item-progress[data-v-3620a174] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner{border-radius:8px;background:#2563eb!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-3620a174 1s linear infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-3620a174 1s ease-in-out infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-3620a174{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-3620a174{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-3620a174] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-3620a174] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-3620a174 2s infinite;z-index:0}@keyframes shimmer-3620a174{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-3620a174] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-3620a174 2s ease-in-out infinite}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-3620a174{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-3620a174]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-3620a174]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-3620a174]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-3620a174]{background:var(--file-action-primary-bg,#2563eb);color:#fff;box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-3620a174]{background:var(--file-action-danger-bg,#dc2626);color:#fff;box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-3620a174]{margin-left:2px}.upload-list-item-url-row[data-v-3620a174]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-3620a174]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-3620a174]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-3620a174]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-3620a174]{font-size:12px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-f81fd314{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-f81fd314],.upload-list-card[data-v-f81fd314]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-f81fd314]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-f81fd314] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-f81fd314]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-f81fd314],.upload-list-container[data-v-f81fd314]{width:70vw}}.upload-list-card.upload-list-busy[data-v-f81fd314],.upload-list-container.upload-list-busy[data-v-f81fd314]{height:40vh}.upload-list-card.is-uploading[data-v-f81fd314]{border:1px solid var(--el-upload-dragger-uniform-color,#2563eb)!important;box-shadow:none!important}.upload-card-wrapper[data-v-f81fd314]{position:relative;overflow:visible}.upload-card-glow[data-v-f81fd314]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-f81fd314]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-f81fd314]{width:70vw}}.upload-card-busy[data-v-f81fd314] .el-upload-dragger{height:17vh}[data-v-f81fd314] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:1px solid var(--glass-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow)}[data-v-f81fd314] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-f81fd314] .el-upload-dragger.is-dragover,[data-v-f81fd314] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-f81fd314] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-f81fd314]{position:relative;background:none}.upload-card.is-uploading[data-v-f81fd314]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-f81fd314 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-f81fd314]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-f81fd314]{font-size:small}}.el-upload__text.upload-list-busy[data-v-f81fd314]{font-size:small}.el-icon--upload[data-v-f81fd314]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-f81fd314]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-f81fd314]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-f81fd314]{font-size:30px}}.paste-card[data-v-f81fd314]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-f81fd314]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-f81fd314]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-f81fd314]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-f81fd314 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-f81fd314] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-f81fd314]{height:17vh}.upload-card-textarea[data-v-f81fd314]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,rgba(37,99,235,.02));transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-f81fd314]{height:50%}.upload-card-textarea[data-v-f81fd314]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:rgba(37,99,235,.2);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-f81fd314]:hover:before{opacity:1}.upload-card-textarea[data-v-f81fd314]:focus-within:before{opacity:1;background:rgba(37,99,235,.4)}[data-v-f81fd314] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-f81fd314] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-f81fd314] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-f81fd314] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(37,99,235,.03))}[data-v-f81fd314] .el-textarea__inner:focus{border-color:transparent;box-shadow:none;background:var(--textarea-inner-focus-bg,rgba(37,99,235,.02))}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-f81fd314]{display:flex;justify-content:space-between;align-items:center;width:50vw;margin-top:3%}.paste-card-upload-button[data-v-f81fd314]{min-width:100px;height:42px;border-radius:14px!important;font-weight:600;font-size:15px;letter-spacing:2px;background:#2563eb!important;border:none!important;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.paste-card-upload-button[data-v-f81fd314]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:hsla(0,0%,100%,.25);transition:left .6s ease}.paste-card-upload-button[data-v-f81fd314]:hover{transform:scale(1.02);box-shadow:none}.paste-card-upload-button[data-v-f81fd314]:hover:before{left:100%}.paste-card-upload-button[data-v-f81fd314]:active{transform:translateY(-1px) scale(.98)}.upload-card-busy .paste-card-upload-button[data-v-f81fd314]{min-width:70px;height:32px;border-radius:10px!important;font-size:13px;letter-spacing:1px}.upload-card-busy .paste-card-actions[data-v-f81fd314]{margin-top:2%}.paste-card-method-group[data-v-f81fd314]{background:var(--paste-method-group-bg,rgba(37,99,235,.08));border-radius:14px;padding:4px;border:1px solid var(--paste-method-group-border,rgba(37,99,235,.15))}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner{transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:10px!important;border:none!important;background:transparent;font-weight:500;padding:10px 20px;color:var(--el-text-color-regular)}.paste-card-method-group[data-v-f81fd314] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-f81fd314] .el-radio-button:last-child .el-radio-button__inner{border-radius:10px!important}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner:hover{background:var(--paste-method-hover-bg,rgba(37,99,235,.12));color:var(--el-color-primary)}.paste-card-method-group[data-v-f81fd314] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:#2563eb!important;color:#fff!important;box-shadow:none}@media (max-width:768px){.paste-card[data-v-f81fd314]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-f81fd314]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-f81fd314]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-f81fd314]:before{border-radius:11px}[data-v-f81fd314] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-f81fd314]{width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-f81fd314]{height:30px;min-width:55px;border-radius:8px!important;font-size:12px;letter-spacing:.5px;padding:0 10px}.paste-card-method-group[data-v-f81fd314]{border-radius:8px;padding:2px;height:30px;display:flex;align-items:center}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner{padding:4px 10px;font-size:11px;border-radius:6px!important;height:26px;display:flex;align-items:center}}.upload-list-dashboard[data-v-f81fd314]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);opacity:.7}[data-v-f81fd314] .el-upload-dragger{position:relative;overflow:hidden}[data-v-f81fd314] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-f81fd314] .el-upload-dragger:after,[data-v-f81fd314] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-f81fd314] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-f81fd314]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-f81fd314 60s linear infinite}.upload-card[data-v-f81fd314]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-f81fd314 40s linear infinite,starPulse-f81fd314 4s ease-in-out infinite}@keyframes starScroll-f81fd314{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-f81fd314{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-f81fd314]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-f81fd314]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-f81fd314]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-f81fd314]:focus,.modern-action-btn[data-v-f81fd314]:focus-visible{outline:none!important}.modern-action-btn[data-v-f81fd314]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-f81fd314]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-f81fd314]:hover:before{opacity:.08}.modern-action-btn[data-v-f81fd314]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-f81fd314]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-f81fd314]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-f81fd314]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-f81fd314]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-f81fd314]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-f81fd314]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-f81fd314]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:1px solid var(--glass-border);border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-f81fd314]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-f81fd314]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-f81fd314]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-f81fd314]{font-size:12px;padding:4px 10px}.upload-list-dashboard[data-v-f81fd314]{padding:0 8px;gap:4px}.upload-list-dashboard-title[data-v-f81fd314]{gap:4px;padding:3px 8px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-f81fd314]{flex-shrink:0}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.container[data-v-e37d1ae4]{background:var(--bg-color);min-height:100vh}.rotate[data-v-e37d1ae4]{animation:spin-e37d1ae4 2s ease-in-out}.scale[data-v-e37d1ae4]{animation:scale-e37d1ae4 .5s ease-in-out}@keyframes spin-e37d1ae4{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-e37d1ae4{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-e37d1ae4{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-e37d1ae4{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-e37d1ae4{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-e37d1ae4]{display:inline-block}.mobile-only[data-v-e37d1ae4]{display:none}@media (max-width:768px){.desktop-only[data-v-e37d1ae4]{display:none!important}.mobile-only[data-v-e37d1ae4]{display:flex!important}}.toggle-dark-button[data-v-e37d1ae4]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}html.dark .toggle-dark-button[data-v-e37d1ae4]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown[data-v-e37d1ae4]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-e37d1ae4]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .more-dropdown .more-button[data-v-e37d1ae4]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown .more-button[data-v-e37d1ae4]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .more-dropdown .more-button[data-v-e37d1ae4]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-method-button[data-v-e37d1ae4]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}html.dark .upload-method-button[data-v-e37d1ae4]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.upload-method-button[data-v-e37d1ae4]{width:2rem;height:2rem}}.upload-method-icon[data-v-e37d1ae4]{outline:none}.more-button .svg-inline--fa[data-v-e37d1ae4],.upload-method-button .svg-inline--fa[data-v-e37d1ae4]{font-size:1.5em}.mobile-more-dropdown[data-v-e37d1ae4]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-e37d1ae4]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .mobile-more-button[data-v-e37d1ae4]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-more-button[data-v-e37d1ae4]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .mobile-more-button[data-v-e37d1ae4]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder-container[data-v-e37d1ae4]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-e37d1ae4]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-e37d1ae4],.upload-folder-container[data-v-e37d1ae4]{right:58px}}.upload-folder[data-v-e37d1ae4]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-e37d1ae4]{width:200px}@media (max-width:768px){.upload-folder[data-v-e37d1ae4]{width:80px;height:2rem}.upload-folder.active[data-v-e37d1ae4]{width:120px}}.directory-tree-trigger[data-v-e37d1ae4]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-e37d1ae4]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc;transform:scale(1.1)}html.dark .directory-tree-trigger[data-v-e37d1ae4]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.directory-tree-trigger[data-v-e37d1ae4]{width:2rem;height:2rem}}.upload-folder[data-v-e37d1ae4] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-e37d1ae4] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-e37d1ae4] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-e37d1ae4] .el-input__wrapper:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-e37d1ae4] .el-input__wrapper:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar[data-v-e37d1ae4]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid #d9dce2;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}html.dark .quick-toolbar[data-v-e37d1ae4]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.quick-toolbar-button[data-v-e37d1ae4]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-e37d1ae4]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-e37d1ae4]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-e37d1ae4]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-e37d1ae4]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-e37d1ae4]{margin-top:4px}.quick-toolbar-icon[data-v-e37d1ae4]{font-size:16px}.quick-toolbar-toggle-icon[data-v-e37d1ae4]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-e37d1ae4]{transform:rotate(0deg)}.info-container[data-v-e37d1ae4]:hover,.quick-toolbar-button[data-v-e37d1ae4]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-e37d1ae4]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .quick-toolbar[data-v-e37d1ae4]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar-button[data-v-e37d1ae4]:hover{transform:none}.toggle-dark-button[data-v-e37d1ae4]:hover,.upload-method-button[data-v-e37d1ae4]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark-button[data-v-e37d1ae4]:hover,html.dark .upload-method-button[data-v-e37d1ae4]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder[data-v-e37d1ae4]:hover .el-input__wrapper{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-e37d1ae4]:hover .el-input__wrapper{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.quick-toolbar[data-v-e37d1ae4]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-e37d1ae4]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-e37d1ae4]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-e37d1ae4]{gap:2px}.quick-toolbar-more[data-v-e37d1ae4]{margin-top:3px}.quick-toolbar-icon[data-v-e37d1ae4]{font-size:14px}}[data-v-e37d1ae4] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-e37d1ae4]{display:flex;justify-content:center;margin-top:20px}.header[data-v-e37d1ae4]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-e37d1ae4]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-e37d1ae4 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-e37d1ae4]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-e37d1ae4]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-e37d1ae4]:hover:after{width:80%}.main-title[data-v-e37d1ae4]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-e37d1ae4]{opacity:0}.title[data-v-e37d1ae4]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-e37d1ae4]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-e37d1ae4]{animation:crayonWrite-e37d1ae4 .82s steps(18) forwards,crayonScratch-e37d1ae4 .16s steps(2) .82s 3}@keyframes float-e37d1ae4{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-e37d1ae4{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-e37d1ae4{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-e37d1ae4]{font-size:1.55rem;letter-spacing:1px}.title[data-v-e37d1ae4]:hover{transform:scale(1.05)}}.upload-home[data-v-e37d1ae4]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-e37d1ae4]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-e37d1ae4]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-e37d1ae4]{padding-bottom:5px}.upload[data-v-e37d1ae4]{top:-3.8vh}}.footer[data-v-e37d1ae4]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/915.9e4a657d.css.gz b/frontend-dist/css/915.9e4a657d.css.gz new file mode 100644 index 00000000..c5675cb4 Binary files /dev/null and b/frontend-dist/css/915.9e4a657d.css.gz differ diff --git a/frontend-dist/css/917.8529ad1e.css b/frontend-dist/css/917.8529ad1e.css deleted file mode 100644 index f455ee48..00000000 --- a/frontend-dist/css/917.8529ad1e.css +++ /dev/null @@ -1 +0,0 @@ -.blocked-container[data-v-76cc7d3a]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,linear-gradient(135deg,#ff6b6b 0,#ee5a24 100%));color:var(--text-color,#333)}.background-wrapper[data-v-76cc7d3a]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.blocked-content[data-v-76cc7d3a]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);backdrop-filter:blur(20px);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1)}.back-button-wrapper[data-v-76cc7d3a]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-76cc7d3a]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:0 4px 20px rgba(0,0,0,.15);transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-76cc7d3a]:hover{transform:translateY(-2px) scale(1.1);box-shadow:0 6px 25px rgba(0,0,0,.2);background:var(--primary-color,#409eff);color:#fff}.status-animation[data-v-76cc7d3a]{margin-bottom:2rem;position:relative}.status-icon[data-v-76cc7d3a]{position:relative;display:inline-block;margin-bottom:1rem}.ban-icon[data-v-76cc7d3a]{font-size:4rem;color:#f56c6c;animation:shake-76cc7d3a 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(245,108,108,.3))}.status-badge[data-v-76cc7d3a]{position:absolute;bottom:-5px;right:-5px;background:#e6a23c;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.2)}.exclamation-icon[data-v-76cc7d3a]{color:#fff;font-size:.9rem;animation:bounce-76cc7d3a 1.5s ease-in-out infinite}.status-info[data-v-76cc7d3a]{animation:fadeInUp-76cc7d3a 1s ease-out .5s both}.status-title[data-v-76cc7d3a]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.status-description[data-v-76cc7d3a]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-76cc7d3a]{font-size:.95rem;line-height:1.5;margin-bottom:2rem;opacity:.7;color:var(--text-color-secondary,#666);font-style:italic}.status-actions[data-v-76cc7d3a]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-76cc7d3a]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 15px rgba(0,0,0,.1);border:none;min-width:140px}.primary-btn[data-v-76cc7d3a]{background:var(--primary-color,#409eff);color:#fff}.secondary-btn[data-v-76cc7d3a]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-76cc7d3a]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.15)}.btn-icon[data-v-76cc7d3a]{margin-right:8px}.help-info[data-v-76cc7d3a]{animation:fadeInUp-76cc7d3a 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-76cc7d3a]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-76cc7d3a]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-76cc7d3a]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(64,158,255,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-76cc7d3a]:hover{background:var(--primary-color,#409eff);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(64,158,255,.3)}.powered-by[data-v-76cc7d3a]{animation:fadeInUp-76cc7d3a 1s ease-out 1.2s both;padding-top:1rem;border-top:1px solid hsla(0,0%,100%,.2);opacity:.8}.powered-by p[data-v-76cc7d3a]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-76cc7d3a]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-76cc7d3a]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-76cc7d3a]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-76cc7d3a]{position:absolute;background:hsla(0,87%,69%,.1);border-radius:50%;animation:floatShapes-76cc7d3a 8s ease-in-out infinite}.shape-1[data-v-76cc7d3a]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-76cc7d3a]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(230,162,60,.1)}.shape-3[data-v-76cc7d3a]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-76cc7d3a]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,100%,71%,.1)}.shape-5[data-v-76cc7d3a]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(238,90,36,.1)}@keyframes shake-76cc7d3a{0%,to{transform:rotate(0deg)}10%{transform:rotate(-3deg)}20%{transform:rotate(3deg)}30%{transform:rotate(-3deg)}40%{transform:rotate(3deg)}50%{transform:rotate(0deg)}}@keyframes bounce-76cc7d3a{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}@keyframes floatShapes-76cc7d3a{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-76cc7d3a{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.blocked-content[data-v-76cc7d3a]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-76cc7d3a]{top:-20px;right:-20px}.ban-icon[data-v-76cc7d3a]{font-size:3rem}.status-title[data-v-76cc7d3a]{font-size:1.5rem}.status-description[data-v-76cc7d3a]{font-size:1rem}.status-description-en[data-v-76cc7d3a]{font-size:.9rem}.status-actions[data-v-76cc7d3a]{flex-direction:column;align-items:center}.action-btn[data-v-76cc7d3a]{width:200px}.quick-links[data-v-76cc7d3a]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-76cc7d3a]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.blocked-content[data-v-76cc7d3a]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-76cc7d3a]{font-size:1.3rem}.status-description[data-v-76cc7d3a]{font-size:.95rem}.status-description-en[data-v-76cc7d3a]{font-size:.85rem}.ban-icon[data-v-76cc7d3a]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.blocked-container[data-v-76cc7d3a]{background:var(--bg-color,linear-gradient(135deg,#c0392b 0,#8e44ad 100%));color:var(--text-color,#e4e7ed)}.blocked-content[data-v-76cc7d3a]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-76cc7d3a],.status-title[data-v-76cc7d3a]{color:var(--text-color,#e4e7ed)}.help-text[data-v-76cc7d3a],.powered-by p[data-v-76cc7d3a],.status-description-en[data-v-76cc7d3a]{color:var(--text-color-secondary,#909399)}} \ No newline at end of file diff --git a/frontend-dist/css/917.8529ad1e.css.gz b/frontend-dist/css/917.8529ad1e.css.gz deleted file mode 100644 index 553a3a52..00000000 Binary files a/frontend-dist/css/917.8529ad1e.css.gz and /dev/null differ diff --git a/frontend-dist/css/967.3f3c6dac.css b/frontend-dist/css/967.3f3c6dac.css new file mode 100644 index 00000000..00f822bb --- /dev/null +++ b/frontend-dist/css/967.3f3c6dac.css @@ -0,0 +1 @@ +.not-found-container[data-v-59d53856]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,#6366f1);color:var(--text-color,#333)}.background-wrapper[data-v-59d53856]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.not-found-content[data-v-59d53856]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:none}.back-button-wrapper[data-v-59d53856]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-59d53856]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-59d53856]:hover{transform:scale(1.1);box-shadow:none;background:var(--primary-color,#2563eb);color:#fff}.error-animation[data-v-59d53856]{margin-bottom:2rem;position:relative}.error-number[data-v-59d53856]{font-size:6rem;font-weight:900;display:flex;justify-content:center;align-items:center;gap:.5rem;margin-bottom:1rem;text-shadow:0 0 20px rgba(0,0,0,.3);color:var(--primary-color,#2563eb)}.error-number span[data-v-59d53856]{display:inline-block;animation:bounce-59d53856 2s infinite;color:var(--not-found-title-text-color,#2563eb)}.error-number .four[data-v-59d53856]:first-child{animation-delay:-.5s}.error-number .zero[data-v-59d53856]{animation-delay:-.25s;color:#f56c6c;-webkit-text-fill-color:#f56c6c}.error-number .four[data-v-59d53856]:last-child{animation-delay:0s}.error-image[data-v-59d53856]{display:flex;justify-content:center;margin:1.5rem 0}.floating-image[data-v-59d53856]{width:100px;height:100px;-o-object-fit:contain;object-fit:contain;animation:float-59d53856 3s ease-in-out infinite;filter:drop-shadow(0 10px 20px rgba(0,0,0,.2));border-radius:20px;background:hsla(0,0%,100%,.1);padding:10px;border:1px solid hsla(0,0%,100%,.2)}.error-info[data-v-59d53856]{animation:fadeInUp-59d53856 1s ease-out .5s both}.error-title[data-v-59d53856]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);color:var(--not-found-title-text-color,#2563eb)}.error-description[data-v-59d53856]{font-size:1.1rem;line-height:1.6;margin-bottom:2rem;opacity:.8;color:var(--text-color-secondary,#666)}.error-actions[data-v-59d53856]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-59d53856]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:none;border:none;min-width:140px}.primary-btn[data-v-59d53856]{background:var(--primary-color,#2563eb);color:#fff}.secondary-btn[data-v-59d53856]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-59d53856]:hover{box-shadow:none}.btn-icon[data-v-59d53856]{margin-right:8px}.help-links[data-v-59d53856]{animation:fadeInUp-59d53856 1s ease-out 1s both}.help-text[data-v-59d53856]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-59d53856]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-59d53856]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(37,99,235,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-59d53856]:hover{background:var(--primary-color,#2563eb);color:#fff;box-shadow:none}.floating-elements[data-v-59d53856]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-59d53856]{position:absolute;background:rgba(37,99,235,.1);border-radius:50%;animation:floatShapes-59d53856 8s ease-in-out infinite}.shape-1[data-v-59d53856]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-59d53856]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-59d53856]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-59d53856]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-59d53856]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes bounce-59d53856{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-15px)}60%{transform:translateY(-8px)}}@keyframes float-59d53856{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-15px) rotate(5deg)}}@keyframes floatShapes-59d53856{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-59d53856{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.not-found-content[data-v-59d53856]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-59d53856]{top:-20px;right:-20px}.error-number[data-v-59d53856]{font-size:4rem;gap:.3rem}.error-title[data-v-59d53856]{font-size:1.5rem}.error-description[data-v-59d53856]{font-size:1rem}.error-actions[data-v-59d53856]{flex-direction:column;align-items:center}.action-btn[data-v-59d53856]{width:200px}.quick-links[data-v-59d53856]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-59d53856]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}.floating-image[data-v-59d53856]{width:80px;height:80px;border-radius:15px;padding:8px}}@media (prefers-color-scheme:dark){.not-found-container[data-v-59d53856]{background:var(--bg-color,#1f1f22);color:var(--text-color,#e4e7ed)}.not-found-content[data-v-59d53856]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.error-title[data-v-59d53856]{color:var(--text-color,#e4e7ed)}.error-description[data-v-59d53856],.help-text[data-v-59d53856]{color:var(--text-color-secondary,#a1a1aa)}} \ No newline at end of file diff --git a/frontend-dist/css/967.3f3c6dac.css.gz b/frontend-dist/css/967.3f3c6dac.css.gz new file mode 100644 index 00000000..d0f7aaf4 Binary files /dev/null and b/frontend-dist/css/967.3f3c6dac.css.gz differ diff --git a/frontend-dist/css/app.22746548.css b/frontend-dist/css/app.22746548.css new file mode 100644 index 00000000..cbaf790c --- /dev/null +++ b/frontend-dist/css/app.22746548.css @@ -0,0 +1 @@ +@font-face{font-family:Pacifico;src:url(/fonts/Pacifico-Regular.dc63ac94.woff2) format("woff2");font-display:swap}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#1d2129}nav{padding:30px}nav a{font-weight:700;color:#1d2129}nav a.router-link-exact-active{color:#2563eb}body{margin:0;padding:0;background-color:#f7f7f8}:focus-visible{outline:none}*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:root{--bg-color:#f7f7f8;--popper-bg-color:#fff;--popper-shadow:none;--image-preview-filter:none;--text-bg-color:#f2f3f5;--background-image-filter:none;--upload-list-card-bg-color:#fff;--upload-list-card-border:1px solid #e5e6eb;--upload-list-card-box-shadow:none;--upload-list-item-border:1px solid #e5e6eb;--upload-list-dashboard-bg-color:#fff;--upload-list-dashboard-shadow:none;--upload-list-file-icon-color:#2563eb;--el-upload-dragger-bg-color:#fafafb;--el-upload-dragger-border:2px dashed #c9cdd4;--el-upload-dragger-border-color:#c9cdd4;--el-upload-dragger-hover-box-shadow:none;--el-upload-dragger-uniform-color:#2563eb;--paste-card-textarea-border-color:#c9cdd4;--paste-card-textarea-box-shadow:none;--el-icon--upload-color:#2563eb;--upload-text-color:#4e5969;--upload-header-color:#1d2129;--upload-main-title-color:#1d2129;--upload-title-text-color:#4e5969;--upload-title-text-shadow:none;--upload-title-hover-glow:transparent;--upload-title-underline-bg:#2563eb;--upload-title-underline-shadow:none;--upload-title-crayon-deep:#1d2129;--upload-title-crayon-base:#1d2129;--upload-title-crayon-light:#4e5969;--upload-title-crayon-edge:#c9cdd4;--upload-title-crayon-fleck:transparent;--upload-title-crayon-burr:transparent;--upload-title-crayon-dust:transparent;--modern-action-group-bg:#f7f8fa;--modern-action-group-border:#e5e6eb;--logo-glow-color:transparent;--modern-action-group-shadow:none;--modern-action-group-hover-bg:#f2f3f5;--modern-action-group-hover-shadow:none;--upload-action-toolbar-bg:#fff;--upload-action-toolbar-border:#e5e6eb;--upload-action-toolbar-shadow:none;--upload-action-toolbar-hover-bg:#f7f8fa;--upload-action-toolbar-hover-border:#c9cdd4;--upload-action-toolbar-hover-shadow:none;--upload-action-btn-bg:transparent;--upload-action-btn-color:#4e5969;--upload-action-btn-shadow:none;--upload-action-btn-hover-bg:#f2f3f5;--upload-action-btn-hover-shadow:none;--upload-action-btn-active-shadow:none;--upload-action-copy-color:#2563eb;--upload-action-retry-color:#16a34a;--upload-action-danger-color:#dc2626;--upload-action-danger-bg:transparent;--upload-action-danger-hover-bg:#fef2f2;--upload-action-danger-hover-shadow:none;--file-name-bg:#f7f8fa;--file-name-border:#e5e6eb;--file-name-hover-bg:#f2f3f5;--file-name-hover-border:#c9cdd4;--upload-list-item-bg:#fff;--upload-list-item-border-color:#e5e6eb;--upload-list-item-shadow:none;--upload-list-item-hover-border:#c9cdd4;--upload-list-item-hover-shadow:none;--dashboard-title-bg:transparent;--toolbar-button-bg-color:#fff;--toolbar-button-shadow:none;--toolbar-button-shadow-hover:none;--toolbar-button-color:#4e5969;--page-footer-text-color:#59636e;--page-footer-name-color:#1d2129;--login-container-bg-color:#fff;--password-input-bg-color:#fff;--password-input-border:1px solid #e5e6eb;--login-title-color:#1d2129;--login-container-box-shadow:none;--login-container-hover-box-shadow:none;--login-submit-btn-bg-color:#2563eb;--login-title-glow-color:transparent;--login-input-underline-color:#2563eb;--login-input-underline-secondary-color:#3b82f6;--login-input-label-focus-color:#2563eb;--dialog-bg-color:#fff;--dialog-box-shadow:none;--tabs-dropdown-popper-bg-color:#fff;--tabs-dropdown-popper-shadow:none;--tabs-switcher-hover-bg:#f2f3f5;--tabs-switcher-border-color:#e5e6eb;--tabs-switcher-hover-border-color:#c9cdd4;--tabs-switcher-accent-color:#2563eb;--tabs-switcher-current-color:#2563eb;--tabs-switcher-current-bg:#eff6ff;--tabs-switcher-current-border-color:#2563eb;--tabs-switcher-current-shadow:none;--admin-header-content-bg-color:#fff;--admin-header-content-hover-bg-color:#f7f8fa;--admin-header-content-border-bottom:1px solid #e5e6eb;--admin-header-content-box-shadow:none;--admin-header-content-hover-box-shadow:none;--admin-container-bg-color:#f7f7f8;--admin-container-color:#1d2129;--admin-dashborad-stats-bg-color:#fff;--admin-dashborad-stats-hover-bg-color:#f7f8fa;--admin-dashboard-search-card-bg-color:#fff;--admin-dashboard-stats-shadow:none;--admin-dashboard-stats-hover-shadow:none;--admin-dashboard-search-card-box-shadow:none;--admin-dashboard-btn-color:#4e5969;--admin-dashboard-btn-bg-color:#fff;--admin-dashboard-btn-shadow:none;--admin-dashboard-btn-hover-shadow:none;--admin-dashboard-imgcard-bg-color:#fff;--admin-dashboard-imgcard-shadow:none;--admin-dashboard-tag-suggestion-bg-color:#fff;--admin-dashboard-tag-suggestion-border-color:#e5e6eb;--admin-dashboard-tag-suggestion-box-shadow:none;--admin-dashboard-tag-suggestion-item-hover-bg-color:#f7f8fa;--skeleton-bg-color:#e5e6eb;--skeleton-shimmer-color:#f7f8fa;--admin-cuscfg-table-shadow:none;--admin-cuscfg-table-bg-color:#fff;--admin-syscfg-tabs-border-color:#e5e6eb;--admin-purple:#6366f1;--admin-batch-toolbar-bg:#fff;--admin-batch-toolbar-border:#e5e6eb;--admin-batch-toolbar-shadow:none;--admin-batch-action-bg:transparent;--admin-batch-action-shadow:none;--admin-batch-action-hover-bg:#f2f3f5;--admin-batch-action-hover-shadow:none;--admin-batch-delete-color:#dc2626;--admin-batch-tag-color:#d97706;--admin-batch-clear-color:#4e5969;--theme-toggle-color:#1d2129;--theme-toggle-bg-color:#1d2129;--admin-theme-toggle-color:#1d2129;--admin-theme-toggle-bg-color:#1d2129;--not-found-title-text-color:#1d2129;--floating-btn-bg:#2563eb;--floating-btn-color:#fff;--floating-btn-shadow:none;--floating-btn-shadow-hover:none;--floating-btn-right:32px;--floating-btn-bottom:32px;--glass-bg:hsla(0,0%,100%,.45);--glass-bg-hover:hsla(0,0%,100%,.55);--glass-border:#d9dce2;--glass-border-hover:#bfc4cc;--glass-shadow:none;--glass-shadow-hover:none;--glass-header-bg:rgba(247,248,250,.45);--glass-header-border:#d9dce2;--el-text-color-primary:#1d2129;--el-text-color-regular:#4e5969;--el-text-color-secondary:#59636e;--el-text-color-placeholder:#86909c;--el-text-color-disabled:#c0c4cc;--el-border-color:#c9cdd4;--el-border-color-light:#d9dce2;--el-border-color-lighter:#e5e6eb;--el-border-color-extra-light:#eceef1;--el-border-radius-base:8px;--el-border-radius-small:6px;--el-fill-color:#f2f3f5;--el-fill-color-light:#f7f8fa;--el-fill-color-lighter:#fafafb;--el-fill-color-blank:#fff;--text-color:#1d2129;--text-color-secondary:#59636e;--login-input-icon-color:#86909c;--icon-color:#59636e;--placeholder-color:#86909c}.dark{--bg-color:#0a0a0b;--popper-bg-color:#161618;--popper-shadow:none;--image-preview-filter:brightness(0.7);--text-bg-color:#1f1f22;--background-image-filter:brightness(0.7);--upload-list-card-bg-color:#161618;--upload-list-card-border:1px solid #2a2a2e;--upload-list-card-box-shadow:none;--upload-list-item-border:1px solid #2a2a2e;--upload-list-dashboard-bg-color:#161618;--upload-list-dashboard-shadow:none;--upload-list-file-icon-color:#60a5fa;--el-upload-dragger-bg-color:#131316;--el-upload-dragger-border:2px dashed #3a3a3f;--el-upload-dragger-border-color:#3a3a3f;--el-upload-dragger-hover-box-shadow:none;--el-upload-dragger-uniform-color:#60a5fa;--paste-card-textarea-border-color:#3a3a3f;--paste-card-textarea-box-shadow:none;--el-icon--upload-color:#60a5fa;--upload-text-color:#a1a1aa;--upload-header-color:#fafafa;--upload-main-title-color:#fafafa;--upload-title-text-color:#a1a1aa;--upload-title-text-shadow:none;--upload-title-hover-glow:transparent;--upload-title-underline-bg:#60a5fa;--upload-title-underline-shadow:none;--upload-title-crayon-deep:#fafafa;--upload-title-crayon-base:#fafafa;--upload-title-crayon-light:#a1a1aa;--upload-title-crayon-edge:#3a3a3f;--upload-title-crayon-fleck:transparent;--upload-title-crayon-burr:transparent;--upload-title-crayon-dust:transparent;--toolbar-button-bg-color:#161618;--toolbar-button-shadow:none;--toolbar-button-shadow-hover:none;--toolbar-button-color:#a1a1aa;--modern-action-group-bg:#131316;--modern-action-group-border:#2a2a2e;--logo-glow-color:transparent;--modern-action-group-shadow:none;--modern-action-group-hover-bg:#1f1f22;--modern-action-group-hover-shadow:none;--upload-action-toolbar-bg:#161618;--upload-action-toolbar-border:#2a2a2e;--upload-action-toolbar-shadow:none;--upload-action-toolbar-hover-bg:#1f1f22;--upload-action-toolbar-hover-border:#3a3a3f;--upload-action-toolbar-hover-shadow:none;--upload-action-btn-bg:transparent;--upload-action-btn-color:#a1a1aa;--upload-action-btn-shadow:none;--upload-action-btn-hover-bg:#1f1f22;--upload-action-btn-hover-shadow:none;--upload-action-btn-active-shadow:none;--upload-action-copy-color:#60a5fa;--upload-action-retry-color:#4ade80;--upload-action-danger-color:#f87171;--upload-action-danger-bg:transparent;--upload-action-danger-hover-bg:hsla(0,91%,71%,.12);--upload-action-danger-hover-shadow:none;--file-name-bg:#1f1f22;--file-name-border:#2a2a2e;--file-name-hover-bg:#26262a;--file-name-hover-border:#3a3a3f;--upload-list-item-bg:#161618;--upload-list-item-border-color:#2a2a2e;--upload-list-item-shadow:none;--upload-list-item-hover-border:#3a3a3f;--upload-list-item-hover-shadow:none;--dashboard-title-bg:transparent;--page-footer-text-color:#71717a;--page-footer-name-color:#a1a1aa;--login-container-bg-color:#161618;--password-input-bg-color:#131316;--password-input-border:1px solid #2a2a2e;--login-title-color:#fafafa;--login-container-box-shadow:none;--login-container-hover-box-shadow:none;--login-submit-btn-bg-color:#4a5d9b;--login-title-glow-color:transparent;--login-input-underline-color:#60a5fa;--login-input-underline-secondary-color:#3b82f6;--login-input-label-focus-color:#60a5fa;--dialog-bg-color:#161618;--dialog-box-shadow:none;--tabs-dropdown-popper-bg-color:#161618;--tabs-dropdown-popper-shadow:none;--tabs-switcher-hover-bg:#1f1f22;--tabs-switcher-border-color:#2a2a2e;--tabs-switcher-hover-border-color:#3a3a3f;--tabs-switcher-accent-color:#60a5fa;--tabs-switcher-current-color:#60a5fa;--tabs-switcher-current-bg:rgba(59,130,246,.14);--tabs-switcher-current-border-color:#3b82f6;--tabs-switcher-current-shadow:none;--admin-header-content-bg-color:#161618;--admin-header-content-hover-bg-color:#1f1f22;--admin-header-content-border-bottom:1px solid #2a2a2e;--admin-header-content-box-shadow:none;--admin-header-content-hover-box-shadow:none;--admin-container-bg-color:#0a0a0b;--admin-container-color:#fafafa;--admin-dashborad-stats-bg-color:#161618;--admin-dashborad-stats-hover-bg-color:#1f1f22;--admin-dashboard-stats-shadow:none;--admin-dashboard-stats-hover-shadow:none;--admin-dashboard-search-card-bg-color:#161618;--admin-dashboard-search-card-box-shadow:none;--admin-dashboard-btn-color:#a1a1aa;--admin-dashboard-btn-bg-color:#161618;--admin-dashboard-btn-shadow:none;--admin-dashboard-btn-hover-shadow:none;--admin-dashboard-imgcard-bg-color:#161618;--admin-dashboard-imgcard-shadow:none;--admin-dashboard-tag-suggestion-bg-color:#161618;--admin-dashboard-tag-suggestion-border-color:#2a2a2e;--admin-dashboard-tag-suggestion-box-shadow:none;--admin-dashboard-tag-suggestion-item-hover-bg-color:#1f1f22;--skeleton-bg-color:#1f1f22;--skeleton-shimmer-color:#26262a;--admin-cuscfg-table-shadow:none;--admin-cuscfg-table-bg-color:#161618;--admin-syscfg-tabs-border-color:#2a2a2e;--theme-toggle-color:#d4d4d8;--theme-toggle-bg-color:#e4e4e7;--admin-theme-toggle-color:#d4d4d8;--admin-theme-toggle-bg-color:#e4e4e7;--admin-batch-toolbar-bg:#161618;--admin-batch-toolbar-border:#2a2a2e;--admin-batch-toolbar-shadow:none;--admin-batch-action-bg:transparent;--admin-batch-action-shadow:none;--admin-batch-action-hover-bg:#1f1f22;--admin-batch-action-hover-shadow:none;--admin-batch-delete-color:#f87171;--admin-batch-tag-color:#fbbf24;--admin-batch-clear-color:#a1a1aa;--not-found-title-text-color:#fafafa;--floating-btn-bg:#3b82f6;--floating-btn-color:#fff;--floating-btn-shadow:none;--floating-btn-shadow-hover:none;--glass-bg:rgba(22,22,24,.5);--glass-bg-hover:rgba(35,35,35,.6);--glass-border:#34343a;--glass-border-hover:#4a4a52;--glass-shadow:none;--glass-shadow-hover:none;--glass-header-bg:rgba(31,31,34,.5);--glass-header-border:#34343a;--el-text-color-primary:#fafafa;--el-text-color-regular:#c8c9cc;--el-text-color-secondary:#a1a1aa;--el-text-color-placeholder:#6b6b73;--el-text-color-disabled:#4a4a52;--el-border-color:#34343a;--el-border-color-light:#2a2a2e;--el-border-color-lighter:#26262a;--el-border-color-extra-light:#1f1f22;--el-fill-color:#1f1f22;--el-fill-color-light:#1a1a1d;--el-fill-color-lighter:#161618;--el-fill-color-blank:#161618;--el-bg-color:#161618;--el-bg-color-page:#0a0a0b;--el-bg-color-overlay:#1f1f22;--el-color-primary:#4a5d9b;--el-color-primary-light-3:#5e73b5;--el-color-primary-light-5:#768cc6;--el-color-primary-light-7:#98a9d5;--el-color-primary-light-8:#b0bde0;--el-color-primary-light-9:#ccd4ec;--el-color-primary-dark-2:#3a4b80;--text-color:#fafafa;--text-color-secondary:#a1a1aa;--login-input-icon-color:#71717a;--icon-color:#a1a1aa;--placeholder-color:#6b6b73}.el-message{border-radius:10px!important;border:1px solid var(--glass-border)!important;padding:10px 20px!important;box-shadow:var(--glass-shadow)!important;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);min-width:unset!important;top:30px!important}.el-message .el-message__icon{font-size:18px!important;color:var(--el-text-color-primary)!important}.el-message .el-message__content{font-size:16px!important;font-weight:500!important;color:var(--el-text-color-primary)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;letter-spacing:.5px}.el-message--success .el-message__icon{color:#67c23a!important}.el-message--warning .el-message__icon{color:#e6a23c!important}.el-message--error .el-message__icon{color:#f56c6c!important}.dark .el-message{background-color:var(--glass-bg)!important;border:1px solid var(--glass-border)!important;box-shadow:var(--glass-shadow)!important}.dialog-section{margin-bottom:24px;background:var(--el-fill-color-lighter);border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:14px;transition:color .2s}.section-help-icon:hover{color:var(--el-color-primary)}.section-content{display:flex;flex-direction:column;gap:16px}.radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.radio-card-group .radio-card.is-checked{background:#eff6ff;border-color:var(--el-color-primary)}.dark .radio-card-group .radio-card.is-checked{background:rgba(74,93,155,.18);border-color:var(--el-color-primary-light-5)}.radio-card-group .el-radio__input{display:none}.radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color-lighter)}.setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.setting-input{width:60%;max-width:250px}.dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.confirm-btn{min-width:100px;border-radius:8px}@media (max-width:768px){.el-message{padding:8px 18px!important;border-radius:30px!important}.el-message .el-message__icon{font-size:14px!important}.el-message .el-message__content{font-size:13px!important}.dialog-section{padding:12px}.radio-card-group{flex-direction:column}.radio-card-group .radio-card{width:100%;text-align:center}.setting-item{flex-direction:column;align-items:flex-start;gap:10px}.setting-item .radio-card-group.compact{width:100%}.setting-input{width:100%;max-width:none}.radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;justify-content:center;gap:6px}.radio-card-group.compact .channel-icon{width:18px;font-size:18px;text-align:center;flex-shrink:0}}.slider-item{flex-direction:column;align-items:flex-start;gap:12px}.slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.slider-wrapper .el-slider{flex:1;min-width:0}.slider-input{width:80px!important;flex-shrink:0}.slider-input .el-input__wrapper{padding:0 8px}.slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.slider-wrapper{gap:8px;width:100%}.slider-input{width:80px!important}.setting-input{width:100%!important;max-width:none!important}.dialog-section{overflow:hidden}.radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.radio-card-group.grid-2x2 .radio-card{padding:10px 12px;font-size:13px;justify-content:center}}.inline-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon:hover{color:var(--el-color-primary)}.radio-card-group.compact{gap:8px}.radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.radio-card-group.compact .channel-icon{width:18px;font-size:18px;text-align:center;flex-shrink:0}.channel-brand-telegram{color:#229ed9!important}.channel-brand-cfr2{color:#f38020!important}.channel-brand-s3{color:#f90!important}.channel-brand-discord{color:#5865f2!important}.channel-brand-huggingface{color:#ff9d00!important}.channel-brand-webdav{color:#14b8a6!important}.radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (min-width:769px){.radio-card-group.grid-2x2 .radio-card{justify-content:flex-start;padding-left:20px}}.radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.radio-card.is-checked .radio-icon{opacity:1}.el-dialog,.el-message-box{border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow)!important;border:1px solid var(--glass-border);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.el-dialog__header,.el-message-box__header{border-bottom:none;padding:16px 20px!important;margin-right:0!important;position:relative}.el-dialog__header:after,.el-message-box__header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px;background:#e5e6eb}.el-dialog__body,.el-message-box__content{padding:20px!important}.el-dialog__footer,.el-message-box__btns{border-top:none;padding:12px 20px!important;background-color:transparent}.dark .el-dialog,.dark .el-message-box{background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border)!important;box-shadow:var(--glass-shadow)!important}.dark .el-dialog__header,.dark .el-message-box__header{border-bottom:none}.dark .el-dialog__header:after,.dark .el-message-box__header:after{background:#2a2a2e}.dark .el-dialog__footer,.dark .el-message-box__btns{border-top:none;background-color:transparent}.dark .el-dialog__title,.dark .el-message-box__title{color:#e5eaf3}.dark .el-message-box__content{color:#cfd3dc}.dark .el-button--primary{--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2)}.dark .el-pager li.is-active{background-color:var(--el-color-primary);color:#fff}.dark .el-pager li{color:#a1a1aa}.dark .el-pagination .btn-next,.dark .el-pagination .btn-prev,.dark .el-pagination button{background-color:transparent;color:#a1a1aa}.dark .el-input__wrapper.is-focus,.dark .el-select__wrapper.is-focused,.dark .el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-color-primary-light-5) inset!important}.dark .el-cascader__dropdown__item.hover,.dark .el-cascader__dropdown__item.is-active,.dark .el-select-dropdown__item.is-hovering,.dark .el-select-dropdown__item.is-selected{background-color:rgba(74,93,155,.18)!important;color:var(--el-color-primary-light-7)!important}.dark .el-switch.is-checked .el-switch__core{background-color:var(--el-color-primary)!important;border-color:var(--el-color-primary)!important}.dark .el-tabs__active-bar,.dark .el-tabs__item.is-active{color:var(--el-color-primary-light-7)}.dark .el-tabs__item.is-active:after{background-color:var(--el-color-primary)}.dark .el-checkbox__input.is-checked .el-checkbox__inner,.dark .el-radio__input.is-checked .el-radio__inner{background-color:var(--el-color-primary)!important;border-color:var(--el-color-primary)!important}.dark .el-checkbox__input.is-checked+.el-checkbox__label,.dark .el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary-light-7)!important}.el-loading-mask{border-radius:12px}.el-dropdown__popper.el-popper{border-radius:12px;border:1px solid #e5e6eb;background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow)}.el-dropdown__popper.el-popper .el-dropdown-menu,.el-dropdown__popper.el-popper .el-dropdown-menu__item{background:none;border:none}.el-popper.is-light>.el-popper__arrow:before{background:none!important;border:none!important}*,body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.os-theme-dark{--os-handle-bg:hsla(0,0%,50%,.5);--os-handle-bg-hover:hsla(0,0%,50%,.7);--os-handle-bg-active:hsla(0,0%,50%,.85)}.dark .os-theme-dark,html.dark .os-theme-dark{--os-handle-bg:hsla(0,0%,71%,.6);--os-handle-bg-hover:hsla(0,0%,71%,.75);--os-handle-bg-active:hsla(0,0%,71%,.9)}.os-theme-dark .os-scrollbar,.os-theme-dark .os-scrollbar-horizontal,.os-theme-dark .os-scrollbar-vertical{--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-bg:transparent;--os-track-bg-hover:transparent;--os-track-bg-active:transparent}.os-theme-dark .os-scrollbar .os-scrollbar-handle{border-radius:10px!important;transition:background-color .2s ease,opacity .2s ease!important}.background-image1:not([src]),.background-image2:not([src]){display:none}#themeToggle,.action-card,.breadcrumb,.breadcrumb-view-toggle,.channel-card,.channel-group,.chart-card,.custom-select-dropdown,.custom-select-trigger,.directory-tree-trigger,.el-card,.el-dialog,.el-dropdown__popper.el-popper,.el-message-box,.first-settings .el-form,.img-card,.language-switcher,.login-container,.mobile-directory-trigger,.mobile-more-button,.more-button,.overview-card,.page-jump .el-input__wrapper,.quick-toolbar,.refresh-btn,.stats-badge,.toggle-dark,.toggle-dark-button,.token-table,.upload-list-card,.upload-list-item,.upload-method-button{background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}html.dark #themeToggle,html.dark .action-card,html.dark .breadcrumb,html.dark .breadcrumb-view-toggle,html.dark .channel-card,html.dark .channel-group,html.dark .chart-card,html.dark .custom-select-dropdown,html.dark .custom-select-trigger,html.dark .directory-tree-trigger,html.dark .el-card,html.dark .el-dialog,html.dark .el-dropdown__popper.el-popper,html.dark .el-message-box,html.dark .first-settings .el-form,html.dark .img-card,html.dark .language-switcher,html.dark .login-container,html.dark .mobile-directory-trigger,html.dark .mobile-more-button,html.dark .more-button,html.dark .overview-card,html.dark .page-jump .el-input__wrapper,html.dark .quick-toolbar,html.dark .refresh-btn,html.dark .stats-badge,html.dark .toggle-dark,html.dark .toggle-dark-button,html.dark .token-table,html.dark .upload-list-card,html.dark .upload-list-item,html.dark .upload-method-button{background-color:var(--glass-bg)!important}body:has(#bg1[src]){background-color:transparent!important}body:has(#bg1[src]) .blocked-container,body:has(#bg1[src]) .container,body:has(#bg1[src]) .login,body:has(#bg1[src]) .not-found-container,body:has(#bg1[src]) .upload-home,body:has(#bg1[src]) .whitelist-container{background:transparent!important;background-color:transparent!important} \ No newline at end of file diff --git a/frontend-dist/css/app.22746548.css.gz b/frontend-dist/css/app.22746548.css.gz new file mode 100644 index 00000000..89e8ded0 Binary files /dev/null and b/frontend-dist/css/app.22746548.css.gz differ diff --git a/frontend-dist/css/app.a5d6bf3c.css b/frontend-dist/css/app.a5d6bf3c.css deleted file mode 100644 index df853236..00000000 --- a/frontend-dist/css/app.a5d6bf3c.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Pacifico;src:url(/fonts/Pacifico-Regular.dc63ac94.woff2) format("woff2");font-display:swap}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}nav{padding:30px}nav a{font-weight:700;color:#2c3e50}nav a.router-link-exact-active{color:#42b983}body{margin:0;padding:0;background-color:#f8f8f8}:focus-visible{outline:none}*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:root{--bg-color:linear-gradient(90deg,#efe8e8,#e4f8ff);--popper-bg-color:hsla(0,0%,100%,.8);--popper-shadow:0 0 10px 2px rgba(0,0,0,.1);--image-preview-filter:brightness(1);--text-bg-color:rgba(0,0,0,.1);--background-image-filter:brightness(1);--upload-list-card-bg-color:hsla(0,0%,100%,.7);--upload-list-card-border:1px solid #327ecc50;--upload-list-card-box-shadow:1px 2px 5px 1px #327ecc50;--upload-list-item-border:1px solid #a5bef7;--upload-list-dashboard-bg-color:hsla(0,0%,100%,.7);--upload-list-dashboard-shadow:0 2px 10px rgba(0,0,0,.1);--upload-list-file-icon-color:#327ecc;--el-upload-dragger-bg-color:hsla(0,0%,100%,.6);--el-upload-dragger-border:3px dashed #409eff;--el-upload-dragger-border-color:#409eff;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #409eff;--el-upload-dragger-uniform-color:#409eff;--paste-card-textarea-border-color:#409eff;--paste-card-textarea-box-shadow:0 0 6px 1px #409eff;--el-icon--upload-color:#1f8bf8;--upload-text-color:rgba(58,58,58,.8);--upload-header-color:rgba(58,58,58,.8);--upload-main-title-color:linear-gradient(90deg,#a1e3cc,#78aeec);--upload-title-text-color:rgba(58,58,58,.8);--upload-title-text-shadow:none;--upload-title-hover-glow:rgba(64,158,255,.32);--upload-title-underline-bg:linear-gradient(90deg,transparent,rgba(161,227,204,.7),rgba(120,174,236,.85),transparent);--upload-title-underline-shadow:0 0 10px rgba(120,174,236,.36);--upload-title-crayon-deep:rgba(72,151,211,.78);--upload-title-crayon-base:rgba(116,186,232,.78);--upload-title-crayon-light:rgba(222,246,255,.9);--upload-title-crayon-edge:rgba(60,139,201,.38);--upload-title-crayon-fleck:hsla(0,0%,100%,.46);--upload-title-crayon-burr:rgba(76,154,213,.3);--upload-title-crayon-dust:rgba(118,183,224,.18);--modern-action-group-bg:rgba(64,158,255,.08);--modern-action-group-border:rgba(64,158,255,.15);--logo-glow-color:#409eff;--modern-action-group-shadow:rgba(0,0,0,.06);--modern-action-group-hover-bg:rgba(64,158,255,.12);--modern-action-group-hover-shadow:rgba(64,158,255,.15);--upload-action-toolbar-bg:rgba(230,241,247,.58);--upload-action-toolbar-border:rgba(180,212,226,.42);--upload-action-toolbar-shadow:0 8px 22px rgba(64,120,150,.07),inset 0 1px 0 hsla(0,0%,100%,.38);--upload-action-toolbar-hover-bg:rgba(220,236,244,.68);--upload-action-toolbar-hover-border:rgba(156,199,219,.46);--upload-action-toolbar-hover-shadow:0 10px 26px rgba(64,120,150,.1),inset 0 1px 0 hsla(0,0%,100%,.44);--upload-action-btn-bg:hsla(0,0%,100%,.5);--upload-action-btn-color:#327ecc;--upload-action-btn-shadow:inset 0 1px 0 hsla(0,0%,100%,.45);--upload-action-btn-hover-bg:hsla(0,0%,100%,.74);--upload-action-btn-hover-shadow:0 6px 14px rgba(67,102,122,.12),inset 0 1px 0 hsla(0,0%,100%,.66);--upload-action-btn-active-shadow:inset 0 2px 6px rgba(20,50,70,.1);--upload-action-copy-color:#2f86c9;--upload-action-retry-color:#3a9b78;--upload-action-danger-color:#d86666;--upload-action-danger-bg:hsla(0,100%,98%,.58);--upload-action-danger-hover-bg:hsla(0,100%,97%,.78);--upload-action-danger-hover-shadow:0 6px 14px hsla(0,59%,62%,.14),inset 0 1px 0 hsla(0,0%,100%,.7);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.08),rgba(64,158,255,.03));--file-name-border:rgba(64,158,255,.12);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.06));--file-name-hover-border:rgba(64,158,255,.2);--upload-list-item-bg:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));--upload-list-item-border-color:rgba(64,158,255,.1);--upload-list-item-shadow:rgba(0,0,0,.04);--upload-list-item-hover-border:rgba(64,158,255,.25);--upload-list-item-hover-shadow:rgba(64,158,255,.12);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.06),transparent);--toolbar-button-bg-color:hsla(0,0%,100%,.5);--toolbar-button-shadow:1px 2px 4px rgba(0,0,0,.3);--toolbar-button-shadow-hover:1px 2px 4px rgba(0,0,0,.5);--toolbar-button-color:#327ecc;--page-footer-text-color:rgba(58,58,58,.8);--page-footer-name-color:rgba(12,76,105,.8);--login-container-bg-color:hsla(0,0%,100%,.6);--password-input-bg-color:hsla(0,0%,100%,.9);--password-input-border:1px solid #dcdfe6;--login-title-color:#000;--login-container-box-shadow:0 0 12px rgba(0,0,0,.12);--login-container-hover-box-shadow:0 0 12px 4px rgba(0,0,0,.24);--login-submit-btn-bg-color:#487cb0e8;--login-title-glow-color:rgba(52,152,219,.5);--login-input-underline-color:#5b9bd3;--login-input-underline-secondary-color:#7ba9d8;--login-input-label-focus-color:#5b9bd3;--dialog-bg-color:hsla(0,0%,100%,.7);--dialog-box-shadow:0 0 10px 2px rgba(0,0,0,.1);--tabs-dropdown-popper-bg-color:hsla(0,0%,100%,.94);--tabs-dropdown-popper-shadow:0 12px 30px rgba(36,54,72,.16),0 2px 8px rgba(36,54,72,.08);--tabs-switcher-hover-bg:rgba(91,128,148,.1);--tabs-switcher-border-color:rgba(91,128,148,.16);--tabs-switcher-hover-border-color:rgba(91,128,148,.24);--tabs-switcher-accent-color:#4aa3d8;--tabs-switcher-current-color:#2f7da6;--tabs-switcher-current-bg:linear-gradient(135deg,rgba(124,211,255,.2),rgba(166,235,199,.16) 52%,rgba(255,190,213,.18));--tabs-switcher-current-border-color:rgba(78,170,213,.24);--tabs-switcher-current-shadow:0 6px 16px rgba(78,170,213,.1);--admin-header-content-bg-color:hsla(0,0%,100%,.75);--admin-header-content-hover-bg-color:hsla(0,0%,100%,.85);--admin-header-content-border-bottom:1px solid rgba(0,0,0,.1);--admin-header-content-box-shadow:0 4px 6px rgba(0,0,0,.1);--admin-header-content-hover-box-shadow:0 6px 10px rgba(0,0,0,.2);--admin-container-bg-color:linear-gradient(90deg,#fdf3f6,#e4f8ff);--admin-container-color:#333;--admin-dashborad-stats-bg-color:hsla(0,0%,100%,.9);--admin-dashborad-stats-hover-bg-color:#f0eaf8;--admin-dashboard-search-card-bg-color:hsla(0,0%,100%,.9);--admin-dashboard-stats-shadow:0 2px 4px rgba(0,0,0,.05);--admin-dashboard-stats-hover-shadow:0 4px 6px rgba(0,0,0,.1);--admin-dashboard-search-card-box-shadow:0 2px 6px rgba(0,0,0,.1);--admin-dashboard-btn-color:#000;--admin-dashboard-btn-bg-color:hsla(0,0%,100%,.3);--admin-dashboard-btn-shadow:0 2px 4px rgba(0,0,0,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px rgba(0,0,0,.3);--admin-dashboard-imgcard-bg-color:hsla(0,0%,100%,.6);--admin-dashboard-imgcard-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-bg-color:#fff;--admin-dashboard-tag-suggestion-border-color:#dcdfe6;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#f5f7fa;--skeleton-bg-color:#e0e0e0;--skeleton-shimmer-color:hsla(0,0%,100%,.5);--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.1);--admin-cuscfg-table-bg-color:hsla(0,0%,100%,.95);--admin-syscfg-tabs-border-color:#3c3c3c4c;--admin-purple:#b39ddb;--admin-batch-toolbar-bg:rgba(247,251,252,.74);--admin-batch-toolbar-border:rgba(135,172,188,.24);--admin-batch-toolbar-shadow:0 10px 28px rgba(91,128,148,.1),inset 0 1px 0 hsla(0,0%,100%,.5);--admin-batch-action-bg:transparent;--admin-batch-action-shadow:none;--admin-batch-action-hover-bg:rgba(64,158,255,.08);--admin-batch-action-hover-shadow:none;--admin-batch-delete-color:#bd5864;--admin-batch-tag-color:#b98732;--admin-batch-clear-color:#728998;--theme-toggle-color:#327ecc;--theme-toggle-bg-color:#327ecc;--admin-theme-toggle-color:#000;--admin-theme-toggle-bg-color:#000;--not-found-title-text-color:linear-gradient(90deg,#6b9788,#6285ac);--floating-btn-bg:linear-gradient(135deg,#409eff,#66b1ff);--floating-btn-color:#fff;--floating-btn-shadow:0 4px 16px rgba(64,158,255,.4);--floating-btn-shadow-hover:0 8px 24px rgba(64,158,255,.5);--floating-btn-right:32px;--floating-btn-bottom:32px;--glass-bg:hsla(0,0%,100%,.45);--glass-bg-hover:hsla(0,0%,100%,.55);--glass-border:hsla(0,0%,100%,.5);--glass-border-hover:hsla(0,0%,100%,.6);--glass-shadow:0 4px 12px rgba(0,0,0,.06);--glass-shadow-hover:0 6px 16px rgba(0,0,0,.1);--glass-header-bg:hsla(0,0%,100%,.3);--glass-header-border:hsla(0,0%,100%,.4)}.dark{--bg-color:linear-gradient(90deg,#1c1c1c,#000);--popper-bg-color:rgba(0,0,0,.8);--popper-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--image-preview-filter:brightness(0.8);--text-bg-color:hsla(0,0%,100%,.1);--background-image-filter:brightness(0.6);--upload-list-card-bg-color:rgba(0,0,0,.7);--upload-list-card-border:1px solid #8fadc8;--upload-list-card-box-shadow:-1px 2px 4px #c1ddf5ae;--upload-list-item-border:1px solid #8fadc8;--upload-list-dashboard-bg-color:rgba(0,0,0,.7);--upload-list-dashboard-shadow:0 2px 10px hsla(0,0%,100%,.1);--upload-list-file-icon-color:#8fadc8;--el-upload-dragger-bg-color:rgba(0,0,0,.6);--el-upload-dragger-border:3px dashed #8fadc8;--el-upload-dragger-border-color:#8fadc8;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #8fadc8;--el-upload-dragger-uniform-color:#8fadc8;--paste-card-textarea-border-color:#8fadc8;--paste-card-textarea-box-shadow:0 0 6px 1px #8fadc8;--el-icon--upload-color:#ffebcd;--upload-text-color:#faebd7;--upload-header-color:#ffebcd;--upload-main-title-color:linear-gradient(90deg,#8fd3ff,#d7f4ff 55%,#a8d4f2);--upload-title-text-color:#cfe7f5;--upload-title-text-shadow:0 0 10px rgba(143,211,255,.16);--upload-title-hover-glow:rgba(143,211,255,.3);--upload-title-underline-bg:linear-gradient(90deg,transparent,rgba(143,211,255,.34),rgba(218,244,255,.86),hsla(0,0%,100%,.72),transparent);--upload-title-underline-shadow:0 0 12px rgba(143,211,255,.28),0 0 8px hsla(0,0%,100%,.12);--upload-title-crayon-deep:rgba(92,183,240,.96);--upload-title-crayon-base:rgba(137,211,252,.94);--upload-title-crayon-light:rgba(218,244,255,.9);--upload-title-crayon-edge:rgba(185,233,255,.6);--upload-title-crayon-fleck:hsla(0,0%,100%,.28);--upload-title-crayon-burr:rgba(62,156,220,.55);--upload-title-crayon-dust:rgba(96,180,236,.26);--toolbar-button-bg-color:rgba(0,0,0,.7);--toolbar-button-shadow:-1px 2px 4px hsla(0,0%,100%,.3);--toolbar-button-shadow-hover:-1px 2px 4px hsla(0,0%,100%,.5);--toolbar-button-color:#bedefd;--modern-action-group-bg:rgba(64,158,255,.12);--modern-action-group-border:rgba(64,158,255,.2);--logo-glow-color:#8fadc8;--modern-action-group-shadow:rgba(0,0,0,.2);--modern-action-group-hover-bg:rgba(64,158,255,.18);--modern-action-group-hover-shadow:rgba(64,158,255,.25);--upload-action-toolbar-bg:rgba(18,24,30,.56);--upload-action-toolbar-border:rgba(190,222,253,.14);--upload-action-toolbar-shadow:0 8px 22px rgba(0,0,0,.24),inset 0 1px 0 hsla(0,0%,100%,.06);--upload-action-toolbar-hover-bg:rgba(28,36,44,.68);--upload-action-toolbar-hover-border:rgba(190,222,253,.22);--upload-action-toolbar-hover-shadow:0 10px 26px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08);--upload-action-btn-bg:hsla(0,0%,100%,.06);--upload-action-btn-color:#bedefd;--upload-action-btn-shadow:inset 0 1px 0 hsla(0,0%,100%,.06);--upload-action-btn-hover-bg:hsla(0,0%,100%,.1);--upload-action-btn-hover-shadow:0 6px 14px rgba(0,0,0,.22),inset 0 1px 0 hsla(0,0%,100%,.09);--upload-action-btn-active-shadow:inset 0 2px 6px rgba(0,0,0,.28);--upload-action-copy-color:#9ccdf7;--upload-action-retry-color:#9ddfbe;--upload-action-danger-color:#f0a8a8;--upload-action-danger-bg:hsla(0,87%,69%,.08);--upload-action-danger-hover-bg:hsla(0,87%,69%,.14);--upload-action-danger-hover-shadow:0 6px 14px rgba(0,0,0,.22),inset 0 1px 0 hsla(0,0%,100%,.08);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.05));--file-name-border:rgba(64,158,255,.18);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.18),rgba(64,158,255,.08));--file-name-hover-border:rgba(64,158,255,.3);--upload-list-item-bg:linear-gradient(135deg,rgba(30,30,30,.9),rgba(40,40,40,.7));--upload-list-item-border-color:rgba(64,158,255,.15);--upload-list-item-shadow:rgba(0,0,0,.15);--upload-list-item-hover-border:rgba(64,158,255,.35);--upload-list-item-hover-shadow:rgba(64,158,255,.2);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.1),transparent);--page-footer-text-color:#f0f8ff;--page-footer-name-color:#faebd7;--login-container-bg-color:rgba(0,0,0,.6);--password-input-bg-color:rgba(77,77,77,.8);--password-input-border:1px solid #919191;--login-title-color:#f0f8ff;--login-container-box-shadow:-3px 2px 12px hsla(0,0%,100%,.12);--login-container-hover-box-shadow:-3px 2px 12px 4px hsla(0,0%,100%,.24);--login-submit-btn-bg-color:#8fadc8b4;--login-title-glow-color:rgba(143,173,200,.7);--login-input-underline-color:#a3c5e5;--login-input-underline-secondary-color:#b8d0e8;--login-input-label-focus-color:#a3c5e5;--dialog-bg-color:rgba(0,0,0,.8);--dialog-box-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--tabs-dropdown-popper-bg-color:rgba(35,35,35,.94);--tabs-dropdown-popper-shadow:0 12px 30px rgba(0,0,0,.34),0 2px 8px rgba(0,0,0,.24);--tabs-switcher-hover-bg:hsla(0,0%,100%,.08);--tabs-switcher-border-color:hsla(0,0%,100%,.08);--tabs-switcher-hover-border-color:hsla(0,0%,100%,.14);--tabs-switcher-accent-color:#e2f5ff;--tabs-switcher-current-color:#e2f5ff;--tabs-switcher-current-bg:linear-gradient(135deg,rgba(143,211,255,.12),rgba(215,244,255,.1) 55%,rgba(168,212,242,.11));--tabs-switcher-current-border-color:rgba(168,212,242,.18);--tabs-switcher-current-shadow:0 6px 14px rgba(143,211,255,.06);--admin-header-content-bg-color:rgba(0,0,0,.75);--admin-header-content-hover-bg-color:rgba(0,0,0,.85);--admin-header-content-border-bottom:1px solid hsla(0,0%,100%,.1);--admin-header-content-box-shadow:0 4px 6px hsla(0,0%,100%,.1);--admin-header-content-hover-box-shadow:0 6px 10px hsla(0,0%,100%,.2);--admin-container-bg-color:linear-gradient(90deg,#464545,#2d2d2d);--admin-container-color:#f0f0f0;--admin-dashborad-stats-bg-color:rgba(0,0,0,.9);--admin-dashborad-stats-hover-bg-color:#1e1e1e;--admin-dashboard-stats-shadow:0 2px 4px hsla(0,0%,100%,.1);--admin-dashboard-stats-hover-shadow:0 4px 6px hsla(0,0%,100%,.15);--admin-dashboard-search-card-bg-color:rgba(0,0,0,.9);--admin-dashboard-search-card-box-shadow:0 2px 6px hsla(0,0%,100%,.1);--admin-dashboard-btn-color:#f0f0f0;--admin-dashboard-btn-bg-color:rgba(0,0,0,.3);--admin-dashboard-btn-shadow:0 2px 4px hsla(0,0%,100%,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px hsla(0,0%,100%,.3);--admin-dashboard-imgcard-bg-color:rgba(0,0,0,.6);--admin-dashboard-imgcard-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-bg-color:#2d2d2d;--admin-dashboard-tag-suggestion-border-color:#555;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#3a3a3a;--skeleton-bg-color:#3a3a3a;--skeleton-shimmer-color:hsla(0,0%,100%,.15);--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.3),0 0 1px 1px hsla(0,0%,100%,.05);--admin-cuscfg-table-bg-color:rgba(45,45,45,.95);--admin-syscfg-tabs-border-color:#cfcccc47;--theme-toggle-color:#bedefd;--theme-toggle-bg-color:#bedefd;--admin-theme-toggle-color:#fff;--admin-theme-toggle-bg-color:#fcfcfc;--admin-batch-toolbar-bg:rgba(30,37,43,.58);--admin-batch-toolbar-border:rgba(190,222,253,.1);--admin-batch-toolbar-shadow:0 10px 28px rgba(0,0,0,.22),inset 0 1px 0 hsla(0,0%,100%,.04);--admin-batch-action-bg:transparent;--admin-batch-action-shadow:none;--admin-batch-action-hover-bg:rgba(190,222,253,.09);--admin-batch-action-hover-shadow:none;--admin-batch-delete-color:#ee9aa4;--admin-batch-tag-color:#d8bd78;--admin-batch-clear-color:#bdcbd5;--not-found-title-text-color:linear-gradient(90deg,#effac3,#f3a060);--floating-btn-bg:linear-gradient(135deg,#409eff,#2d8cf0);--floating-btn-color:#fff;--floating-btn-shadow:0 4px 16px rgba(0,0,0,.4);--floating-btn-shadow-hover:0 8px 24px rgba(0,0,0,.5);--glass-bg:rgba(30,30,30,.6);--glass-bg-hover:rgba(40,40,40,.7);--glass-border:hsla(0,0%,100%,.1);--glass-border-hover:hsla(0,0%,100%,.15);--glass-shadow:0 4px 12px rgba(0,0,0,.2);--glass-shadow-hover:0 6px 16px rgba(0,0,0,.3);--glass-header-bg:hsla(0,0%,100%,.03);--glass-header-border:hsla(0,0%,100%,.08)}.el-message{border-radius:50px!important;border:none!important;padding:10px 30px!important;box-shadow:0 4px 16px rgba(0,0,0,.2)!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background-color:rgba(40,40,40,.85)!important;min-width:unset!important;top:30px!important}.el-message .el-message__icon{font-size:18px!important;color:#fff!important}.el-message .el-message__content{font-size:16px!important;font-weight:500!important;color:#fff!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;letter-spacing:.5px}.el-message--success .el-message__icon{color:#67c23a!important}.el-message--warning .el-message__icon{color:#e6a23c!important}.el-message--error .el-message__icon{color:#f56c6c!important}.dark .el-message{background-color:hsla(0,0%,100%,.2)!important;border:1px solid hsla(0,0%,100%,.1)!important;box-shadow:0 4px 16px rgba(0,0,0,.4)!important}.dialog-section{margin-bottom:24px;background:var(--el-fill-color-lighter);border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:14px;transition:color .2s}.section-help-icon:hover{color:var(--el-color-primary)}.section-content{display:flex;flex-direction:column;gap:16px}.radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.radio-card-group .radio-card.is-checked{background:linear-gradient(135deg,rgba(64,158,255,.1),rgba(56,189,248,.05));border-color:var(--el-color-primary)}.radio-card-group .el-radio__input{display:none}.radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color-lighter)}.setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.setting-input{width:60%;max-width:250px}.dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.confirm-btn{min-width:100px;border-radius:8px}@media (max-width:768px){.el-message{padding:8px 18px!important;border-radius:30px!important}.el-message .el-message__icon{font-size:14px!important}.el-message .el-message__content{font-size:13px!important}.dialog-section{padding:12px}.radio-card-group{flex-direction:column}.radio-card-group .radio-card{width:100%;text-align:center}.setting-item{flex-direction:column;align-items:flex-start;gap:10px}.setting-item .radio-card-group.compact{width:100%}.setting-input{width:100%;max-width:none}.radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;justify-content:center;gap:6px}.radio-card-group.compact .channel-icon{width:18px;font-size:18px;text-align:center;flex-shrink:0}}.slider-item{flex-direction:column;align-items:flex-start;gap:12px}.slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.slider-wrapper .el-slider{flex:1;min-width:0}.slider-input{width:80px!important;flex-shrink:0}.slider-input .el-input__wrapper{padding:0 8px}.slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.slider-wrapper{gap:8px;width:100%}.slider-input{width:80px!important}.setting-input{width:100%!important;max-width:none!important}.dialog-section{overflow:hidden}.radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.radio-card-group.grid-2x2 .radio-card{padding:10px 12px;font-size:13px;justify-content:center}}.inline-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon:hover{color:var(--el-color-primary)}.radio-card-group.compact{gap:8px}.radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.radio-card-group.compact .channel-icon{width:18px;font-size:18px;text-align:center;flex-shrink:0}.channel-brand-telegram{color:#229ed9!important}.channel-brand-cfr2{color:#f38020!important}.channel-brand-s3{color:#f90!important}.channel-brand-discord{color:#5865f2!important}.channel-brand-huggingface{color:#ff9d00!important}.channel-brand-webdav{color:#14b8a6!important}.radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (min-width:769px){.radio-card-group.grid-2x2 .radio-card{justify-content:flex-start;padding-left:20px}}.radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.radio-card.is-checked .radio-icon{opacity:1}.el-dialog,.el-message-box{border-radius:16px!important;overflow:hidden;box-shadow:0 12px 32px rgba(0,0,0,.2)!important;border:1px solid hsla(0,0%,100%,.5);background-color:hsla(0,0%,100%,.85)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.el-dialog__header,.el-message-box__header{border-bottom:none;padding:16px 20px!important;margin-right:0!important;position:relative}.el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.5) 20%,rgba(156,163,175,.8) 50%,rgba(156,163,175,.5) 80%,transparent)}.el-dialog__header:after,.el-message-box__header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px}.el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.8),rgba(156,163,175,.5) 30%,transparent 80%)}.el-dialog__body,.el-message-box__content{padding:20px!important}.el-dialog__footer,.el-message-box__btns{border-top:none;padding:12px 20px!important;background-color:transparent}.dark .el-dialog,.dark .el-message-box{background-color:rgba(30,30,30,.75)!important;border:1px solid hsla(0,0%,100%,.08)!important;box-shadow:0 12px 32px rgba(0,0,0,.5)!important}.dark .el-dialog__header,.dark .el-message-box__header{border-bottom:none}.dark .el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.3) 20%,rgba(156,163,175,.5) 50%,rgba(156,163,175,.3) 80%,transparent)}.dark .el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.5),rgba(156,163,175,.3) 30%,transparent 80%)}.dark .el-dialog__footer,.dark .el-message-box__btns{border-top:none;background-color:transparent}.dark .el-dialog__title,.dark .el-message-box__title{color:#e5eaf3}.dark .el-message-box__content{color:#cfd3dc}.el-loading-mask{border-radius:12px}.el-dropdown__popper.el-popper{border-radius:12px;border:none;background-color:var(--popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--popper-shadow)}.el-dropdown__popper.el-popper .el-dropdown-menu,.el-dropdown__popper.el-popper .el-dropdown-menu__item{background:none;border:none}.el-popper.is-light>.el-popper__arrow:before{background:none!important;border:none!important}*,body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.os-theme-dark{--os-handle-bg:hsla(0,0%,50%,.5);--os-handle-bg-hover:hsla(0,0%,50%,.7);--os-handle-bg-active:hsla(0,0%,50%,.85)}.dark .os-theme-dark,html.dark .os-theme-dark{--os-handle-bg:hsla(0,0%,71%,.6);--os-handle-bg-hover:hsla(0,0%,71%,.75);--os-handle-bg-active:hsla(0,0%,71%,.9)}.os-theme-dark .os-scrollbar,.os-theme-dark .os-scrollbar-horizontal,.os-theme-dark .os-scrollbar-vertical{--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-bg:transparent;--os-track-bg-hover:transparent;--os-track-bg-active:transparent}.os-theme-dark .os-scrollbar .os-scrollbar-handle{border-radius:10px!important;transition:background-color .2s ease,opacity .2s ease!important} \ No newline at end of file diff --git a/frontend-dist/css/app.a5d6bf3c.css.gz b/frontend-dist/css/app.a5d6bf3c.css.gz deleted file mode 100644 index 8662d1b3..00000000 Binary files a/frontend-dist/css/app.a5d6bf3c.css.gz and /dev/null differ diff --git a/frontend-dist/index.html b/frontend-dist/index.html index a06e32a6..2b30ec6a 100644 --- a/frontend-dist/index.html +++ b/frontend-dist/index.html @@ -1 +1 @@ -Sanyue ImgHub
\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/frontend-dist/index.html.gz b/frontend-dist/index.html.gz index dd9fddda..0159c397 100644 Binary files a/frontend-dist/index.html.gz and b/frontend-dist/index.html.gz differ diff --git a/frontend-dist/js/137.09c39d94.js b/frontend-dist/js/137.09c39d94.js deleted file mode 100644 index cdf013e8..00000000 --- a/frontend-dist/js/137.09c39d94.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[137],{213:function(e,n,t){t(85331),t(19104)},4318:function(){},10456:function(e,n,t){t(85331)},18785:function(e,n,t){t(85331)},19104:function(e,n,t){t(85331)},30694:function(e,n,t){t(85331)},38273:function(e,n,t){t.d(n,{A:function(){return O}});var i=t(54047),a=t(56768),o=t(45130),s=t(24232);const l={id:"themeMaskAdmin"},c=["cx","cy","r"],r=["r"],u=["opacity"];function h(e,n,t,i,h,d){const g=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:n[0]||(n[0]=(...e)=>d.handleToggleClick&&d.handleToggleClick(...e))},[(0,a.bF)(o.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[h.isAuto?((0,a.uX)(),(0,a.Wv)(g,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.3em",color:"var(--admin-theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,s.C4)(["theme_toggle_svg",{dark:h.isDark}]),width:"1.3em",height:"1.3em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",l,[n[1]||(n[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:h.isDark?"50%":"100%",cy:h.isDark?"23%":"0%",r:h.isDark?"9":"5"},null,8,c)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:h.isDark?"9":"5",mask:"url(#themeMaskAdmin)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:h.isDark?0:1},[...n[2]||(n[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,u)],2))]),_:1})])}var d={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},g=t(71241);const p=(0,g.A)(d,[["render",h],["__scopeId","data-v-5c149ed5"]]);var k=p;const m={class:"tabs"},v=["aria-expanded"],P={class:"page-switcher-title"},b=["onMouseenter","onClick"],f={class:"page-switcher-title"};function y(e,n,t,l,c,r){const u=(0,a.g2)("font-awesome-icon"),h=k,d=i.A;return(0,a.uX)(),(0,a.CE)("div",m,[(0,a.Lk)("div",{class:(0,s.C4)(["page-switcher",{"is-open":c.isPageMenuOpen}]),role:"navigation",onClick:n[3]||(n[3]=(0,o.D$)(()=>{},["stop"])),onPointerdown:n[4]||(n[4]=(0,o.D$)(()=>{},["stop"])),onMouseenter:n[5]||(n[5]=(...e)=>r.handlePageSwitcherEnter&&r.handlePageSwitcherEnter(...e)),onMouseleave:n[6]||(n[6]=(...e)=>r.handlePageSwitcherLeave&&r.handlePageSwitcherLeave(...e))},[(0,a.Lk)("div",{class:"page-switcher-sheet",role:"menu",onClick:n[2]||(n[2]=(0,o.D$)(()=>{},["stop"]))},[(0,a.Lk)("button",{class:"page-option is-current",type:"button",role:"menuitem","aria-current":"page","aria-expanded":c.isPageMenuOpen,onClick:n[0]||(n[0]=(0,o.D$)(e=>r.handlePageOptionClick(r.activePageOption.name),["stop"]))},[(0,a.bF)(u,{icon:r.activePageOption.icon,class:"page-option-icon"},null,8,["icon"]),(0,a.Lk)("span",P,(0,s.v_)(e.$t(r.activePageOption.label)),1),(0,a.bF)(u,{icon:"chevron-down",class:"page-switcher-arrow"})],8,v),(0,a.Lk)("div",{class:"page-option-list",onMouseleave:n[1]||(n[1]=(...e)=>r.clearHoveredPageOption&&r.clearHoveredPageOption(...e))},[(0,a.Lk)("span",{class:(0,s.C4)(["page-option-highlight",{"is-visible":null!==c.hoveredPageOptionIndex}]),style:(0,s.Tr)({"--hovered-option-index":null===c.hoveredPageOptionIndex?0:c.hoveredPageOptionIndex}),"aria-hidden":"true"},null,6),((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(r.inactivePageOptions,(n,t)=>((0,a.uX)(),(0,a.CE)("button",{key:n.name,class:"page-option",type:"button",role:"menuitem",onMouseenter:e=>r.setHoveredPageOption(t),onClick:(0,o.D$)(e=>r.handlePageOptionClick(n.name),["stop"])},[(0,a.bF)(u,{icon:n.icon,class:"page-option-icon"},null,8,["icon"]),(0,a.Lk)("span",f,(0,s.v_)(e.$t(n.label)),1)],40,b))),128))],32)])],34),(0,a.bF)(h),(0,a.bF)(d,{class:"tabs-language-switcher"})])}t(44114),t(18111),t(22489),t(20116);var M={name:"DashboardTabs",props:{activeTab:{type:String,default:"dashboard"}},components:{AdminToggleDark:k,LanguageSwitcher:i.A},data(){return{isPageMenuOpen:!1,hoveredPageOptionIndex:null}},computed:{pageOptions(){return[{name:"dashboard",icon:"images",label:"dashboardTabs.fileManagement"},{name:"customerConfig",icon:"user-cog",label:"dashboardTabs.userManagement"},{name:"systemConfig",icon:"cogs",label:"dashboardTabs.systemSettings"},{name:"",icon:"upload",label:"dashboardTabs.fileUpload"}]},activePageOption(){return this.pageOptions.find(e=>e.name===this.activeTab)||this.pageOptions[0]},inactivePageOptions(){return this.pageOptions.filter(e=>e.name!==this.activePageOption.name)}},methods:{handleDocumentClick(e){this.$el?.contains(e.target)||this.closePageMenu()},refreshDashboard(){location.reload()},handleTabClick(e){this.closePageMenu(),e!==this.activeTab?this.$router.push(`/${e}`):this.refreshDashboard()},isTouchViewport(){return window.matchMedia("(hover: none), (pointer: coarse)").matches},handlePageOptionClick(e){!this.isTouchViewport()||this.isPageMenuOpen||e===this.activeTab?e!==this.activeTab?this.handleTabClick(e):this.isTouchViewport()?this.togglePageMenu():this.openPageMenu():this.openPageMenu()},handlePageSwitcherEnter(){this.isTouchViewport()||this.openPageMenu()},handlePageSwitcherLeave(){this.isTouchViewport()||this.closePageMenu()},setHoveredPageOption(e){this.hoveredPageOptionIndex=e},clearHoveredPageOption(){this.hoveredPageOptionIndex=null},openPageMenu(){this.isPageMenuOpen=!0},togglePageMenu(){this.isPageMenuOpen=!this.isPageMenuOpen},closePageMenu(){this.isPageMenuOpen=!1,this.clearHoveredPageOption()}},mounted(){document.addEventListener("click",this.handleDocumentClick)},beforeUnmount(){document.removeEventListener("click",this.handleDocumentClick)}};const C=(0,g.A)(M,[["render",y],["__scopeId","data-v-2552c720"]]);var O=C},38736:function(e,n,t){t(85331)},67819:function(e,n,t){t(85331)},70797:function(e,n,t){t.d(n,{A:function(){return s}});t(44114);var i=t(25507),a=t(16915);let o=!1;async function s(e,n={}){n.credentials="include",n.headers={...n.headers};const t=await fetch(e,n);return 401!==t.status||o||(o=!0,i.A.commit("setAdminLoggedIn",!1),a.A.push("/adminLogin").finally(()=>{o=!1})),t}},77128:function(e,n,t){t(85331),t(4318)},78450:function(e,n,t){t(85331)},85970:function(e,n,t){t(85331)},96808:function(e,n,t){t(85331),t(18785),t(67819),t(85970),t(19104)}}]); -//# sourceMappingURL=137.09c39d94.js.map \ No newline at end of file diff --git a/frontend-dist/js/137.09c39d94.js.gz b/frontend-dist/js/137.09c39d94.js.gz deleted file mode 100644 index b52a1cc0..00000000 Binary files a/frontend-dist/js/137.09c39d94.js.gz and /dev/null differ diff --git a/frontend-dist/js/137.09c39d94.js.map b/frontend-dist/js/137.09c39d94.js.map deleted file mode 100644 index 592f7768..00000000 --- a/frontend-dist/js/137.09c39d94.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/137.09c39d94.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?bba2","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?7379","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?64dc","webpack://sanyue_imghub/./src/components/DashboardTabs.vue","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?1414","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMaskAdmin\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.3em\",\n height: \"1.3em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMaskAdmin)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.3em\",\n \"color\": \"var(--admin-theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminToggleDark.vue?vue&type=template&id=5c149ed5&scoped=true\"\nimport script from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./AdminToggleDark.vue?vue&type=style&index=0&id=5c149ed5&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c149ed5\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tabs\"\n};\nconst _hoisted_2 = [\"aria-expanded\"];\nconst _hoisted_3 = {\n class: \"page-switcher-title\"\n};\nconst _hoisted_4 = [\"onMouseenter\", \"onClick\"];\nconst _hoisted_5 = {\n class: \"page-switcher-title\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_AdminToggleDark = _resolveComponent(\"AdminToggleDark\");\n const _component_LanguageSwitcher = _resolveComponent(\"LanguageSwitcher\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"page-switcher\", {\n 'is-open': $data.isPageMenuOpen\n }]),\n role: \"navigation\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(() => {}, [\"stop\"])),\n onPointerdown: _cache[4] || (_cache[4] = _withModifiers(() => {}, [\"stop\"])),\n onMouseenter: _cache[5] || (_cache[5] = (...args) => $options.handlePageSwitcherEnter && $options.handlePageSwitcherEnter(...args)),\n onMouseleave: _cache[6] || (_cache[6] = (...args) => $options.handlePageSwitcherLeave && $options.handlePageSwitcherLeave(...args))\n }, [_createElementVNode(\"div\", {\n class: \"page-switcher-sheet\",\n role: \"menu\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"button\", {\n class: \"page-option is-current\",\n type: \"button\",\n role: \"menuitem\",\n \"aria-current\": \"page\",\n \"aria-expanded\": $data.isPageMenuOpen,\n onClick: _cache[0] || (_cache[0] = _withModifiers($event => $options.handlePageOptionClick($options.activePageOption.name), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.activePageOption.icon,\n class: \"page-option-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t($options.activePageOption.label)), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"page-switcher-arrow\"\n })], 8, _hoisted_2), _createElementVNode(\"div\", {\n class: \"page-option-list\",\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.clearHoveredPageOption && $options.clearHoveredPageOption(...args))\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"page-option-highlight\", {\n 'is-visible': $data.hoveredPageOptionIndex !== null\n }]),\n style: _normalizeStyle({\n '--hovered-option-index': $data.hoveredPageOptionIndex === null ? 0 : $data.hoveredPageOptionIndex\n }),\n \"aria-hidden\": \"true\"\n }, null, 6), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.inactivePageOptions, (option, index) => {\n return _openBlock(), _createElementBlock(\"button\", {\n key: option.name,\n class: \"page-option\",\n type: \"button\",\n role: \"menuitem\",\n onMouseenter: $event => $options.setHoveredPageOption(index),\n onClick: _withModifiers($event => $options.handlePageOptionClick(option.name), [\"stop\"])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: option.icon,\n class: \"page-option-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(option.label)), 1)], 40, _hoisted_4);\n }), 128))], 32)])], 34), _createVNode(_component_AdminToggleDark), _createVNode(_component_LanguageSwitcher, {\n class: \"tabs-language-switcher\"\n })]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport AdminToggleDark from './dashboard/AdminToggleDark.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nexport default {\n name: 'DashboardTabs',\n props: {\n activeTab: {\n type: String,\n default: 'dashboard'\n }\n },\n components: {\n AdminToggleDark,\n LanguageSwitcher\n },\n data() {\n return {\n isPageMenuOpen: false,\n hoveredPageOptionIndex: null\n };\n },\n computed: {\n pageOptions() {\n return [{\n name: 'dashboard',\n icon: 'images',\n label: 'dashboardTabs.fileManagement'\n }, {\n name: 'customerConfig',\n icon: 'user-cog',\n label: 'dashboardTabs.userManagement'\n }, {\n name: 'systemConfig',\n icon: 'cogs',\n label: 'dashboardTabs.systemSettings'\n }, {\n name: '',\n icon: 'upload',\n label: 'dashboardTabs.fileUpload'\n }];\n },\n activePageOption() {\n return this.pageOptions.find(option => option.name === this.activeTab) || this.pageOptions[0];\n },\n inactivePageOptions() {\n return this.pageOptions.filter(option => option.name !== this.activePageOption.name);\n }\n },\n methods: {\n handleDocumentClick(event) {\n if (this.$el?.contains(event.target)) {\n return;\n }\n this.closePageMenu();\n },\n refreshDashboard() {\n location.reload();\n },\n handleTabClick(tab) {\n this.closePageMenu();\n if (tab === this.activeTab) {\n this.refreshDashboard();\n return;\n }\n this.$router.push(`/${tab}`);\n },\n isTouchViewport() {\n return window.matchMedia('(hover: none), (pointer: coarse)').matches;\n },\n handlePageOptionClick(tab) {\n if (this.isTouchViewport() && !this.isPageMenuOpen && tab !== this.activeTab) {\n this.openPageMenu();\n return;\n }\n if (tab === this.activeTab) {\n if (this.isTouchViewport()) {\n this.togglePageMenu();\n } else {\n this.openPageMenu();\n }\n return;\n }\n this.handleTabClick(tab);\n },\n handlePageSwitcherEnter() {\n if (!this.isTouchViewport()) {\n this.openPageMenu();\n }\n },\n handlePageSwitcherLeave() {\n if (!this.isTouchViewport()) {\n this.closePageMenu();\n }\n },\n setHoveredPageOption(index) {\n this.hoveredPageOptionIndex = index;\n },\n clearHoveredPageOption() {\n this.hoveredPageOptionIndex = null;\n },\n openPageMenu() {\n this.isPageMenuOpen = true;\n },\n togglePageMenu() {\n this.isPageMenuOpen = !this.isPageMenuOpen;\n },\n closePageMenu() {\n this.isPageMenuOpen = false;\n this.clearHoveredPageOption();\n }\n },\n mounted() {\n document.addEventListener('click', this.handleDocumentClick);\n },\n beforeUnmount() {\n document.removeEventListener('click', this.handleDocumentClick);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardTabs.vue?vue&type=template&id=2552c720&scoped=true\"\nimport script from \"./DashboardTabs.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardTabs.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardTabs.vue?vue&type=style&index=0&id=2552c720&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2552c720\"]])\n\nexport default __exports__","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","_hoisted_4","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","onClick","args","handleToggleClick","name","mode","default","isAuto","key","icon","class","style","isDark","width","height","viewBox","fill","stroke","x","y","cx","cy","r","mask","opacity","x1","y1","x2","y2","_","data","this","$store","getters","useDarkMode","cusDarkMode","methods","commit","__exports__","_hoisted_5","_component_AdminToggleDark","_component_LanguageSwitcher","isPageMenuOpen","role","onPointerdown","onMouseenter","handlePageSwitcherEnter","onMouseleave","handlePageSwitcherLeave","type","$event","handlePageOptionClick","activePageOption","$t","label","clearHoveredPageOption","hoveredPageOptionIndex","inactivePageOptions","option","index","setHoveredPageOption","props","activeTab","String","components","AdminToggleDark","LanguageSwitcher","computed","pageOptions","find","filter","handleDocumentClick","event","$el","contains","target","closePageMenu","refreshDashboard","location","reload","handleTabClick","tab","$router","push","isTouchViewport","window","matchMedia","matches","togglePageMenu","openPageMenu","mounted","document","addEventListener","beforeUnmount","removeEventListener","isRedirecting","async","fetchWithAuth","url","options","credentials","headers","response","fetch","status","store","router","finally"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/137.09c39d94.js.map.gz b/frontend-dist/js/137.09c39d94.js.map.gz deleted file mode 100644 index 956a8fa4..00000000 Binary files a/frontend-dist/js/137.09c39d94.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/21.72019411.js b/frontend-dist/js/21.72019411.js new file mode 100644 index 00000000..5e90dc79 --- /dev/null +++ b/frontend-dist/js/21.72019411.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[21],{7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode","wallpaperEnabled"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})},wallpaperEnabled(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{e?this.reinitializeBackground(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements):this.clearBackgroundImages(!0)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(!this.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),i=document.getElementById("bg2");if(!r||!i)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const o=this.userConfig?.[e];"bing"===o?this.setupBingWallpaper(r,i,t):Array.isArray(o)&&o.length>1?this.setupCustomWallpaperCarousel(r,i,o,t):Array.isArray(o)&&1===o.length?this.setupSingleCustomWallpaper(r,o[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},i=new Image;i.onload=()=>{e.src=t,r()},i.onerror=()=>{e.src=t,r()},i.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const i=new Image;i.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},i.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const i=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const o=new Image;o.onload=()=>{r.src=i,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},o.src=i},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void this.reinitializeBackground(e,t,a,s);const l=0!=i.style.opacity?i:o,c=0!=i.style.opacity?o:i,g=this.useDarkMode,u=n(g?10732:7835),d=new Image;d.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=u},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return g}});var a=n(56768);const s=["title"];function r(e,t,n,r,i,o){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>o.toggleLocale&&o.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var i=n(46638),o={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,i.xS)(e)}}},l=n(71241);const c=(0,l.A)(o,[["render",r],["__scopeId","data-v-08567d0a"]]);var g=c}}]); +//# sourceMappingURL=21.72019411.js.map \ No newline at end of file diff --git a/frontend-dist/js/21.72019411.js.gz b/frontend-dist/js/21.72019411.js.gz new file mode 100644 index 00000000..170df5ec Binary files /dev/null and b/frontend-dist/js/21.72019411.js.gz differ diff --git a/frontend-dist/js/21.72019411.js.map b/frontend-dist/js/21.72019411.js.map new file mode 100644 index 00000000..083de7af --- /dev/null +++ b/frontend-dist/js/21.72019411.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/21.72019411.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode', 'wallpaperEnabled']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n },\r\n // 监听全局壁纸开关:开/关时重新初始化背景\r\n wallpaperEnabled(newVal, oldVal) {\r\n if (newVal === oldVal || !this.backgroundInitParams) return\r\n this.$nextTick(() => {\r\n if (newVal) {\r\n // 开启:重新初始化背景\r\n this.reinitializeBackground(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n } else {\r\n // 关闭:清理背景\r\n this.clearBackgroundImages(true)\r\n }\r\n })\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (!this.wallpaperEnabled) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","wallpaperEnabled","reinitializeBackground","clearBackgroundImages","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.72019411.js.map.gz b/frontend-dist/js/21.72019411.js.map.gz new file mode 100644 index 00000000..4d985c19 Binary files /dev/null and b/frontend-dist/js/21.72019411.js.map.gz differ diff --git a/frontend-dist/js/21.7cbdc64f.js b/frontend-dist/js/21.7cbdc64f.js deleted file mode 100644 index 676a147e..00000000 --- a/frontend-dist/js/21.7cbdc64f.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[21],{7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,g=this.useDarkMode,u=n(g?10732:7835),d=new Image;d.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=u},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return g}});var a=n(56768);const s=["title"];function r(e,t,n,r,o,i){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>i.toggleLocale&&i.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),i={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(i,[["render",r],["__scopeId","data-v-08567d0a"]]);var g=c}}]); -//# sourceMappingURL=21.7cbdc64f.js.map \ No newline at end of file diff --git a/frontend-dist/js/21.7cbdc64f.js.gz b/frontend-dist/js/21.7cbdc64f.js.gz deleted file mode 100644 index 93a0198a..00000000 Binary files a/frontend-dist/js/21.7cbdc64f.js.gz and /dev/null differ diff --git a/frontend-dist/js/21.7cbdc64f.js.map b/frontend-dist/js/21.7cbdc64f.js.map deleted file mode 100644 index e9582f74..00000000 --- a/frontend-dist/js/21.7cbdc64f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/21.7cbdc64f.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.7cbdc64f.js.map.gz b/frontend-dist/js/21.7cbdc64f.js.map.gz deleted file mode 100644 index 7a47ade3..00000000 Binary files a/frontend-dist/js/21.7cbdc64f.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/226.22e8bc82.js b/frontend-dist/js/226.22e8bc82.js deleted file mode 100644 index e7ac25be..00000000 --- a/frontend-dist/js/226.22e8bc82.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[226],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):a&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,r=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const r=this.userConfig?.[e];if(!n||void 0!==r)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,u=this.useDarkMode,d=a(u?10732:7835),g=new Image;g.onload=()=>{c.src=d,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=d},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}},68226:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(80047),s=(a(85331),a(99648),a(56768));const r={class:"not-found-container"},o=["innerHTML"],i={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},u={class:"error-image"},d=["src"],g={class:"error-info"},m={class:"error-actions"},p={class:"help-links"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",r,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",i,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[t[3]||(t[3]=(0,s.Lk)("div",{class:"error-number"},[(0,s.Lk)("span",{class:"four"},"4"),(0,s.Lk)("span",{class:"zero"},"0"),(0,s.Lk)("span",{class:"four"},"4")],-1)),(0,s.Lk)("div",u,[(0,s.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,d)])]),(0,s.Lk)("div",g,[t[10]||(t[10]=(0,s.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[9]||(t[9]=(0,s.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,s.eW)(" 管理面板 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[8]||(t[8]=(0,s.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,s.Fv)('
',1))])}a(44114);var b=a(60782),y=a(48903),f={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},I=a(71241);const v=(0,I.A)(f,[["render",k],["__scopeId","data-v-5437e264"]]);var B=v},96682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"}}]); -//# sourceMappingURL=226.22e8bc82.js.map \ No newline at end of file diff --git a/frontend-dist/js/226.22e8bc82.js.gz b/frontend-dist/js/226.22e8bc82.js.gz deleted file mode 100644 index 0c915bd0..00000000 Binary files a/frontend-dist/js/226.22e8bc82.js.gz and /dev/null differ diff --git a/frontend-dist/js/226.22e8bc82.js.map b/frontend-dist/js/226.22e8bc82.js.map deleted file mode 100644 index 18e75b46..00000000 --- a/frontend-dist/js/226.22e8bc82.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/226.22e8bc82.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/views/NotFound.vue?1f11","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=5437e264&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=5437e264&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5437e264\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/226.22e8bc82.js.map.gz b/frontend-dist/js/226.22e8bc82.js.map.gz deleted file mode 100644 index ca406666..00000000 Binary files a/frontend-dist/js/226.22e8bc82.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/345.cdce570b.js b/frontend-dist/js/227.8094852b.js similarity index 90% rename from frontend-dist/js/345.cdce570b.js rename to frontend-dist/js/227.8094852b.js index 2a0a0f47..b43d5b09 100644 --- a/frontend-dist/js/345.cdce570b.js +++ b/frontend-dist/js/227.8094852b.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[345],{16556:function(e,s,i){i.r(s),i.d(s,{default:function(){return h}});var t=i(85563),n=i(56768);function o(e,s,i,o,r,a){const l=t.A;return(0,n.uX)(),(0,n.Wv)(l,{title:e.$t("login.adminTitle"),fields:r.loginFields,"submit-text":e.$t("login.submit"),"background-key":"adminLoginBkImg","is-admin":!0,loading:r.isLoading,onSubmit:a.handleLogin},null,8,["title","fields","submit-text","loading","onSubmit"])}i(44114);var r=i(457),a={data(){return{isLoading:!1,loginFields:[]}},components:{BaseLogin:t.A},created(){this.updateLoginFields()},watch:{"$i18n.locale"(){this.updateLoginFields()}},methods:{updateLoginFields(){this.loginFields=[{key:"username",label:this.$t("login.username"),placeholder:this.$t("login.usernamePlaceholder"),type:"text",icon:"User"},{key:"password",label:this.$t("login.password"),placeholder:this.$t("login.adminPasswordPlaceholder"),type:"password",showPassword:!0,icon:"Lock"}]},async handleLogin(e){const{username:s,password:i}=e;this.isLoading=!0;const t=new Promise(e=>setTimeout(e,1e3)),n=r.A.post("/api/auth/adminLogin",{username:s,password:i},{withCredentials:!0}).then(e=>({response:e})).catch(e=>({error:e}));try{const[e]=await Promise.all([n,t]);if(e.response&&200===e.response.status)this.$store.commit("setAdminLoggedIn",!0),this.$router.push("/dashboard");else{const s=e.error||new Error("Unknown error");this.isLoading=!1,s.response&&401===s.response.status?this.$message.error(this.$t("login.adminFailed")):this.$message.error(this.$t("login.serverError"))}}catch(o){this.isLoading=!1,this.$message.error(this.$t("login.systemError"))}}}},l=i(71241);const d=(0,l.A)(a,[["render",o]]);var h=d}}]); -//# sourceMappingURL=345.cdce570b.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[227],{16556:function(e,s,i){i.r(s),i.d(s,{default:function(){return h}});var t=i(48283),n=i(56768);function o(e,s,i,o,r,a){const l=t.A;return(0,n.uX)(),(0,n.Wv)(l,{title:e.$t("login.adminTitle"),fields:r.loginFields,"submit-text":e.$t("login.submit"),"background-key":"adminLoginBkImg","is-admin":!0,loading:r.isLoading,onSubmit:a.handleLogin},null,8,["title","fields","submit-text","loading","onSubmit"])}i(44114);var r=i(457),a={data(){return{isLoading:!1,loginFields:[]}},components:{BaseLogin:t.A},created(){this.updateLoginFields()},watch:{"$i18n.locale"(){this.updateLoginFields()}},methods:{updateLoginFields(){this.loginFields=[{key:"username",label:this.$t("login.username"),placeholder:this.$t("login.usernamePlaceholder"),type:"text",icon:"User"},{key:"password",label:this.$t("login.password"),placeholder:this.$t("login.adminPasswordPlaceholder"),type:"password",showPassword:!0,icon:"Lock"}]},async handleLogin(e){const{username:s,password:i}=e;this.isLoading=!0;const t=new Promise(e=>setTimeout(e,1e3)),n=r.A.post("/api/auth/adminLogin",{username:s,password:i},{withCredentials:!0}).then(e=>({response:e})).catch(e=>({error:e}));try{const[e]=await Promise.all([n,t]);if(e.response&&200===e.response.status)this.$store.commit("setAdminLoggedIn",!0),this.$router.push("/dashboard");else{const s=e.error||new Error("Unknown error");this.isLoading=!1,s.response&&401===s.response.status?this.$message.error(this.$t("login.adminFailed")):this.$message.error(this.$t("login.serverError"))}}catch(o){this.isLoading=!1,this.$message.error(this.$t("login.systemError"))}}}},l=i(71241);const d=(0,l.A)(a,[["render",o]]);var h=d}}]); +//# sourceMappingURL=227.8094852b.js.map \ No newline at end of file diff --git a/frontend-dist/js/227.8094852b.js.gz b/frontend-dist/js/227.8094852b.js.gz new file mode 100644 index 00000000..45146e33 Binary files /dev/null and b/frontend-dist/js/227.8094852b.js.gz differ diff --git a/frontend-dist/js/345.cdce570b.js.map b/frontend-dist/js/227.8094852b.js.map similarity index 98% rename from frontend-dist/js/345.cdce570b.js.map rename to frontend-dist/js/227.8094852b.js.map index f96b2297..caa8c00c 100644 --- a/frontend-dist/js/345.cdce570b.js.map +++ b/frontend-dist/js/227.8094852b.js.map @@ -1 +1 @@ -{"version":3,"file":"js/345.cdce570b.js","mappings":"iMACO,SAASA,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,EAAuB,IAC7B,OAAO,WAAc,QAAaA,EAAsB,CACtDC,MAAOP,EAAKQ,GAAG,oBACfC,OAAQL,EAAMM,YACd,cAAeV,EAAKQ,GAAG,gBACvB,iBAAkB,kBAClB,YAAY,EACZG,QAASP,EAAMQ,UACfC,SAAUR,EAASS,aAClB,KAAM,EAAG,CAAC,QAAS,SAAU,cAAe,UAAW,YAC5D,C,sBCTA,GACE,IAAAC,GACE,MAAO,CACLH,WAAW,EACXF,YAAa,GAEjB,EACAM,WAAY,CACVC,UAAS,KAEX,OAAAC,GACEC,KAAKC,mBACP,EACAC,MAAO,CACL,iBACEF,KAAKC,mBACP,GAEFE,QAAS,CACP,iBAAAF,GACED,KAAKT,YAAc,CAAC,CAClBa,IAAK,WACLC,MAAOL,KAAKX,GAAG,kBACfiB,YAAaN,KAAKX,GAAG,6BACrBkB,KAAM,OACNC,KAAM,QACL,CACDJ,IAAK,WACLC,MAAOL,KAAKX,GAAG,kBACfiB,YAAaN,KAAKX,GAAG,kCACrBkB,KAAM,WACNE,cAAc,EACdD,KAAM,QAEV,EACA,iBAAMb,CAAYe,GAChB,MAAM,SACJC,EAAQ,SACRC,GACEF,EACJV,KAAKP,WAAY,EAGjB,MAAMoB,EAAkB,IAAIC,QAAQC,GAAWC,WAAWD,EAAS,MAE7DE,EAAeC,EAAA,EAAMC,KAAK,uBAAwB,CACtDR,WACAC,YACC,CACDQ,iBAAiB,IAChBC,KAAKC,IAAY,CAClBA,cACEC,MAAMC,IAAS,CACjBA,WAEF,IACE,MAAOC,SAAgBX,QAAQY,IAAI,CAACT,EAAcJ,IAClD,GAAIY,EAAOH,UAAuC,MAA3BG,EAAOH,SAASK,OAGrC3B,KAAK4B,OAAOC,OAAO,oBAAoB,GACvC7B,KAAK8B,QAAQC,KAAK,kBACb,CACL,MAAMP,EAAQC,EAAOD,OAAS,IAAIQ,MAAM,iBACxChC,KAAKP,WAAY,EACb+B,EAAMF,UAAsC,MAA1BE,EAAMF,SAASK,OACnC3B,KAAKiC,SAAST,MAAMxB,KAAKX,GAAG,sBAE5BW,KAAKiC,SAAST,MAAMxB,KAAKX,GAAG,qBAEhC,CACF,CAAE,MAAOmC,GAEPxB,KAAKP,WAAY,EACjBO,KAAKiC,SAAST,MAAMxB,KAAKX,GAAG,qBAC9B,CACF,I,WC1EJ,MAAM6C,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAStD,KAEpE,O","sources":["webpack://sanyue_imghub/./src/views/AdminLogin.vue?ca55","webpack://sanyue_imghub/./src/views/AdminLogin.vue","webpack://sanyue_imghub/./src/views/AdminLogin.vue?06e1"],"sourcesContent":["import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_BaseLogin = _resolveComponent(\"BaseLogin\");\n return _openBlock(), _createBlock(_component_BaseLogin, {\n title: _ctx.$t('login.adminTitle'),\n fields: $data.loginFields,\n \"submit-text\": _ctx.$t('login.submit'),\n \"background-key\": \"adminLoginBkImg\",\n \"is-admin\": true,\n loading: $data.isLoading,\n onSubmit: $options.handleLogin\n }, null, 8, [\"title\", \"fields\", \"submit-text\", \"loading\", \"onSubmit\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport BaseLogin from '@/components/BaseLogin.vue';\nimport axios from '@/utils/axios';\nexport default {\n data() {\n return {\n isLoading: false,\n loginFields: []\n };\n },\n components: {\n BaseLogin\n },\n created() {\n this.updateLoginFields();\n },\n watch: {\n '$i18n.locale'() {\n this.updateLoginFields();\n }\n },\n methods: {\n updateLoginFields() {\n this.loginFields = [{\n key: 'username',\n label: this.$t('login.username'),\n placeholder: this.$t('login.usernamePlaceholder'),\n type: 'text',\n icon: 'User'\n }, {\n key: 'password',\n label: this.$t('login.password'),\n placeholder: this.$t('login.adminPasswordPlaceholder'),\n type: 'password',\n showPassword: true,\n icon: 'Lock'\n }];\n },\n async handleLogin(formData) {\n const {\n username,\n password\n } = formData;\n this.isLoading = true;\n\n // Min delay promise\n const minDelayPromise = new Promise(resolve => setTimeout(resolve, 1000));\n // Request promise handling its own error to return it\n const loginPromise = axios.post('/api/auth/adminLogin', {\n username,\n password\n }, {\n withCredentials: true\n }).then(response => ({\n response\n })).catch(error => ({\n error\n }));\n try {\n const [result] = await Promise.all([loginPromise, minDelayPromise]);\n if (result.response && result.response.status === 200) {\n // 认证成功,标记已登录状态(不再存储密码)\n // 会话 Token 已通过 HttpOnly Cookie 由后端设置\n this.$store.commit('setAdminLoggedIn', true);\n this.$router.push('/dashboard');\n } else {\n const error = result.error || new Error('Unknown error');\n this.isLoading = false;\n if (error.response && error.response.status === 401) {\n this.$message.error(this.$t('login.adminFailed'));\n } else {\n this.$message.error(this.$t('login.serverError'));\n }\n }\n } catch (error) {\n // Should not reach here due to inner catch, but just in case\n this.isLoading = false;\n this.$message.error(this.$t('login.systemError'));\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminLogin.vue?vue&type=template&id=67ae5225\"\nimport script from \"./AdminLogin.vue?vue&type=script&lang=js\"\nexport * from \"./AdminLogin.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["render","_ctx","_cache","$props","$setup","$data","$options","_component_BaseLogin","title","$t","fields","loginFields","loading","isLoading","onSubmit","handleLogin","data","components","BaseLogin","created","this","updateLoginFields","watch","methods","key","label","placeholder","type","icon","showPassword","formData","username","password","minDelayPromise","Promise","resolve","setTimeout","loginPromise","axios","post","withCredentials","then","response","catch","error","result","all","status","$store","commit","$router","push","Error","$message","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/227.8094852b.js","mappings":"iMACO,SAASA,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,EAAuB,IAC7B,OAAO,WAAc,QAAaA,EAAsB,CACtDC,MAAOP,EAAKQ,GAAG,oBACfC,OAAQL,EAAMM,YACd,cAAeV,EAAKQ,GAAG,gBACvB,iBAAkB,kBAClB,YAAY,EACZG,QAASP,EAAMQ,UACfC,SAAUR,EAASS,aAClB,KAAM,EAAG,CAAC,QAAS,SAAU,cAAe,UAAW,YAC5D,C,sBCTA,GACE,IAAAC,GACE,MAAO,CACLH,WAAW,EACXF,YAAa,GAEjB,EACAM,WAAY,CACVC,UAAS,KAEX,OAAAC,GACEC,KAAKC,mBACP,EACAC,MAAO,CACL,iBACEF,KAAKC,mBACP,GAEFE,QAAS,CACP,iBAAAF,GACED,KAAKT,YAAc,CAAC,CAClBa,IAAK,WACLC,MAAOL,KAAKX,GAAG,kBACfiB,YAAaN,KAAKX,GAAG,6BACrBkB,KAAM,OACNC,KAAM,QACL,CACDJ,IAAK,WACLC,MAAOL,KAAKX,GAAG,kBACfiB,YAAaN,KAAKX,GAAG,kCACrBkB,KAAM,WACNE,cAAc,EACdD,KAAM,QAEV,EACA,iBAAMb,CAAYe,GAChB,MAAM,SACJC,EAAQ,SACRC,GACEF,EACJV,KAAKP,WAAY,EAGjB,MAAMoB,EAAkB,IAAIC,QAAQC,GAAWC,WAAWD,EAAS,MAE7DE,EAAeC,EAAA,EAAMC,KAAK,uBAAwB,CACtDR,WACAC,YACC,CACDQ,iBAAiB,IAChBC,KAAKC,IAAY,CAClBA,cACEC,MAAMC,IAAS,CACjBA,WAEF,IACE,MAAOC,SAAgBX,QAAQY,IAAI,CAACT,EAAcJ,IAClD,GAAIY,EAAOH,UAAuC,MAA3BG,EAAOH,SAASK,OAGrC3B,KAAK4B,OAAOC,OAAO,oBAAoB,GACvC7B,KAAK8B,QAAQC,KAAK,kBACb,CACL,MAAMP,EAAQC,EAAOD,OAAS,IAAIQ,MAAM,iBACxChC,KAAKP,WAAY,EACb+B,EAAMF,UAAsC,MAA1BE,EAAMF,SAASK,OACnC3B,KAAKiC,SAAST,MAAMxB,KAAKX,GAAG,sBAE5BW,KAAKiC,SAAST,MAAMxB,KAAKX,GAAG,qBAEhC,CACF,CAAE,MAAOmC,GAEPxB,KAAKP,WAAY,EACjBO,KAAKiC,SAAST,MAAMxB,KAAKX,GAAG,qBAC9B,CACF,I,WC1EJ,MAAM6C,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAStD,KAEpE,O","sources":["webpack://sanyue_imghub/./src/views/AdminLogin.vue?ca55","webpack://sanyue_imghub/./src/views/AdminLogin.vue","webpack://sanyue_imghub/./src/views/AdminLogin.vue?06e1"],"sourcesContent":["import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_BaseLogin = _resolveComponent(\"BaseLogin\");\n return _openBlock(), _createBlock(_component_BaseLogin, {\n title: _ctx.$t('login.adminTitle'),\n fields: $data.loginFields,\n \"submit-text\": _ctx.$t('login.submit'),\n \"background-key\": \"adminLoginBkImg\",\n \"is-admin\": true,\n loading: $data.isLoading,\n onSubmit: $options.handleLogin\n }, null, 8, [\"title\", \"fields\", \"submit-text\", \"loading\", \"onSubmit\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport BaseLogin from '@/components/BaseLogin.vue';\nimport axios from '@/utils/axios';\nexport default {\n data() {\n return {\n isLoading: false,\n loginFields: []\n };\n },\n components: {\n BaseLogin\n },\n created() {\n this.updateLoginFields();\n },\n watch: {\n '$i18n.locale'() {\n this.updateLoginFields();\n }\n },\n methods: {\n updateLoginFields() {\n this.loginFields = [{\n key: 'username',\n label: this.$t('login.username'),\n placeholder: this.$t('login.usernamePlaceholder'),\n type: 'text',\n icon: 'User'\n }, {\n key: 'password',\n label: this.$t('login.password'),\n placeholder: this.$t('login.adminPasswordPlaceholder'),\n type: 'password',\n showPassword: true,\n icon: 'Lock'\n }];\n },\n async handleLogin(formData) {\n const {\n username,\n password\n } = formData;\n this.isLoading = true;\n\n // Min delay promise\n const minDelayPromise = new Promise(resolve => setTimeout(resolve, 1000));\n // Request promise handling its own error to return it\n const loginPromise = axios.post('/api/auth/adminLogin', {\n username,\n password\n }, {\n withCredentials: true\n }).then(response => ({\n response\n })).catch(error => ({\n error\n }));\n try {\n const [result] = await Promise.all([loginPromise, minDelayPromise]);\n if (result.response && result.response.status === 200) {\n // 认证成功,标记已登录状态(不再存储密码)\n // 会话 Token 已通过 HttpOnly Cookie 由后端设置\n this.$store.commit('setAdminLoggedIn', true);\n this.$router.push('/dashboard');\n } else {\n const error = result.error || new Error('Unknown error');\n this.isLoading = false;\n if (error.response && error.response.status === 401) {\n this.$message.error(this.$t('login.adminFailed'));\n } else {\n this.$message.error(this.$t('login.serverError'));\n }\n }\n } catch (error) {\n // Should not reach here due to inner catch, but just in case\n this.isLoading = false;\n this.$message.error(this.$t('login.systemError'));\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminLogin.vue?vue&type=template&id=67ae5225\"\nimport script from \"./AdminLogin.vue?vue&type=script&lang=js\"\nexport * from \"./AdminLogin.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["render","_ctx","_cache","$props","$setup","$data","$options","_component_BaseLogin","title","$t","fields","loginFields","loading","isLoading","onSubmit","handleLogin","data","components","BaseLogin","created","this","updateLoginFields","watch","methods","key","label","placeholder","type","icon","showPassword","formData","username","password","minDelayPromise","Promise","resolve","setTimeout","loginPromise","axios","post","withCredentials","then","response","catch","error","result","all","status","$store","commit","$router","push","Error","$message","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/227.8094852b.js.map.gz b/frontend-dist/js/227.8094852b.js.map.gz new file mode 100644 index 00000000..c813c852 Binary files /dev/null and b/frontend-dist/js/227.8094852b.js.map.gz differ diff --git a/frontend-dist/js/278.397ef7d3.js b/frontend-dist/js/278.397ef7d3.js new file mode 100644 index 00000000..fb4c1348 --- /dev/null +++ b/frontend-dist/js/278.397ef7d3.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[278],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},18278:function(e,t,a){a.r(t),a.d(t,{default:function(){return x}});var n=a(80047),s=(a(85331),a(99648),a(56768)),i=a(24232);const o={class:"whitelist-container"},r=["innerHTML"],l={class:"whitelist-content"},c={class:"back-button-wrapper"},d={class:"status-animation"},u={class:"status-icon"},g={class:"status-badge"},m={class:"status-info"},h={class:"status-title"},p={class:"status-description"},k={class:"status-actions"},b={class:"help-info"},y={class:"help-text"},f={class:"quick-links"};function I(e,t,a,I,v,B){const w=(0,s.g2)("font-awesome-icon"),C=n.S2;return(0,s.uX)(),(0,s.CE)("div",o,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,r),(0,s.Lk)("div",l,[(0,s.Lk)("div",c,[(0,s.bF)(C,{class:"back-button",onClick:B.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",d,[(0,s.Lk)("div",u,[(0,s.bF)(w,{icon:"shield-alt",class:"shield-icon"}),(0,s.Lk)("div",g,[(0,s.bF)(w,{icon:"clock",class:"clock-icon"})])])]),(0,s.Lk)("div",m,[(0,s.Lk)("h1",h,(0,i.v_)(e.$t("whitelist.title")),1),(0,s.Lk)("p",p,(0,i.v_)(e.$t("whitelist.description")),1),(0,s.Lk)("div",k,[(0,s.bF)(C,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:B.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goHome")),1)]),_:1},8,["onClick"]),(0,s.bF)(C,{size:"large",class:"action-btn secondary-btn",onClick:B.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"arrow-left",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goBack")),1)]),_:1},8,["onClick"])]),(0,s.Lk)("div",b,[(0,s.Lk)("p",y,(0,i.v_)(e.$t("whitelist.helpText")),1),(0,s.Lk)("div",f,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>B.goHome&&B.goHome(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"cloud-upload-alt"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.uploadImage")),1)]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>B.refreshPage&&B.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"redo"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.refreshPage")),1)])])]),t[2]||(t[2]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[3]||(t[3]=(0,s.Fv)('
',1))])}a(44114);var v=a(74354),B=a(60782),w=a(48903),C={name:"WhiteListOn",mixins:[w.A],computed:{...(0,B.L8)(["useDarkMode","userConfig"])},setup(){(0,v.u)({title:"White List On",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".whitelist-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()}}},W=a(71241);const P=(0,W.A)(C,[["render",I],["__scopeId","data-v-0c389049"]]);var x=P},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode","wallpaperEnabled"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})},wallpaperEnabled(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{e?this.reinitializeBackground(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements):this.clearBackgroundImages(!0)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!this.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); +//# sourceMappingURL=278.397ef7d3.js.map \ No newline at end of file diff --git a/frontend-dist/js/278.397ef7d3.js.gz b/frontend-dist/js/278.397ef7d3.js.gz new file mode 100644 index 00000000..34a38fca Binary files /dev/null and b/frontend-dist/js/278.397ef7d3.js.gz differ diff --git a/frontend-dist/js/278.397ef7d3.js.map b/frontend-dist/js/278.397ef7d3.js.map new file mode 100644 index 00000000..dff544cd --- /dev/null +++ b/frontend-dist/js/278.397ef7d3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/278.397ef7d3.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/WhiteListOn.vue?4bb2","webpack://sanyue_imghub/./src/views/WhiteListOn.vue","webpack://sanyue_imghub/./src/views/WhiteListOn.vue?05e5","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"whitelist-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"whitelist-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-title\"\n};\nconst _hoisted_10 = {\n class: \"status-description\"\n};\nconst _hoisted_11 = {\n class: \"status-actions\"\n};\nconst _hoisted_12 = {\n class: \"help-info\"\n};\nconst _hoisted_13 = {\n class: \"help-text\"\n};\nconst _hoisted_14 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n class: \"shield-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\",\n class: \"clock-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h1\", _hoisted_9, _toDisplayString(_ctx.$t('whitelist.title')), 1), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('whitelist.description')), 1), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goHome')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goBack')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", _hoisted_13, _toDisplayString(_ctx.$t('whitelist.helpText')), 1), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.uploadImage')), 1)]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.refreshPage')), 1)])])]), _cache[2] || (_cache[2] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[3] || (_cache[3] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'WhiteListOn',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'White List On',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.whitelist-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./WhiteListOn.vue?vue&type=template&id=0c389049&scoped=true\"\nimport script from \"./WhiteListOn.vue?vue&type=script&lang=js\"\nexport * from \"./WhiteListOn.vue?vue&type=script&lang=js\"\n\nimport \"./WhiteListOn.vue?vue&type=style&index=0&id=0c389049&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c389049\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode', 'wallpaperEnabled']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n },\r\n // 监听全局壁纸开关:开/关时重新初始化背景\r\n wallpaperEnabled(newVal, oldVal) {\r\n if (newVal === oldVal || !this.backgroundInitParams) return\r\n this.$nextTick(() => {\r\n if (newVal) {\r\n // 开启:重新初始化背景\r\n this.reinitializeBackground(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n } else {\r\n // 关闭:清理背景\r\n this.clearBackgroundImages(true)\r\n }\r\n })\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (!this.wallpaperEnabled) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","$t","type","goBack","href","args","refreshPage","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","wallpaperEnabled","reinitializeBackground","clearBackgroundImages","injectBackgroundStyles","clearInterval","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/278.397ef7d3.js.map.gz b/frontend-dist/js/278.397ef7d3.js.map.gz new file mode 100644 index 00000000..a1501808 Binary files /dev/null and b/frontend-dist/js/278.397ef7d3.js.map.gz differ diff --git a/frontend-dist/js/283.efe323af.js b/frontend-dist/js/283.efe323af.js new file mode 100644 index 00000000..9f44d237 --- /dev/null +++ b/frontend-dist/js/283.efe323af.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[283],{732:function(e,t,i){i.d(t,{A:function(){return h}});var o=i(56768),s=i(24232);const n=["href","target"],l=["alt","src"];function r(e,t,i,r,a,u){return(0,o.uX)(),(0,o.CE)("a",{href:u.logoHref,target:i.target,class:(0,s.C4)(e.logo-e.link)},[(0,o.Lk)("img",{class:(0,s.C4)(u.logoClasses),alt:i.alt,src:u.logoUrl},null,10,l)],10,n)}var a=i(60782),u={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,a.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||i(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},d=i(71241);const c=(0,d.A)(u,[["render",r],["__scopeId","data-v-17f54292"]]);var h=c},33153:function(e,t,i){e.exports=i.p+"img/logo.e8dbfa27.png"},34896:function(e,t,i){i(85331)},48283:function(e,t,i){i.d(t,{A:function(){return C}});var o=i(86975),s=i(80047),n=(i(85331),i(99648),i(39623)),l=(i(29092),i(813)),r=(i(34896),i(732)),a=i(54047),u=i(91543),d=i(56768),c=i(24232),h=i(45130);const g={class:"login-container"},p={class:"login-title",tabindex:"0"},f={class:"input-wrapper"},k={key:0,class:"loading-ring"},m={key:1};function y(e,t,i,y,v,w){const b=u.A,L=a.A,_=r.A,C=l.tk,x=n.WK,D=s.S2,S=o.A;return(0,d.uX)(),(0,d.CE)("div",{class:"login",style:(0,c.Tr)(w.viewportStyle)},[(0,d.bF)(b,{class:"toggle-dark"}),(0,d.bF)(L,{class:"language-switcher"}),(0,d.bF)(_),(0,d.Lk)("div",g,[(0,d.Lk)("h1",p,(0,c.v_)(i.title),1),((0,d.uX)(!0),(0,d.CE)(d.FK,null,(0,d.pI)(i.fields,(e,t)=>((0,d.uX)(),(0,d.CE)("div",{key:e.key,class:"input-container"},[(0,d.Lk)("label",{class:"input-name",ref_for:!0,ref:`inputLabel${t}`,style:(0,c.Tr)({"--underline-width":v.labelUnderlineWidths[t]+"px"})},(0,c.v_)(e.label),5),(0,d.Lk)("div",f,[(0,d.bF)(x,{modelValue:v.formData[e.key],"onUpdate:modelValue":t=>v.formData[e.key]=t,placeholder:e.placeholder,type:e.type||"text","show-password":e.showPassword,class:"password-input",onKeyup:(0,h.jR)(w.handleSubmit,["enter","native"]),onFocus:w.handleInputFocus,onBlur:w.handleInputBlur},(0,d.eX)({_:2},[e.icon?{name:"prefix",fn:(0,d.k6)(()=>[(0,d.bF)(C,{class:"el-input__icon"},{default:(0,d.k6)(()=>[((0,d.uX)(),(0,d.Wv)((0,d.$y)(e.icon)))]),_:2},1024)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","placeholder","type","show-password","onKeyup","onFocus","onBlur"])])]))),128)),(0,d.bF)(D,{class:(0,c.C4)(["submit",{"is-loading":i.loading}]),type:"primary",onClick:w.handleSubmit,disabled:i.loading},{default:(0,d.k6)(()=>[i.loading?((0,d.uX)(),(0,d.CE)("div",k)):((0,d.uX)(),(0,d.CE)("span",m,(0,c.v_)(w.computedSubmitText),1))]),_:1},8,["class","onClick","disabled"])]),(0,d.bF)(S,{class:"footer"})],4)}i(18111),i(7588);var v=i(60782),w=i(48903),b={name:"BaseLogin",mixins:[w.A],props:{title:{type:String,required:!0},fields:{type:Array,required:!0},submitText:{type:String,default:""},backgroundKey:{type:String,required:!0},isAdmin:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},data(){return{formData:{},labelUnderlineWidths:[],isFocused:!1,viewportHeight:0}},computed:{...(0,v.L8)(["userConfig"]),computedSubmitText(){return this.submitText||this.$t("login.submit")},viewportStyle(){return this.viewportHeight>0?{height:`${this.viewportHeight}px`,minHeight:`${this.viewportHeight}px`}:{}}},watch:{fields:{handler(){this.$nextTick(()=>{this.calculateLabelWidths()})},deep:!0}},components:{Footer:o.A,ToggleDark:u.A,LanguageSwitcher:a.A,Logo:r.A},mounted(){this.initFormData(),this.initializeBackground(this.backgroundKey,".login",!this.isAdmin,!0),this.$nextTick(()=>{this.calculateLabelWidths()}),this._handleViewportResize=this.handleViewportResize.bind(this),window.visualViewport&&(this._initialHeight=window.visualViewport.height,window.visualViewport.addEventListener("resize",this._handleViewportResize))},beforeDestroy(){window.visualViewport&&this._handleViewportResize&&window.visualViewport.removeEventListener("resize",this._handleViewportResize)},methods:{initFormData(){const e={};this.fields.forEach(t=>{e[t.key]=""}),this.formData=e,this.labelUnderlineWidths=new Array(this.fields.length).fill(0)},calculateLabelWidths(){this.$nextTick(()=>{this.fields.forEach((e,t)=>{const i=this.$refs[`inputLabel${t}`];if(i&&i[0]){const o=document.createElement("canvas"),s=o.getContext("2d"),n=i[0],l=window.getComputedStyle(n);s.font=`${l.fontWeight} ${l.fontSize} ${l.fontFamily}`;const r=s.measureText(e.label).width;this.labelUnderlineWidths[t]=Math.ceil(r)+3}})})},handleSubmit(){this.loading||this.$emit("submit",{...this.formData})},handleViewportResize(){if(!window.visualViewport)return;const e=window.visualViewport.height,t=this._initialHeight-e,i=150;this.viewportHeight=t>i?e:0},handleInputFocus(e){this.isFocused=!0;const t=e.target.closest(".input-container");if(t){const e=t.querySelector(".input-wrapper");e&&e.classList.add("focused")}},handleInputBlur(e){this.isFocused=!1;const t=e.target.closest(".input-container");if(t){const e=t.querySelector(".input-wrapper");e&&e.classList.remove("focused")}}}},L=i(71241);const _=(0,L.A)(b,[["render",y],["__scopeId","data-v-583fe0d5"]]);var C=_},86975:function(e,t,i){i.d(t,{A:function(){return h}});var o=i(56768),s=i(24232);const n={key:0,class:"page-footer"},l=["href"];function r(e,t,i,r,a,u){const d=(0,o.g2)("font-awesome-icon");return u.disableFooter?(0,o.Q3)("",!0):((0,o.uX)(),(0,o.CE)("div",n,[(0,o.Lk)("p",null,[(0,o.eW)("© 2024-"+(0,s.v_)(u.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,o.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,o.eW)(" for You! ",-1)),(0,o.Lk)("a",{href:u.footerLink,target:"_blank"},[(0,o.bF)(d,{icon:"paper-plane",class:"footer-link-icon"})],8,l)])]))}var a=i(60782),u={name:"Footer",computed:{...(0,a.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},d=i(71241);const c=(0,d.A)(u,[["render",r],["__scopeId","data-v-08acbaa9"]]);var h=c},91543:function(e,t,i){i.d(t,{A:function(){return p}});var o=i(56768),s=i(45130),n=i(24232);const l={id:"themeMask"},r=["cx","cy","r"],a=["r"],u=["opacity"];function d(e,t,i,d,c,h){const g=(0,o.g2)("font-awesome-icon");return(0,o.uX)(),(0,o.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>h.handleToggleClick&&h.handleToggleClick(...e))},[(0,o.bF)(s.eB,{name:"icon-fade",mode:"out-in"},{default:(0,o.k6)(()=>[c.isAuto?((0,o.uX)(),(0,o.Wv)(g,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,o.uX)(),(0,o.CE)("svg",{key:"sun-moon",class:(0,n.C4)(["theme_toggle_svg",{dark:c.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,o.Lk)("mask",l,[t[1]||(t[1]=(0,o.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,o.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:c.isDark?"50%":"100%",cy:c.isDark?"23%":"0%",r:c.isDark?"9":"5"},null,8,r)]),(0,o.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:c.isDark?"9":"5",mask:"url(#themeMask)"},null,8,a),(0,o.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:c.isDark?0:1},[...t[2]||(t[2]=[(0,o.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,o.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,o.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,o.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,o.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,o.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,o.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,o.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,u)],2))]),_:1})])}var c={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},h=i(71241);const g=(0,h.A)(c,[["render",d],["__scopeId","data-v-66e6a1f0"]]);var p=g}}]); +//# sourceMappingURL=283.efe323af.js.map \ No newline at end of file diff --git a/frontend-dist/js/283.efe323af.js.gz b/frontend-dist/js/283.efe323af.js.gz new file mode 100644 index 00000000..d494e34c Binary files /dev/null and b/frontend-dist/js/283.efe323af.js.gz differ diff --git a/frontend-dist/js/283.efe323af.js.map b/frontend-dist/js/283.efe323af.js.map new file mode 100644 index 00000000..5c829285 --- /dev/null +++ b/frontend-dist/js/283.efe323af.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/283.efe323af.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/Logo.vue?a6d2","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./src/components/BaseLogin.vue?f703","webpack://sanyue_imghub/./src/components/BaseLogin.vue","webpack://sanyue_imghub/./src/components/BaseLogin.vue?0ac4","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0f43","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=17f54292&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=17f54292&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17f54292\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, withCtx as _withCtx, withKeys as _withKeys, createSlots as _createSlots, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"login-container\"\n};\nconst _hoisted_2 = {\n class: \"login-title\",\n tabindex: \"0\"\n};\nconst _hoisted_3 = {\n class: \"input-wrapper\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"loading-ring\"\n};\nconst _hoisted_5 = {\n key: 1\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_LanguageSwitcher = _resolveComponent(\"LanguageSwitcher\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_Footer = _resolveComponent(\"Footer\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"login\",\n style: _normalizeStyle($options.viewportStyle)\n }, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark\"\n }), _createVNode(_component_LanguageSwitcher, {\n class: \"language-switcher\"\n }), _createVNode(_component_Logo), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"h1\", _hoisted_2, _toDisplayString($props.title), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.fields, (field, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: field.key,\n class: \"input-container\"\n }, [_createElementVNode(\"label\", {\n class: \"input-name\",\n ref_for: true,\n ref: `inputLabel${index}`,\n style: _normalizeStyle({\n '--underline-width': $data.labelUnderlineWidths[index] + 'px'\n })\n }, _toDisplayString(field.label), 5), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.formData[field.key],\n \"onUpdate:modelValue\": $event => $data.formData[field.key] = $event,\n placeholder: field.placeholder,\n type: field.type || 'text',\n \"show-password\": field.showPassword,\n class: \"password-input\",\n onKeyup: _withKeys($options.handleSubmit, [\"enter\", \"native\"]),\n onFocus: $options.handleInputFocus,\n onBlur: $options.handleInputBlur\n }, _createSlots({\n _: 2\n }, [field.icon ? {\n name: \"prefix\",\n fn: _withCtx(() => [_createVNode(_component_el_icon, {\n class: \"el-input__icon\"\n }, {\n default: _withCtx(() => [(_openBlock(), _createBlock(_resolveDynamicComponent(field.icon)))]),\n _: 2\n }, 1024)]),\n key: \"0\"\n } : undefined]), 1032, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\", \"type\", \"show-password\", \"onKeyup\", \"onFocus\", \"onBlur\"])])]);\n }), 128)), _createVNode(_component_el_button, {\n class: _normalizeClass([\"submit\", {\n 'is-loading': $props.loading\n }]),\n type: \"primary\",\n onClick: $options.handleSubmit,\n disabled: $props.loading\n }, {\n default: _withCtx(() => [$props.loading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString($options.computedSubmitText), 1))]),\n _: 1\n }, 8, [\"class\", \"onClick\", \"disabled\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n })], 4);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport Logo from '@/components/Logo.vue';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BaseLogin',\n mixins: [backgroundManager],\n props: {\n // 页面标题\n title: {\n type: String,\n required: true\n },\n // 输入字段配置\n fields: {\n type: Array,\n required: true\n // fields 格式: [{ key: 'username', label: '用户名', placeholder: '请输入用户名', type: 'text', showPassword: false }]\n },\n // 提交按钮文本\n submitText: {\n type: String,\n default: ''\n },\n // 背景图配置键名\n backgroundKey: {\n type: String,\n required: true\n },\n // 是否为管理端登录(影响背景样式)\n isAdmin: {\n type: Boolean,\n default: false\n },\n // 是否正在加载\n loading: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n formData: {},\n labelUnderlineWidths: [],\n isFocused: false,\n viewportHeight: 0\n };\n },\n computed: {\n ...mapGetters(['userConfig']),\n computedSubmitText() {\n return this.submitText || this.$t('login.submit');\n },\n viewportStyle() {\n // 当检测到虚拟键盘弹出时,将容器高度收缩到可见视口高度\n // 容器本身 flex 居中,高度缩小后登录卡片自然在可见区域内居中\n if (this.viewportHeight > 0) {\n return {\n height: `${this.viewportHeight}px`,\n minHeight: `${this.viewportHeight}px`\n };\n }\n return {};\n }\n },\n watch: {\n fields: {\n handler() {\n this.$nextTick(() => {\n this.calculateLabelWidths();\n });\n },\n deep: true\n }\n },\n components: {\n Footer,\n ToggleDark,\n LanguageSwitcher,\n Logo\n },\n mounted() {\n // 初始化表单数据\n this.initFormData();\n // 初始化背景图\n this.initializeBackground(this.backgroundKey, '.login', !this.isAdmin, true);\n // 在下一个tick计算标签宽度,确保DOM已经渲染\n this.$nextTick(() => {\n this.calculateLabelWidths();\n });\n // 监听 visualViewport 变化,检测虚拟键盘弹出\n this._handleViewportResize = this.handleViewportResize.bind(this);\n if (window.visualViewport) {\n this._initialHeight = window.visualViewport.height;\n window.visualViewport.addEventListener('resize', this._handleViewportResize);\n }\n },\n beforeDestroy() {\n if (window.visualViewport && this._handleViewportResize) {\n window.visualViewport.removeEventListener('resize', this._handleViewportResize);\n }\n },\n methods: {\n initFormData() {\n // 根据字段配置初始化表单数据\n const newFormData = {};\n this.fields.forEach(field => {\n newFormData[field.key] = '';\n });\n this.formData = newFormData;\n // 初始化下划线宽度数组\n this.labelUnderlineWidths = new Array(this.fields.length).fill(0);\n },\n calculateLabelWidths() {\n // 计算每个标签的文字宽度\n this.$nextTick(() => {\n this.fields.forEach((field, index) => {\n const labelRef = this.$refs[`inputLabel${index}`];\n if (labelRef && labelRef[0]) {\n // 创建一个临时的canvas来测量文字宽度\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n // 获取标签的计算样式\n const labelElement = labelRef[0];\n const computedStyle = window.getComputedStyle(labelElement);\n\n // 设置font样式以匹配标签\n context.font = `${computedStyle.fontWeight} ${computedStyle.fontSize} ${computedStyle.fontFamily}`;\n\n // 测量文字宽度\n const textWidth = context.measureText(field.label).width;\n\n // 添加一些额外的边距,确保下划线覆盖整个文字\n this.labelUnderlineWidths[index] = Math.ceil(textWidth) + 3;\n }\n });\n });\n },\n handleSubmit() {\n if (this.loading) return;\n // 触发父组件的提交事件,传递表单数据\n this.$emit('submit', {\n ...this.formData\n });\n },\n handleViewportResize() {\n if (!window.visualViewport) return;\n const currentHeight = window.visualViewport.height;\n // 键盘高度 = 初始视口高度 - 当前视口高度\n const keyboardHeight = this._initialHeight - currentHeight;\n // 设定阈值:视口缩小超过 150px 才认为是虚拟键盘弹出\n // 避免地址栏收缩等小幅变化误触发\n const KEYBOARD_THRESHOLD = 150;\n if (keyboardHeight > KEYBOARD_THRESHOLD) {\n // 将容器高度设为当前可见视口高度\n // flex 居中会让登录卡片自然在可见区域内居中,不会顶部溢出或底部留白\n this.viewportHeight = currentHeight;\n } else {\n this.viewportHeight = 0;\n }\n },\n handleInputFocus(event) {\n this.isFocused = true;\n const container = event.target.closest('.input-container');\n if (container) {\n const wrapper = container.querySelector('.input-wrapper');\n if (wrapper) {\n wrapper.classList.add('focused');\n }\n }\n },\n handleInputBlur(event) {\n this.isFocused = false;\n const container = event.target.closest('.input-container');\n if (container) {\n const wrapper = container.querySelector('.input-wrapper');\n if (wrapper) {\n wrapper.classList.remove('focused');\n }\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BaseLogin.vue?vue&type=template&id=583fe0d5&scoped=true\"\nimport script from \"./BaseLogin.vue?vue&type=script&lang=js\"\nexport * from \"./BaseLogin.vue?vue&type=script&lang=js\"\n\nimport \"./BaseLogin.vue?vue&type=style&index=0&id=583fe0d5&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-583fe0d5\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=66e6a1f0&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=66e6a1f0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66e6a1f0\"]])\n\nexport default __exports__"],"names":["_hoisted_1","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","href","logoHref","target","class","logo","link","logoClasses","alt","src","logoUrl","name","props","type","String","default","validator","value","includes","customSrc","position","size","enableHover","Boolean","useConfigLink","computed","this","userConfig","logoLink","__exports__","tabindex","_hoisted_3","_hoisted_4","key","_hoisted_5","_component_ToggleDark","_component_LanguageSwitcher","_component_Logo","_component_el_icon","_component_el_input","_component_el_button","_component_Footer","style","viewportStyle","title","fields","field","index","ref_for","ref","labelUnderlineWidths","label","modelValue","formData","$event","placeholder","showPassword","onKeyup","handleSubmit","onFocus","handleInputFocus","onBlur","handleInputBlur","_","icon","fn","undefined","loading","onClick","disabled","computedSubmitText","mixins","backgroundManager","required","Array","submitText","backgroundKey","isAdmin","data","isFocused","viewportHeight","$t","height","minHeight","watch","handler","$nextTick","calculateLabelWidths","deep","components","Footer","ToggleDark","LanguageSwitcher","Logo","mounted","initFormData","initializeBackground","_handleViewportResize","handleViewportResize","bind","window","visualViewport","_initialHeight","addEventListener","beforeDestroy","removeEventListener","methods","newFormData","forEach","length","fill","labelRef","$refs","canvas","document","createElement","context","getContext","labelElement","computedStyle","getComputedStyle","font","fontWeight","fontSize","fontFamily","textWidth","measureText","width","Math","ceil","$emit","currentHeight","keyboardHeight","KEYBOARD_THRESHOLD","event","container","closest","wrapper","querySelector","classList","add","remove","_component_font_awesome_icon","disableFooter","thisYear","footerLink","Date","getFullYear","id","args","handleToggleClick","mode","isAuto","isDark","viewBox","stroke","x","y","cx","cy","r","mask","opacity","x1","y1","x2","y2","$store","getters","useDarkMode","cusDarkMode","commit"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/283.efe323af.js.map.gz b/frontend-dist/js/283.efe323af.js.map.gz new file mode 100644 index 00000000..d29c2899 Binary files /dev/null and b/frontend-dist/js/283.efe323af.js.map.gz differ diff --git a/frontend-dist/js/320.c04c60ec.js b/frontend-dist/js/320.c04c60ec.js new file mode 100644 index 00000000..e6333962 --- /dev/null +++ b/frontend-dist/js/320.c04c60ec.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[320],{213:function(e,r,t){t(85331),t(19104)},4885:function(e,r,t){t(85331)},10456:function(e,r,t){t(85331)},13378:function(e,r,t){t(85331),t(38736),t(79899)},15616:function(e,r,t){t(85331),t(97197)},18785:function(e,r,t){t(85331)},19104:function(e,r,t){t(85331)},23597:function(e,r,t){t(85331)},30694:function(e,r,t){t(85331)},33892:function(e,r,t){t.d(r,{A:function(){return A}});var i=t(99114),o=(t(85331),t(30694),t(49385)),n=(t(37952),t(30650)),a=(t(19104),t(31802)),s=(t(13378),t(80047)),l=(t(99648),t(56768)),c=t(45130),d=t(24232);const u={class:"directory-tree-picker"},h={class:"tree-container"},p={key:0,class:"error-state"},f={class:"error-text"},y={class:"node-label"},v={class:"tree-container"},k={key:0,class:"error-state"},b={class:"error-text"},w={class:"node-label"};function m(e,r,t,m,g,C){const D=(0,l.g2)("font-awesome-icon"),$=s.S2,T=a.qk,A=n.Vc,V=o.pw,_=i.A;return(0,l.uX)(),(0,l.CE)("div",u,[C.isDesktop?((0,l.uX)(),(0,l.Wv)(A,{key:0,visible:g.popoverVisible,"onUpdate:visible":r[1]||(r[1]=e=>g.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:r[0]||(r[0]=(0,c.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",h,[g.error?((0,l.uX)(),(0,l.CE)("div",p,[(0,l.bF)(D,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",f,(0,d.v_)(g.error),1),(0,l.bF)($,{type:"primary",size:"small",onClick:C.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,d.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:g.treeData,props:g.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":t.currentDirectory,class:"directory-tree",onNodeClick:C.handleNodeClick},{default:(0,l.k6)(({node:e,data:r})=>[(0,l.Lk)("span",{class:(0,d.C4)(["tree-node",{"is-current":r.path===t.currentDirectory}])},[(0,l.bF)(D,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",y,(0,d.v_)(r.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[_,g.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:r[2]||(r[2]=(...e)=>C.openDrawer&&C.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(V,{modelValue:g.drawerVisible,"onUpdate:modelValue":r[3]||(r[3]=e=>g.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",v,[g.error?((0,l.uX)(),(0,l.CE)("div",k,[(0,l.bF)(D,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",b,(0,d.v_)(g.error),1),(0,l.bF)($,{type:"primary",size:"small",onClick:C.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,d.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:g.treeData,props:g.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":t.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:C.handleNodeClick},{default:(0,l.k6)(({node:e,data:r})=>[(0,l.Lk)("span",{class:(0,d.C4)(["tree-node",{"is-current":r.path===t.currentDirectory}])},[(0,l.bF)(D,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",w,(0,d.v_)(r.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[_,g.loading]])]),_:1},8,["modelValue","title"])],64))])}var g=t(457),C=t(70797),D={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const r in e.nodesMap)e.nodesMap[r].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const r in e.nodesMap)e.nodesMap[r].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const r=await(0,C.A)("/api/directoryTree",{method:"GET"});if(!r.ok)return void(401===r.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await r.json()}else{const r=await g.A.get("/api/directoryTree",{withAuthCode:!0});e=r.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let r=e.path;r&&!r.startsWith("/")?r="/"+r:r||(r="/"),this.$emit("select",r),this.popoverVisible=!1,this.drawerVisible=!1}}},$=t(71241);const T=(0,$.A)(D,[["render",m],["__scopeId","data-v-62eab69a"]]);var A=T},34396:function(e,r,t){t(85331),t(4885)},34896:function(e,r,t){t(85331)},37952:function(e,r,t){t(85331),t(97197)},38736:function(e,r,t){t(85331)},40670:function(e,r,t){t(85331),t(99648),t(19104),t(85970)},62388:function(e,r,t){t.d(r,{G:function(){return o}});var i=t(46638);function o(e,{strict:r=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:i.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:i.Ay.global.t("validation.pathTraversalNotAllowed")};const t=r?/\/\.(\/|$)/:/\/\.\//;if(t.test(e))return{valid:!1,error:i.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:i.Ay.global.t("validation.consecutiveSlashNotAllowed")};const o=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return o.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67819:function(e,r,t){t(85331)},70797:function(e,r,t){t.d(r,{A:function(){return a}});t(44114);var i=t(25507),o=t(16915);let n=!1;async function a(e,r={}){r.credentials="include",r.headers={...r.headers};const t=await fetch(e,r);return 401!==t.status||n||(n=!0,i.A.commit("setAdminLoggedIn",!1),o.A.push("/adminLogin").finally(()=>{n=!1})),t}},79899:function(e,r,t){t(85331)},85970:function(e,r,t){t(85331)},88830:function(e,r,t){t(85331)},95385:function(e,r,t){t(85331)},96808:function(e,r,t){t(85331),t(18785),t(67819),t(85970),t(19104)}}]); +//# sourceMappingURL=320.c04c60ec.js.map \ No newline at end of file diff --git a/frontend-dist/js/320.c04c60ec.js.gz b/frontend-dist/js/320.c04c60ec.js.gz new file mode 100644 index 00000000..d9368882 Binary files /dev/null and b/frontend-dist/js/320.c04c60ec.js.gz differ diff --git a/frontend-dist/js/320.c04c60ec.js.map b/frontend-dist/js/320.c04c60ec.js.map new file mode 100644 index 00000000..48d0cf55 --- /dev/null +++ b/frontend-dist/js/320.c04c60ec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/320.c04c60ec.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","validateFolderPath","strict","trim","valid","i18n","global","t","test","dotPattern","invalidChars","isRedirecting","async","url","options","credentials","headers","fetch","commit","router","push","finally"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/320.c04c60ec.js.map.gz b/frontend-dist/js/320.c04c60ec.js.map.gz new file mode 100644 index 00000000..27985e6a Binary files /dev/null and b/frontend-dist/js/320.c04c60ec.js.map.gz differ diff --git a/frontend-dist/js/331.66294132.js b/frontend-dist/js/331.66294132.js new file mode 100644 index 00000000..055a38a5 --- /dev/null +++ b/frontend-dist/js/331.66294132.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[331],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},16331:function(e,t,a){a.r(t),a.d(t,{default:function(){return C}});var n=a(80047),s=(a(85331),a(99648),a(56768));const i={class:"blocked-container"},o=["innerHTML"],r={class:"blocked-content"},c={class:"back-button-wrapper"},l={class:"status-animation"},d={class:"status-icon"},u={class:"status-badge"},g={class:"status-info"},m={class:"status-actions"},p={class:"help-info"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",i,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",r,[(0,s.Lk)("div",c,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",l,[(0,s.Lk)("div",d,[(0,s.bF)(f,{icon:"ban",class:"ban-icon"}),(0,s.Lk)("div",u,[(0,s.bF)(f,{icon:"exclamation",class:"exclamation-icon"})])])]),(0,s.Lk)("div",g,[t[9]||(t[9]=(0,s.Lk)("h1",{class:"status-title"},"图片访问被禁止",-1)),t[10]||(t[10]=(0,s.Lk)("p",{class:"status-description"}," 抱歉,当前图片已被禁止访问。 ",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"status-description-en"}," Sorry, current image is prohibited from being accessed. ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[3]||(t[3]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[8]||(t[8]=(0,s.Lk)("p",{class:"help-text"},"您可以尝试:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[5]||(t[5]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[6]||(t[6]=(0,s.eW)(" 刷新页面 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.contactSupport&&y.contactSupport(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"question-circle"}),t[7]||(t[7]=(0,s.eW)(" 联系支持 ",-1))])])]),t[12]||(t[12]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[13]||(t[13]=(0,s.Fv)('
',1))])}a(44114);var b=a(74354),y=a(60782),f=a(48903),I={name:"BlockedImage",mixins:[f.A],computed:{...(0,y.L8)(["useDarkMode","userConfig"])},setup(){(0,b.u)({title:"Blocked Image",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".blocked-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()},contactSupport(){window.open("https://github.com/MarSeventh/CloudFlare-ImgBed/issues","_blank")}}},v=a(71241);const B=(0,v.A)(I,[["render",k],["__scopeId","data-v-98114f90"]]);var C=B},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode","wallpaperEnabled"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})},wallpaperEnabled(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{e?this.reinitializeBackground(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements):this.clearBackgroundImages(!0)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!this.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const c=0!=o.style.opacity?o:r,l=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{l.src=u,l.onload=()=>{c.style.opacity=0,setTimeout(()=>{l.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); +//# sourceMappingURL=331.66294132.js.map \ No newline at end of file diff --git a/frontend-dist/js/331.66294132.js.gz b/frontend-dist/js/331.66294132.js.gz new file mode 100644 index 00000000..160d5eff Binary files /dev/null and b/frontend-dist/js/331.66294132.js.gz differ diff --git a/frontend-dist/js/331.66294132.js.map b/frontend-dist/js/331.66294132.js.map new file mode 100644 index 00000000..969b76d2 --- /dev/null +++ b/frontend-dist/js/331.66294132.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/331.66294132.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/BlockImage.vue?6078","webpack://sanyue_imghub/./src/views/BlockImage.vue","webpack://sanyue_imghub/./src/views/BlockImage.vue?e417","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"blocked-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"blocked-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-info\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"ban-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation\",\n class: \"exclamation-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_cache[9] || (_cache[9] = _createElementVNode(\"h1\", {\n class: \"status-title\"\n }, \"图片访问被禁止\", -1)), _cache[10] || (_cache[10] = _createElementVNode(\"p\", {\n class: \"status-description\"\n }, \" 抱歉,当前图片已被禁止访问。 \", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"status-description-en\"\n }, \" Sorry, current image is prohibited from being accessed. \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[3] || (_cache[3] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[8] || (_cache[8] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"您可以尝试:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 刷新页面 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.contactSupport && $options.contactSupport(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 联系支持 \", -1))])])]), _cache[12] || (_cache[12] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[13] || (_cache[13] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BlockedImage',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'Blocked Image',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.blocked-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n },\n contactSupport() {\n // 可以实现联系支持的逻辑\n window.open('https://github.com/MarSeventh/CloudFlare-ImgBed/issues', '_blank');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BlockImage.vue?vue&type=template&id=98114f90&scoped=true\"\nimport script from \"./BlockImage.vue?vue&type=script&lang=js\"\nexport * from \"./BlockImage.vue?vue&type=script&lang=js\"\n\nimport \"./BlockImage.vue?vue&type=style&index=0&id=98114f90&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-98114f90\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode', 'wallpaperEnabled']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n },\r\n // 监听全局壁纸开关:开/关时重新初始化背景\r\n wallpaperEnabled(newVal, oldVal) {\r\n if (newVal === oldVal || !this.backgroundInitParams) return\r\n this.$nextTick(() => {\r\n if (newVal) {\r\n // 开启:重新初始化背景\r\n this.reinitializeBackground(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n } else {\r\n // 关闭:清理背景\r\n this.clearBackgroundImages(true)\r\n }\r\n })\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (!this.wallpaperEnabled) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","type","goBack","href","args","refreshPage","contactSupport","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","open","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","wallpaperEnabled","reinitializeBackground","clearBackgroundImages","injectBackgroundStyles","clearInterval","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/331.66294132.js.map.gz b/frontend-dist/js/331.66294132.js.map.gz new file mode 100644 index 00000000..d75b7f6a Binary files /dev/null and b/frontend-dist/js/331.66294132.js.map.gz differ diff --git a/frontend-dist/js/345.cdce570b.js.gz b/frontend-dist/js/345.cdce570b.js.gz deleted file mode 100644 index 1f4318ef..00000000 Binary files a/frontend-dist/js/345.cdce570b.js.gz and /dev/null differ diff --git a/frontend-dist/js/345.cdce570b.js.map.gz b/frontend-dist/js/345.cdce570b.js.map.gz deleted file mode 100644 index dafcef9f..00000000 Binary files a/frontend-dist/js/345.cdce570b.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/412.2e84fff1.js b/frontend-dist/js/412.2e84fff1.js new file mode 100644 index 00000000..280566c0 --- /dev/null +++ b/frontend-dist/js/412.2e84fff1.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[412],{3975:function(e,t,i){i(44114),i(18111),i(22489),i(7588),i(61701),function(t,i){e.exports=i()}(0,function(){"use strict";function e(e,t){for(var i=0;it){var i=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}return function(){function t(e,i){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,t),f(e)?this.element=e:p(e)&&(this.element=document.querySelector(e)),f(this.element)&&b(this.element.rangeTouch)&&(this.config=s({},n,{},i),this.init())}return i=t,o=[{key:"setup",value:function(e){var i=1(i=100/l.width*(n.clientX-l.left))?i=0:100i?i-=(100-2*i)*c:50w.onPointerDown&&w.onPointerDown(...e)),onPointermove:t[4]||(t[4]=(...e)=>w.onPointerMove&&w.onPointerMove(...e)),onPointerup:t[5]||(t[5]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onPointercancel:t[6]||(t[6]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onDblclick:t[7]||(t[7]=(0,n.D$)((...e)=>w.onDblClick&&w.onDblClick(...e),["prevent"]))},[i.isImage?((0,s.uX)(),(0,s.CE)("img",{key:0,class:"tm-media",src:i.src,draggable:"false",style:(0,a.Tr)(w.mediaStyle),onLoad:t[0]||(t[0]=(...e)=>w.onLoad&&w.onLoad(...e))},null,44,r)):i.isVideo&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"tm-video-wrap",onPointerdown:t[1]||(t[1]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("video",{ref:"videoEl",class:"plyr-video",src:i.src,playsinline:""},null,8,o)],32)):i.isVideo?((0,s.uX)(),(0,s.CE)("div",l,[...t[8]||(t[8]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M8 5v14l11-7z"})],-1)])])):i.isAudio&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"tm-audio-wrap",onPointerdown:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("div",c,[v.audioCover?((0,s.uX)(),(0,s.CE)("img",{key:0,src:v.audioCover,class:"cover-img"},null,8,h)):((0,s.uX)(),(0,s.CE)("svg",d,[...t[9]||(t[9]=[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"},null,-1)])]))]),(0,s.Lk)("div",u,[(0,s.Lk)("div",p,(0,a.v_)(v.audioTitle),1),v.audioArtist?((0,s.uX)(),(0,s.CE)("div",m,(0,a.v_)(v.audioArtist),1)):(0,s.Q3)("",!0)]),(0,s.Lk)("audio",{ref:"audioEl",class:"plyr-audio",src:i.src},null,8,g)],32)):i.isAudio?((0,s.uX)(),(0,s.CE)("div",f,[t[10]||(t[10]=(0,s.Lk)("svg",{class:"audio-icon-large",viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"})],-1)),(0,s.Lk)("span",y,(0,a.v_)(v.audioTitle),1)])):(0,s.Q3)("",!0)],544)}i(18111),i(7588),i(79577),i(41549),i(49797),i(49631),i(35623);var v=i(91114),w=(i(22489),i(61701),i(81148),i(20116),i(44114),i(13579),i(3975));const k=e=>null!==e&&"undefined"!==typeof e?e.constructor:null,T=(e,t)=>Boolean(e&&t&&e instanceof t),C=e=>null===e||"undefined"===typeof e,A=e=>k(e)===Object,S=e=>k(e)===Number&&!Number.isNaN(e),x=e=>k(e)===String,M=e=>k(e)===Boolean,E=e=>"function"===typeof e,L=e=>Array.isArray(e),P=e=>T(e,WeakMap),I=e=>T(e,NodeList),$=e=>k(e)===Text,N=e=>T(e,Event),D=e=>T(e,KeyboardEvent),F=e=>T(e,window.TextTrackCue)||T(e,window.VTTCue),_=e=>T(e,TextTrack)||!C(e)&&x(e.kind),R=e=>T(e,Promise)&&E(e.then);function O(e){return null!==e&&"object"===typeof e&&1===e.nodeType&&"object"===typeof e.style&&"object"===typeof e.ownerDocument}function B(e){return C(e)||(x(e)||L(e)||I(e))&&!e.length||A(e)&&!Object.keys(e).length}function H(e){if(T(e,window.URL))return!0;if(!x(e))return!1;let t=e;e.startsWith("http://")&&e.startsWith("https://")||(t=`http://${e}`);try{return!B(new URL(t).hostname)}catch{return!1}}var V={nullOrUndefined:C,object:A,number:S,string:x,boolean:M,function:E,array:L,weakMap:P,nodeList:I,element:O,textNode:$,event:N,keyboardEvent:D,cue:F,track:_,promise:R,url:H,empty:B};const j=(()=>{const e=document.createElement("span"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i=Object.keys(t).find(t=>void 0!==e.style[t]);return!!V.string(i)&&t[i]})();function q(e,t){setTimeout(()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch{}},t)}i(18237);function U(e){return JSON.parse(JSON.stringify(e))}function X(e,t){return t.split(".").reduce((e,t)=>e&&e[t],e)}function z(e={},...t){if(!t.length)return e;const i=t.shift();return V.object(i)?(Object.keys(i).forEach(t=>{V.object(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),z(e[t],i[t])):Object.assign(e,{[t]:i[t]})}),z(e,...t)):e}function W(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)})}function K(e,t){V.element(e)&&!V.empty(t)&&Object.entries(t).filter(([,e])=>!V.nullOrUndefined(e)).forEach(([t,i])=>e.setAttribute(t,i))}function Y(e,t,i){const s=document.createElement(e);return V.object(t)&&K(s,t),V.string(i)&&(s.textContent=i),s}function Q(e,t){V.element(e)&&V.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)}function J(e,t,i,s){V.element(t)&&t.appendChild(Y(e,i,s))}function G(e){V.nodeList(e)||V.array(e)?Array.from(e).forEach(G):V.element(e)&&V.element(e.parentNode)&&e.parentNode.removeChild(e)}function Z(e){if(!V.element(e))return;let{length:t}=e.childNodes;while(t>0)e.removeChild(e.lastChild),t-=1}function ee(e,t){return V.element(t)&&V.element(t.parentNode)&&V.element(e)?(t.parentNode.replaceChild(e,t),e):null}function te(e,t){if(!V.string(e)||V.empty(e))return{};const i={},s=z({},t);return e.split(",").forEach(e=>{const t=e.trim(),n=t.replace(".",""),a=t.replace(/[[\]]/g,""),r=a.split("="),[o]=r,l=r.length>1?r[1].replace(/["']/g,""):"",c=t.charAt(0);switch(c){case".":V.string(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case"#":i.id=t.replace("#","");break;case"[":i[o]=l;break;default:break}}),z(s,i)}function ie(e,t){if(!V.element(e))return;let i=t;V.boolean(i)||(i=!e.hidden),e.hidden=i}function se(e,t,i){if(V.nodeList(e))return Array.from(e).map(e=>se(e,t,i));if(V.element(e)){let s="toggle";return"undefined"!==typeof i&&(s=i?"add":"remove"),e.classList[s](t),e.classList.contains(t)}return!1}function ne(e,t){return V.element(e)&&e.classList.contains(t)}function ae(e,t){const{prototype:i}=Element;function s(){return Array.from(document.querySelectorAll(t)).includes(this)}const n=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||s;return n.call(e,t)}function re(e,t){const{prototype:i}=Element;function s(){let e=this;do{if(ae.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}const n=i.closest||s;return n.call(e,t)}function oe(e){return this.elements.container.querySelectorAll(e)}function le(e){return this.elements.container.querySelector(e)}function ce(e=null,t=!1){V.element(e)&&e.focus({preventScroll:!0,focusVisible:t})}const he={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},de={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check(e,t){const i=de[e]||"html5"!==t,s=i&&de.rangeInput;return{api:i,ui:s}},pip:(()=>document.pictureInPictureEnabled&&!Y("video").disablePictureInPicture)(),airplay:V.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime(e){if(V.empty(e))return!1;const[t]=e.split("/");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(he).includes(i)&&(i+=`; codecs="${he[e]}"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,""))}catch{return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(()=>{const e=document.createElement("input");return e.type="range","range"===e.type})(),touch:"ontouchstart"in document.documentElement,transitions:!1!==j,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches};var ue=de;const pe=(()=>{let e=!1;try{const t=Object.defineProperty({},"passive",{get(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return e})();function me(e,t,i,s=!1,n=!0,a=!1){if(!e||!("addEventListener"in e)||V.empty(t)||!V.function(i))return;const r=t.split(" ");let o=a;pe&&(o={passive:n,capture:a}),r.forEach(t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:o}),e[s?"addEventListener":"removeEventListener"](t,i,o)})}function ge(e,t="",i,s=!0,n=!1){me.call(this,e,t,i,!0,s,n)}function fe(e,t="",i,s=!0,n=!1){me.call(this,e,t,i,!1,s,n)}function ye(e,t="",i,s=!0,n=!1){const a=(...r)=>{fe(e,t,a,s,n),i.apply(this,r)};me.call(this,e,t,a,!0,s,n)}function be(e,t="",i=!1,s={}){if(!V.element(e)||V.empty(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function ve(){this&&this.eventListeners&&(this.eventListeners.forEach(e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)}),this.eventListeners=[])}function we(){return new Promise(e=>this.ready?setTimeout(e,0):ge.call(this,this.elements.container,"ready",e)).then(()=>{})}function ke(e){V.promise(e)&&e.then(null,()=>{})}function Te(e){return V.array(e)?e.filter((t,i)=>e.indexOf(t)===i):e}function Ce(e,t){return V.array(e)&&e.length?e.reduce((e,i)=>Math.abs(i-t)({...e,[t/i]:[t,i]}),{});function xe(e){if(!V.array(e)&&(!V.string(e)||!e.includes(":")))return!1;const t=V.array(e)?e:e.split(":");return t.map(Number).every(V.number)}function Me(e){if(!V.array(e)||!e.every(V.number))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function Ee(e){const t=e=>xe(e)?e.split(":").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!V.empty(this.embed)&&V.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return Me(i)}function Le(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=Ee.call(this,e);if(!V.array(i))return{};const[s,n]=Me(i),a=Ae(`aspect-ratio: ${s}/${n}`),r=100/s*n;if(a?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${r}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*Number.parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-r)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:r,ratio:i}}function Pe(e,t,i=.05){const s=e/t,n=Ce(Object.keys(Se),s);return Math.abs(n-s)<=i?Se[n]:[e,t]}function Ie(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),t=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0);return[e,t]}const $e={getSources(){if(!this.isHTML5)return[];const e=Array.from(this.media.querySelectorAll("source"));return e.filter(e=>{const t=e.getAttribute("type");return!!V.empty(t)||ue.mime.call(this,t)})},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:$e.getSources.call(this).map(e=>Number(e.getAttribute("size"))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,V.empty(this.config.ratio)||Le.call(e),Object.defineProperty(e.media,"quality",{get(){const t=$e.getSources.call(e),i=t.find(t=>t.getAttribute("src")===e.source);return i&&Number(i.getAttribute("size"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&V.function(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=$e.getSources.call(e),s=i.find(e=>Number(e.getAttribute("size"))===t);if(!s)return;const{currentTime:n,paused:a,preload:r,readyState:o,playbackRate:l}=e.media;e.media.src=s.getAttribute("src"),("none"!==r||o)&&(e.once("loadedmetadata",()=>{e.speed=l,e.currentTime=n,a||ke(e.play())}),e.media.load())}be.call(e,e.media,"qualitychange",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(G($e.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};var Ne=$e;const De=Boolean(window.document.documentMode),Fe=/Edge/.test(navigator.userAgent),_e="WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),Re=/iPhone|iPod/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1,Oe="MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,Be=/iPad|iPhone|iPod/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1;var He={isIE:De,isEdge:Fe,isWebKit:_e,isIPhone:Re,isIPadOS:Oe,isIos:Be};function Ve(e){return`${e}-${Math.floor(1e4*Math.random())}`}function je(e,...t){return V.empty(e)?e:e.toString().replace(/\{(\d+)\}/g,(e,i)=>t[i].toString())}function qe(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}function Ue(e="",t="",i=""){return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),i.toString())}function Xe(e=""){return e.toString().replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())}function ze(e=""){let t=e.toString();return t=Ue(t,"-"," "),t=Ue(t,"_"," "),t=Xe(t),Ue(t," ","")}function We(e=""){let t=e.toString();return t=ze(t),t.charAt(0).toLowerCase()+t.slice(1)}function Ke(e){const t=document.createDocumentFragment(),i=document.createElement("div");return t.appendChild(i),i.innerHTML=e,t.firstChild.textContent}function Ye(e){const t=document.createElement("div");return t.appendChild(e),t.innerHTML}const Qe={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Je={get(e="",t={}){if(V.empty(e)||V.empty(t))return"";let i=X(t.i18n,e);if(V.empty(i))return Object.keys(Qe).includes(e)?Qe[e]:"";const s={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(s).forEach(([e,t])=>{i=Ue(i,e,t)}),i}};var Ge=Je;class Ze{constructor(e){(0,v.A)(this,"get",e=>{if(!Ze.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(V.empty(t))return null;const i=JSON.parse(t);return V.string(e)&&e.length?i[e]:i}),(0,v.A)(this,"set",e=>{if(!Ze.supported||!this.enabled)return;if(!V.object(e))return;let t=this.get();V.empty(t)&&(t={}),z(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch{}}),this.enabled=e.config.storage.enabled,this.key=e.config.storage.key}static get supported(){try{if(!("localStorage"in window))return!1;const e="___test";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch{return!1}}}var et=Ze;function tt(e,t="text",i=!1){return new Promise((s,n)=>{try{const n=new XMLHttpRequest;if(!("withCredentials"in n))return;i&&(n.withCredentials=!0),n.addEventListener("load",()=>{if("text"===t)try{s(JSON.parse(n.responseText))}catch{s(n.responseText)}else s(n.response)}),n.addEventListener("error",()=>{throw new Error(n.status)}),n.open("GET",e,!0),n.responseType=t,n.send()}catch(a){n(a)}})}function it(e,t){if(!V.string(e))return;const i="cache",s=V.string(t);let n=!1;const a=()=>null!==document.getElementById(t),r=(e,t)=>{e.innerHTML=t,s&&a()||document.body.insertAdjacentElement("afterbegin",e)};if(!s||!a()){const a=et.supported,o=document.createElement("div");if(o.setAttribute("hidden",""),s&&o.setAttribute("id",t),a){const e=window.localStorage.getItem(`${i}-${t}`);if(n=null!==e,n){const t=JSON.parse(e);r(o,t.content)}}tt(e).then(e=>{if(!V.empty(e)){if(a)try{window.localStorage.setItem(`${i}-${t}`,JSON.stringify({content:e}))}catch{}r(o,e)}}).catch(()=>{})}}const st=e=>Math.trunc(e/60/60%60,10),nt=e=>Math.trunc(e/60%60,10),at=e=>Math.trunc(e%60,10);function rt(e=0,t=!1,i=!1){if(!V.number(e))return rt(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=st(e);const a=nt(e),r=at(e);return n=t||n>0?`${n}:`:"",`${i&&e>0?"-":""}${n}${s(a)}:${s(r)}`}const ot={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||He.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=le.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:oe.call(this,this.config.selectors.buttons.play),pause:le.call(this,this.config.selectors.buttons.pause),restart:le.call(this,this.config.selectors.buttons.restart),rewind:le.call(this,this.config.selectors.buttons.rewind),fastForward:le.call(this,this.config.selectors.buttons.fastForward),mute:le.call(this,this.config.selectors.buttons.mute),pip:le.call(this,this.config.selectors.buttons.pip),airplay:le.call(this,this.config.selectors.buttons.airplay),settings:le.call(this,this.config.selectors.buttons.settings),captions:le.call(this,this.config.selectors.buttons.captions),fullscreen:le.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=le.call(this,this.config.selectors.progress),this.elements.inputs={seek:le.call(this,this.config.selectors.inputs.seek),volume:le.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:le.call(this,this.config.selectors.display.buffer),currentTime:le.call(this,this.config.selectors.display.currentTime),duration:le.call(this,this.config.selectors.display.duration)},V.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i="http://www.w3.org/2000/svg",s=ot.getIconUrl.call(this),n=`${s.cors?"":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,"svg");K(a,z(t,{"aria-hidden":"true",focusable:"false"}));const r=document.createElementNS(i,"use"),o=`${n}-${e}`;return"href"in r&&r.setAttributeNS("http://www.w3.org/1999/xlink","href",o),r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),a.appendChild(r),a},createLabel(e,t={}){const i=Ge.get(e,this.config),s={...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")};return Y("span",s,i)},createBadge(e){if(V.empty(e))return null;const t=Y("span",{class:this.config.classNames.menu.value});return t.appendChild(Y("span",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=z({},t);let s=We(e);const n={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach(e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])}),"button"!==n.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").includes(this.config.classNames.control)||z(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case"play":n.toggle=!0,n.label="play",n.labelPressed="pause",n.icon="play",n.iconPressed="pause";break;case"mute":n.toggle=!0,n.label="mute",n.labelPressed="unmute",n.icon="volume",n.iconPressed="muted";break;case"captions":n.toggle=!0,n.label="enableCaptions",n.labelPressed="disableCaptions",n.icon="captions-off",n.iconPressed="captions-on";break;case"fullscreen":n.toggle=!0,n.label="enterFullscreen",n.labelPressed="exitFullscreen",n.icon="enter-fullscreen",n.iconPressed="exit-fullscreen";break;case"play-large":i.class+=` ${this.config.classNames.control}--overlaid`,s="play",n.label="play",n.icon="play";break;default:V.empty(n.label)&&(n.label=s),V.empty(n.icon)&&(n.icon=e)}const a=Y(n.element);return n.toggle?(a.appendChild(ot.createIcon.call(this,n.iconPressed,{class:"icon--pressed"})),a.appendChild(ot.createIcon.call(this,n.icon,{class:"icon--not-pressed"})),a.appendChild(ot.createLabel.call(this,n.labelPressed,{class:"label--pressed"})),a.appendChild(ot.createLabel.call(this,n.label,{class:"label--not-pressed"}))):(a.appendChild(ot.createIcon.call(this,n.icon)),a.appendChild(ot.createLabel.call(this,n.label))),z(i,te(this.config.selectors.buttons[s],i)),K(a,i),"play"===s?(V.array(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=Y("input",z(te(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Ge.get(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=i,ot.updateRangeFill.call(this,i),w.setup(i),i},createProgress(e,t){const i=Y("progress",z(te(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){i.appendChild(Y("span",null,"0"));const t={played:"played",buffer:"buffered"}[e],s=t?Ge.get(t,this.config):"";i.textContent=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=te(this.config.selectors.display[e],t),s=Y("div",z(i,{class:`${i.class?i.class:""} ${this.config.classNames.display.time} `.trim(),"aria-label":Ge.get(e,this.config),role:"timer"}),"00:00");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){ge.call(this,e,"keydown keyup",i=>{if(![" ","ArrowUp","ArrowDown","ArrowRight"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),"keydown"===i.type)return;const s=ae(e,'[role="menuitemradio"]');if(!s&&[" ","ArrowRight"].includes(i.key))ot.showMenuPanel.call(this,t,!0);else{let t;" "!==i.key&&("ArrowDown"===i.key||s&&"ArrowRight"===i.key?(t=e.nextElementSibling,V.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,V.element(t)||(t=e.parentNode.lastElementChild)),ce.call(this,t,!0))}},!1),ge.call(this,e,"keyup",e=>{"Return"===e.key&&ot.focusFirstMenuItem.call(this,null,!0)})},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const r=te(this.config.selectors.inputs[i]),o=Y("button",z(r,{type:"button",role:"menuitemradio",class:`${this.config.classNames.control} ${r.class?r.class:""}`.trim(),"aria-checked":a,value:e})),l=Y("span");l.innerHTML=s,V.element(n)&&l.appendChild(n),o.appendChild(l),Object.defineProperty(o,"checked",{enumerable:!0,get(){return"true"===o.getAttribute("aria-checked")},set(e){e&&Array.from(o.parentNode.children).filter(e=>ae(e,'[role="menuitemradio"]')).forEach(e=>e.setAttribute("aria-checked","false")),o.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(o,"click keyup",t=>{if(!V.keyboardEvent(t)||" "===t.key){switch(t.preventDefault(),t.stopPropagation(),o.checked=!0,i){case"language":this.currentTrack=Number(e);break;case"quality":this.quality=e;break;case"speed":this.speed=Number.parseFloat(e);break;default:break}ot.showMenuPanel.call(this,"home",V.keyboardEvent(t))}},i,!1),ot.bindMenuItemShortcuts.call(this,o,i),t.appendChild(o)},formatTime(e=0,t=!1){if(!V.number(e))return e;const i=st(this.duration)>0;return rt(e,i,t)},updateTimeDisplay(e=null,t=0,i=!1){V.element(e)&&V.number(t)&&(e.textContent=ot.formatTime(t,i))},updateVolume(){this.supported.ui&&(V.element(this.elements.inputs.volume)&&ot.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),V.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){V.element(e)&&(e.value=t,ot.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!V.event(e))return;let t=0;const i=(e,t)=>{const i=V.number(t)?t:0,s=V.element(e)?e:this.elements.display.buffer;if(V.element(s)){s.value=i;const e=s.getElementsByTagName("span")[0];V.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":t=qe(this.currentTime,this.duration),"timeupdate"===e.type&&ot.setRange.call(this,this.elements.inputs.seek,t);break;case"playing":case"progress":i(this.elements.display.buffer,100*this.buffered);break;default:break}},updateRangeFill(e){const t=V.event(e)?e.target:e;if(V.element(t)&&"range"===t.getAttribute("type")){if(ae(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);const e=ot.formatTime(this.currentTime),i=ot.formatTime(this.duration),s=Ge.get("seekLabel",this.config);t.setAttribute("aria-valuetext",s.replace("{currentTime}",e).replace("{duration}",i))}else if(ae(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute("aria-valuenow",e),t.setAttribute("aria-valuetext",`${e.toFixed(1)}%`)}else t.setAttribute("aria-valuenow",t.value);(He.isWebKit||He.isIPadOS)&&t.style.setProperty("--value",t.value/t.max*100+"%")}},updateSeekTooltip(e){if(!this.config.tooltips.seek||!V.element(this.elements.inputs.seek)||!V.element(this.elements.display.seekTooltip)||0===this.duration)return;const t=this.elements.display.seekTooltip,i=`${this.config.classNames.tooltip}--visible`,s=e=>se(t,i,e);if(this.touch)return void s(!1);let n=0;const a=this.elements.progress.getBoundingClientRect();if(V.event(e)){const t=e.pageX-e.clientX;n=100/a.width*(e.pageX-a.left-t)}else{if(!ne(t,i))return;n=Number.parseFloat(t.style.left,10)}n<0?n=0:n>100&&(n=100);const r=this.duration/100*n;t.textContent=ot.formatTime(r);const o=this.config.markers?.points?.find(({time:e})=>e===Math.round(r));o&&t.insertAdjacentHTML("afterbegin",`${o.label}
`),t.style.left=`${n}%`,V.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&s("mouseenter"===e.type)},timeUpdate(e){const t=!V.element(this.elements.display.duration)&&this.config.invertTime;ot.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||ot.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return ie(this.elements.display.currentTime,!0),void ie(this.elements.progress,!0);V.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);const e=V.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&ot.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&ot.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&ot.setMarkers.call(this),ot.updateSeekTooltip.call(this)},toggleMenuButton(e,t){ie(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if("captions"===e)n=this.currentTrack;else{if(n=V.empty(i)?this[e]:i,V.empty(n)&&(n=this.config[e].default),!V.empty(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(V.element(a)||(a=s&&s.querySelector('[role="menu"]')),!V.element(a))return;const r=this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`);r.innerHTML=ot.getLabel.call(this,e,n);const o=a&&a.querySelector(`[value="${n}"]`);V.element(o)&&(o.checked=!0)},getLabel(e,t){switch(e){case"speed":return 1===t?Ge.get("normal",this.config):`${t}×`;case"quality":if(V.number(t)){const e=Ge.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return Xe(t);case"captions":return ut.getLabel.call(this);default:return null}},setQualityMenu(e){if(!V.element(this.elements.settings.panels.quality))return;const t="quality",i=this.elements.settings.panels.quality.querySelector('[role="menu"]');V.array(e)&&(this.options.quality=Te(e).filter(e=>this.config.quality.options.includes(e)));const s=!V.empty(this.options.quality)&&this.options.quality.length>1;if(ot.toggleMenuButton.call(this,t,s),Z(i),ot.checkMenu.call(this),!s)return;const n=e=>{const t=Ge.get(`qualityBadge.${e}`,this.config);return t.length?ot.createBadge.call(this,t):null};this.options.quality.sort((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1}).forEach(e=>{ot.createMenuItem.call(this,{value:e,list:i,type:t,title:ot.getLabel.call(this,"quality",e),badge:n(e)})}),ot.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!V.element(this.elements.settings.panels.captions))return;const e="captions",t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),i=ut.getTracks.call(this),s=Boolean(i.length);if(ot.toggleMenuButton.call(this,e,s),Z(t),ot.checkMenu.call(this),!s)return;const n=i.map((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:ut.getLabel.call(this,e),badge:e.language&&ot.createBadge.call(this,e.language.toUpperCase()),list:t,type:"language"}));n.unshift({value:-1,checked:!this.captions.toggled,title:Ge.get("disabled",this.config),list:t,type:"language"}),n.forEach(ot.createMenuItem.bind(this)),ot.updateSetting.call(this,e,t)},setSpeedMenu(){if(!V.element(this.elements.settings.panels.speed))return;const e="speed",t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter(e=>e>=this.minimumSpeed&&e<=this.maximumSpeed);const i=!V.empty(this.options.speed)&&this.options.speed.length>1;ot.toggleMenuButton.call(this,e,i),Z(t),ot.checkMenu.call(this),i&&(this.options.speed.forEach(i=>{ot.createMenuItem.call(this,{value:i,list:t,type:e,title:ot.getLabel.call(this,"speed",i)})}),ot.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!V.empty(e)&&Object.values(e).some(e=>!e.hidden);ie(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;V.element(i)||(i=Object.values(this.elements.settings.panels).find(e=>!e.hidden));const s=i.querySelector('[role^="menuitem"]');ce.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!V.element(t)||!V.element(i))return;const{hidden:s}=t;let n=s;if(V.boolean(e))n=e;else if(V.keyboardEvent(e)&&"Escape"===e.key)n=!1;else if(V.event(e)){const s=V.function(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute("aria-expanded",n),ie(t,!n),se(this.elements.container,this.config.classNames.menu.open,n),n&&V.keyboardEvent(e)?ot.focusFirstMenuItem.call(this,null,!0):n||s||ce.call(this,i,V.keyboardEvent(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return G(t),{width:i,height:s}},showMenuPanel(e="",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!V.element(i))return;const s=i.parentNode,n=Array.from(s.children).find(e=>!e.hidden);if(ue.transitions&&!ue.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=ot.getMenuSize.call(this,i),t=e=>{e.target===s&&["width","height"].includes(e.propertyName)&&(s.style.width="",s.style.height="",fe.call(this,s,j,t))};ge.call(this,s,j,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}ie(n,!0),ie(i,!1),ot.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;V.element(e)&&e.setAttribute("href",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:r,setSpeedMenu:o,showMenuPanel:l}=ot;this.elements.controls=null,V.array(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));const c=Y("div",te(this.config.selectors.controls.wrapper));this.elements.controls=c;const h={class:"plyr__controls__item"};return Te(V.array(this.config.controls)?this.config.controls:[]).forEach(r=>{if("restart"===r&&c.appendChild(i.call(this,"restart",h)),"rewind"===r&&c.appendChild(i.call(this,"rewind",h)),"play"===r&&c.appendChild(i.call(this,"play",h)),"fast-forward"===r&&c.appendChild(i.call(this,"fast-forward",h)),"progress"===r){const t=Y("div",{class:`${h.class} plyr__progress__container`}),i=Y("div",te(this.config.selectors.progress));if(i.appendChild(n.call(this,"seek",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,"buffer")),this.config.tooltips.seek){const e=Y("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if("current-time"===r&&c.appendChild(a.call(this,"currentTime",h)),"duration"===r&&c.appendChild(a.call(this,"duration",h)),"mute"===r||"volume"===r){let{volume:t}=this.elements;if(V.element(t)&&c.contains(t)||(t=Y("div",z({},h,{class:`${h.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),"mute"===r&&t.appendChild(i.call(this,"mute")),"volume"===r&&!He.isIos&&!He.isIPadOS){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,"volume",z(i,{id:`plyr-volume-${e.id}`})))}}if("captions"===r&&c.appendChild(i.call(this,"captions",h)),"settings"===r&&!V.empty(this.config.settings)){const s=Y("div",z({},h,{class:`${h.class} plyr__menu`.trim(),hidden:""}));s.appendChild(i.call(this,"settings",{"aria-haspopup":!0,"aria-controls":`plyr-settings-${e.id}`,"aria-expanded":!1}));const n=Y("div",{class:"plyr__menu__container",id:`plyr-settings-${e.id}`,hidden:""}),a=Y("div"),r=Y("div",{id:`plyr-settings-${e.id}-home`}),o=Y("div",{role:"menu"});r.appendChild(o),a.appendChild(r),this.elements.settings.panels.home=r,this.config.settings.forEach(i=>{const s=Y("button",z(te(this.config.selectors.buttons.settings),{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:"menuitem","aria-haspopup":!0,hidden:""}));t.call(this,s,i),ge.call(this,s,"click",()=>{l.call(this,i,!1)});const n=Y("span",null,Ge.get(i,this.config)),r=Y("span",{class:this.config.classNames.menu.value});r.innerHTML=e[i],n.appendChild(r),s.appendChild(n),o.appendChild(s);const c=Y("div",{id:`plyr-settings-${e.id}-${i}`,hidden:""}),h=Y("button",{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});h.appendChild(Y("span",{"aria-hidden":!0},Ge.get(i,this.config))),h.appendChild(Y("span",{class:this.config.classNames.hidden},Ge.get("menuBack",this.config))),ge.call(this,c,"keydown",e=>{"ArrowLeft"===e.key&&(e.preventDefault(),e.stopPropagation(),l.call(this,"home",!0))},!1),ge.call(this,h,"click",()=>{l.call(this,"home",!1)}),c.appendChild(h),c.appendChild(Y("div",{role:"menu"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c}),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if("pip"===r&&ue.pip&&c.appendChild(i.call(this,"pip",h)),"airplay"===r&&ue.airplay&&c.appendChild(i.call(this,"airplay",h)),"download"===r){const e=z({},h,{element:"a",href:this.download,target:"_blank"});this.isHTML5&&(e.download="");const{download:t}=this.config.urls;!V.url(t)&&this.isEmbed&&z(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,"download",e))}"fullscreen"===r&&c.appendChild(i.call(this,"fullscreen",h))}),this.isHTML5&&r.call(this,Ne.getQualityOptions.call(this)),o.call(this),c},inject(){if(this.config.loadSprite){const e=ot.getIconUrl.call(this);e.cors&&it(e.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;V.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),V.element(this.config.controls)||V.string(this.config.controls)?e=this.config.controls:(e=ot.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:ut.getLabel.call(this)}),i=!1);const s=e=>{let i=e;return Object.entries(t).forEach(([e,t])=>{i=Ue(i,`{${e}}`,t)}),i};let n;i&&V.string(this.config.controls)&&(e=s(e)),V.string(this.config.selectors.controls.container)&&(n=document.querySelector(this.config.selectors.controls.container)),V.element(n)||(n=this.elements.container);const a=V.element(e)?"insertAdjacentElement":"insertAdjacentHTML";if(n[a]("afterbegin",e),V.element(this.elements.controls)||ot.findElements.call(this),!V.empty(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute("aria-pressed","false"),Object.defineProperty(e,"pressed",{configurable:!0,enumerable:!0,get(){return ne(e,t)},set(i=!1){se(e,t,i),e.setAttribute("aria-pressed",i?"true":"false")}})};Object.values(this.elements.buttons).filter(Boolean).forEach(t=>{V.array(t)||V.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)})}if(He.isEdge&&q(n),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=oe.call(this,i);Array.from(s).forEach(e=>{se(e,this.config.classNames.hidden,!1),se(e,this.config.classNames.tooltip,!0)})}},setMediaMetadata(){try{"mediaSession"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch{}},setMarkers(){if(!this.duration||this.elements.markers)return;const e=this.config.markers?.points?.filter(({time:e})=>e>0&&ese(s,n,e);e.forEach(e=>{const t=Y("span",{class:this.config.classNames.marker},""),n=e.time/this.duration*100+"%";s&&(t.addEventListener("mouseenter",()=>{e.label||(s.style.left=n,s.innerHTML=e.label,a(!0))}),t.addEventListener("mouseleave",()=>{a(!1)})),t.addEventListener("click",()=>{this.currentTime=e.time}),t.style.left=n,i.appendChild(t)}),t.appendChild(i),this.config.tooltips.seek||(s=Y("span",{class:this.config.classNames.tooltip},""),t.appendChild(s)),this.elements.markers={points:i,tip:s},this.elements.progress.appendChild(t)}};var lt=ot;function ct(e,t=!0){let i=e;if(t){const e=document.createElement("a");e.href=i,i=e.href}try{return new URL(i)}catch{return null}}function ht(e){const t=new URLSearchParams;return V.object(e)&&Object.entries(e).forEach(([e,i])=>{t.set(e,i)}),t}const dt={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!ue.textTracks)return void(V.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&<.setCaptionsMenu.call(this));if(V.element(this.elements.captions)||(this.elements.captions=Y("div",te(this.config.selectors.captions)),this.elements.captions.setAttribute("dir","auto"),Q(this.elements.captions,this.elements.wrapper)),He.isIE&&window.URL){const e=this.media.querySelectorAll("track");Array.from(e).forEach(e=>{const t=e.getAttribute("src"),i=ct(t);null!==i&&i.hostname!==window.location.href.hostname&&["http:","https:"].includes(i.protocol)&&tt(t,"blob").then(t=>{e.setAttribute("src",window.URL.createObjectURL(t))}).catch(()=>{G(e)})})}const e=navigator.languages||[navigator.language||navigator.userLanguage||"en"],t=Te(e.map(e=>e.split("-")[0]));let i=(this.storage.get("language")||this.captions.language||this.config.captions.language||"auto").toLowerCase();"auto"===i&&([i]=t);let s=this.storage.get("captions")||this.captions.active;if(V.boolean(s)||({active:s}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:s,language:i,languages:t}),this.isHTML5){const e=this.config.captions.update?"addtrack removetrack":"removetrack";ge.call(this,this.media.textTracks,e,dt.update.bind(this))}setTimeout(dt.update.bind(this),0)},update(){const e=dt.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find(e=>e.language===i));this.isHTML5&&this.isVideo&&e.filter(e=>!s.get(e)).forEach(e=>{this.debug.log("Track added",e),s.set(e,{default:"showing"===e.mode}),"showing"===e.mode&&(e.mode="hidden"),ge.call(this,e,"cuechange",()=>dt.updateCues.call(this))}),(a&&this.language!==i||!e.includes(n))&&(dt.setLanguage.call(this,i),dt.toggle.call(this,t&&a)),this.elements&&se(this.elements.container,this.config.classNames.captions.enabled,!V.empty(e)),V.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&<.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=V.nullOrUndefined(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=dt.getTracks.call(this),t=dt.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void dt.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),se(this.elements.container,s,n),this.captions.toggled=n,lt.updateSetting.call(this,"captions"),be.call(this,this.media,n?"captionsenabled":"captionsdisabled")}setTimeout(()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode="hidden")})},set(e,t=!0){const i=dt.getTracks.call(this);if(-1!==e)if(V.number(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,lt.updateSetting.call(this,"captions"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),be.call(this,this.media,"languagechange")}dt.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&dt.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else dt.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!V.string(e))return void this.debug.warn("Invalid language argument",e);const i=e.toLowerCase();this.captions.language=i;const s=dt.getTracks.call(this),n=dt.findTrack.call(this,[i]);dt.set.call(this,s.indexOf(n),t)},getTracks(e=!1){const t=Array.from((this.media||{}).textTracks||[]);return t.filter(t=>!this.isHTML5||e||this.captions.meta.has(t)).filter(e=>["captions","subtitles"].includes(e.kind))},findTrack(e,t=!1){const i=dt.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort((e,t)=>s(t)-s(e));let a;return e.every(e=>(a=n.find(t=>t.language===e),!a)),a||(t?n[0]:void 0)},getCurrentTrack(){return dt.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!V.track(t)&&ue.textTracks&&this.captions.toggled&&(t=dt.getCurrentTrack.call(this)),V.track(t)?V.empty(t.label)?V.empty(t.language)?Ge.get("enabled",this.config):e.language.toUpperCase():t.label:Ge.get("disabled",this.config)},updateCues(e){if(!this.supported.ui)return;if(!V.element(this.elements.captions))return void this.debug.warn("No captions element to render to");if(!V.nullOrUndefined(e)&&!Array.isArray(e))return void this.debug.warn("updateCues: Invalid input",e);let t=e;if(!t){const e=dt.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map(e=>e.getCueAsHTML()).map(Ye)}const i=t.map(e=>e.trim()).join("\n"),s=i!==this.elements.captions.innerHTML;if(s){Z(this.elements.captions);const e=Y("span",te(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),be.call(this,this.media,"cuechange")}}};var ut=dt;const pt={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.8.3/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/oembed.json?url={0}"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",marker:"plyr__progress__marker",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id",hash:"data-plyr-embed-hash"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:"",withCredentials:!1},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:"",artist:"",album:"",artwork:[]},markers:{enabled:!1,points:[]}};var mt=pt;const gt={active:"picture-in-picture",inactive:"inline"};const ft={html5:"html5",youtube:"youtube",vimeo:"vimeo"},yt={audio:"audio",video:"video"};function bt(e){return/^(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?ft.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?ft.vimeo:null}function vt(){}class wt{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log("Debugging enabled")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):vt}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):vt}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):vt}}class kt{constructor(e){(0,v.A)(this,"onChange",()=>{if(!this.supported)return;const e=this.player.elements.buttons.fullscreen;V.element(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;be.call(this.player,t,this.active?"enterfullscreen":"exitfullscreen",!0)}),(0,v.A)(this,"toggleFallback",(e=!1)=>{if(e?this.scrollPosition={x:window.scrollX??0,y:window.scrollY??0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",se(this.target,this.player.config.classNames.fullscreen.fallback,e),He.isIos){let t=document.head.querySelector('meta[name="viewport"]');const i="viewport-fit=cover";t||(t=document.createElement("meta"),t.setAttribute("name","viewport"));const s=V.string(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(",").filter(e=>e.trim()!==i).join(","))}this.onChange()}),(0,v.A)(this,"trapFocus",e=>{if(He.isIos||He.isIPadOS||!this.active||"Tab"!==e.key)return;const t=document.activeElement,i=oe.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())}),(0,v.A)(this,"update",()=>{if(this.supported){let e;e=this.forceFallback?"Fallback (forced)":kt.nativeSupported?"Native":"Fallback",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log("Fullscreen not supported and fallback disabled");se(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.supported)}),(0,v.A)(this,"enter",()=>{this.supported&&(He.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!kt.nativeSupported||this.forceFallback?this.toggleFallback(!0):this.prefix?V.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:"hide"}))}),(0,v.A)(this,"exit",()=>{if(this.supported)if(He.isIos&&this.player.config.fullscreen.iosNative)this.player.isVimeo?this.player.embed.exitFullscreen():this.target.webkitEnterFullscreen(),ke(this.player.play());else if(!kt.nativeSupported||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!V.empty(this.prefix)){const e="moz"===this.prefix?"Cancel":"Exit";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}),(0,v.A)(this,"toggle",()=>{this.active?this.exit():this.enter()}),this.player=e,this.prefix=kt.prefix,this.property=kt.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===e.config.fullscreen.fallback,this.player.elements.fullscreen=e.config.fullscreen.container&&re(this.player.elements.container,e.config.fullscreen.container),ge.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":`${this.prefix}fullscreenchange`,()=>{this.onChange()}),ge.call(this.player,this.player.elements.container,"dblclick",e=>{V.element(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,"fullscreen")}),ge.call(this,this.player.elements.container,"keydown",e=>this.trapFocus(e)),this.update()}static get nativeSupported(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get useNative(){return kt.nativeSupported&&!this.forceFallback}static get prefix(){if(V.function(document.exitFullscreen))return"";let e="";const t=["webkit","moz","ms"];return t.some(t=>!(!V.function(document[`${t}ExitFullscreen`])&&!V.function(document[`${t}CancelFullScreen`]))&&(e=t,!0)),e}static get property(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}get supported(){return[this.player.config.fullscreen.enabled,this.player.isVideo,kt.nativeSupported||this.player.config.fullscreen.fallback,!this.player.isYouTube||kt.nativeSupported||!He.isIos||this.player.config.playsinline&&!this.player.config.fullscreen.iosNative].every(Boolean)}get active(){if(!this.supported)return!1;if(!kt.nativeSupported||this.forceFallback)return ne(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return He.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen??this.player.elements.container}}var Tt=kt;function Ct(e,t=1){return new Promise((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})})}const At={addStyleHook(){se(this.elements.container,this.config.selectors.container.replace(".",""),!0),se(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void At.toggleNativeControls.call(this,!0);V.element(this.elements.controls)||(lt.inject.call(this),this.listeners.controls()),At.toggleNativeControls.call(this),this.isHTML5&&ut.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,lt.updateVolume.call(this),lt.timeUpdate.call(this),lt.durationUpdate.call(this),At.checkPlaying.call(this),se(this.elements.container,this.config.classNames.pip.supported,ue.pip&&this.isHTML5&&this.isVideo),se(this.elements.container,this.config.classNames.airplay.supported,ue.airplay&&this.isHTML5),se(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout(()=>{be.call(this,this.media,"ready")},0),At.setTitle.call(this),this.poster&&At.setPoster.call(this,this.poster,!1).catch(()=>{}),this.config.duration&<.durationUpdate.call(this),this.config.mediaMetadata&<.setMediaMetadata.call(this)},setTitle(){let e=Ge.get("play",this.config);if(V.string(this.config.title)&&!V.empty(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach(t=>{t.setAttribute("aria-label",e)}),this.isEmbed){const e=le.call(this,"iframe");if(!V.element(e))return;const t=V.empty(this.config.title)?"video":this.config.title,i=Ge.get("frameTitle",this.config);e.setAttribute("title",i.replace("{title}",t))}},togglePoster(e){se(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),this.elements.poster.removeAttribute("hidden"),we.call(this).then(()=>Ct(e)).catch(t=>{throw e===this.poster&&At.togglePoster.call(this,!1),t}).then(()=>{if(e!==this.poster)throw new Error("setPoster cancelled by later call to setPoster")}).then(()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:""}),At.togglePoster.call(this,!0),e)))},checkPlaying(e){se(this.elements.container,this.config.classNames.playing,this.playing),se(this.elements.container,this.config.classNames.paused,this.paused),se(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach(e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute("aria-label",Ge.get(this.playing?"pause":"play",this.config))}),V.event(e)&&"timeupdate"===e.type||At.toggleControls.call(this)},checkLoading(e){this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout(()=>{se(this.elements.container,this.config.classNames.loading,this.loading),At.toggleControls.call(this)},this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter(e=>!V.empty(e)&&V.string(e)&&e.startsWith("--plyr")).forEach(e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)}),V.empty(this.media.style)&&this.media.removeAttribute("style")}};var St=At;class xt{constructor(e){(0,v.A)(this,"firstTouch",()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,se(t.container,e.config.classNames.isTouch,!0)}),(0,v.A)(this,"global",(e=!0)=>{const{player:t}=this;t.config.keyboard.global&&me.call(t,window,"keydown keyup",this.handleKey,e,!1),me.call(t,document.body,"click",this.toggleMenu,e),ye.call(t,document.body,"touchstart",this.firstTouch)}),(0,v.A)(this,"container",()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&ge.call(e,i.container,"keydown keyup",this.handleKey,!1),ge.call(e,i.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",t=>{const{controls:n}=i;n&&"enterfullscreen"===t.type&&(n.pressed=!1,n.hover=!1);const a=["touchstart","touchmove","mousemove"].includes(t.type);let r=0;a&&(St.toggleControls.call(e,!0),r=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout(()=>St.toggleControls.call(e,!1),r)});const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=Ee.call(e),r=Ae(`aspect-ratio: ${n} / ${a}`);if(!s)return void(r?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[o,l]=Ie(),c=o/l>n/a;r?(t.style.width=c?"auto":"100%",t.style.height=c?"100%":"auto"):(t.style.maxWidth=c?l/a*n+"px":null,t.style.margin=c?"0 auto":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};ge.call(e,i.container,"enterfullscreen exitfullscreen",t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&V.empty(e.config.ratio))return;n();const r="enterfullscreen"===t.type?ge:fe;r.call(e,window,"resize",a)})}),(0,v.A)(this,"media",()=>{const{player:e}=this,{elements:t}=e;if(ge.call(e,e.media,"timeupdate seeking seeked",t=>lt.timeUpdate.call(e,t)),ge.call(e,e.media,"durationchange loadeddata loadedmetadata",t=>lt.durationUpdate.call(e,t)),ge.call(e,e.media,"ended",()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())}),ge.call(e,e.media,"progress playing seeking seeked",t=>lt.updateProgress.call(e,t)),ge.call(e,e.media,"volumechange",t=>lt.updateVolume.call(e,t)),ge.call(e,e.media,"playing play pause ended emptied timeupdate",t=>St.checkPlaying.call(e,t)),ge.call(e,e.media,"waiting canplay seeked playing",t=>St.checkLoading.call(e,t)),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=le.call(e,`.${e.config.classNames.video}`);if(!V.element(i))return;ge.call(e,t.container,"click",s=>{const n=[t.container,i];(n.includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,"restart"),this.proxy(s,()=>{ke(e.play())},"play")):this.proxy(s,()=>{ke(e.togglePlay())},"play")))})}e.supported.ui&&e.config.disableContextMenu&&ge.call(e,t.wrapper,"contextmenu",e=>{e.preventDefault()},!1),ge.call(e,e.media,"volumechange",()=>{e.storage.set({volume:e.volume,muted:e.muted})}),ge.call(e,e.media,"ratechange",()=>{lt.updateSetting.call(e,"speed"),e.storage.set({speed:e.speed})}),ge.call(e,e.media,"qualitychange",t=>{lt.updateSetting.call(e,"quality",null,t.detail.quality)}),ge.call(e,e.media,"ready qualitychange",()=>{lt.setDownloadUrl.call(e)});const i=e.config.events.concat(["keyup","keydown"]).join(" ");ge.call(e,e.media,i,i=>{let{detail:s={}}=i;"error"===i.type&&(s=e.media.error),be.call(e,t.container,i.type,!0,s)})}),(0,v.A)(this,"proxy",(e,t,i)=>{const{player:s}=this,n=s.config.listeners[i],a=V.function(n);let r=!0;a&&(r=n.call(s,e)),!1!==r&&V.function(t)&&t.call(s,e)}),(0,v.A)(this,"bind",(e,t,i,s,n=!0)=>{const{player:a}=this,r=a.config.listeners[s],o=V.function(r);ge.call(a,e,t,e=>this.proxy(e,i,s),n&&!o)}),(0,v.A)(this,"controls",()=>{const{player:e}=this,{elements:t}=e,i=He.isIE?"change":"input";if(t.buttons.play&&Array.from(t.buttons.play).forEach(t=>{this.bind(t,"click",()=>{ke(e.togglePlay())},"play")}),this.bind(t.buttons.restart,"click",e.restart,"restart"),this.bind(t.buttons.rewind,"click",()=>{e.lastSeekTime=Date.now(),e.rewind()},"rewind"),this.bind(t.buttons.fastForward,"click",()=>{e.lastSeekTime=Date.now(),e.forward()},"fastForward"),this.bind(t.buttons.mute,"click",()=>{e.muted=!e.muted},"mute"),this.bind(t.buttons.captions,"click",()=>e.toggleCaptions()),this.bind(t.buttons.download,"click",()=>{be.call(e,e.media,"download")},"download"),this.bind(t.buttons.fullscreen,"click",()=>{e.fullscreen.toggle()},"fullscreen"),this.bind(t.buttons.pip,"click",()=>{e.pip="toggle"},"pip"),this.bind(t.buttons.airplay,"click",e.airplay,"airplay"),this.bind(t.buttons.settings,"click",t=>{t.stopPropagation(),t.preventDefault(),lt.toggleMenu.call(e,t)},null,!1),this.bind(t.buttons.settings,"keyup",t=>{[" ","Enter"].includes(t.key)&&("Enter"!==t.key?(t.preventDefault(),t.stopPropagation(),lt.toggleMenu.call(e,t)):lt.focusFirstMenuItem.call(e,null,!0))},null,!1),this.bind(t.settings.menu,"keydown",t=>{"Escape"===t.key&<.toggleMenu.call(e,t)}),this.bind(t.inputs.seek,"mousedown mousemove",e=>{const i=t.progress.getBoundingClientRect(),s=e.pageX-e.clientX,n=100/i.width*(e.pageX-i.left-s);e.currentTarget.setAttribute("seek-value",n)}),this.bind(t.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",t=>{const i=t.currentTarget,s="play-on-seeked";if(V.keyboardEvent(t)&&!["ArrowLeft","ArrowRight"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=["mouseup","touchend","keyup"].includes(t.type);n&&a?(i.removeAttribute(s),ke(e.play())):!a&&e.playing&&(i.setAttribute(s,""),e.pause())}),He.isIos){const t=oe.call(e,'input[type="range"]');Array.from(t).forEach(e=>this.bind(e,i,e=>q(e.target)))}this.bind(t.inputs.seek,i,t=>{const i=t.currentTarget;let s=i.getAttribute("seek-value");V.empty(s)&&(s=i.value),i.removeAttribute("seek-value"),e.currentTime=s/i.max*e.duration},"seek"),this.bind(t.progress,"mouseenter mouseleave mousemove",t=>lt.updateSeekTooltip.call(e,t)),this.bind(t.progress,"mousemove touchmove",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)}),this.bind(t.progress,"mouseleave touchend click",()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)}),this.bind(t.progress,"mousedown touchstart",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)}),this.bind(t.progress,"mouseup touchend",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)}),He.isWebKit&&Array.from(oe.call(e,'input[type="range"]')).forEach(t=>{this.bind(t,"input",t=>lt.updateRangeFill.call(e,t.target))}),e.config.toggleInvert&&!V.element(t.display.duration)&&this.bind(t.display.currentTime,"click",()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,lt.timeUpdate.call(e))}),this.bind(t.inputs.volume,i,t=>{e.volume=t.target.value},"volume"),this.bind(t.controls,"mouseenter mouseleave",i=>{t.controls.hover=!e.touch&&"mouseenter"===i.type}),t.fullscreen&&Array.from(t.fullscreen.children).filter(e=>!e.contains(t.container)).forEach(i=>{this.bind(i,"mouseenter mouseleave",i=>{t.controls&&(t.controls.hover=!e.touch&&"mouseenter"===i.type)})}),this.bind(t.controls,"mousedown mouseup touchstart touchend touchcancel",e=>{t.controls.pressed=["mousedown","touchstart"].includes(e.type)}),this.bind(t.controls,"focusin",()=>{const{config:i,timers:s}=e;se(t.controls,i.classNames.noTransition,!0),St.toggleControls.call(e,!0),setTimeout(()=>{se(t.controls,i.classNames.noTransition,!1)},0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout(()=>St.toggleControls.call(e,!1),n)}),this.bind(t.inputs.volume,"wheel",t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map(e=>i?-e:e),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:r}=e.media;(1===a&&r<1||-1===a&&r>0)&&t.preventDefault()},"volume",!1)}),this.player=e,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:r,metaKey:o,shiftKey:l}=e,c="keydown"===n,h=c&&s===this.lastKey;if(a||r||o||l)return;if(!s)return;const d=e=>{t.currentTime=t.duration/10*e};if(c){const n=document.activeElement;if(V.element(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&ae(n,s))return;if(" "===e.key&&ae(n,'button, [role^="menuitem"]'))return}const a=[" ","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","0","1","2","3","4","5","6","7","8","9","c","f","k","l","m"];switch(a.includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":h||d(Number.parseInt(s,10));break;case" ":case"k":h||ke(t.togglePlay());break;case"ArrowUp":t.increaseVolume(.1);break;case"ArrowDown":t.decreaseVolume(.1);break;case"m":h||(t.muted=!t.muted);break;case"ArrowRight":t.forward();break;case"ArrowLeft":t.rewind();break;case"f":t.fullscreen.toggle();break;case"c":h||t.toggleCaptions();break;case"l":t.loop=!t.loop;break;default:break}"Escape"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null}toggleMenu(e){lt.toggleMenu.call(this.player,e)}}var Mt=xt,Et=i(51583);function Lt(e){return new Promise((t,i)=>{Et(e,{success:t,error:i})})}function Pt(e){if(V.empty(e))return null;if(V.number(Number(e)))return e;const t=/^.*(vimeo.com\/|video\/)(\d+).*/,i=e.match(t);return i?i[2]:e}function It(e){const t=/^.*(vimeo.com\/|video\/)(\d+)(\?.*h=|\/)+([\d,a-f]+)/,i=e.match(t);return i&&5===i.length?i[4]:null}function $t(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,be.call(this,this.media,e?"play":"pause"))}const Nt={setup(){const e=this;se(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,Le.call(e),V.object(window.Vimeo)?Nt.ready.call(e):Lt(e.config.urls.vimeo.sdk).then(()=>{Nt.ready.call(e)}).catch(t=>{e.debug.warn("Vimeo SDK (player.js) failed to load",t)})},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute("src"),r="";V.empty(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),r=e.media.getAttribute(e.config.attributes.embed.hash)):r=It(a);const o=r?{h:r}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const l=ht({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:"media",playsinline:e.config.playsinline,...o,...n}),c=Pt(a),h=Y("iframe"),d=je(e.config.urls.vimeo.iframe,c,l);if(h.setAttribute("src",d),h.setAttribute("allowfullscreen",""),h.setAttribute("allow",["autoplay","fullscreen","picture-in-picture","encrypted-media","accelerometer","gyroscope"].join("; ")),V.empty(s)||h.setAttribute("referrerPolicy",s),i||!t.customControls)h.setAttribute("data-poster",e.poster),e.media=ee(h,e.media);else{const t=Y("div",{class:e.config.classNames.embedContainer,"data-poster":e.poster});t.appendChild(h),e.media=ee(t,e.media)}t.customControls||tt(je(e.config.urls.vimeo.api,d)).then(t=>{!V.empty(t)&&t.thumbnail_url&&St.setPoster.call(e,t.thumbnail_url).catch(()=>{})}),e.embed=new window.Vimeo.Player(h,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>($t.call(e,!0),e.embed.play()),e.media.pause=()=>($t.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:u}=e.media;Object.defineProperty(e.media,"currentTime",{get(){return u},set(t){const{embed:i,media:s,paused:n,volume:a}=e,r=n&&!i.hasPlayed;s.seeking=!0,be.call(e,s,"seeking"),Promise.resolve(r&&i.setVolume(0)).then(()=>i.setCurrentTime(t)).then(()=>r&&i.pause()).then(()=>r&&i.setVolume(a)).catch(()=>{})}});let p=e.config.speed.selected;Object.defineProperty(e.media,"playbackRate",{get(){return p},set(t){e.embed.setPlaybackRate(t).then(()=>{p=t,be.call(e,e.media,"ratechange")}).catch(()=>{e.options.speed=[1]})}});let{volume:m}=e.config;Object.defineProperty(e.media,"volume",{get(){return m},set(t){e.embed.setVolume(t).then(()=>{m=t,be.call(e,e.media,"volumechange")})}});let{muted:g}=e.config;Object.defineProperty(e.media,"muted",{get(){return g},set(t){const i=!!V.boolean(t)&&t;e.embed.setMuted(!!i||e.config.muted).then(()=>{g=i,be.call(e,e.media,"volumechange")})}});let f,{loop:y}=e.config;Object.defineProperty(e.media,"loop",{get(){return y},set(t){const i=V.boolean(t)?t:e.config.loop.active;e.embed.setLoop(i).then(()=>{y=i})}}),e.embed.getVideoUrl().then(t=>{f=t,lt.setDownloadUrl.call(e)}).catch(e=>{this.debug.warn(e)}),Object.defineProperty(e.media,"currentSrc",{get(){return f}}),Object.defineProperty(e.media,"ended",{get(){return e.currentTime===e.duration}}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then(t=>{const[i,s]=t;e.embed.ratio=Pe(i,s),Le.call(this)}),e.embed.setAutopause(e.config.autopause).then(t=>{e.config.autopause=t}),e.embed.getVideoTitle().then(t=>{e.config.title=t,St.setTitle.call(this)}),e.embed.getCurrentTime().then(t=>{u=t,be.call(e,e.media,"timeupdate")}),e.embed.getDuration().then(t=>{e.media.duration=t,be.call(e,e.media,"durationchange")}),e.embed.getTextTracks().then(t=>{e.media.textTracks=t,ut.setup.call(e)}),e.embed.on("cuechange",({cues:t=[]})=>{const i=t.map(e=>Ke(e.text));ut.updateCues.call(e,i)}),e.embed.on("loaded",()=>{if(e.embed.getPaused().then(t=>{$t.call(e,!t),t||be.call(e,e.media,"playing")}),V.element(e.embed.element)&&e.supported.ui){const t=e.embed.element;t.setAttribute("tabindex",-1)}}),e.embed.on("bufferstart",()=>{be.call(e,e.media,"waiting")}),e.embed.on("bufferend",()=>{be.call(e,e.media,"playing")}),e.embed.on("play",()=>{$t.call(e,!0),be.call(e,e.media,"playing")}),e.embed.on("pause",()=>{$t.call(e,!1)}),e.embed.on("timeupdate",t=>{e.media.seeking=!1,u=t.seconds,be.call(e,e.media,"timeupdate")}),e.embed.on("progress",t=>{e.media.buffered=t.percent,be.call(e,e.media,"progress"),1===Number.parseInt(t.percent,10)&&be.call(e,e.media,"canplaythrough"),e.embed.getDuration().then(t=>{t!==e.media.duration&&(e.media.duration=t,be.call(e,e.media,"durationchange"))})}),e.embed.on("seeked",()=>{e.media.seeking=!1,be.call(e,e.media,"seeked")}),e.embed.on("ended",()=>{e.media.paused=!0,be.call(e,e.media,"ended")}),e.embed.on("error",t=>{e.media.error=t,be.call(e,e.media,"error")}),t.customControls&&setTimeout(()=>St.build.call(e),0)}};var Dt=Nt;function Ft(e){if(V.empty(e))return null;const t=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/,i=e.match(t);return i&&i[2]?i[2]:e}function _t(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,be.call(this,this.media,e?"play":"pause"))}function Rt(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}const Ot={setup(){if(se(this.elements.wrapper,this.config.classNames.embed,!0),V.object(window.YT)&&V.function(window.YT.Player))Ot.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{V.function(e)&&e(),Ot.ready.call(this)},Lt(this.config.urls.youtube.sdk).catch(e=>{this.debug.warn("YouTube API failed to load",e)})}},getTitle(e){const t=je(this.config.urls.youtube.api,e);tt(t).then(e=>{if(V.object(e)){const{title:t,height:i,width:s}=e;this.config.title=t,St.setTitle.call(this),this.embed.ratio=Pe(s,i)}Le.call(this)}).catch(()=>{Le.call(this)})},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute("id");if(!V.empty(i)&&i.startsWith("youtube-"))return;let s=e.media.getAttribute("src");V.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=Ft(s),a=Ve(e.provider),r=Y("div",{id:a,"data-poster":t.customControls?e.poster:void 0});if(e.media=ee(r,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;Ct(t("maxres"),121).catch(()=>Ct(t("sd"),121)).catch(()=>Ct(t("hq"))).then(t=>St.setPoster.call(e,t.src)).then(t=>{t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")}).catch(()=>{})}e.embed=new window.YT.Player(e.media,{videoId:n,host:Rt(t),playerVars:z({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.playsinline&&!e.config.fullscreen.iosNative?1:0,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[i]||"An unknown error occurred";e.media.error={code:i,message:s},be.call(e,e.media,"error")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),be.call(e,e.media,"ratechange")},onReady(i){if(V.function(e.media.play))return;const s=i.target;Ot.getTitle.call(e,n),e.media.play=()=>{_t.call(e,!0),s.playVideo()},e.media.pause=()=>{_t.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get(){return Number(s.getCurrentTime())},set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,be.call(e,e.media,"seeking"),s.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get(){return s.getPlaybackRate()},set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,"volume",{get(){return a},set(t){a=t,s.setVolume(100*a),be.call(e,e.media,"volumechange")}});let{muted:r}=e.config;Object.defineProperty(e.media,"muted",{get(){return r},set(t){const i=V.boolean(t)?t:r;r=i,s[i?"mute":"unMute"](),s.setVolume(100*a),be.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get(){return s.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get(){return e.currentTime===e.duration}});const o=s.getAvailablePlaybackRates();e.options.speed=o.filter(t=>e.config.speed.options.includes(t)),e.supported.ui&&t.customControls&&e.media.setAttribute("tabindex",-1),be.call(e,e.media,"timeupdate"),be.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval(()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBufferedSt.build.call(e),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);const n=e.media.seeking&&[1,2].includes(i.data);switch(n&&(e.media.seeking=!1,be.call(e,e.media,"seeked")),i.data){case-1:be.call(e,e.media,"timeupdate"),e.media.buffered=s.getVideoLoadedFraction(),be.call(e,e.media,"progress");break;case 0:_t.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):be.call(e,e.media,"ended");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(_t.call(e,!0),be.call(e,e.media,"playing"),e.timers.playing=setInterval(()=>{be.call(e,e.media,"timeupdate")},50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),be.call(e,e.media,"durationchange")));break;case 2:e.muted||e.embed.unMute(),_t.call(e,!1);break;case 3:be.call(e,e.media,"waiting");break;default:break}be.call(e,e.elements.container,"statechange",!1,{code:i.data})}}})}};var Bt=Ot;const Ht={setup(){this.media?(se(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),se(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&se(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=Y("div",{class:this.config.classNames.video}),W(this.media,this.elements.wrapper),this.elements.poster=Y("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?Ne.setup.call(this):this.isYouTube?Bt.setup.call(this):this.isVimeo&&Dt.setup.call(this)):this.debug.warn("No media element found!")}};var Vt=Ht;function jt(e){e.manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()}class qt{constructor(e){(0,v.A)(this,"load",()=>{this.enabled&&(V.object(window.google)&&V.object(window.google.ima)?this.ready():Lt(this.player.config.urls.googleIMA.sdk).then(()=>{this.ready()}).catch(()=>{this.trigger("error",new Error("Google IMA SDK failed to load"))}))}),(0,v.A)(this,"ready",()=>{this.enabled||jt(this),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then(()=>{this.clearSafetyTimer("onAdsManagerLoaded()")}),this.listeners(),this.setupIMA()}),(0,v.A)(this,"setupIMA",()=>{this.elements.container=Y("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,e=>this.onAdsManagerLoaded(e),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,e=>this.onAdError(e),!1),this.requestAds()}),(0,v.A)(this,"requestAds",()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(t){this.onAdError(t)}}),(0,v.A)(this,"pollCountdown",(e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");const t=()=>{const e=rt(Math.max(this.manager.getRemainingTime(),0)),t=`${Ge.get("advertisement",this.player.config)} - ${e}`;this.elements.container.setAttribute("data-badge-text",t)};this.countdownTimer=setInterval(t,100)}),(0,v.A)(this,"onAdsManagerLoaded",e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,e=>this.onAdError(e)),Object.keys(google.ima.AdEvent.Type).forEach(e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],e=>this.onAdEvent(e))}),this.trigger("loaded")}),(0,v.A)(this,"addCuePoints",()=>{V.empty(this.cuePoints)||this.cuePoints.forEach(e=>{if(0!==e&&-1!==e&&e{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData(),n=e=>{be.call(this.player,this.player.media,`ads${e.replace(/_/g,"").toLowerCase()}`)};switch(n(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`);break;default:break}}),(0,v.A)(this,"onAdError",e=>{this.cancel(),this.player.debug.warn("Ads error",e)}),(0,v.A)(this,"listeners",()=>{const{container:e}=this.player.elements;let t;this.player.on("canplay",()=>{this.addCuePoints()}),this.player.on("ended",()=>{this.loader.contentComplete()}),this.player.on("timeupdate",()=>{t=this.player.currentTime}),this.player.on("seeked",()=>{const e=this.player.currentTime;V.empty(this.cuePoints)||this.cuePoints.forEach((i,s)=>{t{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)})}),(0,v.A)(this,"play",()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then(()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(t){this.onAdError(t)}}).catch(()=>{})}),(0,v.A)(this,"resumeContent",()=>{this.elements.container.style.zIndex="",this.playing=!1,ke(this.player.media.play())}),(0,v.A)(this,"pauseContent",()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}),(0,v.A)(this,"cancel",()=>{this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}),(0,v.A)(this,"loadAds",()=>{this.managerPromise.then(()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise(e=>{this.on("loaded",e),this.player.debug.log(this.manager)}),this.initialized=!1,this.requestAds()}).catch(()=>{})}),(0,v.A)(this,"trigger",(e,...t)=>{const i=this.events[e];V.array(i)&&i.forEach(e=>{V.function(e)&&e.apply(this,t)})}),(0,v.A)(this,"on",(e,t)=>(V.array(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this)),(0,v.A)(this,"startSafetyTimer",(e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout(()=>{this.cancel(),this.clearSafetyTimer("startSafetyTimer()")},e)}),(0,v.A)(this,"clearSafetyTimer",e=>{V.nullOrUndefined(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)}),this.player=e,this.config=e.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((e,t)=>{this.on("loaded",e),this.on("error",t)}),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!V.empty(e.publisherId)||V.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(V.url(e.tagUrl))return e.tagUrl;const t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId},i="https://go.aniview.com/api/adserver6/vast/";return`${i}?${ht(t)}`}}var Ut=qt;function Xt(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}function zt(e){const t=[],i=e.split(/\r\n\r\n|\n\n|\r\r/);return i.forEach(e=>{const i={},s=e.split(/\r\n|\n|\r/);s.forEach(e=>{if(V.number(i.startTime)){if(!V.empty(e.trim())&&V.empty(i.text)){const t=e.trim().split("#xywh=");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(","))}}else{const t=e.match(/(\d{2})?:?(\d{2}):(\d{2}).(\d{2,3})( ?--> ?)(\d{2})?:?(\d{2}):(\d{2}).(\d{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}}),i.text&&t.push(i)}),t}function Wt(e,t){const i=t.width/t.height,s={};return e>i?(s.width=t.width,s.height=1/e*t.width):(s.height=t.height,s.width=e*t.height),s}class Kt{constructor(e){(0,v.A)(this,"load",()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then(()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.listeners(),this.loaded=!0)})}),(0,v.A)(this,"getThumbnails",()=>new Promise(e=>{const{src:t}=this.player.config.previewThumbnails;if(V.empty(t))throw new Error("Missing previewThumbnails.src config attribute");const i=()=>{this.thumbnails.sort((e,t)=>e.height-t.height),this.player.debug.log("Preview thumbnails",this.thumbnails),e()};if(V.function(t))t(e=>{this.thumbnails=e,i()});else{const e=V.string(t)?[t]:t,s=e.map(e=>this.getThumbnail(e));Promise.all(s).then(i)}})),(0,v.A)(this,"getThumbnail",e=>new Promise(t=>{tt(e,void 0,this.player.config.previewThumbnails.withCredentials).then(i=>{const s={frames:zt(i),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||s.frames[0].text.startsWith("http://")||s.frames[0].text.startsWith("https://")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text})})),(0,v.A)(this,"startMove",e=>{if(this.loaded&&V.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{const t=this.player.elements.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(i/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.textContent=rt(this.seekTime);const s=this.player.config.markers?.points?.find(({time:e})=>e===Math.round(this.seekTime));s&&this.elements.thumb.time.insertAdjacentHTML("afterbegin",`${s.label}
`)}this.showImageAtCurrentTime()}}),(0,v.A)(this,"endMove",()=>{this.toggleThumbContainer(!1,!0)}),(0,v.A)(this,"startScrubbing",e=>{(V.nullOrUndefined(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}),(0,v.A)(this,"endScrubbing",()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):ye.call(this.player,this.player.media,"timeupdate",()=>{this.mouseDown||this.toggleScrubbingContainer(!1)})}),(0,v.A)(this,"listeners",()=>{this.player.on("play",()=>{this.toggleThumbContainer(!1,!0)}),this.player.on("seeked",()=>{this.toggleThumbContainer(!1)}),this.player.on("timeupdate",()=>{this.lastTime=this.player.media.currentTime})}),(0,v.A)(this,"render",()=>{this.elements.thumb.container=Y("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Y("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=Y("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Y("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),V.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Y("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}),(0,v.A)(this,"destroy",()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}),(0,v.A)(this,"showImageAtCurrentTime",()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex(e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)}),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))}),(0,v.A)(this,"loadImage",(e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,r=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=r,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${r}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}}),(0,v.A)(this,"showImage",(e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))}),(0,v.A)(this,"removeOldImages",e=>{Array.from(this.currentImageContainer.children).forEach(t=>{if("img"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout(()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)},i)}})}),(0,v.A)(this,"preloadNearby",(e,t=!0)=>new Promise(i=>{setTimeout(()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach(e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}}),a||i()}},300)})),(0,v.A)(this,"getHigherQuality",(e,t,i,s)=>{if(e{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))},300)}}),(0,v.A)(this,"toggleThumbContainer",(e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}),(0,v.A)(this,"toggleScrubbingContainer",(e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}),(0,v.A)(this,"determineContainerAutoSizing",()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}),(0,v.A)(this,"setThumbContainerSizeAndPos",()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()}),(0,v.A)(this,"setThumbContainerPos",()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,r=Xt(a,s,n);i.style.left=`${r}px`,i.style.setProperty("--preview-arrow-offset",a-r+"px")}),(0,v.A)(this,"setScrubbingContainerSize",()=>{const{width:e,height:t}=Wt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`}),(0,v.A)(this,"setImageSizeAndOffset",(e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+"px",e.style.width=e.naturalWidth*i+"px",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`}),this.player=e,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=Wt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}var Yt=Kt;const Qt={insertElements(e,t){V.string(t)?J(e,this.media,{src:t}):V.array(t)&&t.forEach(t=>{J(e,this.media,t)})},change(e){X(e,"sources.length")?(Ne.cancelRequests.call(this),this.destroy(()=>{this.options.quality=[],G(this.media),this.media=null,V.element(this.elements.container)&&this.elements.container.removeAttribute("class");const{sources:t,type:i}=e,[{provider:s=ft.html5,src:n}]=t,a="html5"===s?i:"div",r="html5"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:ue.check(i,s,this.config.playsinline),media:Y(a,r)}),this.elements.container.appendChild(this.media),V.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute("crossorigin",""),this.config.autoplay&&this.media.setAttribute("autoplay",""),V.empty(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute("loop",""),this.config.muted&&this.media.setAttribute("muted",""),this.config.playsinline&&this.media.setAttribute("playsinline","")),St.addStyleHook.call(this),this.isHTML5&&Qt.insertElements.call(this,"source",t),this.config.title=e.title,Vt.setup.call(this),this.isHTML5&&Object.keys(e).includes("tracks")&&Qt.insertElements.call(this,"track",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&St.build.call(this),this.isHTML5&&this.media.load(),V.empty(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Yt(this))),this.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}};var Jt=Qt;class Gt{constructor(e,t){if((0,v.A)(this,"play",()=>V.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(()=>this.ads.play()).catch(()=>ke(this.media.play())),this.media.play()):null),(0,v.A)(this,"pause",()=>this.playing&&V.function(this.media.pause)?this.media.pause():null),(0,v.A)(this,"togglePlay",e=>{const t=V.boolean(e)?e:!this.playing;return t?this.play():this.pause()}),(0,v.A)(this,"stop",()=>{this.isHTML5?(this.pause(),this.restart()):V.function(this.media.stop)&&this.media.stop()}),(0,v.A)(this,"restart",()=>{this.currentTime=0}),(0,v.A)(this,"rewind",e=>{this.currentTime-=V.number(e)?e:this.config.seekTime}),(0,v.A)(this,"forward",e=>{this.currentTime+=V.number(e)?e:this.config.seekTime}),(0,v.A)(this,"increaseVolume",e=>{const t=this.media.muted?0:this.volume;this.volume=t+(V.number(e)?e:0)}),(0,v.A)(this,"decreaseVolume",e=>{this.increaseVolume(-e)}),(0,v.A)(this,"airplay",()=>{ue.airplay&&this.media.webkitShowPlaybackTargetPicker()}),(0,v.A)(this,"toggleControls",e=>{if(this.supported.ui&&!this.isAudio){const t=ne(this.elements.container,this.config.classNames.hideControls),i="undefined"===typeof e?void 0:!e,s=se(this.elements.container,this.config.classNames.hideControls,i);if(s&&V.array(this.config.controls)&&this.config.controls.includes("settings")&&!V.empty(this.config.settings)&<.toggleMenu.call(this,!1),s!==t){const e=s?"controlshidden":"controlsshown";be.call(this,this.media,e)}return!s}return!1}),(0,v.A)(this,"on",(e,t)=>{ge.call(this,this.elements.container,e,t)}),(0,v.A)(this,"once",(e,t)=>{ye.call(this,this.elements.container,e,t)}),(0,v.A)(this,"off",(e,t)=>{fe(this.elements.container,e,t)}),(0,v.A)(this,"destroy",(e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow="",this.embed=null,t?(Object.keys(this.elements).length&&(G(this.elements.buttons.play),G(this.elements.captions),G(this.elements.controls),G(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),V.function(e)&&e()):(ve.call(this),Ne.cancelRequests.call(this),ee(this.elements.original,this.elements.container),be.call(this,this.elements.original,"destroyed",!0),V.function(e)&&e.call(this.elements.original),this.ready=!1,setTimeout(()=>{this.elements=null,this.media=null},200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(St.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&V.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}),(0,v.A)(this,"supports",e=>ue.mime.call(this,e)),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=ue.touch,this.media=e,V.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||V.nodeList(this.media)||V.array(this.media))&&(this.media=this.media[0]),this.config=z({},mt,Gt.defaults,t||{},(()=>{try{return JSON.parse(this.media.getAttribute("data-plyr-config"))}catch{return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new wt(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",ue),V.nullOrUndefined(this.media)||!V.element(this.media))return void this.debug.error("Setup failed: no suitable element passed");if(this.media.plyr)return void this.debug.warn("Target already setup");if(!this.config.enabled)return void this.debug.error("Setup failed: disabled by config");if(!ue.check().api)return void this.debug.error("Setup failed: no support");const i=this.media.cloneNode(!0);i.autoplay=!1,this.elements.original=i;const s=this.media.tagName.toLowerCase();let n=null,a=null;switch(s){case"div":if(n=this.media.querySelector("iframe"),V.element(n)){if(a=ct(n.getAttribute("src")),this.provider=bt(a.toString()),this.elements.container=this.media,this.media=n,this.elements.container.className="",a.search.length){const e=["1","true"];e.includes(a.searchParams.get("autoplay"))&&(this.config.autoplay=!0),e.includes(a.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(a.searchParams.get("playsinline")),this.config.youtube.hl=a.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(V.empty(this.provider)||!Object.values(ft).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=yt.video;break;case"video":case"audio":this.type=s,this.provider=ft.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=ue.check(this.type,this.provider),this.supported.api?(this.eventListeners=[],this.listeners=new Mt(this),this.storage=new et(this),this.media.plyr=this,V.element(this.elements.container)||(this.elements.container=Y("div"),W(this.media,this.elements.container)),St.migrateStyles.call(this),St.addStyleHook.call(this),Vt.setup.call(this),this.config.debug&&ge.call(this,this.elements.container,this.config.events.join(" "),e=>{this.debug.log(`event: ${e.type}`)}),this.fullscreen=new Tt(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&St.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new Ut(this)),this.isHTML5&&this.config.autoplay&&this.once("canplay",()=>ke(this.play())),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Yt(this))):this.debug.error("Setup failed: no support")}get isHTML5(){return this.provider===ft.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===ft.youtube}get isVimeo(){return this.provider===ft.vimeo}get isVideo(){return this.type===yt.video}get isAudio(){return this.type===yt.audio}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=V.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return V.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=Number.parseFloat(this.config.duration),t=(this.media||{}).duration,i=V.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;const i=1,s=0;V.string(t)&&(t=Number(t)),V.number(t)||(t=this.storage.get("volume")),V.number(t)||({volume:t}=this.config),t>i&&(t=i),t0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;V.boolean(t)||(t=this.storage.get("muted")),V.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;V.number(e)&&(t=e),V.number(t)||(t=this.storage.get("speed")),V.number(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=Xt(t,i,s),this.config.speed.selected=t,setTimeout(()=>{this.media&&(this.media.playbackRate=t)},0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!V.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(V.number),n=!0;if(!i.includes(s)){const e=Ce(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=V.boolean(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){Jt.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return V.url(e)?e:this.source}set download(e){V.url(e)&&(this.config.urls.download=e,lt.setDownloadUrl.call(this))}set poster(e){this.isVideo?St.setPoster.call(this,e,!1).catch(()=>{}):this.debug.warn("Poster can only be set for video")}get poster(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}get ratio(){if(!this.isVideo)return null;const e=Me(Ee.call(this));return V.array(e)?e.join(":"):e}set ratio(e){this.isVideo?V.string(e)&&xe(e)?(this.config.ratio=Me(e),Le.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn("Aspect ratio can only be set for video")}set autoplay(e){this.config.autoplay=V.boolean(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){ut.toggle.call(this,e,!1)}set currentTrack(e){ut.set.call(this,e,!1),ut.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){ut.setLanguage.call(this,e,!1)}get language(){return(ut.getCurrentTrack.call(this)||{}).language}set pip(e){if(!ue.pip)return;const t=V.boolean(e)?e:!this.pip;V.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?gt.active:gt.inactive),V.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return ue.pip?V.empty(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===gt.active:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Yt(this))}static supported(e,t){return ue.check(e,t)}static loadSprite(e,t){return it(e,t)}static setup(e,t={}){let i=null;return V.string(e)?i=Array.from(document.querySelectorAll(e)):V.nodeList(e)?i=Array.from(e):V.array(e)&&(i=e.filter(V.element)),V.empty(i)?null:i.map(e=>new Gt(e,t))}}Gt.defaults=U(mt);var Zt=Gt;i(17642),i(58004),i(33853),i(45876),i(32475),i(15024),i(31698);const ei=new Set;let ti=null,ii="stop";function si(e){return e&&("AUDIO"===e.tagName||"VIDEO"===e.tagName)}function ni(e){if(si(e)){try{e.pause()}catch(t){}try{e.currentTime=0}catch(t){}try{e.removeAttribute("src")}catch(t){}try{e.load?.()}catch(t){}}}function ai(e=null){for(const t of ei)e&&t===e||ni(t);ti=e||null}let ri=!1;function oi(){ri||(ri=!0,document.addEventListener("visibilitychange",()=>{document.hidden&&ai(null)}),window.addEventListener("pagehide",()=>ai(null)))}function li(){return ii}function ci(e){["stop","sequence","loop"].includes(e)&&(ii=e)}var hi={name:"TransformMedia",props:{file:{type:Object,required:!0},src:{type:String,required:!0},isImage:{type:Boolean,default:!0},isVideo:{type:Boolean,default:!1},isAudio:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},data(){return{pointers:new Map,scale:1,rotation:0,rotatePreview:0,tx:0,ty:0,naturalWidth:0,naturalHeight:0,startScale:1,startRotation:0,startTx:0,startTy:0,startCenter:null,startDist:0,startAngle:0,dragging:!1,dragStart:null,viewportRect:null,minScale:1,maxScale:4,gestureMode:null,edgeOverflow:0,edgeDir:0,player:null,audioCover:null,audioTitle:"",audioArtist:"",menuAdded:!1}},computed:{isActiveTransform(){return this.scale>1.001||this.pointers.size>=2||this.dragging},displayRotation(){return this.rotation+this.rotatePreview},rotateShrink(){const e=Math.min(1,Math.abs(this.rotatePreview)/90),t=Math.sin(Math.PI*e);return 1-.12*t},mediaStyle(){const e=this.scale*this.rotateShrink,t=this.pointers.size>0;return{transform:`translate3d(${this.tx}px, ${this.ty}px, 0) scale(${e}) rotate(${this.displayRotation}deg)`,transition:t?"none":"transform 0.25s ease",transformOrigin:"center center"}}},watch:{isActiveTransform(e){this.$emit(e?"lock":"unlock")},isActive(e){e?this.$nextTick(()=>this.initPlayer()):this.destroyPlayer()}},mounted(){this.isAudio&&this.initAudioInfo(),this.isActive&&this.$nextTick(()=>this.initPlayer())},beforeUnmount(){this.destroyPlayer(),this.audioCover&&(URL.revokeObjectURL(this.audioCover),this.audioCover=null)},methods:{initPlayer(){if(this.player)return;const e=this.$refs.videoEl||this.$refs.audioEl;if(!e)return;this.retryCount=0,this.maxRetries=3;const t=this.isAudio?["play","progress","current-time","mute","volume"]:["play","progress","current-time","mute","volume","fullscreen"];this.player=new Zt(e,{controls:t,autoplay:this.isVideo,resetOnEnd:!0}),e.addEventListener("error",()=>{this.retryCount{if(e&&this.src&&this.player){const t=this.src.split("?_retry=")[0],i=t+(t.includes("?")?"&":"?")+"_retry="+Date.now();e.src=i,e.load()}},500*this.retryCount))}),this.player.on("ready",()=>{this.tryAddCustomMenu()}),this.scheduleMenuRetry(),this.isAudio&&this.player.on("ended",this.onAudioEnded)},scheduleMenuRetry(){const e=t=>{t>=5||this.menuAdded||setTimeout(()=>{this.menuAdded||(this.tryAddCustomMenu(),e(t+1))},200*(t+1))};e(0)},tryAddCustomMenu(){if(this.menuAdded)return;if(!this.player?.elements?.controls)return;const e=this.player.elements.controls;e&&!e.querySelector(".plyr-custom-menu")&&(this.addCustomMenu(e),this.menuAdded=!0)},addCustomMenu(e){const t=li(),i=this.isAudio?`\n
\n \n \n \n ${this.$t("transformMedia.playMode")}\n \n \n \n
\n
\n
${this.$t("transformMedia.stopAfterPlay")}
\n
${this.$t("transformMedia.sequentialPlay")}
\n
${this.$t("transformMedia.loopSingle")}
\n
\n `:"",s=document.createElement("div");s.className="plyr-custom-menu",s.innerHTML=`\n \n
\n
\n \n \n \n ${this.$t("transformMedia.download")}\n
\n
\n \n \n \n \n ${this.$t("transformMedia.playbackSpeed")}\n \n \n \n
\n
\n
0.5x
\n
0.75x
\n
${this.$t("transformMedia.normalSpeed")}
\n
1.25x
\n
1.5x
\n
2x
\n
\n ${i}\n
\n `,e.appendChild(s),this.bindMenuEvents(s)},bindMenuEvents(e){const t=e.querySelector(".plyr-menu-btn"),i=e.querySelector(".plyr-menu-dropdown"),s=e.querySelector(".plyr-menu-speed"),n=e.querySelector(".plyr-speed-submenu"),a=e.querySelector('[data-action="download"]'),r=e.querySelector(".plyr-menu-playmode"),o=e.querySelector(".plyr-playmode-submenu");t.addEventListener("click",e=>{e.stopPropagation(),i.classList.toggle("show"),n.classList.remove("show"),o&&o.classList.remove("show")}),a.addEventListener("click",()=>{this.downloadMedia(),i.classList.remove("show")}),s.addEventListener("click",e=>{e.stopPropagation(),n.classList.toggle("show"),o&&o.classList.remove("show")}),e.querySelectorAll(".plyr-speed-option").forEach(t=>{t.addEventListener("click",()=>{const s=parseFloat(t.dataset.speed);this.player?.media&&(this.player.media.playbackRate=s),e.querySelectorAll(".plyr-speed-option").forEach(e=>e.classList.remove("active")),t.classList.add("active"),i.classList.remove("show"),n.classList.remove("show")})}),r&&o&&(r.addEventListener("click",e=>{e.stopPropagation(),o.classList.toggle("show"),n.classList.remove("show")}),e.querySelectorAll(".plyr-playmode-option").forEach(t=>{t.addEventListener("click",()=>{const s=t.dataset.mode;ci(s),e.querySelectorAll(".plyr-playmode-option").forEach(e=>e.classList.remove("active")),t.classList.add("active"),i.classList.remove("show"),o.classList.remove("show")})})),document.addEventListener("click",()=>{i.classList.remove("show"),n.classList.remove("show"),o&&o.classList.remove("show")})},downloadMedia(){const e=document.createElement("a");e.href=this.src,e.download=this.file?.name?.split("/").pop()||"download",e.click()},onAudioEnded(){const e=li();"loop"===e?this.player?.media&&(this.player.media.currentTime=0,this.player.play()):"sequence"===e&&this.$emit("audio-ended","next")},destroyPlayer(){const e=this.$refs.videoEl||this.$refs.audioEl;if(this.player){try{this.player.pause(),this.player.destroy()}catch(t){}this.player=null}if(e)try{e.pause(),e.currentTime=0,e.src="",e.load()}catch(t){}},stopAndCleanMedia(){this.destroyPlayer()},initAudioInfo(){const e=this.file?.name||this.src,t=e.split("/").pop().replace(/\.[^.]+$/,"");this.audioTitle=t,this.audioArtist="",this.audioCover=null,this.isActive&&this.tryReadMetadata()},async tryReadMetadata(){try{const e=await fetch(this.src),t=await e.blob(),i=await t.slice(0,131072).arrayBuffer(),s=new DataView(i);73===s.getUint8(0)&&68===s.getUint8(1)&&51===s.getUint8(2)&&this.parseID3v2(s,i)}catch(e){}},parseID3v2(e,t){const i=(127&e.getUint8(6))<<21|(127&e.getUint8(7))<<14|(127&e.getUint8(8))<<7|127&e.getUint8(9);let s=10;while(st.byteLength)break;const a=new Uint8Array(t,s+10,Math.min(n,t.byteLength-s-10));"TIT2"===i?this.audioTitle=this.decodeText(a)||this.audioTitle:"TPE1"===i?this.audioArtist=this.decodeText(a):"APIC"===i&&this.extractCover(a),s+=10+n}},decodeText(e){if(e.length<2)return"";const t=e[0],i=e.slice(1);try{if(0===t)return new TextDecoder("iso-8859-1").decode(i).replace(/\0/g,"");if(1===t)return new TextDecoder("utf-16").decode(i).replace(/\0/g,"");if(3===t)return new TextDecoder("utf-8").decode(i).replace(/\0/g,"")}catch(s){}return""},extractCover(e){try{let t=1;while(tt?t+this.rubberBand(e-t,i,.55):e<-t?-t-this.rubberBand(-t-e,i,.55):e},calcTwoPointer(){const e=Array.from(this.pointers.entries()).sort((e,t)=>e[0]-t[0]),t=e[0][1],i=e[1][1],s=i.x-t.x,n=i.y-t.y,a=Math.hypot(s,n),r=Math.atan2(n,s)*(180/Math.PI),o={x:(t.x+i.x)/2,y:(t.y+i.y)/2};return{dist:a,angle:r,center:o}},normalizeAngle(e){return e=(e%360+360)%360,e>180?e-360:e},onPointerDown(e){if(this.isImage){if(e.currentTarget.setPointerCapture?.(e.pointerId),this.viewportRect=this.getViewportRect(),this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){const{dist:e,angle:t,center:i}=this.calcTwoPointer();return this.startDist=e,this.startAngle=t,this.startCenter=i,this.startScale=this.scale,this.startRotation=this.rotation,this.startTx=this.tx,this.startTy=this.ty,this.dragging=!1,this.gestureMode=null,void(this.rotatePreview=0)}this.scale>1.001&&(this.dragging=!0,this.dragStart={x:e.clientX,y:e.clientY},this.startTx=this.tx,this.startTy=this.ty)}},onPointerMove(e){if(this.isImage&&this.pointers.has(e.pointerId)){if(this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){e.preventDefault();const{dist:t,angle:i,center:s}=this.calcTwoPointer(),n=t/(this.startDist||t),a=Math.abs(n-1),r=this.normalizeAngle(i-this.startAngle),o=Math.abs(r);if(!this.gestureMode)if(o>=8)this.gestureMode="rotate";else{if(!(a>=.08))return;this.gestureMode="pinch"}if("rotate"===this.gestureMode)return this.scale=this.startScale,void(this.rotatePreview=this.clamp(r,-90,90));if("pinch"===this.gestureMode&&(this.scale=this.clamp(this.startScale*n,this.minScale,this.maxScale),this.rotatePreview=0),this.startCenter&&this.viewportRect){const e=this.startCenter.x-this.viewportRect.left-this.viewportRect.width/2,t=this.startCenter.y-this.viewportRect.top-this.viewportRect.height/2,i=s.x-this.viewportRect.left-this.viewportRect.width/2,n=s.y-this.viewportRect.top-this.viewportRect.height/2;this.tx=this.startTx+(i-e),this.ty=this.startTy+(n-t)}return}if(this.dragging&&this.scale>1.001){e.preventDefault();const t=e.clientX-this.dragStart.x,i=e.clientY-this.dragStart.y,s=this.startTx+t,n=this.startTy+i,{maxX:a,maxY:r,vw:o,vh:l}=this.getPanBounds();let c=0,h=0;s>a?(c=s-a,h=-1):s<-a&&(c=-a-s,h=1),this.edgeOverflow=c,this.edgeDir=h,this.tx=this.applyBoundWithRubber(s,a,o),this.ty=this.applyBoundWithRubber(n,r,l)}}},onPointerUp(e){if(this.isImage&&(this.pointers.has(e.pointerId)&&this.pointers.delete(e.pointerId),this.pointers.size<2&&"rotate"===this.gestureMode&&(this.finishRotate(),this.gestureMode=null),this.pointers.size<2&&(this.startCenter=null,this.startDist=0,this.startAngle=0,this.gestureMode=null),0===this.pointers.size)){if(this.dragging=!1,this.edgeOverflow>60&&0!==this.edgeDir){const e=this.edgeDir;return this.reset(),void this.$emit("edge-swipe",e)}if(this.edgeOverflow=0,this.edgeDir=0,this.scale<=1.001)this.scale=1,this.tx=0,this.ty=0;else{const{maxX:e,maxY:t}=this.getPanBounds();this.tx=Math.max(-e,Math.min(e,this.tx)),this.ty=Math.max(-t,Math.min(t,this.ty))}}},finishRotate(){const e=this.rotatePreview;let t=0;Math.abs(e)>=30&&(t=e>0?90:-90);const i=((this.rotation+t)%360+360)%360;this.rotation=i,this.rotatePreview=0,this.updateFillScale()},updateFillScale(){const e=this.rotation%360,t=90===e||270===e;t?(this.scale=2,this.tx=0,this.ty=0):(this.scale=1,this.tx=0,this.ty=0)},onDblClick(){this.isImage&&(this.scale>1.001?(this.scale=1,this.tx=0,this.ty=0):this.scale=2)}}},di=i(71241);const ui=(0,di.A)(hi,[["render",b],["__scopeId","data-v-53b527ba"]]);var pi=ui,mi=i(91543);const gi={class:"public-browse"},fi={class:"header"},yi={class:"header-left"},bi={class:"logo",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank",rel:"noopener"},vi={class:"header-center"},wi={class:"breadcrumb"},ki=["onClick"],Ti={class:"header-right"},Ci=["placeholder"],Ai={class:"file-count"},Si={key:0,class:"loading-container"},xi={key:1,class:"error-container"},Mi={class:"error-credit"},Ei={key:2,class:"gallery-container",ref:"galleryContainer"},Li={key:0,class:"folders-section"},Pi={class:"folders-grid"},Ii=["onClick"],$i={class:"folder-name"},Ni={class:"waterfall",ref:"waterfall"},Di=["onClick"],Fi=["src","alt","onLoad"],_i=["src","onLoadedmetadata"],Ri={key:2,class:"audio-placeholder"},Oi={class:"audio-name"},Bi={key:3,class:"file-placeholder"},Hi={class:"file-name"},Vi={class:"overlay"},ji={class:"overlay-actions"},qi=["onClick","title"],Ui=["onClick","title"],Xi={key:1,class:"floating-page-indicator"},zi={ref:"loadTrigger",class:"load-trigger"},Wi={key:0,class:"loading-more"},Ki={key:1,class:"no-more"},Yi={key:2,class:"credit-link",href:"https://github.com/axibayuit-a11y",target:"_blank",rel:"noopener"},Qi=["src"],Ji=["src"],Gi=["src"],Zi={class:"swipe-hint"},es={key:2,class:"other-file-preview"},ts={class:"file-name"},is=["title"],ss={class:"page-indicator"};function ns(e,t,i,r,o,l){const c=mi.A,h=pi;return(0,s.uX)(),(0,s.CE)("div",gi,[(0,s.Lk)("header",fi,[(0,s.Lk)("div",yi,[(0,s.Lk)("a",bi,(0,a.v_)(l.siteName),1)]),(0,s.Lk)("div",vi,[(0,s.Lk)("div",wi,[(0,s.Lk)("span",{class:"breadcrumb-item",onClick:t[0]||(t[0]=(...e)=>l.goToRoot&&l.goToRoot(...e))},(0,a.v_)(l.rootDirName),1),((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.pathParts,(e,i)=>((0,s.uX)(),(0,s.CE)(s.FK,{key:i},[t[32]||(t[32]=(0,s.Lk)("span",{class:"breadcrumb-sep"},"/",-1)),(0,s.Lk)("span",{class:"breadcrumb-item",onClick:e=>l.goToPath(i)},(0,a.v_)(e),9,ki)],64))),128))])]),(0,s.Lk)("div",Ti,[(0,s.Lk)("div",{class:(0,a.C4)(["search-box",{expanded:o.searchExpanded}])},[o.searchExpanded?((0,s.uX)(),(0,s.CE)(s.FK,{key:1},[(0,s.bo)((0,s.Lk)("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=e=>o.searchInput=e),onKeyup:t[3]||(t[3]=(0,n.jR)((...e)=>l.handleSearch&&l.handleSearch(...e),["enter"])),placeholder:e.$t("publicBrowse.searchPlaceholder"),class:"search-input",ref:"searchInputRef"},null,40,Ci),[[n.Jo,o.searchInput]]),(0,s.Lk)("span",{class:"search-icon",onClick:t[4]||(t[4]=(...e)=>l.handleSearch&&l.handleSearch(...e))},[...t[34]||(t[34]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"16",height:"16"},[(0,s.Lk)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})],-1)])])],64)):((0,s.uX)(),(0,s.CE)("span",{key:0,class:"search-icon",onClick:t[1]||(t[1]=(...e)=>l.toggleSearch&&l.toggleSearch(...e))},[...t[33]||(t[33]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"20",height:"20"},[(0,s.Lk)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})],-1)])]))],2),(0,s.bF)(c,{class:"theme-toggle-btn"}),(0,s.Lk)("span",Ai,(0,a.v_)(e.$t("publicBrowse.fileCount",{count:o.totalCount})),1)])]),o.loading&&0===o.files.length?((0,s.uX)(),(0,s.CE)("div",Si,[t[35]||(t[35]=(0,s.Lk)("div",{class:"loading-spinner"},null,-1)),(0,s.Lk)("p",null,(0,a.v_)(e.$t("publicBrowse.loading")),1)])):o.error?((0,s.uX)(),(0,s.CE)("div",xi,[(0,s.Lk)("p",null,(0,a.v_)(o.error),1),o.canRetry?((0,s.uX)(),(0,s.CE)("button",{key:0,onClick:t[5]||(t[5]=(...e)=>l.loadFiles&&l.loadFiles(...e)),class:"retry-btn"},(0,a.v_)(e.$t("publicBrowse.retry")),1)):(0,s.Q3)("",!0),(0,s.Lk)("div",Mi,[(0,s.Lk)("p",null,(0,a.v_)(e.$t("publicBrowse.creditText")),1),t[36]||(t[36]=(0,s.Fv)('',1))])])):((0,s.uX)(),(0,s.CE)("div",Ei,[l.folders.length>0?((0,s.uX)(),(0,s.CE)("div",Li,[(0,s.Lk)("div",Pi,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.folders,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.name,class:"folder-card",onClick:t=>l.enterFolder(e.name)},[t[37]||(t[37]=(0,s.Lk)("div",{class:"folder-icon"},[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"})])],-1)),(0,s.Lk)("span",$i,(0,a.v_)(l.getFolderName(e.name)),1)],8,Ii))),128))])])):(0,s.Q3)("",!0),(0,s.Lk)("div",Ni,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.columns,(i,r)=>((0,s.uX)(),(0,s.CE)("div",{key:r,class:"waterfall-column"},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(i,i=>((0,s.uX)(),(0,s.CE)("div",{key:i.name,class:"waterfall-item",onClick:e=>l.openPreview(i)},[(0,s.Lk)("div",{class:(0,a.C4)(["image-wrapper",{loaded:i.loaded}])},[l.isImage(i)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:l.getFileUrl(i.name),alt:i.name,loading:"lazy",onLoad:e=>l.onImageLoad(e,i),onError:t[6]||(t[6]=(...e)=>l.handleImageError&&l.handleImageError(...e))},null,40,Fi)):l.isVideo(i)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:l.getFileUrl(i.name),muted:"",loop:"",preload:"metadata",onLoadedmetadata:e=>l.onVideoLoad(e,i),onPointerenter:t[7]||(t[7]=e=>"mouse"===e.pointerType&&e.target.play()),onPointerleave:t[8]||(t[8]=e=>"mouse"===e.pointerType&&e.target.pause())},null,40,_i)):l.isAudio(i)?((0,s.uX)(),(0,s.CE)("div",Ri,[t[38]||(t[38]=(0,s.Lk)("svg",{class:"audio-icon",viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"})],-1)),(0,s.Lk)("span",Oi,(0,a.v_)(l.getFileName(i.name)),1)])):((0,s.uX)(),(0,s.CE)("div",Bi,[t[39]||(t[39]=(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"})],-1)),(0,s.Lk)("span",Hi,(0,a.v_)(l.getFileName(i.name)),1)])),(0,s.Lk)("div",Vi,[(0,s.Lk)("div",ji,[(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(e=>l.copyLink(i.name),["stop"]),title:e.$t("publicBrowse.copyLink")},[...t[40]||(t[40]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"})],-1)])],8,qi),(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(e=>l.downloadFile(i.name),["stop"]),title:e.$t("publicBrowse.downloadBtn")},[...t[41]||(t[41]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})],-1)])],8,Ui)])])],2)],8,Di))),128))]))),128))],512),l.mediaFiles.length>o.pageSize?((0,s.uX)(),(0,s.CE)("div",Xi,[(0,s.Lk)("span",null,(0,a.v_)(l.displayCurrentPage)+" / "+(0,a.v_)(l.totalPages),1)])):(0,s.Q3)("",!0),(0,s.Lk)("div",zi,[o.loading&&o.files.length>0?((0,s.uX)(),(0,s.CE)("div",Wi,[t[42]||(t[42]=(0,s.Lk)("div",{class:"loading-spinner-small"},null,-1)),(0,s.Lk)("span",null,(0,a.v_)(e.$t("publicBrowse.loadingMore")),1)])):!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("div",Ki,(0,a.v_)(e.$t("publicBrowse.allLoaded")),1)):(0,s.Q3)("",!0),!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("a",Yi,(0,a.v_)(e.$t("publicBrowse.creditLink")),1)):(0,s.Q3)("",!0)],512)],512)),o.previewVisible?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"preview-modal",onClick:t[31]||(t[31]=(0,n.D$)((...e)=>l.closePreview&&l.closePreview(...e),["self"]))},[(0,s.Lk)("button",{class:"preview-close",onClick:t[9]||(t[9]=(0,n.D$)((...e)=>l.closePreview&&l.closePreview(...e),["stop"]))},[...t[43]||(t[43]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)])]),o.isMobile?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",{key:0,class:"preview-content",onClick:t[15]||(t[15]=(0,n.D$)(()=>{},["stop"])),onWheel:t[16]||(t[16]=(0,n.D$)((...e)=>l.handleWheel&&l.handleWheel(...e),["prevent"]))},[l.currentPreviewFile&&l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("img",{key:"img-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),class:"preview-image",style:(0,a.Tr)(l.desktopImageStyle),draggable:"false",onMousedown:t[10]||(t[10]=(...e)=>l.onImageMouseDown&&l.onImageMouseDown(...e)),onMousemove:t[11]||(t[11]=(...e)=>l.onImageMouseMove&&l.onImageMouseMove(...e)),onMouseup:t[12]||(t[12]=(...e)=>l.onImageMouseUp&&l.onImageMouseUp(...e)),onMouseleave:t[13]||(t[13]=(...e)=>l.onImageMouseUp&&l.onImageMouseUp(...e))},null,44,Qi)):l.currentPreviewFile&&l.isVideo(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("video",{ref:"desktopVideo",key:"video-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),controls:"",class:"preview-video",style:(0,a.Tr)(l.desktopImageStyle),onPlay:t[14]||(t[14]=(...e)=>l.onDesktopVideoPlay&&l.onDesktopVideoPlay(...e))},null,44,Ji)):l.currentPreviewFile&&l.isAudio(l.currentPreviewFile)?((0,s.uX)(),(0,s.Wv)(h,{ref:"desktopAudio",key:"audio-"+l.currentPreviewFile.name,file:l.currentPreviewFile,src:l.getFileUrl(l.currentPreviewFile.name),"is-image":!1,"is-video":!1,"is-audio":!0,"is-active":!0,onAudioEnded:l.onAudioEnded},null,8,["file","src","onAudioEnded"])):(0,s.Q3)("",!0)],32)),o.isMobile?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"preview-content preview-content-mobile",onClick:t[27]||(t[27]=(0,n.D$)(()=>{},["stop"]))},[l.currentPreviewFile&&l.isVideo(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("video",{ref:"mobileVideo",key:"m-video-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),controls:"",playsinline:"","webkit-playsinline":"","x5-video-player-type":"h5","x5-video-player-fullscreen":"true",class:"mobile-video-native",onPlay:t[17]||(t[17]=(...e)=>l.onMobileMediaPlay&&l.onMobileMediaPlay(...e))},null,40,Gi)):l.currentPreviewFile&&l.isAudio(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"mobile-audio-wrap",onTouchstart:t[18]||(t[18]=(...e)=>l.onAudioSwipeStart&&l.onAudioSwipeStart(...e)),onTouchmove:t[19]||(t[19]=(...e)=>l.onAudioSwipeMove&&l.onAudioSwipeMove(...e)),onTouchend:t[20]||(t[20]=(...e)=>l.onAudioSwipeEnd&&l.onAudioSwipeEnd(...e))},[((0,s.uX)(),(0,s.Wv)(h,{ref:"mobileAudio",key:"m-audio-"+l.currentPreviewFile.name,file:l.currentPreviewFile,src:l.getFileUrl(l.currentPreviewFile.name),"is-image":!1,"is-video":!1,"is-audio":!0,"is-active":!0,onAudioEnded:l.onAudioEnded},null,8,["file","src","onAudioEnded"])),(0,s.Lk)("div",Zi,(0,a.v_)(e.$t("publicBrowse.swipeHint")),1)],32)):l.currentPreviewFile&&!l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("div",es,[t[44]||(t[44]=(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"})],-1)),(0,s.Lk)("span",ts,(0,a.v_)(l.getFileName(l.currentPreviewFile.name)),1)])):((0,s.uX)(),(0,s.CE)("div",{key:3,class:"swipe-viewport",ref:"mobileViewport",onTouchstart:t[24]||(t[24]=(...e)=>l.onSwipeStart&&l.onSwipeStart(...e)),onTouchmove:t[25]||(t[25]=(...e)=>l.onSwipeMove&&l.onSwipeMove(...e)),onTouchend:t[26]||(t[26]=(...e)=>l.onSwipeEnd&&l.onSwipeEnd(...e))},[(0,s.Lk)("div",{class:"swipe-track",style:(0,a.Tr)(l.swipeTrackStyle),onTransitionend:t[23]||(t[23]=(...e)=>l.onSwipeTransitionEnd&&l.onSwipeTransitionEnd(...e))},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.swipeWindow,(e,i)=>((0,s.uX)(),(0,s.CE)("div",{class:"swipe-slide",key:l.getSlideKey(e,i)},[e?((0,s.uX)(),(0,s.Wv)(h,{key:0,file:e,src:l.getFileUrl(e.name),"is-image":l.isImage(e),"is-video":!1,"is-audio":!1,"is-active":1===i,onLock:t[21]||(t[21]=e=>o.gestureLocked=!0),onUnlock:t[22]||(t[22]=e=>o.gestureLocked=!1),onEdgeSwipe:l.onEdgeSwipe},null,8,["file","src","is-image","is-active","onEdgeSwipe"])):(0,s.Q3)("",!0)]))),128))],36)],544))])):(0,s.Q3)("",!0),!o.isMobile&&o.previewIndex>0?((0,s.uX)(),(0,s.CE)("button",{key:2,class:"preview-prev",onClick:t[28]||(t[28]=(0,n.D$)((...e)=>l.prevImage&&l.prevImage(...e),["stop"]))},[...t[45]||(t[45]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})],-1)])])):(0,s.Q3)("",!0),!o.isMobile&&o.previewIndexl.nextImage&&l.nextImage(...e),["stop"]))},[...t[46]||(t[46]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})],-1)])])):(0,s.Q3)("",!0),o.isMobile?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("button",{key:4,class:"rotate-btn",onClick:t[30]||(t[30]=(0,n.D$)((...e)=>l.rotateImage&&l.rotateImage(...e),["stop"])),title:e.$t("publicBrowse.rotate90")},[...t[47]||(t[47]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M16.89 8.53l1.41-1.42C19.2 8.27 19.76 9.61 19.93 11h-2.02c-.14-.87-.49-1.72-1.02-2.47zM17.91 13h2.02c-.17 1.39-.72 2.73-1.62 3.89l-1.41-1.42c.52-.75.87-1.59 1.01-2.47zm-1.01 5.32c-1.16.9-2.51 1.44-3.9 1.61V17.9c.87-.15 1.71-.49 2.46-1.03l1.44 1.45zM11 4.07V1l4.55 4.55L11 10V6.09c-2.84.48-5 2.94-5 5.91s2.16 5.43 5 5.91v2.02c-3.95-.49-7-3.85-7-7.93s3.05-7.44 7-7.93z"})],-1)])],8,is)),(0,s.Lk)("div",ss,(0,a.v_)(o.previewIndex+1)+" / "+(0,a.v_)(l.mediaFiles.length),1)])):(0,s.Q3)("",!0)])}var as=i(94373),rs=i(60782),os={name:"PublicBrowse",components:{TransformMedia:pi,ToggleDark:mi.A},data(){return{files:[],allowedDirs:[],rootDir:"",currentPath:"",totalCount:0,loading:!1,error:null,canRetry:!0,hasMore:!0,previewVisible:!1,previewIndex:0,observer:null,pageSize:24,searchInput:"",searchKeyword:"",currentStartIndex:0,searchExpanded:!1,filterType:"",lastScrollY:0,scrollPage:0,columnCount:4,columnHeights:[0,0,0,0],imageRotation:0,imageScale:1,imageTx:0,imageTy:0,imageDragging:!1,imageDragStart:null,imageStartTx:0,imageStartTy:0,swipeX:0,swipeStartX:0,swipeStartY:0,swipeStartT:0,swipeActive:!1,swipeAnimating:!1,swipeDir:0,viewportW:0,gestureLocked:!1,audioSwipeStartX:0,audioSwipeStartT:0,audioSwipeActive:!1,isMobile:!1}},computed:{...(0,rs.L8)(["userConfig"]),siteName(){return this.userConfig?.siteTitle||"Sanyue ImgHub"},rootDirName(){return this.rootDir.split("/").filter(Boolean).pop()||this.$t("publicBrowse.rootDirectory")},pathParts(){if(!this.currentPath||!this.rootDir)return[];const e=this.currentPath.replace(this.rootDir,"").replace(/^\/+/,"");return e.split("/").filter(Boolean)},folders(){return this.files.filter(e=>e.isFolder)},mediaFiles(){return this.files.filter(e=>!e.isFolder)},totalPages(){return Math.ceil(this.totalCount/this.pageSize)},displayCurrentPage(){const e=Math.floor(this.currentStartIndex/this.pageSize)+1,t=Math.ceil(this.mediaFiles.length/this.pageSize);return Math.min(e+Math.floor(this.scrollPage*t),this.totalPages)},columns(){const e=Array.from({length:this.columnCount},()=>[]);for(const t of this.mediaFiles){const i=t.columnIndex??0;i0?this.mediaFiles[this.previewIndex-1]:null},nextPreviewFile(){return this.previewIndex1?this.imageDragging?"grabbing":"grab":"default"}},swipeWindow(){return[this.prevPreviewFile,this.currentPreviewFile,this.nextPreviewFile]},swipeTrackStyle(){const e=-this.viewportW,t=e+this.swipeX;return{transform:`translate3d(${t}px, 0, 0)`,transition:this.swipeAnimating?"transform 0.28s ease":"none"}}},watch:{"$route.params.dir":{handler(){this.initFromRoute()}}},mounted(){oi(),this.checkMobile(),this.initFromRoute(),this.setupIntersectionObserver(),this.updateColumnCount(),window.addEventListener("resize",this.updateColumnCount),window.addEventListener("resize",this.checkMobile),window.addEventListener("scroll",this.handleScroll)},beforeUnmount(){this.observer&&this.observer.disconnect(),window.removeEventListener("resize",this.updateColumnCount),window.removeEventListener("resize",this.checkMobile),window.removeEventListener("scroll",this.handleScroll)},methods:{handleSearch(){const e=this.searchInput.trim();if(!e)return this.searchKeyword="",this.filterType="",this.currentStartIndex=0,void this.resetAndLoad();const t=e.match(/^#(\d+)$/);if(t){const e=parseInt(t[1],10),i=Math.ceil(this.totalCount/this.pageSize),s=Math.min(Math.max(1,e),i||1);return this.currentStartIndex=(s-1)*this.pageSize,this.searchKeyword="",this.filterType="",this.searchInput="",void this.resetAndLoad()}const i={"图片":"image","图":"image",image:"image",img:"image","照片":"image","视频":"video",video:"video","影片":"video","电影":"video","音乐":"audio","音频":"audio",audio:"audio",music:"audio","歌曲":"audio"},s=e.toLowerCase();if(i[s])return this.filterType=i[s],this.searchKeyword="",this.currentStartIndex=0,void this.resetAndLoad();this.filterType="",this.searchKeyword=e,this.currentStartIndex=0,this.resetAndLoad()},resetAndLoad(){this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),this.loadFiles().then(()=>{this.observeLoadTrigger()})},toggleSearch(){this.searchExpanded=!this.searchExpanded,this.searchExpanded&&this.$nextTick(()=>{this.$refs.searchInputRef?.focus()})},handleScroll(){const e=window.scrollY;this.searchExpanded&&e>this.lastScrollY+20&&(this.searchExpanded=!1),this.lastScrollY=e;const t=this.$refs.galleryContainer;if(t&&this.mediaFiles.length>0){t.getBoundingClientRect();const i=t.offsetTop,s=t.scrollHeight-window.innerHeight;if(s>0){const t=Math.max(0,e-i);this.scrollPage=Math.min(1,t/s)}else this.scrollPage=0}},checkMobile(){this.isMobile=window.innerWidth<=600},getSlideKey(e,t){return e?1===t?`${e.name}-${this.previewIndex}`:e.name:`empty-${t}`},updateColumnCount(){const e=window.innerWidth;let t;t=e<600?2:e<900?3:4,t!==this.columnCount&&(this.columnCount=t,this.columnHeights=new Array(this.columnCount).fill(0),this.mediaFiles.forEach(e=>{e.columnIndex=void 0,this.assignToColumn(e)}))},getShortestColumn(){let e=0,t=this.columnHeights[0];for(let i=1;i{const t=e[0];t.isIntersecting&&this.hasMore&&!this.loading&&this.loadMore()},{rootMargin:"200px"})},observeLoadTrigger(){this.$nextTick(()=>{this.$refs.loadTrigger&&this.observer&&this.observer.observe(this.$refs.loadTrigger)})},async initFromRoute(){const e=this.$route.params.dir||"",t=Array.isArray(e)?e.join("/"):e,i=t.split("/").filter(Boolean);this.rootDir=i[0]||"",this.currentPath=t,this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),this.searchInput="",this.searchKeyword="",this.filterType="",this.currentStartIndex=0,await this.loadFiles(),this.observeLoadTrigger()},async loadFiles(){this.loading=!0,this.error=null,this.canRetry=!0;try{let e=`/api/public/list?dir=${encodeURIComponent(this.currentPath)}&start=${this.currentStartIndex}&count=${this.pageSize}`;this.searchKeyword&&(e+=`&search=${encodeURIComponent(this.searchKeyword)}`),this.filterType&&(e+=`&type=${this.filterType}`);const t=await as.A.get(e);t.data.allowedDirs&&(this.allowedDirs=t.data.allowedDirs);const i=(t.data.directories||[]).map(e=>({name:e,isFolder:!0})),s=(t.data.files||[]).map(e=>({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));s.forEach(e=>this.assignToColumn(e)),this.files=[...i,...s],this.totalCount=t.data.totalCount||this.files.length,this.hasMore=this.currentStartIndex+this.mediaFiles.length({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));s.forEach(e=>this.assignToColumn(e)),this.files.push(...s),this.hasMore=this.currentStartIndex+this.mediaFiles.length{t.src=e+"?_retry="+Date.now()},500*(i+1))}else t.style.display="none"},copyLink(e){const t=this.getFileUrl(e);navigator.clipboard?.writeText(t).then(()=>{this.showToast(this.$t("publicBrowse.copied"))}).catch(()=>{const e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.showToast(this.$t("publicBrowse.copied"))})},showToast(e){const t=document.querySelector(".copy-toast");t&&t.remove();const i=document.createElement("div");i.className="copy-toast",i.textContent=e,document.body.appendChild(i),setTimeout(()=>i.classList.add("show"),10),setTimeout(()=>{i.classList.remove("show"),setTimeout(()=>i.remove(),300)},1500)},downloadFile(e){const t=document.createElement("a");t.href=this.getFileUrl(e),t.download=e.split("/").pop(),t.click()},openPreview(e){if(e.isFolder)return;ai(null);const t=this.mediaFiles.findIndex(t=>t.name===e.name);t>=0&&(this.previewIndex=t,this.previewVisible=!0,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0,this.gestureLocked=!1,document.body.style.overflow="hidden",this.$nextTick(()=>{this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth}))},closePreview(){ai(null),this.previewVisible=!1,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0,this.gestureLocked=!1,document.body.style.overflow=""},prevImage(){ai(null),this.previewIndex>0&&(this.previewIndex--,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0)},nextImage(){ai(null),this.previewIndex0?-.1:.1;let i=this.imageScale+t;i=Math.max(.5,Math.min(4,i)),this.imageScale=i,i<=1&&(this.imageTx=0,this.imageTy=0)},onImageMouseDown(e){this.imageScale<=1||(e.preventDefault(),this.imageDragging=!0,this.imageDragStart={x:e.clientX,y:e.clientY},this.imageStartTx=this.imageTx,this.imageStartTy=this.imageTy)},onImageMouseMove(e){if(!this.imageDragging)return;const t=e.clientX-this.imageDragStart.x,i=e.clientY-this.imageDragStart.y;this.imageTx=this.imageStartTx+t,this.imageTy=this.imageStartTy+i},onImageMouseUp(){this.imageDragging=!1},onSwipeStart(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0];this.swipeStartX=t.clientX,this.swipeStartY=t.clientY,this.swipeStartT=performance.now(),this.swipeX=0,this.swipeActive=!1,this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth},onSwipeMove(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0],i=t.clientX-this.swipeStartX,s=t.clientY-this.swipeStartY;if(!this.swipeActive){if(Math.abs(i)<8)return;if(Math.abs(i)<=Math.abs(s))return;this.swipeActive=!0}e.preventDefault();let n=i;0===this.previewIndex&&n>0?n=this.rubberBand(n,this.viewportW,.55):this.previewIndex===this.mediaFiles.length-1&&n<0&&(n=-this.rubberBand(-n,this.viewportW,.55)),this.swipeX=n},onSwipeEnd(){if(this.gestureLocked)return;if(this.swipeAnimating)return;if(!this.swipeActive)return void(this.swipeX=0);const e=Math.max(1,performance.now()-this.swipeStartT),t=this.swipeX/e,i=.2*this.viewportW;let s=0;(this.swipeX<=-i||t<=-.8)&&(s=1),(this.swipeX>=i||t>=.8)&&(s=-1),(-1===s&&0===this.previewIndex||1===s&&this.previewIndex===this.mediaFiles.length-1)&&(s=0),this.swipeDir=s,this.swipeAnimating=!0,this.swipeX=1===s?-this.viewportW:-1===s?+this.viewportW:0},onSwipeTransitionEnd(){this.swipeAnimating&&(1===this.swipeDir&&this.previewIndex++,-1===this.swipeDir&&this.previewIndex--,this.swipeAnimating=!1,this.swipeDir=0,this.swipeX=0)},rubberBand(e,t,i=.55){return e*t*i/(t+i*e)},onEdgeSwipe(e){-1===e&&0===this.previewIndex||1===e&&this.previewIndex===this.mediaFiles.length-1||(this.swipeDir=e,this.swipeAnimating=!0,1===e?this.swipeX=-this.viewportW:-1===e&&(this.swipeX=+this.viewportW))},onAudioSwipeStart(e){const t=e.touches[0];this.audioSwipeStartX=t.clientX,this.audioSwipeStartT=performance.now(),this.audioSwipeActive=!1},onAudioSwipeMove(e){if(!this.audioSwipeStartX)return;const t=e.touches[0],i=t.clientX-this.audioSwipeStartX;Math.abs(i)>30&&(this.audioSwipeActive=!0)},onAudioSwipeEnd(e){if(!this.audioSwipeActive)return void(this.audioSwipeStartX=0);const t=e.changedTouches[0],i=t.clientX-this.audioSwipeStartX,s=Math.max(1,performance.now()-this.audioSwipeStartT),n=i/s,a=80;i>a||n>.5?this.prevImage():(i<-a||n<-.5)&&this.nextImage(),this.audioSwipeStartX=0,this.audioSwipeActive=!1},onDesktopVideoPlay(e){ai(e.target)},onMobileMediaPlay(e){ai(e.target)},onAudioEnded(e){"next"===e&&this.previewIndex{setTimeout(()=>{const e=this.isMobile?this.$refs.mobileAudio:this.$refs.desktopAudio;e?.player&&e.player.play()},100)}))}}};const ls=(0,di.A)(os,[["render",ns],["__scopeId","data-v-58d060c5"]]);var cs=ls},51583:function(e,t,i){var s,n,a;i(44114),function(i,r){n=[],s=r,a="function"===typeof s?s.apply(t,n):s,void 0===a||(e.exports=a)}(0,function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,r,o,l=[],c=e.length,h=c;n=function(e,i){i.length&&l.push(e),h--,h||t(l)};while(c--)a=e[c],r=i[a],r?n(a,r):(o=s[a]=s[a]||[],o.push(n))}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)while(n.length)n[0](e,t),n.splice(0,1)}}function r(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function o(t,i,s,n){var a,r,l,c=document,h=s.async,d=(s.numRetries||0)+1,u=s.before||e,p=t.replace(/[\?|#].*$/,""),m=t.replace(/^(css|img|module|nomodule)!/,"");if(n=n||0,/(^css!|\.css$)/.test(p))l=c.createElement("link"),l.rel="stylesheet",l.href=m,a="hideFocus"in l,a&&l.relList&&(a=0,l.rel="preload",l.as="style");else if(/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(p))l=c.createElement("img"),l.src=m;else if(l=c.createElement("script"),l.src=m,l.async=void 0===h||h,r="noModule"in l,/^module!/.test(p)){if(!r)return i(t,"l");l.type="module"}else if(/^nomodule!/.test(p)&&r)return i(t,"l");l.onload=l.onerror=l.onbeforeload=function(e){var r=e.type[0];if(a)try{l.sheet.cssText.length||(r="e")}catch(c){18!=c.code&&(r="e")}if("e"==r){if(n+=1,nu.handleToggleClick&&u.handleToggleClick(...e))},[(0,s.bF)(n.eB,{name:"icon-fade",mode:"out-in"},{default:(0,s.k6)(()=>[d.isAuto?((0,s.uX)(),(0,s.Wv)(p,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,s.uX)(),(0,s.CE)("svg",{key:"sun-moon",class:(0,a.C4)(["theme_toggle_svg",{dark:d.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,s.Lk)("mask",r,[t[1]||(t[1]=(0,s.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,s.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:d.isDark?"50%":"100%",cy:d.isDark?"23%":"0%",r:d.isDark?"9":"5"},null,8,o)]),(0,s.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:d.isDark?"9":"5",mask:"url(#themeMask)"},null,8,l),(0,s.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:d.isDark?0:1},[...t[2]||(t[2]=[(0,s.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,s.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,s.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,c)],2))]),_:1})])}var d={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},u=i(71241);const p=(0,u.A)(d,[["render",h],["__scopeId","data-v-66e6a1f0"]]);var m=p}}]); +//# sourceMappingURL=412.2e84fff1.js.map \ No newline at end of file diff --git a/frontend-dist/js/412.2e84fff1.js.gz b/frontend-dist/js/412.2e84fff1.js.gz new file mode 100644 index 00000000..ab6485bf Binary files /dev/null and b/frontend-dist/js/412.2e84fff1.js.gz differ diff --git a/frontend-dist/js/412.2e84fff1.js.map b/frontend-dist/js/412.2e84fff1.js.map new file mode 100644 index 00000000..7ea9e27b --- /dev/null +++ b/frontend-dist/js/412.2e84fff1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/412.2e84fff1.js","mappings":"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","sources":["webpack://sanyue_imghub/src/js/rangetouch.js","webpack://sanyue_imghub/src/js/config.js","webpack://sanyue_imghub/src/js/utils/css.js","webpack://sanyue_imghub/src/js/utils/is.js","webpack://sanyue_imghub/src/js/utils/numbers.js","webpack://sanyue_imghub/src/js/utils/events.js","webpack://sanyue_imghub/./src/components/browse/TransformMedia.vue?4d8d","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/is.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/animation.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/objects.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/elements.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/support.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/events.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/promise.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/arrays.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/style.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/html5.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/browser.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/strings.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/i18n.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/storage.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/fetch.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-sprite.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/time.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/controls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/urls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/captions.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/defaults.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/states.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/types.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/console.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/fullscreen.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-image.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/ui.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/listeners.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-script.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/vimeo.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/youtube.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/media.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/ads.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/numbers.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/preview-thumbnails.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/source.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plyr.js","webpack://sanyue_imghub/./src/utils/mediaManager.js","webpack://sanyue_imghub/./src/components/browse/TransformMedia.vue","webpack://sanyue_imghub/./src/components/browse/TransformMedia.vue?1938","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?9973","webpack://sanyue_imghub/./src/views/PublicBrowse.vue","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?bab5","webpack://sanyue_imghub/./node_modules/loadjs/dist/loadjs.umd.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0f43","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["// ==========================================================================\n// rangetouch.js v2.0.0\n// Making work on touch devices\n// https://github.com/sampotts/rangetouch\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport defaults from './config';\nimport { matches } from './utils/css';\nimport { trigger } from './utils/events';\nimport is from './utils/is';\nimport { round } from './utils/numbers';\n\nclass RangeTouch {\n /**\n * Setup a new instance\n * @param {String|Element} target\n * @param {Object} options\n */\n constructor(target, options) {\n if (is.element(target)) {\n // An Element is passed, use it directly\n this.element = target;\n } else if (is.string(target)) {\n // A CSS Selector is passed, fetch it from the DOM\n this.element = document.querySelector(target);\n }\n\n if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {\n return;\n }\n\n this.config = { ...defaults, ...options };\n\n this.init();\n }\n\n static get enabled() {\n return 'ontouchstart' in document.documentElement;\n }\n\n /**\n * Setup multiple instances\n * @param {String|Element|NodeList|Array} target\n * @param {Object} options\n */\n static setup(target, options = {}) {\n let targets = null;\n\n if (is.empty(target) || is.string(target)) {\n targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type=\"range\"]'));\n } else if (is.element(target)) {\n targets = [target];\n } else if (is.nodeList(target)) {\n targets = Array.from(target);\n } else if (is.array(target)) {\n targets = target.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n const config = { ...defaults, ...options };\n\n if (is.string(target) && config.watch) {\n // Create an observer instance\n const observer = new MutationObserver(mutations => {\n Array.from(mutations).forEach(mutation => {\n Array.from(mutation.addedNodes).forEach(node => {\n if (!is.element(node) || !matches(node, target)) {\n return;\n }\n\n // eslint-disable-next-line no-unused-vars\n const range = new RangeTouch(node, config);\n });\n });\n });\n\n // Pass in the target node, as well as the observer options\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n\n return targets.map(t => new RangeTouch(t, options));\n }\n\n init() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n // Add useful CSS\n if (this.config.addCSS) {\n this.element.style.userSelect = 'none';\n this.element.style.webKitUserSelect = 'none';\n this.element.style.touchAction = 'manipulation';\n }\n\n this.listeners(true);\n\n this.element.rangeTouch = this;\n }\n\n destroy() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n // Remove useful CSS\n if (this.config.addCSS) {\n this.element.style.userSelect = '';\n this.element.style.webKitUserSelect = '';\n this.element.style.touchAction = '';\n }\n\n this.listeners(false);\n\n this.element.rangeTouch = null;\n }\n\n listeners(toggle) {\n const method = toggle ? 'addEventListener' : 'removeEventListener';\n\n // Listen for events\n ['touchstart', 'touchmove', 'touchend'].forEach(type => {\n this.element[method](type, event => this.set(event), false);\n });\n }\n\n /**\n * Get the value based on touch position\n * @param {Event} event\n */\n get(event) {\n if (!RangeTouch.enabled || !is.event(event)) {\n return null;\n }\n\n const input = event.target;\n const touch = event.changedTouches[0];\n const min = parseFloat(input.getAttribute('min')) || 0;\n const max = parseFloat(input.getAttribute('max')) || 100;\n const step = parseFloat(input.getAttribute('step')) || 1;\n const delta = max - min;\n\n // Calculate percentage\n let percent;\n const clientRect = input.getBoundingClientRect();\n const thumbWidth = ((100 / clientRect.width) * (this.config.thumbWidth / 2)) / 100;\n\n // Determine left percentage\n percent = (100 / clientRect.width) * (touch.clientX - clientRect.left);\n\n // Don't allow outside bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Factor in the thumb offset\n if (percent < 50) {\n percent -= (100 - percent * 2) * thumbWidth;\n } else if (percent > 50) {\n percent += (percent - 50) * 2 * thumbWidth;\n }\n\n // Find the closest step to the mouse position\n return min + round(delta * (percent / 100), step);\n }\n\n /**\n * Update range value based on position\n * @param {Event} event\n */\n set(event) {\n if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {\n return;\n }\n\n // Prevent text highlight on iOS\n event.preventDefault();\n\n // Set value\n // eslint-disable-next-line no-param-reassign\n event.target.value = this.get(event);\n\n // Trigger event\n trigger(event.target, event.type === 'touchend' ? 'change' : 'input');\n }\n}\n\nexport default RangeTouch;\n","const defaults = {\n addCSS: true, // Add CSS to the element to improve usability (required here or in your CSS!)\n thumbWidth: 15, // The width of the thumb handle\n watch: true, // Watch for new elements that match a string target\n};\n\nexport default defaults;","// Element matches a selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return method.call(element, selector);\n}\n\nexport default { matches };\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => getConstructor(input) === Function;\nconst isArray = input => Array.isArray(input);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isEvent = input => instanceOf(input, Event);\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n nodeList: isNodeList,\n element: isElement,\n event: isEvent,\n empty: isEmpty,\n};\n","// Get the number of decimal places\nexport function getDecimalPlaces(value) {\n const match = `${value}`.match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n if (!match) {\n return 0;\n }\n\n return Math.max(\n 0,\n // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) -\n // Adjust for scientific notation.\n (match[2] ? +match[2] : 0),\n );\n}\n\n// Round to the nearest step\nexport function round(number, step) {\n if (step < 1) {\n const places = getDecimalPlaces(step);\n return parseFloat(number.toFixed(places));\n }\n return Math.round(number / step) * step;\n}\n\nexport default { getDecimalPlaces, round };\n","// Trigger event\nexport function trigger(element, type) {\n if (!element || !type) {\n return;\n }\n\n // Create and dispatch the event\n const event = new Event(type, { bubbles: true });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\nexport default { trigger };\n","import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, toDisplayString as _toDisplayString } from \"vue\";\nconst _hoisted_1 = [\"src\"];\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = {\n key: 2,\n class: \"video-placeholder\"\n};\nconst _hoisted_4 = {\n class: \"audio-cover\"\n};\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1,\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n};\nconst _hoisted_7 = {\n class: \"audio-info\"\n};\nconst _hoisted_8 = {\n class: \"audio-title\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"audio-artist\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 4,\n class: \"audio-placeholder\"\n};\nconst _hoisted_12 = {\n class: \"audio-name\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"tm-viewport\",\n ref: \"viewport\",\n onPointerdown: _cache[3] || (_cache[3] = (...args) => $options.onPointerDown && $options.onPointerDown(...args)),\n onPointermove: _cache[4] || (_cache[4] = (...args) => $options.onPointerMove && $options.onPointerMove(...args)),\n onPointerup: _cache[5] || (_cache[5] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onPointercancel: _cache[6] || (_cache[6] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onDblclick: _cache[7] || (_cache[7] = _withModifiers((...args) => $options.onDblClick && $options.onDblClick(...args), [\"prevent\"]))\n }, [$props.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"tm-media\",\n src: $props.src,\n draggable: \"false\",\n style: _normalizeStyle($options.mediaStyle),\n onLoad: _cache[0] || (_cache[0] = (...args) => $options.onLoad && $options.onLoad(...args))\n }, null, 44, _hoisted_1)) : $props.isVideo && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"tm-video-wrap\",\n onPointerdown: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"video\", {\n ref: \"videoEl\",\n class: \"plyr-video\",\n src: $props.src,\n playsinline: \"\"\n }, null, 8, _hoisted_2)], 32)) : $props.isVideo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [...(_cache[8] || (_cache[8] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M8 5v14l11-7z\"\n })], -1)]))])) : $props.isAudio && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: \"tm-audio-wrap\",\n onPointerdown: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_4, [$data.audioCover ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: $data.audioCover,\n class: \"cover-img\"\n }, null, 8, _hoisted_5)) : (_openBlock(), _createElementBlock(\"svg\", _hoisted_6, [...(_cache[9] || (_cache[9] = [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n }, null, -1)]))]))]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString($data.audioTitle), 1), $data.audioArtist ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString($data.audioArtist), 1)) : _createCommentVNode(\"\", true)]), _createElementVNode(\"audio\", {\n ref: \"audioEl\",\n class: \"plyr-audio\",\n src: $props.src\n }, null, 8, _hoisted_10)], 32)) : $props.isAudio ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_cache[10] || (_cache[10] = _createElementVNode(\"svg\", {\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n })], -1)), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.audioTitle), 1)])) : _createCommentVNode(\"\", true)], 544);\n}","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => typeof input === 'function';\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\nconst isPromise = input => instanceOf(input, Promise) && isFunction(input.then);\n\nfunction isElement(input) {\n return input !== null\n && typeof input === 'object'\n && input.nodeType === 1\n && typeof input.style === 'object'\n && typeof input.ownerDocument === 'object';\n}\n\nfunction isEmpty(input) {\n return isNullOrUndefined(input)\n || ((isString(input) || isArray(input) || isNodeList(input)) && !input.length)\n || (isObject(input) && !Object.keys(input).length);\n}\n\nfunction isUrl(input) {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n }\n catch {\n return false;\n }\n}\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element, delay) {\n setTimeout(() => {\n try {\n element.hidden = true;\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n element.hidden = false;\n }\n catch {}\n }, delay);\n}\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach((key) => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n }\n else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport is from './is';\nimport { extend } from './objects';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n }\n else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) return;\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.textContent = text;\n }\n\n // Return built element\n return element;\n}\n\n// Insert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) return;\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) return;\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) return;\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) return null;\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) return {};\n\n const attributes = {};\n const existing = extend({}, existingAttributes);\n\n sel.split(',').forEach((s) => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n // Get the parts and value\n const parts = stripped.split('=');\n const [key] = parts;\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.string(existing.class)) {\n attributes.class = `${existing.class} ${className}`;\n }\n else {\n attributes.class = className;\n }\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return extend(existing, attributes);\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) return;\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n element.hidden = hide;\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const { prototype } = Element;\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method\n = prototype.matches\n || prototype.webkitMatchesSelector\n || prototype.mozMatchesSelector\n || prototype.msMatchesSelector\n || match;\n\n return method.call(element, selector);\n}\n\n// Closest ancestor element matching selector (also tests element itself)\nexport function closest(element, selector) {\n const { prototype } = Element;\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n function closestElement() {\n let el = this;\n\n do {\n if (matches.matches(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n }\n\n const method = prototype.closest || closestElement;\n\n return method.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, focusVisible = false) {\n if (!is.element(element)) return;\n\n // Set regular focus\n element.focus({ preventScroll: true, focusVisible });\n}\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider) {\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput;\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n pip: (() => {\n return (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture);\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n }\n catch {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n catch {}\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach((type) => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: { ...detail, plyr: this },\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach((item) => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","import is from './is';\n/**\n * Silence a Promise-like object.\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n * @param {object} value An object that may or may not be `Promise`-like.\n */\nexport function silencePromise(value) {\n if (is.promise(value)) {\n value.then(null, () => {});\n }\n}\n\nexport default { silencePromise };\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Style utils\n// ==========================================================================\n\nimport { closest } from './arrays';\nimport is from './is';\n\n// Check support for a CSS declaration\nexport function supportsCSS(declaration) {\n if (!window || !window.CSS) {\n return false;\n }\n\n return window.CSS.supports(declaration);\n}\n\n// Standard/common aspect ratios\nconst standardRatios = [\n [1, 1],\n [4, 3],\n [3, 4],\n [5, 4],\n [4, 5],\n [3, 2],\n [2, 3],\n [16, 10],\n [10, 16],\n [16, 9],\n [9, 16],\n [21, 9],\n [9, 21],\n [32, 9],\n [9, 32],\n].reduce((out, [x, y]) => ({ ...out, [x / y]: [x, y] }), {});\n\n// Validate an aspect ratio\nexport function validateAspectRatio(input) {\n if (!is.array(input) && (!is.string(input) || !input.includes(':'))) {\n return false;\n }\n\n const ratio = is.array(input) ? input : input.split(':');\n\n return ratio.map(Number).every(is.number);\n}\n\n// Reduce an aspect ratio to it's lowest form\nexport function reduceAspectRatio(ratio) {\n if (!is.array(ratio) || !ratio.every(is.number)) {\n return null;\n }\n\n const [width, height] = ratio;\n const getDivider = (w, h) => (h === 0 ? w : getDivider(h, w % h));\n const divider = getDivider(width, height);\n\n return [width / divider, height / divider];\n}\n\n// Calculate an aspect ratio\nexport function getAspectRatio(input) {\n const parse = ratio => (validateAspectRatio(ratio) ? ratio.split(':').map(Number) : null);\n // Try provided ratio\n let ratio = parse(input);\n\n // Get from config\n if (ratio === null) {\n ratio = parse(this.config.ratio);\n }\n\n // Get from embed\n if (ratio === null && !is.empty(this.embed) && is.array(this.embed.ratio)) {\n ({ ratio } = this.embed);\n }\n\n // Get from HTML5 video\n if (ratio === null && this.isHTML5) {\n const { videoWidth, videoHeight } = this.media;\n ratio = [videoWidth, videoHeight];\n }\n\n return reduceAspectRatio(ratio);\n}\n\n// Set aspect ratio for responsive container\nexport function setAspectRatio(input) {\n if (!this.isVideo) {\n return {};\n }\n\n const { wrapper } = this.elements;\n const ratio = getAspectRatio.call(this, input);\n\n if (!is.array(ratio)) {\n return {};\n }\n\n const [x, y] = reduceAspectRatio(ratio);\n const useNative = supportsCSS(`aspect-ratio: ${x}/${y}`);\n const padding = (100 / x) * y;\n\n if (useNative) {\n wrapper.style.aspectRatio = `${x}/${y}`;\n }\n else {\n wrapper.style.paddingBottom = `${padding}%`;\n }\n\n // For Vimeo we have an extra
to hide the standard controls and UI\n if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) {\n const height = (100 / this.media.offsetWidth) * Number.parseInt(window.getComputedStyle(this.media).paddingBottom, 10);\n const offset = (height - padding) / (height / 50);\n\n if (this.fullscreen.active) {\n wrapper.style.paddingBottom = null;\n }\n else {\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n }\n else if (this.isHTML5) {\n wrapper.classList.add(this.config.classNames.videoFixedRatio);\n }\n\n return { padding, ratio };\n}\n\n// Round an aspect ratio to closest standard ratio\nexport function roundAspectRatio(x, y, tolerance = 0.05) {\n const ratio = x / y;\n const closestRatio = closest(Object.keys(standardRatios), ratio);\n\n // Check match is within tolerance\n if (Math.abs(closestRatio - ratio) <= tolerance) {\n return standardRatios[closestRatio];\n }\n\n // No match\n return [x, y];\n}\n\n// Get the size of the viewport\n// https://stackoverflow.com/questions/1248081/how-to-get-the-browser-viewport-dimensions\nexport function getViewportSize() {\n const width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n const height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n return [width, height];\n}\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { setAspectRatio } from './utils/style';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter((source) => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Whether we're forcing all options (e.g. for streaming)\n if (this.config.quality.forced) {\n return this.config.quality.options;\n }\n\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n setup() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set aspect ratio if fixed\n if (!is.empty(this.config.ratio)) {\n setAspectRatio.call(player);\n }\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(s => s.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n if (player.quality === input) {\n return;\n }\n\n // If we're using an external handler...\n if (player.config.quality.forced && is.function(player.config.quality.onChange)) {\n player.config.quality.onChange(input);\n }\n else {\n // Get sources\n const sources = html5.getSources.call(player);\n // Get first match for requested size\n const source = sources.find(s => Number(s.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState, playbackRate } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.speed = playbackRate;\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n silencePromise(player.play());\n }\n });\n\n // Load new source\n player.media.load();\n }\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst isIE = Boolean(window.document.documentMode);\nconst isEdge = /Edge/.test(navigator.userAgent);\nconst isWebKit = 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent);\nconst isIPhone = /iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n// navigator.platform may be deprecated but this check is still required\nconst isIPadOS = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\nconst isIos = /iPad|iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n\nexport default {\n isIE,\n isEdge,\n isWebKit,\n isIPhone,\n isIPadOS,\n isIos,\n};\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) return input;\n\n return input.toString().replace(/\\{(\\d+)\\}/g, (_, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurrences of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.textContent;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([k, v]) => {\n string = replaceAll(string, k, v);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) return false;\n const test = '___test';\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n return true;\n }\n catch {\n return false;\n }\n }\n\n get = (key) => {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n const store = window.localStorage.getItem(this.key);\n if (is.empty(store)) return null;\n const json = JSON.parse(store);\n return is.string(key) && key.length ? json[key] : json;\n };\n\n set = (object) => {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objects\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n try {\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n catch { }\n };\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text', withCredentials = false) {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) return;\n\n // Set to true if needed for CORS\n if (withCredentials) {\n request.withCredentials = true;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n }\n catch {\n resolve(request.responseText);\n }\n }\n else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n request.responseType = responseType;\n request.send();\n }\n catch (error) {\n reject(error);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then((result) => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n try {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n catch {}\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(undefined, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n }\n else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport RangeTouch from 'rangetouch';\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const host = window.location.host ? window.location.host : window.top.location.host;\n const cors = url.host !== host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n }\n\n return true;\n }\n catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n 'aria-hidden': 'true',\n 'focusable': 'false',\n }),\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n const attributes = { ...attr, class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') };\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a
`);\n }\n\n // Set position\n tipElement.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(\n this,\n this.elements.display.currentTime,\n invert ? this.duration - this.currentTime : this.currentTime,\n invert,\n );\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n if (this.duration >= 2 ** 32) {\n toggleHidden(this.elements.display.currentTime, true);\n toggleHidden(this.elements.progress, true);\n return;\n }\n\n // Update ARIA values\n if (is.element(this.elements.inputs.seek)) {\n this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n if (this.config.markers.enabled) {\n controls.setMarkers.call(this);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleMenuButton(setting, toggle) {\n toggleHidden(this.elements.settings.buttons[setting], !toggle);\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panels[setting];\n let value = null;\n let list = container;\n\n if (setting === 'captions') {\n value = this.currentTrack;\n }\n else {\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('[role=\"menu\"]');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}×`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panels.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = (quality) => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach((quality) => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.buttons.loop, false);\n toggleHidden(this.elements.settings.panels.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleMenuButton.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.captions)) {\n return;\n }\n\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n const tracks = captions.getTracks.call(this);\n const toggle = Boolean(tracks.length);\n\n // Toggle the pane and tab\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!toggle) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.toggled && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.toggled,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.speed)) {\n return;\n }\n\n const type = 'speed';\n const list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');\n\n // Filter out invalid speeds\n this.options.speed = this.options.speed.filter(o => o >= this.minimumSpeed && o <= this.maximumSpeed);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Create items\n this.options.speed.forEach((speed) => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { buttons } = this.elements.settings;\n const visible = !is.empty(buttons) && Object.values(buttons).some(button => !button.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Focus the first menu item in a given (or visible) menu\n focusFirstMenuItem(pane, focusVisible = false) {\n if (this.elements.settings.popup.hidden) {\n return;\n }\n\n let target = pane;\n\n if (!is.element(target)) {\n target = Object.values(this.elements.settings.panels).find(p => !p.hidden);\n }\n\n const firstItem = target.querySelector('[role^=\"menuitem\"]');\n\n setFocus.call(this, firstItem, focusVisible);\n },\n\n // Show/hide menu\n toggleMenu(input) {\n const { popup } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(popup) || !is.element(button)) {\n return;\n }\n\n // True toggle by default\n const { hidden } = popup;\n let show = hidden;\n\n if (is.boolean(input)) {\n show = input;\n }\n else if (is.keyboardEvent(input) && input.key === 'Escape') {\n show = false;\n }\n else if (is.event(input)) {\n // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n // Element in the shadowDOM. The path, if available, is complete.\n const target = is.function(input.composedPath) ? input.composedPath()[0] : input.target;\n const isMenuItem = popup.contains(target);\n\n // If the click was inside the menu or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && input.target !== button && show)) {\n return;\n }\n }\n\n // Set button attributes\n button.setAttribute('aria-expanded', show);\n\n // Show the actual popup\n toggleHidden(popup, !show);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n // Focus the first item if key interaction\n if (show && is.keyboardEvent(input)) {\n controls.focusFirstMenuItem.call(this, null, true);\n }\n else if (!show && !hidden) {\n // If closing, re-focus the button\n setFocus.call(this, button, is.keyboardEvent(input));\n }\n },\n\n // Get the natural size of a menu panel\n getMenuSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Show a panel in the menu\n showMenuPanel(type = '', focusVisible = false) {\n const target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`);\n\n // Nothing to show, bail\n if (!is.element(target)) {\n return;\n }\n\n // Hide all other panels\n const container = target.parentNode;\n const current = Array.from(container.children).find(node => !node.hidden);\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getMenuSize.call(this, target);\n\n // Restore auto height/width\n const restore = (event) => {\n // We're only bothered about height and width on the container\n if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n // Only listen once\n off.call(this, container, transitionEndEvent, restore);\n };\n\n // Listen for the transition finishing and restore auto height/width\n on.call(this, container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n\n // Set attributes on target\n toggleHidden(target, false);\n\n // Focus the first item\n controls.focusFirstMenuItem.call(this, target, focusVisible);\n },\n\n // Set the download URL\n setDownloadUrl() {\n const button = this.elements.buttons.download;\n\n // Bail if no button\n if (!is.element(button)) {\n return;\n }\n\n // Set attribute\n button.setAttribute('href', this.download);\n },\n\n // Build the default HTML\n create(data) {\n const {\n bindMenuItemShortcuts,\n createButton,\n createProgress,\n createRange,\n createTime,\n setQualityMenu,\n setSpeedMenu,\n showMenuPanel,\n } = controls;\n this.elements.controls = null;\n\n // Larger overlaid play button\n if (is.array(this.config.controls) && this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(createButton.call(this, 'play-large'));\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n this.elements.controls = container;\n\n // Default item attributes\n const defaultAttributes = { class: 'plyr__controls__item' };\n\n // Loop through controls in order\n dedupe(is.array(this.config.controls) ? this.config.controls : []).forEach((control) => {\n // Restart button\n if (control === 'restart') {\n container.appendChild(createButton.call(this, 'restart', defaultAttributes));\n }\n\n // Rewind button\n if (control === 'rewind') {\n container.appendChild(createButton.call(this, 'rewind', defaultAttributes));\n }\n\n // Play/Pause button\n if (control === 'play') {\n container.appendChild(createButton.call(this, 'play', defaultAttributes));\n }\n\n // Fast forward button\n if (control === 'fast-forward') {\n container.appendChild(createButton.call(this, 'fast-forward', defaultAttributes));\n }\n\n // Progress\n if (control === 'progress') {\n const progressContainer = createElement('div', {\n class: `${defaultAttributes.class} plyr__progress__container`,\n });\n\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n progress.appendChild(\n createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n }),\n );\n\n // Buffer progress\n progress.appendChild(createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n progressContainer.appendChild(this.elements.progress);\n container.appendChild(progressContainer);\n }\n\n // Media current time display\n if (control === 'current-time') {\n container.appendChild(createTime.call(this, 'currentTime', defaultAttributes));\n }\n\n // Media duration display\n if (control === 'duration') {\n container.appendChild(createTime.call(this, 'duration', defaultAttributes));\n }\n\n // Volume controls\n if (control === 'mute' || control === 'volume') {\n let { volume } = this.elements;\n\n // Create the volume container if needed\n if (!is.element(volume) || !container.contains(volume)) {\n volume = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__volume`.trim(),\n }),\n );\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle mute button\n if (control === 'mute') {\n volume.appendChild(createButton.call(this, 'mute'));\n }\n\n // Volume range control\n // Ignored on iOS as it's handled globally\n // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n if (control === 'volume' && !browser.isIos && !browser.isIPadOS) {\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n volume.appendChild(\n createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n ),\n );\n }\n }\n\n // Toggle captions button\n if (control === 'captions') {\n container.appendChild(createButton.call(this, 'captions', defaultAttributes));\n }\n\n // Settings button / menu\n if (control === 'settings' && !is.empty(this.config.settings)) {\n const wrapper = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__menu`.trim(),\n hidden: '',\n }),\n );\n\n wrapper.appendChild(\n createButton.call(this, 'settings', {\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const popup = createElement('div', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n });\n\n // Create the menu\n const menu = createElement('div', {\n role: 'menu',\n });\n\n home.appendChild(menu);\n inner.appendChild(home);\n this.elements.settings.panels.home = home;\n\n // Build the menu items\n this.config.settings.forEach((type) => {\n // TODO: bundle this with the createMenuItem helper and bindings\n const menuItem = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n 'type': 'button',\n 'class': `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n 'role': 'menuitem',\n 'aria-haspopup': true,\n 'hidden': '',\n }),\n );\n\n // Bind menu shortcuts for keyboard users\n bindMenuItemShortcuts.call(this, menuItem, type);\n\n // Show menu on click\n on.call(this, menuItem, 'click', () => {\n showMenuPanel.call(this, type, false);\n });\n\n const flex = createElement('span', null, i18n.get(type, this.config));\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n flex.appendChild(value);\n menuItem.appendChild(flex);\n menu.appendChild(menuItem);\n\n // Build the panes\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n });\n\n // Back button\n const backButton = createElement('button', {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n });\n\n // Visible label\n backButton.appendChild(\n createElement(\n 'span',\n {\n 'aria-hidden': true,\n },\n i18n.get(type, this.config),\n ),\n );\n\n // Screen reader label\n backButton.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.hidden,\n },\n i18n.get('menuBack', this.config),\n ),\n );\n\n // Go back via keyboard\n on.call(\n this,\n pane,\n 'keydown',\n (event) => {\n if (event.key !== 'ArrowLeft') return;\n\n // Prevent seek\n event.preventDefault();\n event.stopPropagation();\n\n // Show the respective menu\n showMenuPanel.call(this, 'home', true);\n },\n false,\n );\n\n // Go back via button click\n on.call(this, backButton, 'click', () => {\n showMenuPanel.call(this, 'home', false);\n });\n\n // Add to pane\n pane.appendChild(backButton);\n\n // Menu\n pane.appendChild(\n createElement('div', {\n role: 'menu',\n }),\n );\n\n inner.appendChild(pane);\n\n this.elements.settings.buttons[type] = menuItem;\n this.elements.settings.panels[type] = pane;\n });\n\n popup.appendChild(inner);\n wrapper.appendChild(popup);\n container.appendChild(wrapper);\n\n this.elements.settings.popup = popup;\n this.elements.settings.menu = wrapper;\n }\n\n // Picture in picture button\n if (control === 'pip' && support.pip) {\n container.appendChild(createButton.call(this, 'pip', defaultAttributes));\n }\n\n // Airplay button\n if (control === 'airplay' && support.airplay) {\n container.appendChild(createButton.call(this, 'airplay', defaultAttributes));\n }\n\n // Download button\n if (control === 'download') {\n const attributes = extend({}, defaultAttributes, {\n element: 'a',\n href: this.download,\n target: '_blank',\n });\n\n // Set download attribute for HTML5 only\n if (this.isHTML5) {\n attributes.download = '';\n }\n\n const { download } = this.config.urls;\n\n if (!is.url(download) && this.isEmbed) {\n extend(attributes, {\n icon: `logo-${this.provider}`,\n label: this.provider,\n });\n }\n\n container.appendChild(createButton.call(this, 'download', attributes));\n }\n\n // Toggle fullscreen button\n if (control === 'fullscreen') {\n container.appendChild(createButton.call(this, 'fullscreen', defaultAttributes));\n }\n });\n\n // Set available quality levels\n if (this.isHTML5) {\n setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n // If function, run it and use output\n if (is.function(this.config.controls)) {\n this.config.controls = this.config.controls.call(this, props);\n }\n\n // Convert falsy controls to empty array (primarily for empty strings)\n if (!this.config.controls) {\n this.config.controls = [];\n }\n\n if (is.element(this.config.controls) || is.string(this.config.controls)) {\n // HTMLElement or Non-empty string passed as the option\n container = this.config.controls;\n }\n else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = (input) => {\n let result = input;\n\n Object.entries(props).forEach(([key, value]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n const insertMethod = is.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n target[insertMethod]('afterbegin', container);\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Add pressed property to buttons\n if (!is.empty(this.elements.buttons)) {\n const addProperty = (button) => {\n const className = this.config.classNames.controlPressed;\n button.setAttribute('aria-pressed', 'false');\n\n Object.defineProperty(button, 'pressed', {\n configurable: true,\n enumerable: true,\n get() {\n return hasClass(button, className);\n },\n set(pressed = false) {\n toggleClass(button, className, pressed);\n button.setAttribute('aria-pressed', pressed ? 'true' : 'false');\n },\n });\n };\n\n // Toggle classname when pressed property is set\n Object.values(this.elements.buttons)\n .filter(Boolean)\n .forEach((button) => {\n if (is.array(button) || is.nodeList(button)) {\n Array.from(button).filter(Boolean).forEach(addProperty);\n }\n else {\n addProperty(button);\n }\n });\n }\n\n // Edge sometimes doesn't finish the paint so force a repaint\n if (browser.isEdge) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const { classNames, selectors } = this.config;\n const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n const labels = getElements.call(this, selector);\n\n Array.from(labels).forEach((label) => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n });\n }\n },\n\n // Set media metadata\n setMediaMetadata() {\n try {\n if ('mediaSession' in navigator) {\n navigator.mediaSession.metadata = new window.MediaMetadata({\n title: this.config.mediaMetadata.title,\n artist: this.config.mediaMetadata.artist,\n album: this.config.mediaMetadata.album,\n artwork: this.config.mediaMetadata.artwork,\n });\n }\n }\n catch {\n // Do nothing\n }\n },\n\n // Add markers\n setMarkers() {\n if (!this.duration || this.elements.markers) return;\n\n // Get valid points\n const points = this.config.markers?.points?.filter(({ time }) => time > 0 && time < this.duration);\n if (!points?.length) return;\n\n const containerFragment = document.createDocumentFragment();\n const pointsFragment = document.createDocumentFragment();\n let tipElement = null;\n const tipVisible = `${this.config.classNames.tooltip}--visible`;\n const toggleTip = show => toggleClass(tipElement, tipVisible, show);\n\n // Inject markers to progress container\n points.forEach((point) => {\n const markerElement = createElement(\n 'span',\n {\n class: this.config.classNames.marker,\n },\n '',\n );\n\n const left = `${(point.time / this.duration) * 100}%`;\n\n if (tipElement) {\n // Show on hover\n markerElement.addEventListener('mouseenter', () => {\n if (point.label) return;\n tipElement.style.left = left;\n tipElement.innerHTML = point.label;\n toggleTip(true);\n });\n\n // Hide on leave\n markerElement.addEventListener('mouseleave', () => {\n toggleTip(false);\n });\n }\n\n markerElement.addEventListener('click', () => {\n this.currentTime = point.time;\n });\n\n markerElement.style.left = left;\n pointsFragment.appendChild(markerElement);\n });\n\n containerFragment.appendChild(pointsFragment);\n\n // Inject a tooltip if needed\n if (!this.config.tooltips.seek) {\n tipElement = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '',\n );\n\n containerFragment.appendChild(tipElement);\n }\n\n this.elements.markers = {\n points: pointsFragment,\n tip: tipElement,\n };\n\n this.elements.progress.appendChild(containerFragment);\n },\n};\n\nexport default controls;\n","// ==========================================================================\n// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {string} input - the URL to be parsed\n * @param {boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n }\n catch {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n const params = new URLSearchParams();\n\n if (is.object(input)) {\n Object.entries(input).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n insertAfter,\n removeElement,\n toggleClass,\n} from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n this.elements.captions.setAttribute('dir', 'auto');\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach((track) => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (\n url !== null\n && url.hostname !== window.location.href.hostname\n && ['http:', 'https:'].includes(url.protocol)\n ) {\n fetch(src, 'blob')\n .then((blob) => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Get and set initial data\n // The \"preferred\" options are not realized unless / until the wanted language has a match\n // * languages: Array of user's browser languages.\n // * language: The language preferred by user settings or config\n // * active: The state preferred by user settings or config\n // * toggled: The real captions state\n\n const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n const languages = dedupe(browserLanguages.map(language => language.split('-')[0]));\n let language = (this.storage.get('language') || this.captions.language || this.config.captions.language || 'auto').toLowerCase();\n\n // Use first browser language when language is 'auto'\n if (language === 'auto') {\n [language] = languages;\n }\n\n let active = this.storage.get('captions') || this.captions.active;\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n Object.assign(this.captions, {\n toggled: false,\n active,\n language,\n languages,\n });\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n // Update available language options in settings based on tracks\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { active, language, meta, currentTrackNode } = this.captions;\n const languageExists = Boolean(tracks.find(track => track.language === language));\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks\n .filter(track => !meta.get(track))\n .forEach((track) => {\n this.debug.log('Track added', track);\n\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n // Note: mode='hidden' forces a track to download. To ensure every track\n // isn't downloaded at once, only 'showing' tracks should be reassigned\n\n if (track.mode === 'showing') {\n track.mode = 'hidden';\n }\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n // Update language first time it matches, or if the previous matching track was removed\n if ((languageExists && this.language !== language) || !tracks.includes(currentTrackNode)) {\n captions.setLanguage.call(this, language);\n captions.toggle.call(this, active && languageExists);\n }\n\n // Enable or disable captions based on track length\n if (this.elements) {\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n }\n\n // Update available languages in list\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n // Toggle captions display\n // Used internally for the toggleCaptions method, with the passive option forced to false\n toggle(input, passive = true) {\n // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n const { toggled } = this.captions; // Current state\n const activeClass = this.config.classNames.captions.active;\n // Get the next state\n // If the method is called without parameter, toggle based on current value\n const active = is.nullOrUndefined(input) ? !toggled : input;\n\n // Update state and trigger event\n if (active !== toggled) {\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.active = active;\n this.storage.set({ captions: active });\n }\n\n // Force language if the call isn't passive and there is no matching language to toggle to\n if (!this.language && active && !passive) {\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\n // Override user preferences to avoid switching languages if a matching track is added\n this.captions.language = track.language;\n\n // Set caption, but don't store in localStorage as user preference\n captions.set.call(this, tracks.indexOf(track));\n return;\n }\n\n // Toggle button if it's enabled\n if (this.elements.buttons.captions) {\n this.elements.buttons.captions.pressed = active;\n }\n\n // Add class hook\n toggleClass(this.elements.container, activeClass, active);\n\n this.captions.toggled = active;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // Trigger event (not used internally)\n triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n }\n\n // Wait for the call stack to clear before setting mode='hidden'\n // on the active track - forcing the browser to download it\n setTimeout(() => {\n if (active && this.captions.toggled) {\n this.captions.currentTrackNode.mode = 'hidden';\n }\n });\n },\n\n // Set captions by track index\n // Used internally for the currentTrack setter with the passive option forced to false\n set(index, passive = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n captions.toggle.call(this, false, passive);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = tracks[index];\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.language = language;\n this.storage.set({ language });\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n // Show captions\n captions.toggle.call(this, true, passive);\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n },\n\n // Set captions by language\n // Used internally for the language setter with the passive option forced to false\n setLanguage(input, passive = true) {\n if (!is.string(input)) {\n this.debug.warn('Invalid language argument', input);\n return;\n }\n // Normalize\n const language = input.toLowerCase();\n this.captions.language = language;\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [language]);\n captions.set.call(this, tracks.indexOf(track), passive);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks\n .filter(track => !this.isHTML5 || update || this.captions.meta.has(track))\n .filter(track => ['captions', 'subtitles'].includes(track.kind));\n },\n\n // Match tracks based on languages and get the first\n findTrack(languages, force = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n let track;\n\n languages.every((language) => {\n track = sorted.find(t => t.language === language);\n return !track; // Break iteration if there is a match\n });\n\n // If no match is found but is required, get first\n return track || (force ? sorted[0] : undefined);\n },\n\n // Get the current track\n getCurrentTrack() {\n return captions.getTracks.call(this)[this.currentTrack];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Allow inline playback on iOS\n playsinline: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Force an aspect ratio\n // The format must be `'w:h'` (e.g. `'16:9'`)\n ratio: null,\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.8.3/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n // The options to display in the UI, if available for the source media\n options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n forced: false,\n onChange: null,\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback using full viewport/window\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode\n // Non-ancestors of the player element will be ignored\n // container: null, // defaults to the player element\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n // 'duration',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n // 'download',\n 'fullscreen',\n ],\n settings: ['captions', 'quality', 'speed'],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n seekLabel: '{currentTime} of {duration}',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n download: 'Download',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n pip: 'PIP',\n menuBack: 'Go back to previous menu',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n download: null,\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/oembed.json?url={0}',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n download: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'download',\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n\n // Quality\n 'qualitychange',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n download: '[data-plyr=\"download\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n controlPressed: 'plyr__control--pressed',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n marker: 'plyr__progress__marker',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n display: {\n time: 'plyr__time',\n },\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n previewThumbnails: {\n // Tooltip thumbs\n thumbContainer: 'plyr__preview-thumb',\n thumbContainerShown: 'plyr__preview-thumb--is-shown',\n imageContainer: 'plyr__preview-thumb__image-container',\n timeContainer: 'plyr__preview-thumb__time-container',\n // Scrubbing\n scrubbingContainer: 'plyr__preview-scrubbing',\n scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown',\n },\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n hash: 'data-plyr-embed-hash',\n },\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n tagUrl: '',\n },\n\n // Preview Thumbnails plugin\n previewThumbnails: {\n enabled: false,\n src: '',\n withCredentials: false,\n },\n\n // Vimeo plugin\n vimeo: {\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: false,\n // Custom settings from Plyr\n customControls: true,\n referrerPolicy: null, // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n // Whether the owner of the video has a Pro or Business account\n // (which allows us to properly hide controls without CSS hacks, etc)\n premium: false,\n },\n\n // YouTube plugin\n youtube: {\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n // Custom settings from Plyr\n customControls: true,\n noCookie: false, // Whether to use an alternative version of YouTube without cookies\n },\n\n // Media Metadata\n mediaMetadata: {\n title: '',\n artist: '',\n album: '',\n artwork: [],\n },\n\n // Markers\n markers: {\n enabled: false,\n points: [],\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr states\n// ==========================================================================\n\nexport const pip = {\n active: 'picture-in-picture',\n inactive: 'inline',\n};\n\nexport default { pip };\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {string} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(?:https?:\\/\\/)?(?:www\\.)?(?:youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nfunction noop() {}\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n\n get warn() {\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n\n get error() {\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// https://webkit.org/blog/7929/designing-websites-for-iphone-x/\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { closest, getElements, hasClass, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Force the use of 'full window/browser' rather than fullscreen\n this.forceFallback = player.config.fullscreen.fallback === 'force';\n\n // Get the fullscreen element\n // Checks container is an ancestor, defaults to null\n this.player.elements.fullscreen\n = player.config.fullscreen.container && closest(this.player.elements.container, player.config.fullscreen.container);\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(\n this.player,\n document,\n this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`,\n () => {\n // TODO: Filter for target??\n this.onChange();\n },\n );\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', (event) => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.player.listeners.proxy(event, this.toggle, 'fullscreen');\n });\n\n // Tap focus when in fullscreen\n on.call(this, this.player.elements.container, 'keydown', event => this.trapFocus(event));\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get nativeSupported() {\n return !!(\n document.fullscreenEnabled\n || document.webkitFullscreenEnabled\n || document.mozFullScreenEnabled\n || document.msFullscreenEnabled\n );\n }\n\n // If we're actually using native\n get useNative() {\n return Fullscreen.nativeSupported && !this.forceFallback;\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) return '';\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = ['webkit', 'moz', 'ms'];\n\n prefixes.some((pre) => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is supported\n get supported() {\n return [\n // Fullscreen is enabled in config\n this.player.config.fullscreen.enabled,\n // Must be a video\n this.player.isVideo,\n // Either native is supported or fallback enabled\n Fullscreen.nativeSupported || this.player.config.fullscreen.fallback,\n // YouTube has no way to trigger fullscreen, so on devices with no native support, playsinline\n // must be enabled and iosNative fullscreen must be disabled to offer the fullscreen fallback\n !this.player.isYouTube\n || Fullscreen.nativeSupported\n || !browser.isIos\n || (this.player.config.playsinline && !this.player.config.fullscreen.iosNative),\n ].every(Boolean);\n }\n\n // Get active state\n get active() {\n if (!this.supported) return false;\n\n // Fallback using classname\n if (!Fullscreen.nativeSupported || this.forceFallback) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix\n ? this.target.getRootNode().fullscreenElement\n : this.target.getRootNode()[`${this.prefix}${this.property}Element`];\n\n return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative\n ? this.player.media\n : this.player.elements.fullscreen ?? this.player.elements.container;\n }\n\n onChange = () => {\n if (!this.supported) return;\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n button.pressed = this.active;\n }\n\n // Always trigger events on the plyr / media element (not a fullscreen container) and let them bubble up\n const target = this.target === this.player.media ? this.target : this.player.elements.container;\n // Trigger an event\n triggerEvent.call(this.player, target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n };\n\n toggleFallback = (toggle = false) => {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX ?? 0,\n y: window.scrollY ?? 0,\n };\n }\n else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Force full viewport on iPhone X+\n if (browser.isIos) {\n let viewport = document.head.querySelector('meta[name=\"viewport\"]');\n const property = 'viewport-fit=cover';\n\n // Inject the viewport meta if required\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n }\n\n // Check if the property already exists\n const hasProperty = is.string(viewport.content) && viewport.content.includes(property);\n\n if (toggle) {\n this.cleanupViewport = !hasProperty;\n if (!hasProperty) viewport.content += `,${property}`;\n }\n else if (this.cleanupViewport) {\n viewport.content = viewport.content\n .split(',')\n .filter(part => part.trim() !== property)\n .join(',');\n }\n }\n\n // Toggle button and fire events\n this.onChange();\n };\n\n // Trap focus inside container\n trapFocus = (event) => {\n // Bail if iOS/iPadOS, not active, not the tab key\n if (browser.isIos || browser.isIPadOS || !this.active || event.key !== 'Tab') return;\n\n // Get the current focused element\n const focused = document.activeElement;\n const focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]');\n const [first] = focusable;\n const last = focusable[focusable.length - 1];\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n }\n else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n // Update UI\n update = () => {\n if (this.supported) {\n let mode;\n\n if (this.forceFallback) mode = 'Fallback (forced)';\n else if (Fullscreen.nativeSupported) mode = 'Native';\n else mode = 'Fallback';\n\n this.player.debug.log(`${mode} fullscreen enabled`);\n }\n else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.supported);\n };\n\n // Make an element fullscreen\n enter = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.requestFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(true);\n }\n else if (!this.prefix) {\n this.target.requestFullscreen({ navigationUI: 'hide' });\n }\n else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n };\n\n // Bail from fullscreen\n exit = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.exitFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n silencePromise(this.player.play());\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(false);\n }\n else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n }\n else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n };\n\n // Toggle state\n toggle = () => {\n if (!this.active) this.enter();\n else this.exit();\n };\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport support from './support';\nimport { getElement, toggleClass } from './utils/elements';\nimport { ready, triggerEvent } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadImage from './utils/load-image';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n }\n else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Reset duration display\n controls.durationUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(\n this.elements.container,\n this.config.classNames.pip.supported,\n support.pip && this.isHTML5 && this.isVideo,\n );\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster) {\n ui.setPoster.call(this, this.poster, false).catch(() => {});\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n\n // Media metadata\n if (this.config.mediaMetadata) {\n controls.setMediaMetadata.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n }\n\n // If there's a play button, set label\n Array.from(this.elements.buttons.play || []).forEach((button) => {\n button.setAttribute('aria-label', label);\n });\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n // Used internally for the poster setter, with the passive option forced to false\n setPoster(poster, passive = true) {\n // Don't override if call is passive\n if (passive && this.poster) {\n return Promise.reject(new Error('Poster already set'));\n }\n\n // Set property synchronously to respect the call order\n this.media.setAttribute('data-poster', poster);\n\n // Show the poster\n this.elements.poster.removeAttribute('hidden');\n\n // Wait until ui is ready\n return (\n ready\n .call(this)\n // Load image\n .then(() => loadImage(poster))\n .catch((error) => {\n // Hide poster on error unless it's been set by another call\n if (poster === this.poster) {\n ui.togglePoster.call(this, false);\n }\n // Rethrow\n throw error;\n })\n .then(() => {\n // Prevent race conditions\n if (poster !== this.poster) {\n throw new Error('setPoster cancelled by later call to setPoster');\n }\n })\n .then(() => {\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n\n ui.togglePoster.call(this, true);\n\n return poster;\n })\n );\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set state\n Array.from(this.elements.buttons.play || []).forEach((target) => {\n Object.assign(target, { pressed: this.playing });\n target.setAttribute('aria-label', i18n.get(this.playing ? 'pause' : 'play', this.config));\n });\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = ['stalled', 'waiting'].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(\n () => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n },\n this.loading ? 250 : 0,\n );\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls: controlsElement } = this.elements;\n\n if (controlsElement && this.config.hideControls) {\n // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now();\n\n // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n this.toggleControls(\n Boolean(\n force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek,\n ),\n );\n }\n },\n\n // Migrate any custom properties from the media to the parent\n migrateStyles() {\n // Loop through values (as they are the keys when the object is spread 🤔)\n Object.values({ ...this.media.style })\n // We're only fussed about Plyr specific properties\n .filter(key => !is.empty(key) && is.string(key) && key.startsWith('--plyr'))\n .forEach((key) => {\n // Set on the container\n this.elements.container.style.setProperty(key, this.media.style.getPropertyValue(key));\n\n // Clean up from media element\n this.media.style.removeProperty(key);\n });\n\n // Remove attribute if empty\n if (is.empty(this.media.style)) {\n this.media.removeAttribute('style');\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { getAspectRatio, getViewportSize, supportsCSS } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const { key, type, altKey, ctrlKey, metaKey, shiftKey } = event;\n const pressed = type === 'keydown';\n const repeat = pressed && key === this.lastKey;\n\n // Bail if a modifier key is set\n if (altKey || ctrlKey || metaKey || shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the key for whatever reason\n if (!key) {\n return;\n }\n\n // Seek by increment\n const seekByIncrement = (increment) => {\n // Divide the max duration into 10th's and times by the number value\n player.currentTime = (player.duration / 10) * increment;\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.key === ' ' && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keys should we prevent default\n const preventDefault = [\n ' ',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n\n 'c',\n 'f',\n 'k',\n 'l',\n 'm',\n ];\n\n // If the key is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(key)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (key) {\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n if (!repeat) {\n seekByIncrement(Number.parseInt(key, 10));\n }\n break;\n\n case ' ':\n case 'k':\n if (!repeat) {\n silencePromise(player.togglePlay());\n }\n break;\n\n case 'ArrowUp':\n player.increaseVolume(0.1);\n break;\n\n case 'ArrowDown':\n player.decreaseVolume(0.1);\n break;\n\n case 'm':\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 'ArrowRight':\n player.forward();\n break;\n\n case 'ArrowLeft':\n player.rewind();\n break;\n\n case 'f':\n player.fullscreen.toggle();\n break;\n\n case 'c':\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 'l':\n player.loop = !player.loop;\n break;\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (key === 'Escape' && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last key for next cycle\n this.lastKey = key;\n }\n else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch = () => {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n };\n\n // Global window & document listeners\n global = (toggle = true) => {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n };\n\n // Container listeners\n container = () => {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n (event) => {\n const { controls: controlsElement } = elements;\n\n // Remove button states for fullscreen\n if (controlsElement && event.type === 'enterfullscreen') {\n controlsElement.pressed = false;\n controlsElement.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Set a gutter for Vimeo\n const setGutter = () => {\n if (!player.isVimeo || player.config.vimeo.premium) {\n return;\n }\n\n const target = elements.wrapper;\n const { active } = player.fullscreen;\n const [videoWidth, videoHeight] = getAspectRatio.call(player);\n const useNativeAspectRatio = supportsCSS(`aspect-ratio: ${videoWidth} / ${videoHeight}`);\n\n // If not active, remove styles\n if (!active) {\n if (useNativeAspectRatio) {\n target.style.width = null;\n target.style.height = null;\n }\n else {\n target.style.maxWidth = null;\n target.style.margin = null;\n }\n return;\n }\n\n // Determine which dimension will overflow and constrain view\n const [viewportWidth, viewportHeight] = getViewportSize();\n const overflow = viewportWidth / viewportHeight > videoWidth / videoHeight;\n\n if (useNativeAspectRatio) {\n target.style.width = overflow ? 'auto' : '100%';\n target.style.height = overflow ? '100%' : 'auto';\n }\n else {\n target.style.maxWidth = overflow ? `${(viewportHeight / videoHeight) * videoWidth}px` : null;\n target.style.margin = overflow ? '0 auto' : null;\n }\n };\n\n // Handle resizing\n const resized = () => {\n clearTimeout(timers.resized);\n timers.resized = setTimeout(setGutter, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', (event) => {\n const { target } = player.fullscreen;\n\n // Ignore events not from target\n if (target !== elements.container) {\n return;\n }\n\n // If it's not an embed and no ratio specified\n if (!player.isEmbed && is.empty(player.config.ratio)) {\n return;\n }\n\n // Set Vimeo gutter\n setGutter();\n\n // Watch for resizes\n const method = event.type === 'enterfullscreen' ? on : off;\n method.call(player, window, 'resize', resized);\n });\n };\n\n // Listen for media events\n media = () => {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event));\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n\n // Call pause otherwise IE11 will start playing the video again\n player.pause();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event));\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event));\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', (event) => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(\n event,\n () => {\n silencePromise(player.play());\n },\n 'play',\n );\n }\n else {\n this.proxy(\n event,\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n (event) => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', (event) => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadUrl.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, (event) => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n };\n\n // Run default and custom handlers\n proxy = (event, defaultHandler, customHandlerKey) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned !== false && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n };\n\n // Trigger custom and default handlers\n bind = (element, type, defaultHandler, customHandlerKey, passive = true) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n };\n\n // Listen for control events\n controls = () => {\n const { player } = this;\n const { elements } = player;\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach((button) => {\n this.bind(\n button,\n 'click',\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(\n elements.buttons.rewind,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after rewind\n player.lastSeekTime = Date.now();\n player.rewind();\n },\n 'rewind',\n );\n\n // Rewind\n this.bind(\n elements.buttons.fastForward,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after fast forward\n player.lastSeekTime = Date.now();\n player.forward();\n },\n 'fastForward',\n );\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(\n elements.buttons.settings,\n 'click',\n (event) => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n event.preventDefault();\n\n controls.toggleMenu.call(player, event);\n },\n null,\n false,\n ); // Can't be passive as we're preventing default\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n (event) => {\n if (![' ', 'Enter'].includes(event.key)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (event.key === 'Enter') {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', (event) => {\n if (event.key === 'Escape') {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', (event) => {\n const rect = elements.progress.getBoundingClientRect();\n const scrollLeft = event.pageX - event.clientX;\n const percent = (100 / rect.width) * (event.pageX - rect.left - scrollLeft);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', (event) => {\n const seek = event.currentTarget;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && !['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n silencePromise(player.play());\n }\n else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an ,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n (event) => {\n const seek = event.currentTarget;\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event));\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave touchend click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebKit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach((element) => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n (event) => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', (event) => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Also update controls.hover state for any non-player children of fullscreen element (as above)\n if (elements.fullscreen) {\n Array.from(elements.fullscreen.children)\n .filter(c => !c.contains(elements.container))\n .forEach((child) => {\n this.bind(child, 'mouseenter mouseleave', (event) => {\n if (elements.controls) {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n }\n });\n });\n }\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', (event) => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n (event) => {\n // Detect \"natural\" scroll - supported on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n };\n}\n\nexport default Listeners;\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { format, stripHTML } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n const match = url.match(regex);\n return match ? match[2] : url;\n}\n\n// Try to extract a hash for private videos from the URL\nfunction parseHash(url) {\n /* This regex matches a hexadecimal hash if given in any of these forms:\n * - [https://player.]vimeo.com/video/{id}/{hash}[?params]\n * - [https://player.]vimeo.com/video/{id}?h={hash}[¶ms]\n * - [https://player.]vimeo.com/video/{id}?[params]&h={hash}\n * - video/{id}/{hash}\n * If matched, the hash is available in capture group 4\n */\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*h=|\\/)+([\\d,a-f]+)/;\n const found = url.match(regex);\n\n return found && found.length === 5 ? found[4] : null;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n const player = this;\n\n // Add embed class for responsive\n toggleClass(player.elements.wrapper, player.config.classNames.embed, true);\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set initial ratio\n setAspectRatio.call(player);\n\n // Load the SDK if not already\n if (!is.object(window.Vimeo)) {\n loadScript(player.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(player);\n })\n .catch((error) => {\n player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n });\n }\n else {\n vimeo.ready.call(player);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n const { premium, referrerPolicy, ...frameParams } = config;\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n let hash = '';\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n // hash can also be set as attribute on the
\n hash = player.media.getAttribute(player.config.attributes.embed.hash);\n }\n else {\n hash = parseHash(source);\n }\n const hashParam = hash ? { h: hash } : {};\n\n // If the owner has a pro or premium account then we can hide controls etc\n if (premium) {\n Object.assign(frameParams, {\n controls: false,\n sidedock: false,\n });\n }\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams({\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: player.config.playsinline,\n // hash has to be added to iframe-URL\n ...hashParam,\n ...frameParams,\n });\n\n const id = parseId(source);\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute(\n 'allow',\n ['autoplay', 'fullscreen', 'picture-in-picture', 'encrypted-media', 'accelerometer', 'gyroscope'].join('; '),\n );\n\n // Set the referrer policy if required\n if (!is.empty(referrerPolicy)) {\n iframe.setAttribute('referrerPolicy', referrerPolicy);\n }\n\n // Inject the package\n if (premium || !config.customControls) {\n iframe.setAttribute('data-poster', player.poster);\n player.media = replaceElement(iframe, player.media);\n }\n else {\n const wrapper = createElement('div', {\n 'class': player.config.classNames.embedContainer,\n 'data-poster': player.poster,\n });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n }\n\n // Get poster image\n if (!config.customControls) {\n fetch(format(player.config.urls.vimeo.api, src)).then((response) => {\n if (is.empty(response) || !response.thumbnail_url) {\n return;\n }\n\n // Set and show poster\n ui.setPoster.call(player, response.thumbnail_url).catch(() => {});\n });\n }\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(() => {\n // Cannot set Playback Rate, Video is probably not on Pro account\n player.options.speed = [1];\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setMuted(toggle ? true : player.config.muted).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then((value) => {\n currentSrc = value;\n controls.setDownloadUrl.call(player);\n })\n .catch((error) => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then((dimensions) => {\n const [width, height] = dimensions;\n player.embed.ratio = roundAspectRatio(width, height);\n setAspectRatio.call(this);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then((state) => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then((title) => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then((value) => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then((value) => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then((tracks) => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then((paused) => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('bufferstart', () => {\n triggerEvent.call(player, player.media, 'waiting');\n });\n\n player.embed.on('bufferend', () => {\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', (data) => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', (data) => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (Number.parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then((value) => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', (detail) => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n if (config.customControls) {\n setTimeout(() => ui.build.call(player), 0);\n }\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/load-image';\nimport loadScript from '../utils/load-script';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = url.match(regex);\n return match && match[2] ? match[2] : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nfunction getHost(config) {\n if (config.noCookie) {\n return 'https://www.youtube-nocookie.com';\n }\n\n if (window.location.protocol === 'http:') {\n return 'http://www.youtube.com';\n }\n\n // Use YouTube's default\n return undefined;\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n }\n else {\n // Reference current global callback\n const callback = window.onYouTubeIframeAPIReady;\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n // Call global callback if set\n if (is.function(callback)) {\n callback();\n }\n\n youtube.ready.call(this);\n };\n\n // Load the SDK\n loadScript(this.config.urls.youtube.sdk).catch((error) => {\n this.debug.warn('YouTube API failed to load', error);\n });\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n const url = format(this.config.urls.youtube.api, videoId);\n\n fetch(url)\n .then((data) => {\n if (is.object(data)) {\n const { title, height, width } = data;\n\n // Set title\n this.config.title = title;\n ui.setTitle.call(this);\n\n // Set aspect ratio\n this.embed.ratio = roundAspectRatio(width, height);\n }\n\n setAspectRatio.call(this);\n })\n .catch(() => {\n // Set aspect ratio\n setAspectRatio.call(this);\n });\n },\n\n // API ready\n ready() {\n const player = this;\n const config = player.config.youtube;\n // Ignore already setup (race condition)\n const currentId = player.media && player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the