From d7aabf266d3373bce641cff73fdc7586a84bc883 Mon Sep 17 00:00:00 2001 From: sunian6780 Date: Mon, 20 Jul 2026 23:05:36 +0800 Subject: [PATCH] build: update frontend assets with flat redesign & glassmorphism Rebuild frontend from Sanyue-ImgHub feat/flat-redesign branch: - unified glassmorphism (--glass-bg/border/shadow + backdrop-filter) - dark mode: muted slate-blue primary (#4A5D9B), dimmed selected states - upload/admin pages: glass cards, dragger, search box, tables - new global wallpaper on/off switch - misc dark-mode fixes (image brightness, dialogs, messages) Co-Authored-By: LuoH-AN --- frontend-dist/css/226.6548e7b4.css | 1 - frontend-dist/css/226.6548e7b4.css.gz | Bin 1723 -> 0 bytes frontend-dist/css/227.e7484000.css | 1 + frontend-dist/css/227.e7484000.css.gz | Bin 0 -> 2468 bytes frontend-dist/css/278.e44cbf52.css | 1 + frontend-dist/css/278.e44cbf52.css.gz | Bin 0 -> 1647 bytes .../{451.7e03bef9.css => 320.7e03bef9.css} | 0 ...51.7e03bef9.css.gz => 320.7e03bef9.css.gz} | Bin frontend-dist/css/331.dd13d5f5.css | 1 + frontend-dist/css/331.dd13d5f5.css.gz | Bin 0 -> 1691 bytes frontend-dist/css/345.1353235b.css | 1 - frontend-dist/css/345.1353235b.css.gz | Bin 2447 -> 0 bytes .../{718.d0974d1c.css => 412.ba63fb59.css} | 2 +- frontend-dist/css/412.ba63fb59.css.gz | Bin 0 -> 8637 bytes frontend-dist/css/438.db2aa0ca.css.gz | Bin 4762 -> 0 bytes .../{664.dc611f7b.css => 449.0a847317.css} | 2 +- frontend-dist/css/449.0a847317.css.gz | Bin 0 -> 2081 bytes frontend-dist/css/491.f982b4e1.css | 1 - frontend-dist/css/491.f982b4e1.css.gz | Bin 12080 -> 0 bytes frontend-dist/css/51.1dd65d6c.css | 1 - frontend-dist/css/51.1dd65d6c.css.gz | Bin 1796 -> 0 bytes frontend-dist/css/535.9adbb9e0.css | 1 - frontend-dist/css/535.9adbb9e0.css.gz | Bin 11372 -> 0 bytes frontend-dist/css/63.68965781.css | 1 + frontend-dist/css/63.68965781.css.gz | Bin 0 -> 15295 bytes frontend-dist/css/664.dc611f7b.css.gz | Bin 2234 -> 0 bytes frontend-dist/css/679.e7484000.css | 1 + frontend-dist/css/679.e7484000.css.gz | Bin 0 -> 2468 bytes frontend-dist/css/715.f5deda06.css | 1 + frontend-dist/css/715.f5deda06.css.gz | Bin 0 -> 11055 bytes frontend-dist/css/718.d0974d1c.css.gz | Bin 8627 -> 0 bytes frontend-dist/css/789.1353235b.css | 1 - frontend-dist/css/789.1353235b.css.gz | Bin 2447 -> 0 bytes frontend-dist/css/824.0d0483a0.css | 1 - frontend-dist/css/824.0d0483a0.css.gz | Bin 15369 -> 0 bytes .../{438.db2aa0ca.css => 844.2b40f004.css} | 2 +- frontend-dist/css/844.2b40f004.css.gz | Bin 0 -> 4772 bytes frontend-dist/css/915.9e4a657d.css | 1 + frontend-dist/css/915.9e4a657d.css.gz | Bin 0 -> 11727 bytes frontend-dist/css/917.8529ad1e.css | 1 - frontend-dist/css/917.8529ad1e.css.gz | Bin 1836 -> 0 bytes frontend-dist/css/967.3f3c6dac.css | 1 + frontend-dist/css/967.3f3c6dac.css.gz | Bin 0 -> 1580 bytes frontend-dist/css/app.22746548.css | 1 + frontend-dist/css/app.22746548.css.gz | Bin 0 -> 4949 bytes frontend-dist/css/app.a5d6bf3c.css | 1 - frontend-dist/css/app.a5d6bf3c.css.gz | Bin 5140 -> 0 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 519 -> 548 bytes frontend-dist/js/137.09c39d94.js | 2 -- frontend-dist/js/137.09c39d94.js.gz | Bin 2559 -> 0 bytes frontend-dist/js/137.09c39d94.js.map | 1 - frontend-dist/js/137.09c39d94.js.map.gz | Bin 6335 -> 0 bytes frontend-dist/js/21.72019411.js | 2 ++ frontend-dist/js/21.72019411.js.gz | Bin 0 -> 2747 bytes frontend-dist/js/21.72019411.js.map | 1 + frontend-dist/js/21.72019411.js.map.gz | Bin 0 -> 8201 bytes frontend-dist/js/21.7cbdc64f.js | 2 -- frontend-dist/js/21.7cbdc64f.js.gz | Bin 2699 -> 0 bytes frontend-dist/js/21.7cbdc64f.js.map | 1 - frontend-dist/js/21.7cbdc64f.js.map.gz | Bin 7966 -> 0 bytes frontend-dist/js/226.22e8bc82.js | 2 -- frontend-dist/js/226.22e8bc82.js.gz | Bin 3610 -> 0 bytes frontend-dist/js/226.22e8bc82.js.map | 1 - frontend-dist/js/226.22e8bc82.js.map.gz | Bin 9685 -> 0 bytes .../js/{345.cdce570b.js => 227.8094852b.js} | 4 ++-- frontend-dist/js/227.8094852b.js.gz | Bin 0 -> 898 bytes ...45.cdce570b.js.map => 227.8094852b.js.map} | 2 +- frontend-dist/js/227.8094852b.js.map.gz | Bin 0 -> 2458 bytes frontend-dist/js/278.397ef7d3.js | 2 ++ frontend-dist/js/278.397ef7d3.js.gz | Bin 0 -> 3572 bytes frontend-dist/js/278.397ef7d3.js.map | 1 + frontend-dist/js/278.397ef7d3.js.map.gz | Bin 0 -> 9933 bytes frontend-dist/js/283.efe323af.js | 2 ++ frontend-dist/js/283.efe323af.js.gz | Bin 0 -> 3481 bytes frontend-dist/js/283.efe323af.js.map | 1 + frontend-dist/js/283.efe323af.js.map.gz | Bin 0 -> 9678 bytes frontend-dist/js/320.c04c60ec.js | 2 ++ frontend-dist/js/320.c04c60ec.js.gz | Bin 0 -> 2652 bytes frontend-dist/js/320.c04c60ec.js.map | 1 + frontend-dist/js/320.c04c60ec.js.map.gz | Bin 0 -> 6983 bytes frontend-dist/js/331.66294132.js | 2 ++ frontend-dist/js/331.66294132.js.gz | Bin 0 -> 3794 bytes frontend-dist/js/331.66294132.js.map | 1 + frontend-dist/js/331.66294132.js.map.gz | Bin 0 -> 10200 bytes frontend-dist/js/345.cdce570b.js.gz | Bin 897 -> 0 bytes frontend-dist/js/345.cdce570b.js.map.gz | Bin 2456 -> 0 bytes frontend-dist/js/412.2e84fff1.js | 2 ++ frontend-dist/js/412.2e84fff1.js.gz | Bin 0 -> 47759 bytes frontend-dist/js/412.2e84fff1.js.map | 1 + frontend-dist/js/412.2e84fff1.js.map.gz | Bin 0 -> 163538 bytes frontend-dist/js/449.b95f70de.js | 2 ++ frontend-dist/js/449.b95f70de.js.gz | Bin 0 -> 2723 bytes ...64.75967bc6.js.map => 449.b95f70de.js.map} | 2 +- frontend-dist/js/449.b95f70de.js.map.gz | Bin 0 -> 7036 bytes frontend-dist/js/491.f0a39a1f.js | 2 -- frontend-dist/js/491.f0a39a1f.js.gz | Bin 33808 -> 0 bytes frontend-dist/js/491.f0a39a1f.js.map | 1 - frontend-dist/js/491.f0a39a1f.js.map.gz | Bin 85090 -> 0 bytes frontend-dist/js/51.119fb63a.js | 2 -- frontend-dist/js/51.119fb63a.js.gz | Bin 3527 -> 0 bytes frontend-dist/js/51.119fb63a.js.map | 1 - frontend-dist/js/51.119fb63a.js.map.gz | Bin 9690 -> 0 bytes frontend-dist/js/535.1609e789.js.gz | Bin 106578 -> 0 bytes frontend-dist/js/535.1609e789.js.map | 1 - frontend-dist/js/535.1609e789.js.map.gz | Bin 365181 -> 0 bytes frontend-dist/js/563.46bb50b7.js | 2 -- frontend-dist/js/563.46bb50b7.js.gz | Bin 3509 -> 0 bytes frontend-dist/js/563.46bb50b7.js.map | 1 - frontend-dist/js/563.46bb50b7.js.map.gz | Bin 9666 -> 0 bytes frontend-dist/js/63.d98ed786.js | 2 ++ frontend-dist/js/63.d98ed786.js.gz | Bin 0 -> 58547 bytes frontend-dist/js/63.d98ed786.js.map | 1 + frontend-dist/js/63.d98ed786.js.map.gz | Bin 0 -> 148029 bytes frontend-dist/js/664.75967bc6.js | 2 -- frontend-dist/js/664.75967bc6.js.gz | Bin 2754 -> 0 bytes frontend-dist/js/664.75967bc6.js.map.gz | Bin 7037 -> 0 bytes .../js/{789.7aaf3036.js => 679.a15c0be8.js} | 4 ++-- frontend-dist/js/679.a15c0be8.js.gz | Bin 0 -> 892 bytes ...89.7aaf3036.js.map => 679.a15c0be8.js.map} | 2 +- frontend-dist/js/679.a15c0be8.js.map.gz | Bin 0 -> 2283 bytes .../js/{535.1609e789.js => 715.5055f02b.js} | 6 +++--- frontend-dist/js/715.5055f02b.js.gz | Bin 0 -> 106774 bytes frontend-dist/js/715.5055f02b.js.map | 1 + frontend-dist/js/715.5055f02b.js.map.gz | Bin 0 -> 365574 bytes frontend-dist/js/718.76e71431.js | 2 -- frontend-dist/js/718.76e71431.js.gz | Bin 47810 -> 0 bytes frontend-dist/js/718.76e71431.js.map | 1 - frontend-dist/js/718.76e71431.js.map.gz | Bin 163559 -> 0 bytes frontend-dist/js/789.7aaf3036.js.gz | Bin 893 -> 0 bytes frontend-dist/js/789.7aaf3036.js.map.gz | Bin 2284 -> 0 bytes frontend-dist/js/824.9baaf8b9.js | 2 -- frontend-dist/js/824.9baaf8b9.js.gz | Bin 58908 -> 0 bytes frontend-dist/js/824.9baaf8b9.js.map | 1 - frontend-dist/js/824.9baaf8b9.js.map.gz | Bin 147092 -> 0 bytes frontend-dist/js/844.783c3fb9.js | 2 ++ frontend-dist/js/844.783c3fb9.js.gz | Bin 0 -> 2586 bytes frontend-dist/js/844.783c3fb9.js.map | 1 + frontend-dist/js/844.783c3fb9.js.map.gz | Bin 0 -> 6347 bytes frontend-dist/js/915.6b34330d.js | 2 ++ frontend-dist/js/915.6b34330d.js.gz | Bin 0 -> 31457 bytes frontend-dist/js/915.6b34330d.js.map | 1 + frontend-dist/js/915.6b34330d.js.map.gz | Bin 0 -> 79804 bytes frontend-dist/js/917.e9777f62.js | 2 -- frontend-dist/js/917.e9777f62.js.gz | Bin 3752 -> 0 bytes frontend-dist/js/917.e9777f62.js.map | 1 - frontend-dist/js/917.e9777f62.js.map.gz | Bin 9977 -> 0 bytes frontend-dist/js/967.398473ea.js | 2 ++ frontend-dist/js/967.398473ea.js.gz | Bin 0 -> 3658 bytes frontend-dist/js/967.398473ea.js.map | 1 + frontend-dist/js/967.398473ea.js.map.gz | Bin 0 -> 9924 bytes frontend-dist/js/app.3833ece1.js | 2 -- frontend-dist/js/app.3833ece1.js.gz | Bin 25227 -> 0 bytes frontend-dist/js/app.3833ece1.js.map | 1 - frontend-dist/js/app.3833ece1.js.map.gz | Bin 18577 -> 0 bytes frontend-dist/js/app.393ef185.js | 2 ++ frontend-dist/js/app.393ef185.js.gz | Bin 0 -> 25354 bytes frontend-dist/js/app.393ef185.js.map | 1 + frontend-dist/js/app.393ef185.js.map.gz | Bin 0 -> 18681 bytes .../js/chunk-vendors.6243340b.js.map | 2 +- .../js/chunk-vendors.6243340b.js.map.gz | Bin 1775282 -> 1775190 bytes 161 files changed, 60 insertions(+), 57 deletions(-) delete mode 100644 frontend-dist/css/226.6548e7b4.css delete mode 100644 frontend-dist/css/226.6548e7b4.css.gz create mode 100644 frontend-dist/css/227.e7484000.css create mode 100644 frontend-dist/css/227.e7484000.css.gz create mode 100644 frontend-dist/css/278.e44cbf52.css create mode 100644 frontend-dist/css/278.e44cbf52.css.gz rename frontend-dist/css/{451.7e03bef9.css => 320.7e03bef9.css} (100%) rename frontend-dist/css/{451.7e03bef9.css.gz => 320.7e03bef9.css.gz} (100%) create mode 100644 frontend-dist/css/331.dd13d5f5.css create mode 100644 frontend-dist/css/331.dd13d5f5.css.gz delete mode 100644 frontend-dist/css/345.1353235b.css delete mode 100644 frontend-dist/css/345.1353235b.css.gz rename frontend-dist/css/{718.d0974d1c.css => 412.ba63fb59.css} (61%) create mode 100644 frontend-dist/css/412.ba63fb59.css.gz delete mode 100644 frontend-dist/css/438.db2aa0ca.css.gz rename frontend-dist/css/{664.dc611f7b.css => 449.0a847317.css} (58%) create mode 100644 frontend-dist/css/449.0a847317.css.gz delete mode 100644 frontend-dist/css/491.f982b4e1.css delete mode 100644 frontend-dist/css/491.f982b4e1.css.gz delete mode 100644 frontend-dist/css/51.1dd65d6c.css delete mode 100644 frontend-dist/css/51.1dd65d6c.css.gz delete mode 100644 frontend-dist/css/535.9adbb9e0.css delete mode 100644 frontend-dist/css/535.9adbb9e0.css.gz create mode 100644 frontend-dist/css/63.68965781.css create mode 100644 frontend-dist/css/63.68965781.css.gz delete mode 100644 frontend-dist/css/664.dc611f7b.css.gz create mode 100644 frontend-dist/css/679.e7484000.css create mode 100644 frontend-dist/css/679.e7484000.css.gz create mode 100644 frontend-dist/css/715.f5deda06.css create mode 100644 frontend-dist/css/715.f5deda06.css.gz delete mode 100644 frontend-dist/css/718.d0974d1c.css.gz delete mode 100644 frontend-dist/css/789.1353235b.css delete mode 100644 frontend-dist/css/789.1353235b.css.gz delete mode 100644 frontend-dist/css/824.0d0483a0.css delete mode 100644 frontend-dist/css/824.0d0483a0.css.gz rename frontend-dist/css/{438.db2aa0ca.css => 844.2b40f004.css} (83%) create mode 100644 frontend-dist/css/844.2b40f004.css.gz create mode 100644 frontend-dist/css/915.9e4a657d.css create mode 100644 frontend-dist/css/915.9e4a657d.css.gz delete mode 100644 frontend-dist/css/917.8529ad1e.css delete mode 100644 frontend-dist/css/917.8529ad1e.css.gz create mode 100644 frontend-dist/css/967.3f3c6dac.css create mode 100644 frontend-dist/css/967.3f3c6dac.css.gz create mode 100644 frontend-dist/css/app.22746548.css create mode 100644 frontend-dist/css/app.22746548.css.gz delete mode 100644 frontend-dist/css/app.a5d6bf3c.css delete mode 100644 frontend-dist/css/app.a5d6bf3c.css.gz delete mode 100644 frontend-dist/js/137.09c39d94.js delete mode 100644 frontend-dist/js/137.09c39d94.js.gz delete mode 100644 frontend-dist/js/137.09c39d94.js.map delete mode 100644 frontend-dist/js/137.09c39d94.js.map.gz create mode 100644 frontend-dist/js/21.72019411.js create mode 100644 frontend-dist/js/21.72019411.js.gz create mode 100644 frontend-dist/js/21.72019411.js.map create mode 100644 frontend-dist/js/21.72019411.js.map.gz delete mode 100644 frontend-dist/js/21.7cbdc64f.js delete mode 100644 frontend-dist/js/21.7cbdc64f.js.gz delete mode 100644 frontend-dist/js/21.7cbdc64f.js.map delete mode 100644 frontend-dist/js/21.7cbdc64f.js.map.gz delete mode 100644 frontend-dist/js/226.22e8bc82.js delete mode 100644 frontend-dist/js/226.22e8bc82.js.gz delete mode 100644 frontend-dist/js/226.22e8bc82.js.map delete mode 100644 frontend-dist/js/226.22e8bc82.js.map.gz rename frontend-dist/js/{345.cdce570b.js => 227.8094852b.js} (90%) create mode 100644 frontend-dist/js/227.8094852b.js.gz rename frontend-dist/js/{345.cdce570b.js.map => 227.8094852b.js.map} (98%) create mode 100644 frontend-dist/js/227.8094852b.js.map.gz create mode 100644 frontend-dist/js/278.397ef7d3.js create mode 100644 frontend-dist/js/278.397ef7d3.js.gz create mode 100644 frontend-dist/js/278.397ef7d3.js.map create mode 100644 frontend-dist/js/278.397ef7d3.js.map.gz create mode 100644 frontend-dist/js/283.efe323af.js create mode 100644 frontend-dist/js/283.efe323af.js.gz create mode 100644 frontend-dist/js/283.efe323af.js.map create mode 100644 frontend-dist/js/283.efe323af.js.map.gz create mode 100644 frontend-dist/js/320.c04c60ec.js create mode 100644 frontend-dist/js/320.c04c60ec.js.gz create mode 100644 frontend-dist/js/320.c04c60ec.js.map create mode 100644 frontend-dist/js/320.c04c60ec.js.map.gz create mode 100644 frontend-dist/js/331.66294132.js create mode 100644 frontend-dist/js/331.66294132.js.gz create mode 100644 frontend-dist/js/331.66294132.js.map create mode 100644 frontend-dist/js/331.66294132.js.map.gz delete mode 100644 frontend-dist/js/345.cdce570b.js.gz delete mode 100644 frontend-dist/js/345.cdce570b.js.map.gz create mode 100644 frontend-dist/js/412.2e84fff1.js create mode 100644 frontend-dist/js/412.2e84fff1.js.gz create mode 100644 frontend-dist/js/412.2e84fff1.js.map create mode 100644 frontend-dist/js/412.2e84fff1.js.map.gz create mode 100644 frontend-dist/js/449.b95f70de.js create mode 100644 frontend-dist/js/449.b95f70de.js.gz rename frontend-dist/js/{664.75967bc6.js.map => 449.b95f70de.js.map} (98%) create mode 100644 frontend-dist/js/449.b95f70de.js.map.gz delete mode 100644 frontend-dist/js/491.f0a39a1f.js delete mode 100644 frontend-dist/js/491.f0a39a1f.js.gz delete mode 100644 frontend-dist/js/491.f0a39a1f.js.map delete mode 100644 frontend-dist/js/491.f0a39a1f.js.map.gz delete mode 100644 frontend-dist/js/51.119fb63a.js delete mode 100644 frontend-dist/js/51.119fb63a.js.gz delete mode 100644 frontend-dist/js/51.119fb63a.js.map delete mode 100644 frontend-dist/js/51.119fb63a.js.map.gz delete mode 100644 frontend-dist/js/535.1609e789.js.gz delete mode 100644 frontend-dist/js/535.1609e789.js.map delete mode 100644 frontend-dist/js/535.1609e789.js.map.gz delete mode 100644 frontend-dist/js/563.46bb50b7.js delete mode 100644 frontend-dist/js/563.46bb50b7.js.gz delete mode 100644 frontend-dist/js/563.46bb50b7.js.map delete mode 100644 frontend-dist/js/563.46bb50b7.js.map.gz create mode 100644 frontend-dist/js/63.d98ed786.js create mode 100644 frontend-dist/js/63.d98ed786.js.gz create mode 100644 frontend-dist/js/63.d98ed786.js.map create mode 100644 frontend-dist/js/63.d98ed786.js.map.gz delete mode 100644 frontend-dist/js/664.75967bc6.js delete mode 100644 frontend-dist/js/664.75967bc6.js.gz delete mode 100644 frontend-dist/js/664.75967bc6.js.map.gz rename frontend-dist/js/{789.7aaf3036.js => 679.a15c0be8.js} (89%) create mode 100644 frontend-dist/js/679.a15c0be8.js.gz rename frontend-dist/js/{789.7aaf3036.js.map => 679.a15c0be8.js.map} (98%) create mode 100644 frontend-dist/js/679.a15c0be8.js.map.gz rename frontend-dist/js/{535.1609e789.js => 715.5055f02b.js} (87%) create mode 100644 frontend-dist/js/715.5055f02b.js.gz create mode 100644 frontend-dist/js/715.5055f02b.js.map create mode 100644 frontend-dist/js/715.5055f02b.js.map.gz delete mode 100644 frontend-dist/js/718.76e71431.js delete mode 100644 frontend-dist/js/718.76e71431.js.gz delete mode 100644 frontend-dist/js/718.76e71431.js.map delete mode 100644 frontend-dist/js/718.76e71431.js.map.gz delete mode 100644 frontend-dist/js/789.7aaf3036.js.gz delete mode 100644 frontend-dist/js/789.7aaf3036.js.map.gz delete mode 100644 frontend-dist/js/824.9baaf8b9.js delete mode 100644 frontend-dist/js/824.9baaf8b9.js.gz delete mode 100644 frontend-dist/js/824.9baaf8b9.js.map delete mode 100644 frontend-dist/js/824.9baaf8b9.js.map.gz create mode 100644 frontend-dist/js/844.783c3fb9.js create mode 100644 frontend-dist/js/844.783c3fb9.js.gz create mode 100644 frontend-dist/js/844.783c3fb9.js.map create mode 100644 frontend-dist/js/844.783c3fb9.js.map.gz create mode 100644 frontend-dist/js/915.6b34330d.js create mode 100644 frontend-dist/js/915.6b34330d.js.gz create mode 100644 frontend-dist/js/915.6b34330d.js.map create mode 100644 frontend-dist/js/915.6b34330d.js.map.gz delete mode 100644 frontend-dist/js/917.e9777f62.js delete mode 100644 frontend-dist/js/917.e9777f62.js.gz delete mode 100644 frontend-dist/js/917.e9777f62.js.map delete mode 100644 frontend-dist/js/917.e9777f62.js.map.gz create mode 100644 frontend-dist/js/967.398473ea.js create mode 100644 frontend-dist/js/967.398473ea.js.gz create mode 100644 frontend-dist/js/967.398473ea.js.map create mode 100644 frontend-dist/js/967.398473ea.js.map.gz delete mode 100644 frontend-dist/js/app.3833ece1.js delete mode 100644 frontend-dist/js/app.3833ece1.js.gz delete mode 100644 frontend-dist/js/app.3833ece1.js.map delete mode 100644 frontend-dist/js/app.3833ece1.js.map.gz create mode 100644 frontend-dist/js/app.393ef185.js create mode 100644 frontend-dist/js/app.393ef185.js.gz create mode 100644 frontend-dist/js/app.393ef185.js.map create mode 100644 frontend-dist/js/app.393ef185.js.map.gz 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 31721599f6a8524ffd5981af9675ed2cb2b2e792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1723 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..45eaabf1b9e58d574baafb2b39cb0573d260a0ea GIT binary patch literal 1691 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 N_%G;(+m^s8000Ei#N7Y@ 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 0000000000000000000000000000000000000000..1d5dc372c58f9f712e3897843978067efe85c60f GIT binary patch literal 8637 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 Pn2P@cXsAzd&BnNrLm;DhlRNabD|R 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 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 0000000000000000000000000000000000000000..de8a9e62eef7dbd973cf45b75a78375e570aa084 GIT binary patch literal 2081 zcmV++2;TP}iwFP!000023gueqj-xsjeicTol0qwv$W{yJj%MCsq*kkBut|K|*vK{& zs-wL7$OeMhA*wr?(Ma{9f_)aB_49!ZrXYnU!k{9YT>)tP1~F#}Nb(!|+e4ZM?d9+U zB2KyRKcHBd#h6f9JOd$x?3df2Q8-s^s`?p71xcXz?9zo?AS{4@h-A{=^=XqS#o0r= z3(5;Y>g?}Fc%Lyjoz>_TL?jF;Mq_$V7~wOg2n%EiO&23i#EZ8;qLJP zWCAJmw*lzzL@Q_BqW1NXe;qCjAIAg+@$85FuiRW#E$++SemK# zcfuGJSCH`E0H!I10|iUOmaIZ%0&K3)=29I0y&{@dMans;`EiUEdmweDL; z1^&49SS^Inuan>zL%lYr!qW|k-1Zq~IB4d1FP*(Z6X)8Jgq{3yCFJ>t$LuoU22my? z7k-Ez@h6BlQ<$mBQj{_Z z8zKRW6#2k|g6b_Zg;jBea11l58cF}+c{6m;|5Z(4hFu@WQIN}VM+P*}kQALcS zW~n;4>CWa_*Ag(9+MV9%2J>l}{$gCG3*{G#CgK}>5J^IcC*r)?c8~XMnmdwHf}F`1 zDoFs3V~Ldywj+hQXc7@;!&zMIxK>3kq&)g%RXx+qTVW9tb%(Gs7DTng|6MyZCPJ!f z0>z0iKyj>m?{6eYxloYx5>Qz07e>x7fz@zq34NxkntD6Y-{1A&+V$xDU2z5JNU8{Y z$|w}whW)rAM&yqw^!`vH!#}U{aASwppIMS#r=d&Vfx1oaOHQXX`l7>~xZ=$a>4KE^ zcZ`VQ;@S@graE6meg{`29y&e`O6mYH-v<{Q{vryPpFpOhDlqHCEO@4xEUwjxh4c($ zDh%U$9W^5gr6e)IqLD3qwlh}MU^B&{FN~ToLUHbIJ77jX2AH)grOxrXd=FyDzHK_u zC$<%fSU8j{Y7%vCsLZDU(oEF{A;QohW)oP)u|US~!CDuz-c@s>a2FhHpf3-R_zU(= zwEiKIxguKTTTV3xaZKZjd39}$3l>FM!x<07=)=Uz#SXaY5&9nCBkr^2CkTpPW6rDL z@okF3|wjiB%AT=*KLo^wzi>N>Y|cpfr|=? z+py+^nVdGN+CEzb!@_cl7f>P6xedUI z|Cu?~|I_HoIB9$)Rdk8rK~oEFHDcwVp;8;b%^Ux;sJ?85Gl+*~L!STiki~M?mrqO* zNElFBksk;u2tL3|{Co)a`1xm9o!*X5K?3tKP`3wN-CGH5-V~UWJwwDV<*84)+mw%r zST8fmC6K!=jsE9X=50 zJh@ZY7xOxQwx0KKF3MXB6GA`ze+mNWT0$m)#Dc_)>eJ@gy6M-Q<+dpgP#}HdA6LxkhkXSu<)w(2$O6W%4$(%{ISY{Nb z5UzH+wf;M-H!sINEA9{b!ydM+c>70!5rNLCuJ$j_uW9aHClxTmE<^;5jDaFfvxFH7 zX~S8k*S>XtqrVw&+cwq#QH98JnmcCVu3to(QB-F#gZ*@f*pY4z9;&1bM>`0z{{O#t5lQ#afvcp{1_GOIEC=yM4IHp7c8GZ}* zZwQ5!!DIxfZlXK)&IX!bnJ6;mLj>=RR7PrPXDHhZ$ex;1jwp1f>YyCSfhqYGCv%^> zZ7d)*SMPy)#kk@-D|0}|mEwtSAeJ$nt|jwSaW>;0K=pq~Q$!Ae@*Hv~5YRXHx@}E= zSX0oanMkR=JTKC8;7U5KQmgD}L)lYr>sGec)vNl.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 6be46dc184bbcbc19548a3af4a889914f18502a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12080 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 a?Kauhb*DpwUPya8-u@4|bn|edC;*@72&TrF z$-JZd_sV87Tb8%&&4?lJob5TAu|H2#KtXGPQdSB=OW^;{h#=?#`QhGmA$9-wKGPDN zfF4gGaxnfl#Tl)uf_z1J0oRxm^jIP);9N&3lmdAC=cN`j|5BJxitcvBYAPrzBMt=- z^aEn{0X#3*XLO=j24$R(^!>=$rOcua!nX(|N0hRHajT#u5RQ(VWE4uVb-W;hqxBYs zI{;!}>uneM32_Yva7+;z*V#`Z=UCwH+ztSJ~^qXC98XFNm8@oA|Mv5if~*& zE+QO%(oCGBKQ{5;n@#)!(K3T;gq)i_b}p1+E<~xOJlHv@18{JBCRfym2{Ep&aYeF> zmdD8Da9(hx=Dbr~kS(_G#*#`|wqvSaGtMfM(?S4`lH$U*F0QU-oG_jNN7A*II+FL= zTai;;jhYoSGp2~HeC>+r6Uo?TgpGZ5H9WVv8vK~32Q4hcHm*j=MF>{D>TBc%)ivhI zxy^O&oL~ez2b>W}FjgdlcbfFPn%Z?RJAXtaD`Cu|F~*cuV~6#BuPwP2!}YtFN;;`B`TS7)S;50K|wZoTDsezR*q#HB{0q-P>+TBsg`A8CmaCImaL zaJR>y=@P`8>sE&(fM|)>MHsZqX-NgdZMLb*YXY#v2G*Dn`j!*yEjI`(+cVAH6A8(V@Jyz( z<{~Xu${bFrDOifH!Rs^JK=iMND1)WPNY*#_NlQq{x_hvO+j`M!lPz$_TE6 zY2aHtM9kjHkPYz=G<_e!;Vg$^;8~foxu5|pCmH-&{$9-yC7d19M#99YhZ9s3aF1V# z_Uhly#?L#97x;R&ZO!wuWCG=?izx;4H>Um4Z`x(UW9u#4rLIRz9TTMmts)5#qfbcQ zsX%vsRKjvv6ph5D{8WTPDSE$TP^X+$%Y|X^j$ybve6t%tC=pA|a@_v|ZPajN!n%HS9g#Q0_=Pq$?~6__8x%%OR}P%* zeC6Zndb7J~ysZAuw5={ePeQ&jKHMkfoj^S7=nHLpVZylCi6~b}X-kc!Pwb^@Pf%3< zupBx~HJs+F9Vq500n!hTMgwP(TzYP<*T!kG-R!?EvK17xeE)azN=II6Qg;ccl+GY! zyz#2yx}H}7#(m}~?-@$Faeg|J?*1A<_vXqf;HXvLrL3N;2(xjRU_{6O zKmlhcMg4Cb22_knQX}|~sEx(_3aiPjPo#Qo)*lEz>La#vFIa9H(A5#o6yRR(ROx)&y%p z15Ie4S>yC_mx6=5xf@*%TTbX&VRMf2%R7AKoSdOH#+&aq-dKWZLrZ(=FjOb!7U0eN z0UHOS3Z{z~EpsyooCzXei!(Ty6YTaUXW#s&V=g7Y3|ean*fexOgR0>~=BSYb^5A8x z#qg##R%qHDzVYU}dloNuDs^CY6RdyEiC2`r-F`VkMv1Wb}lGheQJ?0NkYjGKB8VEGBg^Zi2rk3PYG4?D=rr@oI&yOMTT{pbsYV?Gr# m>j4oSTCu+0TK9)?>sfL<9?=i@;2jR;?e;g_i6jWo8vp>V7.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 683361cf37d212a87c8dd500d894236aa10c487d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11372 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%0DL8nKtagzAn6!_VW`q` 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 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 0000000000000000000000000000000000000000..9f00e0d8e4ed86d1d5acf35a8815b1ebb42f65bd GIT binary patch literal 15295 zcmV;wJ3z!AiwFP!000023hjMskL$XT;9t=sI6ymB^2*P4+n8V$yI%&_#R7|6U@}3_ zkZsyljx2d3xw}sc|Mvyo#iuCQ=jH}GNG8+ABCCo;vRGBDDvr<92TJyNR#eAiSCuU) z+duEKHcLK|*DTBCv)A2UZkKGo&&%UFjV9^k>pmu(E?Ij@^73+RNyjWNQEhhJ=gpLA$ElXZ4Q}M^k5?sP1OzWT}q5LAy4uN+)UCs%@*Y(XGg~sIV|V(m&_J z`9%5g)UFq4x=~@Syd%8S`5BB4%zj;cJ~Hpd*f#)wStfI)4YmCYrq zQQ3C(i^h2UV$#cMkKW(e6x|qMb39Zj*H&Uhffd4rj{6T=;46S*e))>h&1b%EPwPpV zegnYAd6Vp}b!`8DeO4aHo}+*;hRzwVo*)}_L*B>iEICwF+bNNZ zF{eb#M083ih-BNA?&B4ll4K9jKi}WC)&7S#wx;sPrqtck-6L>DX_Wp`e!f(7o8esx zx=`rk&-ZsKZnaY`-N0j#&fHK*=t7K#6+6FDhDiko!`bGAIN$M-FR~w;o3rifTQ=D) z|8l!jO-@$rA^$@A4L-KgO@R*WI^EP{yQUj4N+9Cu<2HLqWBi}-e6;ynl9zk*g$1jQ z+k-RPHdS$L5kWhhew-*~D&)jjPi4_`#YHy#_bw}TFRR7JXOxf$99d7O?U6Eg1+dIw|@b ztD1lW+I0f>l>^Jl)`(mzR65ovl`UYO@nu*Pb|a>ROwcbnJ?%v9N$5 zAo86nFZl1iv&?>057QvaVY9o|O;xWiRZc*d8Y|I%*cLB}XgqBqlr?DMQjtQ&z0P)R z{()|OJ#-Xk87TNv+XpN*a?<#fJ(oQ3!}rCK*VXYlHXQl0NEE_ZW4mvgCV zLe2vR7B(f^G$7<2s`|Wcc3FX5ut>9^8B?g;!cmbsi;=eZHPK+hq$p8V83T@=xlJ3} zRF`a*w?Ee7SI-L|9JAtQth3eS%VJ_o(m?wUAE6H~QjdZez=Y?C3CDtE z$eSYHqlEA^aV=Odb~dlkct*#s!6{JofqKE2TH!!?I+cyA%+DEtN;>~*`9IL172gG^ zNp)>KmJD zMb@H!dr7brJi51){c}3H8=&aoFW0Ma0 zcwWOF%++;^Jls?tK*#gKjJVl;xfzMl!k*rdikj~7!iw2c+%T4%zNVY4 zfll40Q2@%=*3q>uT~1mBgiYO)fb>a7S4jV4Rdf|5 zJK?5opj^qtVlmq`H!2{rZNqdHuDg)~AIf~uMY!ZGhd_@zP-Xz9Q5q4?qVS||gl1i% zBEt*OK%IP`y3Kc4akHLlpgk93Sq%)-#D8@rw03@XdHLdseUUe9(zHJcM3q;IV_oiL zBJrdWCch;6YfU!J$olngE$Ou^+dp`lCR_Bk9Mz*(OzM*X3qxdL$Co^ov*6f7ZI^_RNte1v{ zLNi%3`~;-24I1Af%wT+|C70sb@Vn@|JfS*oO~=S;#GtVjT>zuz<9OqnhEaOX_xl2w zJ=Z6!4EwK_&0ca#vYR@(V_?JVBf)Ak^YTW-wX0t1B@;9H!Yd9q%yo9aw{h+*ZdyQK zpMx6)bIY4s9GK61(+E7|pGjHO=d2i62$lPYlPq@=^&vPqHM_bhifmh;8!5qTl zmngPC2HppYXS<}ft*ihktTI>3y>tZgpOS6XAR{`3Z##*@P)J5@A*~(B%0BQ)4?Onu zq1s)W*!CkgkE&~n*Dv$)SQ;iDd6Uzfsh?oLO@uWaY}DibbBNW5nD817Dapw_orYvV ze0oyiE<%o@=c*2Vdigc3_3qZRfV-g4!^th^;p!~19XgS)CvjJGI2<$t7(Sh7eG&9K z2VoaQ7FzJ_^9D=uy$+oJ4n`p)YgyqrEviqn2M~Gi8c}tQb@d6ZPrDCLZutLESFj^( zTxEMocBj19zf4E5?A=zEUR}9&OIHqp=_svhOFKX<&X~Y z5m;??c`9uRyxxG+xl~T+$2e)7<3W6Mt(GU!)t`sXm8h}M3hXw()jx6^>j7u(J$!7M zCe9CO<;)C%a_bYntp`8B8zpu?;v4rlyPL8yq6c}vo4}8=o&&TU=yt=DxXC+3IlF31 zraTA;AErrF=hRM3zeQL*e^LJ#57UmIc!TyR9`!J~ppbC;^&FdoAon=| zrMnp~JAcbC6R@XFUbQdK6dd(3H+wU(kHr~`MR7}pE(p`$>bS(=%_5xua3`T>hrpb` zV9UgZKow=FFKWpvjzf@}zGC0_j13lof-ei9Hq*sOx7)}o_a4M`6Zd|Y@JOQ`uMi-B z$li2%t!Z=XtZ8tZ?Fa&QL+LvAx8bwpM+;l(h{?Z0hT?A61=2bgTO-G4d`;;@amxid zs0}WtcZzEaIUWQ*s80+b-)C(0jMI-%WNJba|T zfq%dPdZd3Z{6P#DvW%h}L=)8&PSJjOOZVtFy8nG-!ehJo!F?$&nJw4$KToheC?Xz{ zZZ70Ep_A6)zzpYwYC`m2gR^572L^StpcKxN83_goA2Rh$^cbqqp=*e}IsgNC_p za#@wkW1RNUbZ<&ui&Zz!093{jqQ44DAhwbYTPP3euvmO6G}kIAX;sldkz=iRkJz7P}uTH zw)d^GehrHwpynVSi14x(EiA~GhVOZMcKP+-77SXbqn@ZNd);x7z&v8aALe$8^}%P} zud(o_{bavI3x_*TQxMtF^NVo>M8}d$?!jIu*GWTfE7gN0*rj2+UI^86lssKcWexEZ z8J=vaA%-0v6olja@B>nn1h?D@7yiRgJ8!cemi9e}_*wE^mF`|?HHg|ki9ZZ>sLc06 ze^lt3=O#S`i2SGFIBr_HM7Of|Lss3WFD~0Q3lQG&f6|9A4in#Pb?LN#)KJL)2@eZ5 z$Xn=`|Ng(p<*EE&jq<&#t%+yRtc3wS`me<`a3pol1&(~|h~0PQc?i=2GQmN;{1!+& z>ENJUetVR3vjhj6gY=tBq}*6*VvuY>Gq5a;Qk-BYYv(v>ZPI#Wg zi`Mx5nYX88kD6VbUud9=T1WzPaJ16ElE^I&6#9L4ZQAOL_8vea4$KOId?~W}h*+LH zPL8*w<#c4OlI$bh;1X?I6X1#qR@08yZT&{BGb1LIO}mDW{XFs~Sn={oJ~@{hvZfvB zcTofjF?fW&PJViSr!%u{%Uf7(hzgDtPq09Xz0JU)x_Kr^#YN}$<|^tVc*z5R;BMoQ zPmWk2%9iA9WC0_%<_WA)k$9oRo^QQaq=Y${05QwMv$%sMAxWC+ZikvCgtM%vm9y;I zgPhf&#GY@xILkV_kOgs;!wBVUULL9tw&HeHp5hM=GE@N(yFT<{CGKg(5yV8&JCuX0 z0CxxzSyL+?*|!H-sY8i9-}(tgR%YCREQqb5RCyq0NhR(OzS5H2Hm;H{5Asxn5j(&1 z;wR~9M-#+L+CPkwGL}5B+7u6gC%xgYur747WDaXO)JVOglI2339o*FaU%!)Ais#V>PD$4yCby*g~B}sYpiR&UBKO%vV&Jauj=wQ~gpw5`BspYC>CIUC0!uO} zg^#j!cS_pqXgY*_33eu4z28**^Z{b;HF?g&E{J1o=6k|U#83Ha%t3& zrSHLLPq+Z=hKZnF7*ML3>+y&h+^$J3St(ziumDmD-IE{&y)>tuag*(FiG_XEoVHa~ z?+Ifi#_qcIUHv_!ZsuyCfIxV>{Ro!aoLZk%5w(5NREZs*t87)O#F=Yj#p_MFi}&eg z3oZlJjlrMP-@yn{t&RYIXY8&zpYg*s*|BjhyLe1Kw^fqu_wL1MTZ$I&(PLBGeQzGeBr}RsCgBgzfaiJUY}+3lOMuPz9v!l4ft}9hOZy`^qo&D@ z$kLn=yLem9mI#hy2J1tzz^RPpGi|SJTa}HI|K!CAy(rnn9gl+tbI!`_h|Z|AyhJvg z?^fv>nuC&?j3BG90?i*2Ru(}2DXbn9R_0_rTUZGUKSNm2C!Va*O5lyhm+EpYvfAIw zF0L#HfEen)VQcv$fhFNRMPNyAy1?Qs$Galmea8Wu&OVlvBFjLLC1RC+08St2$6g&& zpKx-p#T$Hx$-A*)OZAyP&y@s}Vv=3hogIVDs!dHrQZ#A98b#ssKV`J}*1>RL>nH7B0lqS!n|N*eeps%mO_|)pn6xU1apAz(eA=(0^R> z8tp}DeOV=0)1o?WzK_QIFBx)cUH#TCte#^0bd>VFJ@9%iH7u&D~0Kwg4annbkt)B>r7{Eh8JxoFZJt*^hWPR2PPE>q-8s@>PWn~p)MD1~lXH`A2Rv7M~Q;kAgr`^f~^|0uCpx8zs>WdnI zx$Mgr7i#>I@Ly7fX>(vl#Wc2nS>VpxfTu~FXa+Ej&rJ`3=bxkQ3Fv_Q?1@?R+Mj&} zH|-Dk*@NRUHa}-a#QfJW_(6I!*bgAD3I5D&XIRxq)2~TOyH7mqK^aIANK15F3&7Sy z8?G`ua2ViflJCrSl_l6*oC1uw1(}KlG@BV0`1p|Hc`RaZIG(j~2TSk))#xKfpSH(_ zNQ(r2MK$!Bu;Lp!7wH4`;OKW2I{X^jAKVx76|9wfvJr zHOS|ZMQnryF)Kf^rqizgce{gGfo3MAfg#MrwJAkz}*dy}v zv3s(NXOM|=epQGU5_kY^246){lA9O!6`HlLIjRro5IIkY*Rwr zJ{e&b7{yYo20ydk-}m`PE)4)&VtZ*_K9{;W);Q^r@$xN|@p_hl3C{Lnr7V)^Sj3|E zq@~}Z>jwM@W@4@_8NAsXsy-%^~EO%RUFJp?yMQefMIzqvL*&>l9yf8HDGHcamEg?y0#q< zLHz}llFpJ4v;9jNC)iyR)AzW&r5gTSf9_i&v$NL2zrUzh0%*FA_o&VCB4HAQho8kFDRAEMuLTA>T=rRNKFzU7H;8 zcFkgtH|9_GadzG3ZbWexA>d(POcOuCQ&94b9%O_Ybfa_tGiuRGzygmlb_3By*H8R- zqx^ilbs-7o=pio<&4;9uZ;n$+u;twQrwE53zr?`+RBBG(39Y!&>JP| zZPu~Knnw7g%~=7l>`QV!@*!y{di{oEQCNU@HYeNZYPfw?^*-6wDEq!9|BK%q-H;#2 z#-_jFfA@jP3SJ%K0eyaHE?Mb#!#o5WwXYdBumqG6Mtxja{UUdQ+9wDn@dnasE_zQ< zWIw8FOD(SZznsxN&!QKJ<8`^Ze2s3MV%bqJgy)2k@|eVnkcpInPjToGy}Y5MUQCD9zSN#6D>h1_!_IR=I~W7$<#DM%y^u-aErXPhoUZXFDM zwNT+QCIvaVB!|q|6(|$AWtuYtdXSf?7WgSro*8$UxnmBH4Gx%F%ZnbwJACrl>XDl9 z%Gh_>#toldQ6fR#$ZhEw=4>g)N&c48OaE!ts^nzxtz#+Ih{ZzCGHC+Hh!aIU4Y=0_qeKi;I@5mg<5A zTBc4`@W#;UG;vx=pN*$;wnX7FUp3M0y3Kd&ZO51KbQ(|M@oX7SMt1se?TA3?+RCJ? zs~jLc&LiL-!7B17YIa$HUdC^44x%iW>?B#K@2YNS5S4O@CL@n}6`~~xwMf>8h8oiA zlItYcYI#IMqNF9~>Te0AlpU$;XZVX8hoTE%zt4yt973uu3{#LCaXmB1h*+*X0$(OKj=@(2O zg+q=5VKeq1X}#u-b^%h0`Rt(p0Kc-9&7&q7nTLCzpj4$JwsLhs?~y$vptC05Bk6-BX!QD3xCuoP6Iahj_GB^7 zRqGrVO}{(UdHG#rJCo)tTo(VG0GlP1>89ip@Q3gP4T5b!laX0;RE18-X7NzuJN?^= zoqdAXm5~^<=csJI|4goo!WFYO$>i_ZiO{wsl%nKo)(reo=-Gi*=?p;Fo|*)cDP zznkKf|F$MkgU@E!JR=_1=p$Wv{!kwSmwFdyqlT1_83dd51X9z{0?JuO6Y->SU~oVe zm?1o7FnnFjPSgtVS5;d2!EUMNC=O_=Uf~~e~DW40}Kae|HZ{cby4~#NJ78iuIA8Zkr)8P;kBX5LB@D%DN zgli3sT&^?d=n8-$RRK?9(qN={<+|4cpXuli&bf~MaAW*R&<85pMkXrRAb~758#GHu zksFlE0M0YK^3-GSwAhLfGax`0_cLxZy~p8y-4yB zLMAGR)Xqi%j3;O!;Orc2!uzQ6RaSVr6xAo%cdYN^BX4s4rl@7i{;PET#_T>R;?p-WG*fh0Lt-+uz3uZFp(ZQYjqjgNxkp33rVL9vg zMTAjc&{+^025TiEv&bPGmG2g@2s4v}JPb5oY1eQwmbdR^wen8kwkzx5V3hS(ITPYO(|jLp7Kd9QD)4R}_GH1Fo`y^Hd~?Sm9%bhI4nQ75^}PtpA@} zS7eg>J}G)ixE)QJzNM^{K~5!IfeUm0XuY21!*S|E!79(M?PLKH_H>VlEYH3>q22dw z^~JA#53A{P`ietr{WrJn;-KNtl4in{w?;iKJE&E+EhM?y?@*9&{U5lP@^YLO_9B%ar!OBap&>)bvnAA+H*0cuO^05rRF}(=Ck=M zgNW+mHhY;)WBlKFJbqn_dW=~VO;d2Jw)?}%H<;C8*kFu@19a+Ft6tRG_Xa$Av?1xm z;bxbwh>);Y#*@`sJe{xN@nr5HVod&t_69Mry9A7K2Dee8orS{cx3%p zRvh(rmXtvf7`J}qZ-^KIHjw$6ynzq0Lmn%foUDu>Vfo_&{N>}e$*TTLw8^CHVK?9H z9+XLakke)&=0F~JpnNT!y)+isPybm%_bJo%> z=!!Rn84NVf95+u;QRJ5D6EsP&sHQ!bayGPU?T9MXyWEPO_I2tZzyBR?Nq3)Lv+ zrdLP#z-OTTgF2y0aXcT$c$7peo8Tkru{RQg!{Y^5ywK+Tq%+UxZc7(a3@@AeW^C12 zY9*-ntS^o`+$j$BjZ zO%AnMS^`&6U$P2zOH1Bn=V=}PcJz@rRJ3d7fL+T~)!3ExcEDsjU4+Y!87SU1o7=6_ zUgBXcdjtu9i8_}q5z5kLgT=sfsTCMe$Mx!4P;PSv+*PTyOzyb4)iK#+wNRWV)9vhS zo9&hATp}&`-aiqZp^q4bTT){ z_fN|OYEPTat`mLtWJ)2w5V*c!()$*G1NR}i&2y+zf7j1Xpw%4!EL~3V~Gh6 ze!higL?mDZe_=16$j}p5CDBmnI^eM-?R@%O6oVyy%JgHFUp!ubib|<(KJ>yR96*YF zyVeSDqOYUOoo^$Nzk}2s`vT(yFhofVw&FI2ylBPK9}3wC{WQ9FQEQgJqdcQ5ipGX~ z1dPzzb}>$G-$9yXdS;!|!=_eNIc7!nnp0Kdu=7J@A~KhoTt#H%&3FOb*+olF#}a>` zdH09|>8j&Pqr_Sc_WcC)%=J9xGk$ZZZ*O5(6KH%DDHl(qiB>OeO z+d{?}%}m35qGiA=WSvywJ>1E78elTvDRvIQ!MEu&jTf_c`R3spXk+IavkZFSU8M19 z8c*KngtMCBz-?MVEY1W>|IC`6eE7PM5!A%BU>YR73PIA@2HyUr%D_n0z z$3WkpmLN&?f#rAvEy%X&zsR(8OvDhW5@Xtey241iVat^4vd7*=~0HWw3Ewr}Bg1hyN!Zh${E)(@Iqi zz3P)}IwPL2kh4R3$_CcrZ@%Mlnxr;qemI8h@Y>K9fZ?qO_a?ZbA@-k}bI~s9xpnzxW2_ zGV_$-@sn}LXBnJ4jwa&;m8(f!k{28D@{pH#iw{-&FjH^l1?X$xXMo}FGnt^DHsV19 zN`B`Op1SUOKC`;SRlKCG{>p*k-Rj*!)8H!~T_&cl)73Ivt^U)c`V(BLg1Jv}Kx*)Q zvIA0J^E)8fErxwj>2{>$%0o7Oszu&)p$aHTnvbJN&10sz;hF40=kOnTPG8w~km0SG zWd9KMvty||Vn2hW`j2ft2X3Q(5c^q<=DGH>fa|uO!xvc(`&mC`|I>c<+RysY^DO&W z!X0Kmd+2(|ewNGQsrIu&Ul?jXyA=XvKZhTwGh!cx9d2Q!r40);Ekk5wAA1oUR?FFH zl|E=M+E84sMS~!M7(4r(|Lf@B^xdteE8$?!m&yplLT!Rz28d}<98BwX03*k;!vAQIZqAHIj!r#UWdk8ca z?uxv3rcHnjjJS1O{H5hweIfI z+p3}lp1>1%0tI1w>;o-RO6OYnShS7N{YFWzR=UYg`bimmV{{#_kN`aX| zjZ>m9aR{@Z=k}A^6?Jdh5w@s%Pdi@|7#pCeSd#%&?T!gTxK}%eGk2UwosVgSOGjM zbWxkzUXFR4M$3@yQS)(hJesTb#p1$O7Ei5tRb}lOn;9k;@*qWb!j8RTl*QKHNty7x z{C*2~+(lX8*;JgAqA z(P8~ugAeI#XNo7C3xCoplJ{nl+_Gwd4{&fLSV6mJRVbyXp|=azW4y1c%f9*)?m@K7 zW~=Qq)e^Hs`?k)Hz#Ax=_w%6M$Lvulcnt<{ODQ>CptGl-9PzXA@OtwxP4T9fRzQz& z%twS}ZYj*mwZ0U{=5n2m1fRCq9{6QAOgfeLlYE)nEc&8&xdAIutptj4cr2AC2^Y*k z2&XtXqw;F<8frkPl7N)5I3Hnl!&KYk2fJoqShT0>?eHfub+W(8-GPYinCg(UKQ72x z{DLpxye*J-%}p&&HwR|3lVZsX>k>>tby1ZhjyCRU5Lvc$;05C}0Ke)M*Iq`1nQn4z zEv+WKGt;yW0sV@Q^nv{TUSwNTgqLst*W|s>kfOl&&}1d0ez8%(Zk~9JC$7?x*$r5q zlcDRAYWqTNU2&Mv4ol7gwe)d@Y=64-&Sn7O@&O)KUf2%@dJbPW> zUxCefsjCaB+aE@4S*4^b4gQ7w+Wd^`7#yx8(})~lIiSn_%53TJWYOHmggft)XYaeb z-W6zKvI)%U?kmz<@A2-3@l&n;V#PG|Vj}BDg@Ut+3&lcF<{UWX6>K0p!HNll^ck^D z%T=6=7mIj2eZ?zrF|wFmmW6jG+MyWu?{ngI2O z$UXe>k7QyR&;l*PiVaLfJW42Ew-_=3VY*pfzA(rjs0Ca z4#3df4z)n6Ae!XlKQ%44k-k&kr#A;L(N3I$SK&Q;#+TlGpp4q%rnMV}EZ8ehjRQ4@ z(fN^b0zt+aco6_2<}U)!pW!cNC5DgBD2d)^9#$W1m~YjYnhygH=b2^~bf|jPYQ)qC z1|{;9!n!~Nre;lXb;d&0&q8l)7yG1YoO|3WO(_XJ-Qmy%9;rCdbild7*|qR8^&#;I z_UQc~NvfDT?i`I+3pVko1yc@aIJUwIidc;UhCo^Dx9zdAEZG= z1fBD7KpP&wWN&F+mV~!7uH((aL}rW;@sIrttdymeP$n)>{LOIrb!JEjr{62ewtIvu znHjq2CEX$TcbWP0aZ(Jc|61o+5jR=cBn_(bLx?$NKH7UX2&8viyk~6xe$MjpX1M+A zZTERrRL7ewsm%VeDed5M3-K1>_mQ}MV^Z4W`(x?U%6<5B9`ekf^U=IM?+-5Q4-hVF z4~#C9^4a9LsMDTpwwoB>7L%bOIOZ z918{TN?O;nc%MAmxSvT>x#-cFx(Kj40(fq%r99MB=5Q;{PUUu+A6#?C%`m_(ePVCK z5Ksx`S@n(C6T_$1=ncy1-APG`Q1>7SA>pASFi8erUty0N&;I%N42Q}}{oK?8x+hia z9cZSTE_nbca07!eSO_C5^!D3-%r=x~ z!(?~xoIK~<)t<5!xj)zik1L>vQkBpkeY*Q#|VG(c^2}$?bq@G7o!V38dhs8;UPJ=!?&GG-+D6S%Fprx60lhGN zGRE`Oa^B<+IaBD2tp8ajmZO@hp;^H_fFN zsFg%!v}QHRoJ&v!v?#eoq&!2&j#zm&L@CsD$f<^>boT7x( zn^LBqKcGro3DI~eDq*X1jZYaiDcapBX{)LLML8vENd^9m6gN*SlJ)!YYAx01<9_in&y<{bstobRysX?pf7k3@BN1dzNz250tE)Y^@XAQJDJPYpF%DI-2Q?QNsQPKs5#uk{#}U z{QMC*XesKTDiOHY(fQK;z}H}{#TP`x3zaERNfFVf&cZ?H&w*-cFHRehFm=g z-Ib4|%K^2tlx66PY{rqnihWjJ(8}WK6~(;LXhq94P++IL^aGQWuT$mq7c%<Yfwi%;NJv+ijRSD3Tzsf6K>pOTijf0qX>23D8xk{$ChW7YA(Oos3W zdB8HATC~zBcQH~SVb*tt#1V)C?+;QIncF>5VtUDzH?nF#PkLi1q=I8r*SOubT`(@W2}2zKotE4-g~f z>QDp<7{l;MV51p66(NGjIS?wM9Fw6u<<(zbuvEXOdC^#s%hOhER(P$sV71km9rxGk z`7&$>OZ7Hl7W^!zz#EP6|57)!E23(Vij=3$F4o)DezB>6VXtbi8w{3QshI^&A-u2t z&=VuQZ!(`545*k51M{F3H(l9g4Lpu!4ac%o<@NC$M%!tL0-nmUYxvW(Bq6G?Hz5Zn8%e^!P8aZ#2)zNn)xrq{ezd;`w^11dK3IPQY;$UBE9INE zO~{?$deZNZ(-;Dazj&&A;RVJdm+$C(RT zyQQq1Y|D!yTHOayE}=$;8Z{?7Wb2xAu3&*1uC}7e_Q|=bk!2xxaZ`sI^_S469yP%- zXhVdNb_2d;*B~R+O1gKjQj3Y`sk&&2dyo7bhvBB#bkf5t}3uOY_7gOo)`CM92%MLgeQkKR$F~~ zgV*BM#+`n%Wi;bNW_I9iy8OHBdeuYFjj9z&tghI#Oxx^oKx1!|oNfPLJ3DH=54QgP zZn@`jOAY42LlErj=p%WC(#_l^Ly2}3r0DNUesBN}v)?t6P?>oj|Hl05y0ZX;9>B=eZxKBVgN&8$i zuY4J)KSf}L^KPiQ5sYDN-hu{8FcXVIxF|IxH0P0)9dCfVWbMhlrbsn;&kE{Dcvk9O zhWM+cE0(P02TBVX16As+bu(`jd|k3f&G)vtBvo1b=-{L;a=rI{$CQU+*Ke)EiVH}O zf|?=-UtF?@jr)BJf?3Ig71T{0n)`Auaswac~A9 zBaC|=kZ;ssj0q{9fq+2zZuW2lDnu8nc?MFB6UaaNcmd-P;()^l=b5(~;wBe@(Whva zm{%N$i?^SkeL?tq5tASh&R{@LG{pyjA-XUUA#To+c}B+-jVaVV(uI8>-bI*E+`~UW zmOw&0XF@SbyA|B-FsI`MfF(f!`5Ac!dzRn?AQmVAXPA13!QmHsnuC(_Fm0 zVM-CdfrR}6FijEUkcP;UOvMBWM1XBc-Q%P{0tR{dJfa#|&illCALx$44 zKh%~szKz=2_;#!G1<(hgB2$(drR2pd%(GEyLTX`#luACCg|I7%X8ap`;0y-@&G>l@_V9NnEsTs292v7d zRG|PC#~BhHa3&IUStLS6$D_E0xYbE7AS`^>vYx8u9k=kyyo2claV$F5|6Lk2#yk_Z z1oAVcfS_1-_TO-lGAw+F6!Mte|wX{b@S2Nn_vQxiBRF_ zoD<0V1^anM)RjMK*ZW=Y9R0j4>l=Ht{>YQ`Hs87o3DhroUm~64=!=9qGr`&}(r;4U z-cW=EA>WAFp=uN#w%=5q%1@Bk@^%G<%t`m&4ngq*5o5Za?(K>isTfmw!QjCd!1#rR#)id}5mrs~a+n+>`zfT#j zX^-#A)bMmy0?LKQXm)I!52VG%xt(x^cddykq!lJA zG4A7>mufP)U6pgx6o$BF7TYH{6Ce|xq|@Fss|>&Hgz`+bNa~6bw)>#D!fNSpro*|9 zv=#p|d#wMb)s-^R^iHa*661@ePQTUim8X_U-3D&i`lo~SWjmbFerR#a^H(ofG=qKl z#w3B50wEds5kUdL2XK$C@Nn9}pH+5xbzl4h7L}tq2btYF0j=H?sF1zDh+QkG&$8N7 zk4j&!BE#KF5|Xu;u&Z~$QG{rnFS-JiRLVoMzeTT(&t|hFQ9u!Ascdcp;$A>qLz<1=U=0y{ofc7%LK?~7LWHd0qD*idUgk9~>j1}wbxSULgcntFOuCD@Qj%;4uh0a~`Tbxg}PB#nLNz;;aw(+mltJhyxF52mmD z9m}lkbt{jt-MN{8V1}%U+y3L4x#rF2y+xFD}{{Y z2~}p2*3(QNFEfC#S4FL3Xc=^M7#`EYP;V~e3w^cHt5}flItK24bjsUT7bW-EY*F=t z6ES}3D*Tid#-SHGJE`$qS{TP}@SNsU?wS*RyTS+ivXq|aTIJvN_2G@F!EH=R`2O1Pt;B$W=|#yUc$904m@p~`RYyCZ&{9hmB)dPK)bZxt{-RMj{Lu}P^&_Ilad4NL@pkEmA&Gw+`jO9F~ zqIPiZPeBx)hO*-JEcy? zGO}cw%j+vFFh_P^TRqlBwLatN_|i#hx@B7^=TY5-rj#-p+5L&7Nmq3P?V9)h0E53r I#K0~908GnD#sB~S 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 0000000000000000000000000000000000000000..bed7314fff73712173da733641b215c3fb804269 GIT binary patch literal 2468 zcmV;V30w9biwFP!000023dI`Pit9M`S3F%@h`};;5@)d)Xqfk5pyzG4TohYQG-XRh zQmRrnfw1_iKiERltup zFVH3V@0kmne}I${fryAxL3_Irsk44p*@FF^CM z-R!E1d-Z3fZQ0-@EQ;IBH@p&9q9OQ{WD>d~**n6=lZdxLkSM7$lu`x-rbP2!QI6Gr z3>8q|HJR+pUt-{~%3orrnEbg#n5VEni_l-X4x<7Jv;g5ULr3@K7xYLKsv1kU z&7<{lzx;k3wTIg4FexxW;84)?Rbv@JFm5TyfwBxSz+i^YJl<6o!v@Il1!Y4#jj5>b ziJ(=y3~Gx|zkUKtGIWuLQ{$@bbp~AxQg5j(ab`bI)hCEG~m*) zhtS3yA}OafLHV=ZL?|oa^sa5YYisRNp=@%~zTLF9HYuwDh`>WJa!Qj%7dA#0Ns~)* zTnNPCjL{146U^xQB5(pH462Kx-9?c*7WCcti8~WCA5q=9m1q69>Nf4J&BLnOMyT;WKjX0<2nP2HyNH3D1&f&DcnNa{LwB(>-xPCFahV3-HruR6rWVPjY?**;6r zGMP~7C$*_9eCbCFl}*0Z|8;|VsIquJWuJHf7l9Xi^JF&l{O!_B4)kKe!9d~t{f@tk zwE8_mt-ow#&wA~45@q2_qjc`5uFowy9^hiR^yJ^#^S6;^qSF&(x9gKx!!?YS)6sTbamFZYlVGU4-F&s{hqm7zDQ0Pb!r^x7 zz|)K4N1dw2OFsrntiLi!X*o+t`EnPFOi)EU;(3RoalRfM{&t+DVHsn@o%DRbDL9~? z7_o)F*?GW^BF|rLWju(w;b6q^Z|eLXWk4ljlYQ5LuJ}4z=Q%f-VW?*nqH>rapyC05 zsa* zf^ev>c}c8wlH1*GYKzgK}-;9{Lo~_#x31MhP_bB-L=eiKNwX3fkhh)TZOgBf9bDeOf=1&X=y`QD0WhRi>%Y2=di@Z zNBl3C;vA>c`zICD`2!N}{P7QuL&5<^4CnpCKGk~_NJ!)3(t@OBs>^(F{fK~}%KW!^ zh3Jykn};zygls%bEih~i8ZEUQf~PWDwDiJg=`F*(=SQwvv(p&P9itvM)yGZUGHPXf z_V2ol2-HktSRl2vk1eKU@(qAHH2@iGsoi2&tmqBL0&))YM|aX*Y8P5-7dk@Idk^PA zZ37(MHL001(cru2?Y(v1sG%*@b-RDEbp>=!ueznRw0rY0sm|gTjmEYP1;GVm!dSsB z_%;>`h6b-F0ZvRzbRzv>e8dUQ`*#M-WjZ_F(gCI+DTaQfHp=<`&$V)`lp zA?wG%R+7e^;}hhIu66n+w4q|=jTI-#iV=IG0h%Veyc5Mz3aNIAC9@=uts@ks$i=_GYJlY zSc$Ojv+Kz~ROd`JiKwf}_=K|zkr8*U6IGBrS0>j=^)Uwpg%a0PELR%rYD4OGpbRBz z1sNjZZ@8=|6Of4hkj469>PCRx5D{EoRr!V&z(yGw>mSUKuVkt*XRdx5eXg4t#NuyE z9K9lF1!m*2_mbzin?Qm~eMiA7Od1xQu+t|xnBq%^ea(FI;)pY9p z73BP#vP=h|DT!6NU|(j8+{4_#IFL-nE7Ed z)cph>CfMr}0`FLyF!=J?=tUHeIo(27jmCE zkORsoL-Vzdyu}N21q76R4oy}4wyGapy?~=sF(N{bcRVYcdHr$j(zQQ#(vYMqr)y6M zsPCqYm`VnHH~lQCYyVI?!{NuPzF&5q>yw0sk?j+VU_w--Y)xOAS0LVy2kYa@YPE6) z(Zw!mqQHK)5D#--t?wTDYSjN}Av_JD=DdHGD84&irU;d9+p^*F8jfRi;Z_weMJHNh zJyOY89DO9DN& z>%MLq88PV>KBk8Z?8kaH-`s=Ah;|o)OzbOJWa??rsvW$J+=+knRr7Nf-ow((y6>GA z{+F(-XHm~L5?^qU{Rs7^FS4g!nLKJZyP#Xj{@?9m#C%6;{+ag~PrmrDpSM}3_ke.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 0000000000000000000000000000000000000000..4808721b04c1f3cc75eb8dce5da50ec5e675c42a GIT binary patch literal 11055 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/css/718.d0974d1c.css.gz b/frontend-dist/css/718.d0974d1c.css.gz deleted file mode 100644 index be76d36c9eb6272dab6b2a83d99aa65196885584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8627 zcmV;kAxz#MiwFP!000023hh1Vj_bC1ucGE)fKehjlDv!;0^bf5IK$d0v$x7GtKwL}y1q5VZ4crv$EvvGiC-3V+N4Fkjh5xr33j?qFQ9t# zeF2J}6(C9TqhF`LLJ!q-o#1{~8ZF98c?%wHMG4}xdE3sGyQTtpeJHB)7XQjX1ONRo z49cr}Z;G~Hs4o||Y9j}bKtIj-W!{XRnlZ~nRX)i3I+e<oDX3wx16g{^{j`DSdK<&Mfz>WaD;Q%;Wes|&%M8424;j4f z(7*iddt79fbH2mi58#|;Z`(9K!76QpcO1gG*B&kElCm$LNurc-WoOoIXZDP+oWKlB!?^n)C(k8hCB|`UH~Vb(cq+?AU-%*ScO(Nc&6E6!{IIq@5Ig z*z6st2rf-QDsB%&e5r56r9q`x$9(^A$uj?v-tZ{WU(q_+7gYi)e_vdsLeBS|^kNGR z4Xl*6dw3`+$it-Fk^us_DjA;qHqFaRBfreR9%i?uxWp$PkcE2&d0Jl3oE14~>iKyO zk|X43$@bF%EElTXmGDZ#-#k=|?jl6LwwvpgzWkT^7M@HzU8T1wOz2fvb#qUlo~OBPyF8Jxsy74G#8okzE?P!7VYXxuE(~rTLd_uq$3*b;yd>?Mqsx`wX^&eHy>35YM4uDmn@Svdo!<0&S6S;?yrk ziBCABS+dCeEiI*hh!MPV-5iFB}-UT7|x5MdhDCnj7BIR$SL*4f)04 zP{RhbcL&nK#9N}93z48WD#Eg!uW=9g$>Mm<|QdQbC zt1F>{a)0t$%KfSAf|=i7BwNp8u#Z}yh7)7{ajBd1@P?tmyumMhm?!G#E`w%A2NN90 z7sB=+DBF+|5&~0g_Wb;e`gl8o>X_y}=2W5?I>Y%l!$`-E3wKy++e2E_jUS)VED>4` zSgRGL2c1OF2hoBOO8)qv39mkQZ1iQ5o*`>`8#r96+rSyvWaPeg@I0cuvEBcH`#rj{ zFvSACnV9)Y0vdqF{}V_nv@t$=$`^LNYd)dvS;rNGx#nY;mY?N5>lj?R)oBO(`cjrf z)xgBuJB|;8IoM}nS*gE-h>%|DiYsIA{W2}}-9STQ(fTa4j|@EtD*r7eB1;HJi22+v4vF>S(BDp!izxh z+g_6Ku-eR-MNGoun6?A{A6ywYT?AO*a#?wq(_PybJPd_$cbJi(GA34>bXu8h;DqJX zLF@x&CW9ba@tPh)=%e@$WaI9qsuH;cT` z_3#;KEn;Y#a1%Gm>MzQxQx{p9IJ^YlH$~}p!V6tvq=q~XpsI>j!k;4E-wtiq;$)1) zci%DgIxx;jh=ddJ({wg<477te=pQ5J2WN;h;rNbav`E2&PP$!Fl)M%(Fd*Lfr7AM` z6MFmk_C6`6zXf!rwa19P7~0y!XU5E+!9+}R)!TyZlpfNWj*UVs8*wKI2pSf30?iPW z^P_ZR2%OiaJ?nHti`iL9NTUuRO&1)#x^b>5Ob}Jjz2}~aPzcNzvxLE-72J(ODXIMuideO2xm(T zC6#9llhe_|74#CknPfPK6FP~FcuVsXnfr$J3ms^;_uAVCLBwYR{W(GbCh{|LULdCL zhSQwL6$MUVEsqdE$x_zn<_LYjKoF5|d?&;TMD_ikHX?V-Jc)CTSG9h#@Sg_l7K|FQ zSw>>%YwQ&~R%R>Yq=zI<4sh8gJ23ki9U`gZs*Hc&U_H0yy$vcUDyY9z?k{9`Y?UmC zXbVdly%@EwW%k>|Uj{9EHwxYFpi8*EhA8o?a1>S2vU|cVeww_k-RWHzgB5N4*8I&2 zuES@_3RAL-1VIS+g(+DG1d9e+w5x7)Qc)$4-}G8gW!nWa^HRQQWoFce;{PV;6FM6Z z9mk4oz7W~NTA!K$e3OISXdVN1XI0L46sA17cMXo{V&W5wzc5vder~bt!(b?+Q_>X2 zBQkmrV7$ya%>weVqaw4|<0-|@NBEvSE7CQB(RXZNLgq9R6V0P_bO=FDSIO%akX>M} z*@D;BBlWzv75$~WIfozGe(3z*V8;{XR1vtR#Z(nOYGjTCI*kqSu5;q~rFkpiPZh|I z@be9nB?J}7v4ScWHHbE|Z?sa>f^v6p3x0FDocGN0%fX`W_ff0GqkBwYpGaL~U48$S z+UZ@pHl2ai)^p+&!FUl&eLRPZLevx)huiY(0dK(S>?VDVY_gnena<9pS7#}nnoEw= z^Td%zW7O}QIMXvY!Y$IjgUUamIfZ#c6x$we;l}m7BuB+eN5PafbJ$7q}Fh z_|i2lJG@HF#U^4&)p2yfms;bzrXtn?Go1F!Q_ttY`j+vtj2E4CD<6yp8NX~L zjjM4M^xA#&52ek~$_pIy$Gw}+4H|#G2ZG|i7hpS|SSx3oP<~4i&oxdk@E00EVGtP; zWiivLbAOD!_d}h0t65fwB)t^{ZQB1H+!}86K0}GC@!46ZvZW` zhu4@YvtH} zB}@dowcdszHoE{$TKBEEG?zVO&WGSq8vya4EVMya0u8&P+c> z?qD}^;>M(loY7Ds)$oDs9%LU-FrdMkfF#SPo{3@rOgF2 zk~WZJw8V2~@WI62Gz)Kl!zCdN2Dl2{7y%ejdk$=8FT`I4!yHB`@EY|=@R@eKY8t_w z5m*_gb0TfG%AnQrZ^UfI+&bksb!?GVlHa$dt%0py+LG;~--T}3EPPr6-;m~Rimx(@ zIry7Ayv}3O(B%O&e~>))rOr@(!<-btwu=Kt2oN4U49S}L?$NNVPK@WPK3|~8UdnFY zkTYNy@vXCkw$3h-P>+4IhG5^=6#-dXk1*c8l6$wS-}Jo8=lE6BZrBf7M;`!j0BxEC z)<(bvfcvO!P3nhnDGtVW2jN`<;lOAqw2s^dsxwEc;_h=kG~4VEuO*5bbBnk!+$tb< zQI+&PB@l3bIUHamgjo8k-sn#A*nDMhBDkv8OF#opc2oU;?X7Q6+cNlrR2@+}!Ra?M}1=+R}V! zFiji7(+dR<;joU0y&D%jvkrWHSv!)nEH=D3gQ)Sa6}&OV?*D~yLTb@ zc)uI^a)hJ*Tw=Tg)N5){V#$Uu6{(7s>0bzaCqnDLFloS~aE>Z$w@jBlg2AQ&iJas{ zC#~R+;G%^2O-=>bGLTsCKF(G|r<^pmpjP*HD*ahlZw6d+TyF zi&R#PfA>X#GHJXcC4m0KbjZ9uf<|rw(KYvqS=~C;_kw%N)!IU~wiKU#cXVE&0 zmJi}$xAFI~iUiB<9(6j|A6)Ay*75#*0Nd3}21qhmNGn?`LBh+GA~c<}jl~suDQ2=2 zvqw+z6=@eG&P>FKBx7R!Bi9z-uW?=z6Ht5R)YP50Y|l7tS|k%QYjY@=FQ?%I1(e=( z6j@03taO-n22|a04EE!|zE|`DqPC#cLwGdL)x2`(vWg(kRF)<;77Ih?>s7m8V#B5%xHaBH>o(38h}@HIa$|7-7PL-f&9SVf6+z5aBy@& z!i`?>VYqoG45CFV2tWsd&wM zf`PQ&;T)j9g3!Ks5E_QEJk^p)AvL`rx8o3u z+>rYk9VsShojaQa5Q_KKuY=!}!HQdcny-VGqQ%~&wjg{S(FC=Z(S;_4WQW3?p@?&$ z+>^;NW#V47ExK(S&4N$94>N zP@d`xJO&<4NfA7Fv(TNoUYgBfX&_e43EZ7&&R?0M_zm{u-eHl z7_PAL2*Q zDBnDnN|%r^eCQg{jM|~Ea&U%|v8lOwzM~$|I(XlNBPw%K+$FZ3=KFPYSPc#X(GUnl zWkZ3*mm0CD_~uMirs^Rp6b8ACr4g(fB$StM2l%(7A7!L?-Qrq%@z>x5C3Qt|aG0(6 z?@3jZ3F6XJ&WYDfG45G^vxTVr;>ajcDPX=_B%@p;P>4f;1UD5<^RKKQk)(7}CyZr= z_)e_`zrFeA)`wZVCnN5hL=O(xrQ+;Sf;XSfchbJ$^L@5>b7tYPmb*izNWktA{mBKf z4~%d(ic(^R)g3qaY6e;k4fU6&9h?47_q@_L}K(-1)j4G=N*bzsfY z(t;?kbwa32UWs?>%qk2%e~} zb(RQWADc*LFEYhdZpI)(gNU~Kr{)CD@bCD-AI54dR;zuqU&fzrmSb@uA5Ynj*|LJ? zRZeiLV34`TI?QkrnwhhhN;9T`U5LBs5)2^1a> zCtgN9>sesnM9)|B*A8{L@xpoFMT?b(LYI0v!(kM!(-I&rAVIakQpFR7PHQ)dMA4XL zbDGyZt+PZ}of6BiwwJPRRWIO4Fhv%s$-f3oQL)Uk_Xhn!R1fH!s&P>1mxf`v1k`HVpECK2TCy?)nz-ALOt?1k1hLN3)2hSr{zWYJjo z5K+m{BXx3)BUy1QG^cRqHyYTr|5(+Vz__SDX9JW(JpCO9hPE|&Oq5zNiL1+bKYsV2 zMY<5D2_H=zOk7@rS-MPC^w5xYrbb0*+^7s+aUAzItWgq1OY|r3r5uzRmL`7S(_*o> z&kiXTzb<)WEVo*%6b!+tDyq&$LaFP`Sb{ZknUA%gaLoG(@$Oyc+ul|%Nj1advRq;s zpqeyHMi~=Ya6?XMY>M&QkzB{m()>%^gDGskMa$O2o~aNWFl}>~EmBKYzq@%&2fniu zZ{|TgqKjM5#opU>RF`S4T}3P?yrYhb&IK0}aw^kAQN(GoeNpGD^66c&NYr%Ope9+Q z(n;dlV?6ITR+va{q^r?y(bb>7z&GqTUpqqCTT`fNm9V)~Ir8?eU{k&6IUH{H2u=lv zUB&iuL5dcJAQ%@orbf>*E=CYlTaUFgbTxR;4wyBq{hH9nKGK3~wUv%lnwSXy`np5^@*8+A5i8&m>RZ#CoR3)1 zf>ejzInB@D`iLbkFFaJP+nTOfbAAk}Zo7b2YOkG7!~;|+vPJyX~QS}vCYNGo?K`K+`RdG`Pv56HO(eA;X_ zn$r`dz4mbiY?=ofWZ8Z83L01)v}95_?a1!lXwe%`tudw0v;Y1itJZ z3;v)wrROuOxU&i=;@kAgoo-L-zbyC}&Cgf%os=)btW=*fkQyfpbpISgO)^kJ+d$aee&IV^Tv` zx}!nk-?C!PJL#|JxwQ^l)e+gw68VUtwR=yJ$S7?*xdYFYo#X~Q(D{sEojL#Ri)-r$ zj15R}2F~R++HnPtBLl+q3#^(n2ARdN@Y_whywAcp$y$#HcLcpp;VKH}&>goHI!D#P zOiG_O=AV9TP^v+_sE3I7c;k@bddZ8rhj5C|ImhE_WGnIRQU#I0+F&chfvUY6@>FLH z%hG5EZ{=Kh|Cm(|()xAYkr2PF*r1V49CHnRQ>Dk_M75Ry6&j?qCapEip3Zv$-Diia z01eVSl<1^N^CXQyQ`q=Yl4XGt6RBgTY)9r#;FWb@=&g&(F5|gDONu8>+T!f=UF!4T zy)%Bq5Zh!iaty{V6TiBP)$mWnA}NLZtHQy((ew5_UPT;uThVH&f*%-1Phb!PQzT0;Mn=1s5W_iimbh?PTOE=6-fUT#?2 zAPeK$Aj}x?(y5NruG;vN6{q%JEe!PsN=l1y+;F=`a3qF7AxCCUjt%WadT%BI1{tS( zF>1Qsf4Py>CHaMcMMkty7@ zCCXW$bCr}%%hvisdC9=!lPLMcDLz7ylwq~)@nX%?2xX&HzB~7kBFK)7Awq=&!$v4% z*TDO18goAn*j=SP9v^0|-{?8WnZc<2Ma-NPC|(r?jOOs#SauKk@1WJ!lNM^yVia^C z(#kaXbuKw+6#xE>R;Ct@ZCY;|Hpi`A)Q)!Ximlkzx2&=-CXGoqu_cbx;jE?sc%V^gN(?6~QUr>Gj$p%&X0BPWCb$><_nKZj&~*G8y`a z$y$BPT&+e=)k@O75h63vDT55x?v!Em!-%lUMW-FMI$Q`*A{zA@55cC(=i?9YZ%q{8 zP+tLz0K4{7NJ=6&^_<7;btf8ZMZ?S^*B=A?_w>T{EY{m?rLdhr@yR=FykPH*b8?ItMVz zp=9-bF*6i~Su!ib2hyzpE;$3dW#Ia-IIO)-$pS79Pv&-plGueA#Jfh@XV%^C_nKN( z!!E4}02oQHQAiKrRj%hK^z+(D3|d4XbB2*j@S_5Ai*%NVAdmM4MC%>>Coi?pmR zNlJyF#~8@pB`QQ5Bq_|^_KcoL4jxg`l2-9=jPQ-;yfm9iOx^&_ zD0%J%j*#s!0ZOx|y4b?1p9N*dNr9)&)>2;^7BSCYi58*1bR9+o6lej$Wsdgl%`fSm zDpoa@@U@86%iZ$(b<`i~sKcbh1c9`q*_-Av!eHD}l9aL>F~DGsPdwgM7b6BJ@CD^V zK8>rW=ZTEk%DIjbVP9u*_*NWBgabe`s|cR>k!2G!r!^B zGz%pAlT3^Jj74^^OJ1~j%>(%Tnw=P@EUqY4g}aw|RM{V??-NMi7t8i^)su?!(r~Rn zTeFQ>YErf6g?@yNZU=<46l&Get3sL|2)f^ws0oR0YW1ILu|9ge*`&)f%D!K9iq)b| z*zuDF)K0zhBZiJmiB|tjN9VkZhNI0-a=ZCz*AK1lj|{V{MB#9|btBou@uN#wp0u1jN!@*yi%e)`JaSX%-dtAi9R9waJ;N&f5qGjviZhU+pBS-)zu9`gk0Q@s zzDoazy6!XLC^uim;iCem#BH+mI?xEAvvpo_lSzhlRxVw@90BD_0A_Y+Zg_bXVTs^7 znj#!Mw2PCx83ffAr(pCrJflvPLDDa3{vvF$7HWCr4uA6y~s>0R}5rLX$PchF&uwY z`@8hJR@m+XV=5r9XtQB!u(nt%{gup#ra3SzP$+>#r&P4eIt^U`kGTAZ{{b^x;EZ~I zr-C|vK*F6r{^oH=IN*rkqF)uJuzHDvbUrRUNLr@4%!9E<6byCQm^X-qNZve6A9Jc- zB^2mi3)wTex~J7BGajPM#(*u@^w>Uyi)iVE(b8LnJI{|?x0bZ=sXP8Y?!}Ksf#vVY zFYVtoA`Mh~Y&TM&?wBvNzP6fHG&BV6R4+Z)Qb&y1pn$u9due%Mi>)&Bg#XkbwbmiE zho*NM&K24QD!l7rGZ&%Bx6%8#4dy_2`f(3;Je!KxZ#GL)jS>S9g(LYb<}W_w07me~BALdW)CZ4(6d(zeP` z>Rw|xO?WgF`{P&pS$JQk5Vn>jM|S(^y-nFHN_hn^0ftA0t?8%US>2zgvLUi zZ8hhwP)?^qRt5zI7*tgj$w)l;o{a!BNUovhDDc^x{wrY>QMN}$f|UEtk}bTgeMho&>jnzVeR1mAk_Tzs&nbZ=y&9A|1 ze872*$Vh6a>tT>Qht6xG`j~@~Ldk2YE+`9jts(6@Fox2#f(#My7ksQJ6OafS#7Nbw zCkCzp^p1$&`i+WjWC3hcps}{aT=`0tEpzAUx3TBCna5f3jj5wo1g*eqj`zM5Md2op z;G-U;^9qwjL?`UDrw%3sCRm{H{^R!h8~P|1JRxbNGE#U0kOgA_tLcdqv>LE0Xc$D7+qcfr<%tTGkwMHMp+Fia9Fa zsT3Aq)6P^u&d-$PI#o^CMFA9hGC%TC;SMLqN2PxB%>dv?hYzcEN77+qpf2 zVkZqnXiX?TA%`gm`X0d@~KW>^(!OBkvj|owIf;FaYKCc+T>(;|>tJTUKWI7v$MS=Z6 zKs>D08XEQRgr12zpH{-tBx)f3SIOeL^JRum2%!Z!pSN%vt2bFy2{Uw{W!^i=TJOGF zYD8%JBP*Jt-HYdMUAOzS$T|r0d$XA_d@}Rw8SVaOihY&b_iE|Xt<}SN|Mkx}?h8)h zr=kx6Y=E-aY}_aK0UaJ+i(^cWI&s#Qwx^%Rjrv=JCvZ`XNwx+9Hy?w|4A}IiGp6ee z?62T%zIkCNGumAa5XGLQv8HZoScKkJ27tPe808 ze4JNx@(Y$;^D!fj9tgWLpEo>e*ljQlHUEE%IrBxpv)>rl-%!oG0=RG6$xjRJ@BKnA N_%G;(+m^s8000Ei#N7Y@ 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 07889f76b333860de58673414ddad45445376d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15369 zcmV+kJodvMiwFP!000023hjMskL${j*k9q=IKc2;QX#3wXe6w$LGopR1Ob8sSg&CW zD2bBjLy=mNnweuk|2^n;^^;9W=f=hw_Il@t-PP6A-PKjq^_ZNRk0RccdDR@^ZBzF} z-T!Hq_j&vgzvg*9o4#)Ud_Cv8U0EMiNsuPzuiFH7I_Lc{F6;B9#~t&sE?T|ouI$cL z{$sVTim!EEm4`Ym`{LBCwng0+?fQ_PS4N;ZCw4ygih4+&AY{nw`Ja`=;*WuKa63{<&?crd@sH?MoaN zRooX}Xzo?h#$B;(>RsOc2-z@g{#mrcBuy9c+`D4imrZR&ZPWC9bJDt1`KG801Q7Vo z*mORN@^I`|^CVfzFqh65p4;*S<_A{4Z9X4a_u{lEcDrI1_ia%O&L1z$;{3JVH0`cv zSLyjH=$fkB1srMeg`!=d$rf!$+sAFbD=!_MYx7aG`>Od|9n0OWsBaU9KzuCn-Qb4) z%cbkf{SUUxtL~g{i+EG?pG8rdrp=cVsS9a^qW7!umJ{7CF`E2v^ZBn!?Vwip24^b7fZ?eo~Q?Is7bvYSNm3j;z zkICQ~B3DR_!S*EVN#KlDYr+EkbJWp@4w6|5ZCD3#TUfM_=%XiHu;kf}iP63>A7Dh>ceq1Ua(s1p;9Mn7g z*q^G&E^ogFLnKnyV3tJazw>DFwhTQGpV<(fs>`E_79544E5$8s7>2kB%FV~(ouiwzCO|fs<;>u|HyWes6WsRs7Z>nbdogN7!G*AIT72Y%o zFB3#zinLDDd8nR{Ovia!HJyQ61Q~o4F*ytUJ$C=lpXGbsOUYSpFKySft8-Ig5V~-U zMK#KEsw$XdT~Op*v9?KbKJ#AX+rIoLu5OVz^i*P`@f0;pY)pJ9x&>Gn6r%X}qpe-r z=;kL10=W{=?g$cfF^KIGxSWR9X(+>Q{X7EyZHY#vLwx6*l zm*l!L?IoWLfzKprkN^bx1z4)2l63nV^<*y8lef3GH@oqj$%{-r12!ZMGU7%?Pit9 zePL6 zd0XUhS$B9Nqh_I(S%IsR5^hi;wrpM7CS8~|sVYaI{o^Sgxj7-0AU6k@Q_MmyP06;F z=E<7}*0@Eo41H+Hq%)If_CC;@;0wLaXlJO>B#y6t^p@{hs zbYg%GJcf)+9c|~*X6BYam?T>PNZqxPs3^fPNw#)4P!zPHGjs_m0_Xod^KZV0jvV2? zH=i{aV_*_cp0zEYD$k0cg*>4YX%$EN_7>9J?PMxq`r6f6re`hp5V~kGuXyg=B)dSQ{Q7 z#9781PY7Y+OT4?Z_~3-bulq|)9=7TELB}-S6n`y?HjMb9J{d6Ac~T?w&|5B{%axJ` z84N+wy7)wYnKp%=OM@ygPQBbVR6#-)dYGS#>h!{&_Rn873o^Eo!*+DfrbIEq|1UK@ zyJ`YWI`7yGNW4Q7x&?^9=u(T%)um&v`DJ}9+OpSeFw2laqb-I22HnTu$_@?1^i=M4 zRiXD>9g#5XexTQTi6cqhI?0KF4fBr}iP6;f9AJyH{4g4)y8nuk9Wa=ye2?BU?MGbK zfWSEik0kn$*N-^R)Y+lo{mDl{M}&JjadoF-zfuypFSZBteGrYf#jAua!k zm?hWz;KR7O!}1T>`>MGHNsa2_tB>TL&Ta8=z31gbIc)GG5f>GmacXDCd|oJ`S8C3= z84xyYJyrE?@_vQd>DvpQT~BUnP!{>t!1|hbe+0huz&lMfq__CL1ztD9il zJqWuJaa?_d_3v(^n-)2jI_b^s!C|HGorp>00FtM2dx$`t=Ur~-DN z%&YE?@%C6&yO%7CMDM;ikLt>-TdHv2jYpMtJ%Kh73(=9|pk5#h3HWa!H015>UJ9uo zAA!|3=cnQ(!5a-oUQ6kgevFdFHNK0Ew%zhXyvEbex)T)=8i8H!F!hI)Yu)3{z4^~g zk;K_0E!~-3P_AP<;8p)EECI+DBzmx!(T6M}Ax5AFtO@Ko8#zJKg>F_%v6+03mD5+v zIAgv^=rWC)wj_FL@-09D0udaOk$74+8}M*q#Kug(bICx+16KHeaDv-C+hjtI+0T-C zJkR~UZ27^5M7v`HVaNKa!LkAsIV5JBPQkMg*&yhrheuI2F4ae7cY$UeDsYc!T03*P zy&FE9gnnbK$8%t>k-P{6?w+g5w{pow*p*2xBhd=Ira6Ar;?TlV! zM$qE!p-sJ&v4@E39(!c(5o3Eyd~A2}cqhNh@%VM+QEqB}#x}e--Lr9m@}aHc+ucUP zNBV2y-?4!n=|5_GF9O`Nje-(*6SWNra({V4fq>!d{|`@i>{LH^F2y6W;o1J@G1doJ z#ADpeHu#mxq%FTN{b?bq5F^N7?Knh%yE+<%yB1|zE7y>rCs!j+j255Mcq4`Sf%;R)@-uB8!>ZIG| z(^o;VX_eGsoQ#oluTo!wR(GccVBXt+`RcE@j#a(_2?uvny2-X*C(5=5ASW0J7yHW< ze;1H!R3l%+JWLZjepyfj4SmmSOwSwlVtp?~wO575-w+2^LUJg%3s)26oUG0huO_y zW5(0p*Qoo`F5PX4xy78P2#ECR`Bi%YB6Eq;o3~ZUcGHm8O8KJkHffli7knihDI{1C zS$!-;nkAb^hRS{Z1uHyUUdKPZzmt{O^!3#*Hbe$Tk|!9TMb2hmQ(Ya4B#%Yb_iD=@#A(SK zfZ%Cko=+BEAwrh;Ei{1PRC731$%8ndM2>HxNF=#A=>QSQ{iC?O79ozi%XV9IoeyPc zQzK>Rw+AV!LWvyTMp2e_whiV*Sq8(GvSqz*e8`I08EJ|>JV;OpL}dFgij=6QaSSga z;@-X#q$$jOh)A0n=}5mlNJHI zQog{HOj6>byx$(#L;bnl5{9(=k#_Y1O_z)3#vC)lJ^8Wm-!-D zWQ&ECvX)fTQHtPz(KQu8elQ?db(h1T=uo>ZKIgTl-(dhG6$HRe3~CloHR2}Up%e?d zygP21yxn2KiV?N^|C-HlsJ|oC%}h=d;0cel4`F`J%vhL)=k`ew$#;AvlU2$Rr|*p= z%QtCH-lyIzC=J-~2=1W%0Yczxbr=A=W4F!egh~VDht9g~q6z-oH*vn(**B+YD;mHD z$C=*jlgxBd;L1bkx@7^2`k|P3LMSou|HV00A2B2vCl6RGCH5m z{g3!mbX|TZ49y9$Z^_&A?G4Uk3iCr!$ElpeGi@$?-_)Iz{a10{#PzwpHE^f&H0kT(}yHJ&PR#E&ffWfF4I3Tg<1w1zY;WY5ayqiq*FPrR3!j zQikM*kbs#Yc;vSD!g_!I$g6Uf_r3W1^9FXD5d)?)%CaLY4^UZkZTuI!u?4vAsvp_gqE2nmC*T#$pFhRkb*HFYK zsGhE-=kVq%d{Fr~*c+_)k4xDWJ0754H*wzeMO${?!wLIKIPMyEzwryr${0O;NKtsu zu|7QE?k~TSB|MGsjzCF7sEr_l2$g#7kUR&?I4a<6Vk83Ibiv>u>hr_Z8zBPXvWEtb0K{Or+-#=t;zRoG@Kc72Ag>qd<6sGzzHIv*6rI9CXQ}Dm(A* zWnDi5!Xv~{K&_qyhnlwJoW)6y>KThE4+9B{?>W!-%71@HD^u^DcsLp0b6Z#-!%5;f z1Y)YHd-YRi29@-mFg;Hjz!{j>_GB1z+#ZlRj)o(+Kd?aw}ZRUYx%SBN69>QS;EMw7n*Y0WvB_ z@0UApQ|0yd&;lYb;GBcZ>su6^f9{GE`$P2_^#^JAeOpwOrTT(mCX)2qshnDcYw{1{ zVhU@1E_CXkYOW>llo3dXjnN+A51*tLBL~^OZkS()%y%}H60W5;q||s)T-b1>fuR)I za8gS9aR(I%H)^g`T`J7Y0xSD4y$g+m5!g6}%nnAtz2^YlO^8Q#kX)K^{MsEQ?3RJjEkq zs?f)DIxI{O3yVqzGFs>(zQ}%@i?M{U4UK-{_De!AWev@~_T(6kEl>HOp!Vws{2(kE^al_f1%GC`Gt3R8 z$k(`~*(UB+mIk5(f*UQ*0qK1ZpEM2t3ec9=DraM#Jv8BY`qhiygz6bp}^>coA-h zYt%h=Co!>t-)44B)K7T_D+efy7p#FZ1HhS1P47IJZ%QzXlS&I z$gBaIl=V=K4%k`>zcB-BF8u&Rki|j9WH7PBboY`(F*4Ugq^h?w;lsbHMZ*;|2Qx0fh?0)tZWe1&OL8i?7d9aInS9SvXwO=DAHM z_Np(v=f7JxTNT{_3+ye*2y!axmsflfVQkVQ`S=XtV1~#f9(rCB1OXe@2hRGYlz z??CdQe0zH{9cLqeLuiYUk{hz1C|byQl&k2r(dalx=enY)Fg&&dO28;zx(h9Bs#roF%*~>jG3+FA|{Ok9x!) z`=tEai^N)x7@?8JWLXHI-;_yfI&l+b6XL<6?*ZHD?24-B3m(8|fVj!^`9`LOeSYw3 zh;xtlqev1XSn)d?o38hV2DhUI4@st0HZeadQEZ9IXrRh!B?W5?)lq#+LuR!}Hlte< zZu4aqY%iN~OG`(-OtLIWqsep;rJ)%=l$yd5yS~ve8_G6_gnwvW)KI>9T`-9TsWXqrR|K{A)ciF@n9?hi z{tSN+^N=JdWDpA3#lgAyT+0f8&`$rj*V%H&9x>G^A|KKgrJ?V$Fy|E)_S zXJGgXqSqA0wttZ&M*k)?Wa3S6%sqtj1tbZI6UE>Z^rF7j9q7fi!b zUe;y`-uPz>2mKYp#7}EEVAHa7=loFC*bq*}75_FySA)-bRzA&9SnDHf zeQqBhZ7lhb(1Z=nP;(b-(i3n^OAE+nElqgEW>2qyAu#vQn8I*%)jJU_#GSO&x<81+ z42UhaP?xsLW~yUW2?~WAPC=ZscuVZ;KT|YF`%BZf*7qS6~sbj+<7QuN7>y>1$Dq zQ2l@(bDepyjWp1*AQ?;$#(uDcXRwEbO@vO@6YnKdZwT8S3~i<}Xz22QB18d4W85HA zta8Kqfvt4#i*>DoU#^s1aq&^qeJ3KAOprkMn+cl1*T@b^ga;Zy5rd6=?E#Mqt%Hd2 z9@c?C1rWc%RBsED6RjH;oFA563LbdD=2xHRwoxcK5y1=Ph3a4<4#we4;c<6{YyUp- zdesd&E>-hc><0FC{84r#D_Lsa=d2mu?}h+5+a97_;%2|^3Q$|iczl`Xn*9`W-!?_8 zl#??k+k&bLWqmB#vR8)x0}h%+)syVc{CWpe5=l`qtsTIH14l5Cj$P{NL4SWolT-Q8 z`+MK?d37D>06$CQVrk^k_Lad$2mgNa6iXfC}B;>x}N zNe_!mQW9r4##`cre&Fi2b@3fSA>a63 zJ`%^UeBsB}e3oF;PLmenu048p=kdc@mg=7VhQa-U*-^oT(9;{uiwt*5B|PNF!X2gW z2DS)8mN-B3RA5P0e>Il1AEmXjPX4+p?O`F5@mggck*gVw$NCe#0)P4E?y}#PUw;lq zlH_J5vTQU-67BBb5pvcQ1>cP;DkALoih5HU_Z_=Lw9|+sB0X+)%n6wSRjNuCfM7)n zmIZnJbfQQD5O2U!mUjS)7$TDBI3VHNEMmpqjUDShlj#aClG`RlZV9`gNs+gty>gdP zNfqGy%s)!6r`d3<@{qU4^IIEPz=A#9Vj{A?Z;!?H`=JFj!Z_3cJf%?s+5(I*0O8L6H zQR2zYU|iI6x!LWPW1yI~5aiGj=(UzyZF>F++QTM)nJ=Pr`4(lfWi&}=p&f|{{%5h% zkcsSFkdt*^v?sKS3)6Nqp(;p>CY87G0WCmL_b=&mzAFyV?~@{*7jF^mVZj-N0_?W! z<+RZU*0Z5nyiU~U@v-T@H>wlb_0&w#F-@TQ9M}jlFo3f<4978#HuuF z=_=tHrKjGBf zJzbs!`Jq{}lPOJJJtgwgAK|B`y#4OONO@!pkMM$#<7Pnx&N}cPoDKj(B9J8Hh+i5j zI4qQC3rcJHbuzb22LT;DkvB2e+c2GMP%;?(vNT6;-gyTQHowqd&VRDr^OYCqYKV?S@!|f_1UMmtoydCyK+n8 zMb(H+;<{%LwB2&^nqRXd5Y$&N5eh5zvH=ARz$dB9ft~y-^wb$|k7c#H%IFYf)X`I| zYURvngW+tO%D(=V2qe)}(~SfSTc9nc21y0MAt^z~gMidfW)7&%PlXOe(Vnz4MpB)M zR1T3!hM-HzKUY6cyfbPZ7gbfByRsV~v=V8pqG(zNJ_Igwp~HtRs;LGMTL<`$3`?VH znV3txa}Q&7O#>Syuj|4>$4G1EYO({@xam7$3eGW6~Vz3QZxD)=F+g{Ml z&zS8ciO_#0SqP>PpPJUd1wi;qVzwG%isR~jhRekB9apdoCB(90OG#35k<2` z*&kw-gO(+)B&aU8VSgJikXZ4vA~)O)&07}-nNd(2Oc{z2LF^${%C!URx}rndFe?~H zeh;STT1xk=oXG%X^j^?RY70Y{;NWc?{q4vjkuPgk?g6uuD~qv9C5L@F$>#n%WD1gq zO=o5;brgG;i5^}IAeGnB#zJY7rZ*eN7D_$~d0wxs4P{q%z|)AFI^%}2EFI!)-U`dr zZkcX&sH7{9ns^lK$MK1JafYwf!OGL+>3|T_9;qdMIAqOZK$sPMFjcH2d&89RH!Iz+ zqX7CsOHzm@f0(vTlWhjz(Y3W!^yb+)@t-2>lg4#U<{%GF;uuX!7{LG}^U#u#i}$tU z9dqp{{I}QrZ(a_Tcz~xOpzE`yk0WF=NNCe{lkhf#t)7pJ(2S5Mm}raw5JGJ`L^!qm z0BVNinGP-wU0RWLmS#Qcj!lc)efNz%kiOl-F2Xx+$}*Zx&q`P@VtsSP%!Mrhr~vwQ zi|%((8f$rDm;%Gcb-JcEK1+V zQrc;2K?!t!)fYg2gdJFtA-VUbE*Uz0);T@z|}9_|ln`D(YTfRniR_>4$vyHiR! z4;>zG&o!s$hbfg0lapM!g+!f8HV+LtL$VxzOFcu?p6K?59Tm%s121yJPv4@&68(3w za9M5ank&z-v@~ka7IhRi_g2J^@Vnqz*TSfDrQsM&i=65~k(?!d(z9uO3*un9bPI!# zQ)C;EgTWfWyi7>wnVW1dVB5a=8_`Wqbbi-6!zUv)xPS=#_S;Gp4V@yAXgbBFBA>fM zsW}3Zrgz^_dPAHmvOJxNmiI>K(}CQ~C6+it>zkm&>88*0>utgT(?CdXCEOwLyd}tU zh)8Z6KDWjM+58*HO&Oocua~k8y7sWKH-AmOsUH~;NQ*F->rFua`8UXysVND~AJ0SN z&$rSzNGEf`SL3qAsrAcxU)E)hE>%=PXEgCVxF(dpPx!;8ilBoKD=^_p15BoZ*TkEqk5ugi1VfD3OGOns&q|e zw>hZnHCaMk6Rs2MZMqo)hsU_SUA)n`KgSu|%x1DED3s0Ykef_VNiB#)Gs z%bJ?6KsgUXfDKez1vVfH`WtR?$2n$sfvcuI*l4;$&&nRnBc&0x zZoALq9cS-9cGBDR=9F^t80WLM}0PrF2;QT$%# z0#iSZLRk_FKcAU6iap%HbRtaQ4vu!NCNSK=^c{vfn7+es2b}?6ivu*;m+jxNxfx#uZnMTWy;DsC<8a?}~HY<|v)8XB`hUPc~PF-e{sb zBXpjF+njcJl>`f)?m_o)u$0zS`yzJXN`EKkwrcWzg)~eZ3@$t|94Te)803-hcbpEq ztiNA9inyo*$8C1Swjo8`iLn)!Hcb`aLDDt@j-c9r6;pF|I5jJ;^3Y~j5|A1oFb){q z)yqU^zkasK`}8&w#Suq`KB<|M=t6nUaV#PjxjTONS5Su`JKp}$RN@hJEP3&s{)axyPYj>K`;j?cn5^rD%(c9@bV zk5bHqgkfz7%=4u^SB1%>pM{)Gn|vpXgB&JVO7uz8FCU+cM|x!eq)L?BG}7g=kV+HI zseu}9f%sI^7kw?Dgp^2;VF~pw;|3EL10DaM&s=mArMA5pekx*G$BX0x1CbNe?Bo8& zxiDrWVOzZHtHQY_GeZey&ol!#X)+yk0T!V-OF|SMHX3RW7>>Q?19#>zzWgksR7iv& zh+=OojFuT|2=EvL#$|^Y1Nr^E$~Q&jpIZa?aEuxTCkIBCD$ND;Ec2S zDBv0DnTc4uk_PBDqoLF9F(Y#Jak6us$Tz(I_Ed6=!gK;7aN-$-`IG0|l?g>;fCfKo37|A|K}2=!*mD|5CQ=hq*LnEZ)LoR-91YxV%1GP!MeQ zS@zqb;6%xCzIfdwxmBEnN~6Eui8YHm&a^g|+ubJbl8H#O786htqw}Wt#|X>S@?jP& z@UPV5-5-k+Dqws#R0Xq$-+qsO{Xh6eHuQX(&fbdMoF(5}B~S9&p*auQ;=~0G^ta4p zCeznB`W5KB=e9W)ZU1AX@^2}#GV_fHI0;M)yV`_b^8@4ZvfHuhxSve{$d;{bB=`fj|>Gx!B>)oBds|w>Pw>m_Zj0z zz#mofy<04!cru?ylk64k#Cd2?-3%KK<&Z#-Aq(P-%{j z$Uff{wD>mh)6!r?pdl%~ZE0v6bSf{s?&obq2bTC2W0-s zBt#vcTCm(fFZWDRT>=zS0^Q93&O6Zxwc z8{^XTZP9O!m{tkYD0FcYIP$13oHKi#aaDAOP*mE%dzM%Pe8}RJ4;?8*nhO(K0ug^P zUzlc2FXDXD30z!d2~wk94DQe6%yWZuJIQ-aag{T+cc+)fPQ6UnaWoll;ErcFO+7l( ze|(v|X28@IH*JZOy}mgI^q3jEx7QAis<2Y|Udpm4jV99ty52vrhIB;EwG4>pYdL1Y zs2wxtH_m8~T0F?*!6ZpuoLc3HN$!)kFy^24fyKS>GpUd!C$HEb3$ANl(-pq6P>z5{q zRmx)LHkT!V*5bLrNCcCO(#p4{co4fe9YuzUDj^;z}?u{NZatLK~Yk zFD*Lv`ap0QS<+U(gw)KX@+wlO243T8jaD5<8Mt;pKxz*mS;yHGN;{FOB@7o9W7okV?zeS$N3dx(=t$`F3Bz{lMBh9Eks zMt6D@fn03I@iqufpLDfM($@#L5 zMHJk}QPME}Yg^`3)a7*-cST$7ee@c=M(#~RkUSZ&o{{VRB6+5h-ExDeI(lO|)``=#TIie-Fd*9|L@mDHkvB;7n zg-3LTPX4h!RrsAH7~FMgZ22^a$bToVbB~2gmYyq_Wy zJr?;QagpWF-ji}es0Vn&VYH-sn9d{e-^p_BGnJWbCey(~v<$sB>TmAVtCDG~SFdot zjva#0*oQ)(a^RzA&@q5h9sX=^!~wYB%=NwGmLaf{>&BRj*0QbJ)8~bHlEOTXf2&22 zt<`~@#l=18>t7T2u0pyh7P3d0SY<=aPv~BFp97P~6lZ^#nETdRvph}MxdAKTys)i^ zg%;+ThUU&lEtLH;1WB#c$n|pRnbX9nw_h4o*33NF%MtMLpE*n0`mroUcxjtY+ZkV~ z0R)gYEzJ(UBUw|nH1ZLtQtild0O*xv=HSCo^almFu|Gt#|5XvoWV%v?E+QA)1df(IfM=$gTTN z__|0zPB?Fb&v95fPlFEz?5!Oll&qEG!Cx8N+VOA}im|%6%z!el{K#Mom#3Mto3Mhq zt!>k8tQCVv%4*IhC0;-hc>xNzJ7yt(4rKF=vs;jdG!SDyDiWX66fXO`Dz|E6@mk3? z04n&H0=h6BHZ9y5gD`Tke*^P;(p0d$$*_7N8KT*;Gslmgca1fAm_d#->a5J>AD_~L zsQg&>h{0}(Gp#%cT?z7>m;xyPv!JAi4IUOJ+cAO61HI2Vz2wbTADAkcNc>s$$FdIG zb8z{^o83q68|Y3E$9Dm{%YI*e4N9OQrTlGzp7OlSa%O8i7q?mBDfleHeHV^FjMGd> z%g+kd61_K=WIX%2jMwCtBWb?_cIPy_eFaZ9aK}DQ$r4jZ%Iu@Q;|M3&rbvXq(TK^u)DHK8_q+ zWc1m!`GE%8l_H@Mp8(DFgA4;6tr;WPwoTU^^RgW?RG_5mj~?g?>W)4LMoyUg7%-{w z=wqOy(x+OQ=W&n$QcCsHbQ~y=l-rnodLZBVZPZo^L{c=}AR>9x-2qjbh)>YB+aB`> z9wfuLpWWv+DNg792R5P`%q*C_5YDqo|4W<_euLQr`qxuS^zirGge4&KdCKClE1SuX zZD(P~wlH?EDH{wX>NA>ImIk{d&*4QL6%z*RSk`V}0`pZO6%)d%kAYZkAe^2OlhtuW zTJI(2Rg^_E?PP+l9OI>g4>Yrj!<$y}X#>|#0O8s67nuP__QPW6MyFg?Xh)|@>_2zO6F(_==&-ee*kcc&IjqJfsSGsZ-<1UkxUOQo zbYJ$u8JB+ozv`JxN7#_8nM?%?3u_d(%-jdqYctSHi|71M);Z00=cf($*LMQjG&2aC z8MDoi^RJf;fXHEpcUs*O>d!hnQ>;~qmRG!MKu_{=#t*z@SEC9ef+wgj$RoAG^g0UD zq7AC@I(X1zlng;g{63mdMUL7SKz7!tnjmeuFkEc%Yxe+SLueUHmCQU~Nh5I&iA)dM z7U%HH=wfO@UGX;iEd@%k9$YzxZmeM!n(BW6BRceuSELWXE z5SaJFksbii@{9{fRo$ zF#1gi=^Y#A<`-D$qzI2@doWh**ql5$QrIcDnL%kvo zu(ds1g*v=PGrdgEKok-zS1oCvnfX32SIQbk7H1(PwbI6^*&webVgqQ}A8Ius^UI)V zsyNa$4N?;6YRLDKEv=k@DQ>FXFrvx=)ZNEMSq&U+egM3QwbCDL%#Jl0M9aCBqKFmc zS_#I~K%VpdXkSj8rrEK01MzcG(l;OLp)gh9jr2fXEp4JwvY}z(ExnD(yQ2HvH|Myi zs~-cDborK!K57Va-_d0Qk8gOr(5U1P8CdGXbYgF}32-;V3s&Vn95x&xr>cRz*(^$D nvnWG(>r+E|6Rpw0=-|z>ue`mzy(#.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 0000000000000000000000000000000000000000..ac0224db048a6bd77131bae4fc8dafd3eb22e534 GIT binary patch literal 4772 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c5675cb405fcfd5c0c6ed4adf4b3761562a37e0d GIT binary patch literal 11727 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 literal 0 HcmV?d00001 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 553a3a52bba2ec4be1155bf5c7eae5d33fd8257c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1836 zcmV+{2h;c;iwFP!000023bk2DkE^&A{wqkONI}BLj3Kb;ZLeFsczWuEfkWahf@$Ma zQMZ);-m)3uFl4yhy|`CYjL-OeKIa%aEm`&sIm%ci2(5tsKPQ5q53~!jY?piFkM9$$ z&=Kh2C}IcWk7JV4rY^}>T$Iozq@;%mQ30nW&Y%*&lRwXmpv9Mx36&Uru319`WmU|f zB!YfG!ajf(CHstzG|!<*Qj)zNI6GH){6Y8@q4a<fs>pEXe~(_R-OeUg4Hoj zN+?8(lTVt9qm0KUxyELb{6MtIp^cGqvGveGCFUxWVJdz@h=%PBPEMpnostmax=m`5 z=d?P+E{D@XD7DZXo04p?g*TQo$+8_&t>&E7sGy|)9;fA*Z(UrsW|A_V14lBj=O&iF z^*_Z<-5L!mX>LpddMb&4|80?5x2Dl#q=c=b zvag#KO4EXgX|6fvUd`!=@UOv1AMc?k24=k#MRBnkLBzR1q@pJxeOfp>2tUvYrA!ER zTEXrphh|G6=2#!jA6m&{0V$p(x0)OdCmF$NMQFh)fg1V)Vqe-cI2D9hm?fh>adRZ^ zFm5y4#sJa)q7`CiVbH3e6%~;5tWpf?0=>ls))3(Of#u*x{j)vO99>RHet>5v(ffro zQpiUwYi|$|*UKh^4)CTwt2{~V{;X2ZKY5Jz1o6hxL1N(+WAZ3)@C;)Y8``WSU2Inp zbA?xO&5^yANxG&bW#=l>^5WRRa%Qg3stPt&c9mF=9Dc2SuQi#yL@7>+PnkH5;sg~X z+(VT@y8838i}()X1&H3QQ*%mIOrS!QEoFedV_G2nu0D3Gwcf&A=6b}`WumO4bu2|B z=o8X+D$w0UrL3T3*=g)foSJZ`#2A+xnvBzW`7F3b$FY_3ioHYiw8N$Nu$p94e8u+u zK}nw*fZ(nT_CA=~5F`r+)@Z|S#Rk+s#;Tm~FY7G~L$gP&_$nc$f|NA79+jCit(hBk zL&gKCJNH*8C|^?bG?xD@*nF`&MJN?Z_3^gk2U>UGNb0(N-QIvV#Q25EH7|uuFzXF& z>a6TA`-aNLb$hXg+Our_&s3@*Lr;o)rDM1c%sYvASi~19_d-)~u~V^joc7S@Dn=wj zdxWz7hsUAQorY7s+JQozQXu2-s2gx5J1S}Q{_pZim%LV}?gCI5 zokPZW7gdFIomT!T(^rlbeXooM$=d7b&mv*fxxrgX0)iEH)=9CDO?{R7t6ZqJ)OdcxJ; z_lB;KERk-KQLiyA#`AgI&fKKo2I4w8sAq-LVAF-e(G{Z{B;9c{2zA$lMw-xQ5E|l5 zKi)|3Q>n;p^pJF;m4_`Sbgi(za_F>rYg&CxtKVIAbY0Wnjl19t@<(_4HNiVg@NRHN zO6}Znm)vohg$ygU@0^Y9POzpm(6k1cJI<(hDLcqpieqH$vE_wI?=SE0Rd8~G#<-n< zzwyQrOzT-V6GXrk=WsAD4&Ka{kf+w%rL}I!yR*$--xe$_b%y8;Or}NYfr~d*fHzh& z^+qcac&b}3AVJ-lmvD92lgqjdOLY9ctK882xt{#t#Os@?CaoIwIniXNcWcnJR(<2m z_wX)WE}QDY@FLjwo|CLa?()kCa!QQt^%`>*Ms;g`KfV?nXA#vG^j&6GD6i5oQf6C8 z6$2S^;(7M6vAbHt+SQ^OIG(vF@>G}d> z=cU&_`efMKyXvD)1inx5M<0E_haKeR6JKPeMNzvRfAmenF`r77^#B16eOMo_t@|^9 a^(-nLPY8Rw_x5}9a`_vvW!AMn8~^}Pe4>>A 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 0000000000000000000000000000000000000000..d0f7aaf4f8121dd8cf2e7c6a8c2dd3c239114bf5 GIT binary patch literal 1580 zcmV+{2GjW;iwFP!000023awa8kFz!q{wqkYA_WN}8v;q-(reFE4^`EJfgy1hY-*g{ z?5^_PE1N(dd?b0>%PI?I=9%#`Gmq_Zp-?VPJVUAAiZTxJ&x|UH-chj60)H2Te|?vX zqa(1xQAGsf_hX!~x+>^rloxQ0X~7O0F$HBErN9-)`0rD#SpI2j0$1(hO4Lj-!6OL; zRqP#N@eVRC#7A^wSq3~#X!>@L8c+02HG-&FwBV^n}4rw6`WQ3-uHd` z;@%9P4@s+PDx3}mO=?k`6vRqY5snMURfOXYmZ_r-bQRx%Ud3OC@eIxpA{TdxK6!4to!Ly4Fj|4icVyxh0l1wIH05u>08`oG)lyY zr_impyxL+sXPl`a!)_fwF;&2TV$*QkT%5+)j&dezh0-G{vhNNC%0Od8ZcyJ_`2s1% zQH{U!g1Vzl5T;=oqYp^lm};QrtSHdn{c~^&I*S%}SXoIAFrWG*<}~Dph@pywFK%84 zsu(}a8ST1tb?&w6>Kr41MDjPJI#v~3r&~Pn=(hRB*KP0p+5%bwVjPK+y73@qg#sC6 zQdC#cuCYZlWkj;dsAFr* z@Or5`c=z35i}6%(FAeOUt*H#^RI+Ni3Em(Q*B~&J-jc%&+WZu%+OvhGDA1geDwIq|G@sf<+0(% zGN4ft8Kgos2{bhAvp>MNtB+>T7<9ubBEhgxzs9YdZNFAvcU|5L5r6CK_m1ZWMzHtx zX=jAgqf=NXxfV0p68YuA9G@V%Sq%l0z*YT!oxLi-bVLZ=wbf=ryAwvwZ+)Z{Jma(% z?R}<4C#nFi?lr=1+E0Be$lbJ3xVQ!oB6G4O?5P&>TPK4At0o3{j^a-^k#dRw7pY%kx*}iFE_3Y_+G%+TWP|HIt zTsuZr5^|7rs}R#8ln`Z9zKys&bF;i~-%E0md)~Z4hYf5Yv!A+*y>H6h>HP8Wn%EC` e{Se<{nmbG4{jnUUgc3^a%jI9PHlRk%7XSbxDi=%u literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..89e8ded010db8de7dbddb4fe91ed34c90ef8f1ae GIT binary patch literal 4949 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 TNgN9e%l$|xJ7WL<4CkWn literal 0 HcmV?d00001 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 8662d1b3e9de56e99eb5ef217fc05d68fd125485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5140 zcmV+v6zl6BiwFP!000023cX!zkE=S8{wtXqwRAEv888@3BCTe2rPa=d-C51md~O*q zglz%{NO$_S`oFJi^J2gTl6z*9R;v$GmCNO-a=9MD`Ey+4jS-WOezkvH)9mx~za&iK zG%U__6`pQY_Tx|NZvCh3y770K+%i%fqtLZU=sU-cB97r<7Z=r)G(Udf|NP}}=0c;i zE;I6Zsy|5iy(eWk8tX6bG*2t=Uo?BCO&SvLmntP0s7YQMHLcS4Y<$q*Eo}_WRbPvu zxukh=B6*XNEG0FK&c?O)%_!>olqRXjXC0D^o*Q~^43ecuehO*c(CQo(Sy7$#FtjN$ zzjN~bRgx%TT(()>*@YbuntsqUxilxwH0Mk^a;%D5Ln|Xo^EZRuN!S=9Y|?l7)e<`} z@Ui_J6w&9`l~hTZpUiVNmU#|H_?A?~Esuo zIsN|QS7()ml*T1ZE*aCYmC#fquS-(Vyy>mi6u0nVge1#~TO)*=s-kGV3?oQdJ|>@3 zMpBU|rFrwiHzS&WJ&h@*80@JN<2XK?4Wlf|l2!xbrOwC?6PPc+GR+ro#1c_`AyM&h zGI!?AGRyl8miJwi1e_k2;Ak=0^hy$HlofqX>4y=gSwpK+P_a4Xw61?}BEE+Gm@^rY zA%!@Nm|K|@Br>wJZj6vrk$xJUn!KnYTAi%&zN?EYjdpt*dNd4?siwYnCa~Jsqw>CE zf9v?thF%q;5ERhZo6tt2z68Z%vlw{#wP9-U)tOmUW{lH}8fjSMou`TkoDG9!9br_F zBw6we_n@X1^R>(Sj_F6E-QF>M8pjLNof->-m*Sn1-)DZvR$+t11y9ALz)(_-7YP!0C+w7!J)`H7C@-TCiTN}1~ zO;Kb48ODLO37}&E=y>3W@B)Km7YmyJS`a|!f};cVOno3=w%zr+JyViJ17Zg84j|2I z+OS|L?>loh^&ERatFh4_G%h6s%B=bP0VrT z!vsyvrZXi)YRc)>JEv$BT~S0MzPIkIjBu71dgJg7&FO990n3EIf{?rPig8?5J%p&I zr}JX2)h_}x0WyI%sajeYVNrf|c7ri?Lw`n6(WdHYY~lwVp3y`kPljDS!mjJOI-}xOVg@H-&L}{r!6AQxX zXef4eG>8<27>f2*C<^=_vb9t-4U0S?!~Wm}#ETgk8R!V0f-G3&u@ylnoF)f(k8sn zX^rMvz=9Z94whB#iRWo?#NcYhFY-ZW&PPJl{Of&*5SuUKm?*qel|%(&FCwm%Y9$$3 z(BY@KcBkpio$SPhc=5^Rw?ptn++k#vZ;IoPg%1b)xUyb;sYxiHf5bk3k_7V0_MNd`sJ6jv#8&0;~rEk%+eSBtBxij3u|T4ZpL zph)4GCQ2N|cI?Xi)TxAS@3HOvrr3ll5*c+vntCPmt9d31v5!qkcuz?t=Y2s+D&8$# z>MPC$;+%Y-QD1SI<4vSzoRqXHi>6UnUNyK?f^@VJTc3(RYYST^a?ui6t_@~T@}}2h zdClAgw6I7K;=0R%|doej1M*T)J zIx0{1)MOv|UVTZg*Is{R{n`fhtq$XarQ?ilcJ2|AJ_w~@>d%g&o|x7S*~bZc((+c7 z89nU-+mE84zZ{Szyv+MWjt3y?N+Q^`0hHu&YlZD@teJ`Xomj;(X{q$Z#kgQtIlQ8& z^saM|jDau}&A9)pAkcT{MA@Td(Myh)`}DPE5FzY3Q~QwK?E)WrHk{lKGq$gE)hNWi z&&!w#y;7qol4L03`{T>#=HS)+eIZ^YLQaPoDS{*~7)Z)~7h*&> zoDgRPY0^CDnqr#Ts_nsoz3T>+*h5F0qbxMKGYUUz)Wqvn);Xw|+Cya9*>qH_XvWIH z$CC}q`)qcis%dW}8L4Yk-%T{?y4$S|vlx(xL>wx^M5fS)atFGxt)^MloKf}$8dsKb zZWH8fwWXM?JttC6$2oi-BT~I>z^|>4eE{=P6?iS{xCUHLwb%q+n?mduzE(=w0AZU) zcNxT%r?VBn#xaRPyaHbva`$8(T2T}uLbqYp$^jJE^`i1ixV6%pi`aFq(gJoZtFs-q zUXnc8mKO+DaO(xm32xm}uH)7#q-xw+)It^%*u%-*nj@W4{CY%h{~Y{!B+_ZS3(&$G z4dYj_tLRR{XFzSJoH)d+GbFaeSq#E;z}trc&UH+1^xX}Bx9zoq!>*^b26)Tn*Z_E2 z7y)S8g5G@$@P>FD@OD{i(gh5+Y`5)Y#M@^GzrZ+;&|T`F&yuIQdp^qJ%Kdk#g}%tW z&_@qwMC0fIxL%KdF9JC;w7ySJ8_|0B1Xz!s1MA@iu%3G_u$i;C85Q-SbVguZW?tW5}S2Ioz85uNY7{Yi9QCti!rTTg)V z-9oS8@}~bZF5iuTmr;2?3?up3MinaWM^PNm6;wVp2_|?QmB-!-aDC01Ye4y)M-@~n znEZnV$4>+DYD64u1?2JX1>}{_1K@`MdHX>?Uf@wC5I+o$=T{sPh@U6nc(fIdx6l)K zy!{Lw|9jzhYgYJaQ0;weGHgPRWe>Hx7Qmhzo^;@~fS)`demV$!1-tew_EBTkz48n2 zwPCk)j0Lr&>ne^t7NV+%Rsn5Mo&?Scpv{VI%d-JAyW(yU(I$3?DB6x_2RM>JbuFUZ z%bgfzkTNwe{aqR8vOIY?ST|I+mJFbHq1okjup9MTSHrZz#(v~gz0Gw@6_Sp_f zFPLy6EnVua77atIZ6MD!Nwfxmi{c&u@v{*D592Tl zL&wv=r2Tna190~D^)RXY#Dhjk9J0>}+Rjcf9&qgLdGS@KebnxG6lvdnBz69EF#Bjq zrvFoLc1nFh7I5|m2a$)DaP}Yyg9tr^bJI8`p$+!2O-$E(2Iqzm4rBB8JDpR6uM@>nd0KGLYUoNg?yNOzi|JdNien`kHf{rbufMe!y4I{l5FEIgY2;Qd=< zwe_$p&K-%9zwD1pb7i2j{1yX)lqK8vKI?{F!N0S20sJ=!f93!D&mwQYuQVy>?jL^z ze=mZfDZt*0+EyZ@m#D!&jRqYdlE)Fla- zV;oU=muGDl^(_o(T`Nr4PQ>*>XcM*34C8}Td73ABcIpynhdOpzRYj#|j*%O>BWCs( z$8HoQQ%{>8Q|4i_bh3IVWSqlDInl?cDc^M37dUjMIhG-%xH!F&>IX-{<21{J?gEOW z)!{sjeU_+(*mjwm={$OAaw*fx`#!chwJGSUd(TFk(fgUd>VlVmb@#%Hgp?;--p}JH z@S$5h`fIRPXMS$osukZGlvaXAX}tduEQe5Xsj%U&I zX15BgYM<0dV~Nk!UCuT(MTupPIVanx>^_QAsLY)!xvw|p%lxHJ6W3R#W;q5pMct69 zky5WLV>eUg7#7!(gpH(#+Qqnv!?LQAKrd~gYgK&o@t#y^bY{PdhF;5zh(qt~n%Ad_ zmXtI<7q-^V&jnF*fsChqjD2)4bK8>={8pN-sWB!gR0 zT>26#Af3j{L21bs@%UUhp5};w3+I2mzIHnIFEiU=X+{D>d}Lm1`%n*k%hPFAc_7sf zRpCN9ovec@R#pwC4|MrtJPP@RP!)l-6NUMI9}|E{dU^{Blc@ zG*9^ZF8h{_ADIgye9#~w?;W+}1emxowLT=D+MU&BJ9U7rZpy!7|KyqPk~Wlgnb=Dw z`SEj-k%Y(e7ipHIWu4YTlI?dL&-Hnd-8M62F)jAZ(GdtTYjx&Ql&t51waA*!(-F6M zoN*}pyt7oBKZ2|X-@erc$(=l0C*R^Fu}I%QZiWTLebV!t^c<%a9kr*#<128nrMuSr zLW;(%;v4v@U1GT2C1xa&AzoiaV`^%U?)ulb!^9CBxgoZLN{Of%?Xuc?J;KL3nZ=k~tn=hlM?zGzJ4Atu1MZ+(@ z3^OJ{U1Yb0o?9cD=RPpb!chFri>Q*UNuzi^#;Sc(Q&&&h9#5N@VLWyALfrY3yCY=h z32=U5?F5LY66YdqQyTWU{t@jdNVizrv3BLh6aR^;JB5$*zgN z6dW?fIiIem&?nD*9+qHBDKJLN;@V+F!JT~DxYGOv9%Xoa7& z%zqoMy}pvFDn3pDjf;v-1+AgO-+u%=jb55-_Em>fk@2TJRL9G+ajpAW&8VBtj827} zPTdCIi{j!{*V%}Q>!Y5wGD6~!f{(_=5y4t*?RY~(G4cY$@aDvm@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 dd9fddda970ed8c24203dee51195828c1f24939a..0159c3979f3866d5b024c989e54e9fdd615853fd 100644 GIT binary patch literal 548 zcmV+<0^9u`iwFP!000023YAn%Z`3dl{VRhx^s-5|-SkUJB2@^9aspKdZpg7GiMzHZ z*pn>z_h^%C>28I9i=}7Hd-L%;F5YNTJoN}2J6jd|6Rh-YDMVFtD0NjhWC^O1AtIMz z;3l~dhue<1Pw>ZJ#!`GszT746$n}y#VFt3cSbADL$tI2AQqhP(RE0Hu3ju8@ zj3O_f3)qw*i!9lw%%L_iv(!@B`}QbY_Pxb~X;5AApHwH~_Fp)l$Wkc9+a|B`_4;^7 z8lwuPXS0`ip3{T$(|~aA+7Ckw3EY7rjln}>EJ8<-jc=j1k{b%{SaFNfj)IP_j0 z)se~yjFasPs4NW{B2$p3j>>^M3a^Ae8&MT(*kW~5c#$oa#nK{ZY%uIwZZHUlL6stV zjG5{NzfDH;nnFykF7nMLU)Skl6jhNe)W1o{zE3x|8*I*RE>DQFUk86wJk8eJDxF`i z&r=nnSZs|vS&SVbi`VRZqKk{`{OU5l`4cBwmZ~N_RfVVL4mgl+tFL$#5F&*zK|L_U zd1Bv&pi}r{QARvqFbqtyKgJK3 m7TFmDZN{p|mTI&4kN5>N)eUMh1ONaAKm{@Y literal 519 zcmV+i0{HzOiwFP!000023YAmAZqzUk{guHSdf6mfb}2=2B2@^9aspKdZpg7GvAd4P z*psaC_h>gu>9#_^#nO!Cy_q-9BVQQOJVyk}gKy;F1+PM13(-i6$~1C7R-mm)8MziC zcg3|hWi4|o@W<$;T6`Bh7QGlkv7`PUr2r{@4^le`dT&*r=UOoXH{W|%h^V4qKTWz*))|aKuSuD0@o;_xZ$l^Kr&`7;DS8cb^f5KGD zfwW}iMh1FNz==ZNe8r1|kSV1Z+L0k2H}>5Py&YRHggIO=>?!RaCW@H+4133xMuv}S zQg_QDFsRm}DdCexmGKmVV_-V^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 b52a1cc072d8ebe546f5b9ae78a90050191d033c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2559 zcmV|vViwFP!000023auGykK4HMdw+$OmkUIIRwVhYg%a#-?r=e~NYG2#0*0|i zOSHtZOd2HRjjPpvFGxzZ{M-cX7n>sI&6(j02?|L%QVAL>aO+5tFQ(v$%-1+x-e(0{ zO3bzed8Df}E9PJpy$JFAJe@&zUC7LtPW|3!hRVS2g^Pm4igM-<#E^oea>j#R&xc4k z{>1nCutNQwKiPs9}F*|R>&WZ#)E6?n(~$Po;RFaT^|RdGorhR!%%tGmQ@f{ z2-f*jRq%F$MTbVp8T7sW2qLV9!_jaI5s#G9ANV~FA{i+s=m)(3-o~6s)ybohCLvH6 zS&;`Umv_mEGEkv7nu7QnKp@@%1O%8N5lzj15lsPK*lBm}%rU1O9oAq!mODl~Y@A#@xVy`5$*m3M{W@0?>z{fKoA@JQESpgLDoQn`_uyDFv ztT(P}Y}Hjp*RENIpsFAYowG)kn-tXI$%1uPTywNCI3AMjeIGhgy8(}u=%YnRuvms# z@Ap_Ns~JR3G*Q`3vW(C)Q@hU%B~QQbZz1qHUMJ{xf<8bCn&%;4oDqP4RljS9fDi=x zshlzr<249@-~~$#7yjau?N{tV2;xEr!qmOi9yFW$aS0u;!g2{vj;3ttTkr8_(SBKw zSOHXOIRV<5-$pIZ`?;l+`LYT;WmFMRAy(u$>iV#@uAyf)7@)G=)dM@)MZcjl&vCp2 zDE_vy>N_y-eg+Mg=*-?S+1YrmpL+0hC~ccjskk-6~WWmF_F4xFBvylp;d9g)|rsJR!(t_3-8#TwKTouByZgk_L*4pl~<`nbQiYf<4qVD(10J`zuCAhD9;Q_kwAq-pWcDyY! z@B5f(B8NhI|6eIR2&<|>X{4NyAN2jEFj?!woVs_=Nzil(1Yrpg0A({Y1&@z1=4I`TB0PP z?%j*!(yD#f*#he1Fh7tGpb}8o`kXcV2jr4Xj-?qe-H(8Bn6w73M>T z_6?9ens$j3yTAS2!kDS`2j~cwvSSaB$k9!B^!9uowTnRAN?AufsIqQy}ZwS#7c`W~7?Jr2eY&QLEfC0wuHil?kKPEh;E?&g@K z#lg8{sy*fO`@Y{dmpNnKH@7-L&>v6C!1Mi~Ed?H$its&_*_>mMe9?sfS_{6GVQKgJ z3!aCi*`Gg@pe#jAuMd(23se<~`D)D>VM>Oj>3a56X1GKjYeAc{A*AkIby9q`^JjSD zqw^kZf}!SED3XNbdhd=qa?@J1y^!_o0$t&hNPx^PwAQui?t_Z!vCcV8t|;`? z0#vgK9f$A!s?5}+Ekn8s$`Tzu#Dqx{MFwK$6Y%-@7-j0sDs(1ATxF8$3S`IT=77!d z5qR2AyytPDjcX&C)IG&3lD~6f&J?ChI>c32q(n6m$2pgzaWw~4NRWjfGTQ}#1IwJp zrmS-X(YDi2bq9mzhrEucp(7Q(;Q2c%li-CS!rsLG`Q}wgsz2*CNsm#ScaXLV<8Cy(1H`$XmOkh2`q2w zUgn5xZL`DJe11Olhj*70Ke1bQo|A>PS0H+T9rp*`75k3| zlhL*H$#Cplni{N 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 956a8fa41aac253a8542aecedadceba7d1582adb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6335 zcmV;w7(nMAiwFP!000023e7zGa~sEb|H|p22!wqANbn_6!?=43@F9u>DT=0OQbQl_ zmcWsRJLn!HA%!!^bUJ?2iqmO2O+1rHlV;jX(pqhk)~>Cz|BNZgKlxwieBbW94vPJmU1wxjUB|?^3@VT)FqZ>;~S0&`3dRsg_#HR+xF}?s}6tHQ4 z2bD6ZHo4^6gsuurY!Z40<{A_wMe;ym1ysHUcjF{KfVECqrie6X;@MXYx zN8kj3S1A{8o6t2H$$CfG242=du`597gp$MgDYZy1hx3aZ^A@3Znp}PBgtS$@IUu@& zEQ}%9^>>h0UD+hfjw(p5BlQ*`>+tn1<>GA>bbS=`YqvGha3M1RdSSz=8C`1g*wHDx#1)#b}JnO)uL||FKm#iR^SHW!v&Z>aFd}smIXg|wE{U^q zta2Iv;p4Wk3`@t2a66HwO>XAPgx;pfuLDRd5qhd_aT+Hoh#ryaPyo>cIn*yDwA1Jc zawd>#as4qu@1o&sjHPHafq?}O5)mA##b++F(?DmsaZ}BSvXqr7{JO|lg0q{!b4nKn zXe9e}WhgYQctP>k^`X$Lrxp}^-53f@u|k%vD%9)O&3d73Hm<6h)*v+rGSbJ!! zy0StxZ2C}~^<~mrQz-Qp2q0=c5@$&RceF$Z83hZY&De2ToSQBJE~9T~p<%95@Mn|i zIEI^zlRQ9E*(S|HAWVtyfE1hpBZ8r=kd7)p^^<_`LZ zyUzteUAj7OdI^r*YD}Yba5ePHWHm%zz~d`0v_MuKQDsTlqCNF?9K!3U^ftPNbsl!` z10v-#LWt3A@cs`~(tI?ptkb(Z8%ZQ1rW(eh=3*kj06%3Uz)0jRQ(!zkZ4o-7PN@m- z>DaqA=Xv-B$JJ54MWS-pI6*KZM5lRvbQ8C%M~ib941Ebd8QQErUsH2oyR8ypV%R>W z$|fOOJZw);%+w&vMh9Vx4oHT=fXV>-Cda!8e%Wj&Iw9<^G3*k%dDKueLUgM!T*~z( zRr)FzMvaEgb$p(LQ%`ns& zBA&{XxACxnF3MCpjZk#Kb*vTbcASb%(+yl+c0XG)^T#Qy`m3pT7Vm zy^gf;FfG@S(*-}nSu@I)F=S|bp0jhh%-I2DgxN4C^mdr-MF~t?2?z(!1-(DKnkAhy zAWI^n>S-f<9>r%D3xcu5qEu!^UC*6Rz|uzvYRJKxc3*svRDc1K*BKI-J16|Qc5u$4D)50;Z=I@O2@tp!5;##ke&oS0c` z(5;YYY{r{})|wZZvB_CIL{|5&V7*gn!hZRg4DA>5+1BmIYL}yQs&4W6MzRg1ggD7->krK>onKUiT*GZ3N5~OW}$5>4}s*YxdDMWJ;$H-P>4R?VG zNh83}PFFjL3VAuUh$*4|Ho#!HY&G~Sgzyk@>q1Bt1GX*%Tqvf^RSlA$q-37+4~Nj@ ziO)lxh@d4eV^d+1gq8<2Po0CksREc@OD)1^KhM!aX-)3O=*Lo!eC(Zp=pU-F+g^q; z9umy?b~5us0$og|9BkB3;}Pe2l!_b;j?_GQiv?waEKEayg_$V~E^7%r@O`ABQL|2{ zP?AnWzQzz@pQ{%TfN3_+gRYCgH&tbmEFG#sC*6j~td~PiJFhI0#hxm_Z(_ExbdM8a zgga%StuXc80&90bL<&Q+*5KgaJivS@c!ryz?;sFAY@lvD?zGAB7K(VJ1~kuY4a(i@ z=z1iB*#O2+_BA6$e*~dLVDDoXYu4ItfAq9HGr)rjg+4c zJP^~I<_SgDK1O3Y9xnlTV!wb|a`>8BY7G=3w6i$RW8@`O%Yd4trPOcJRf48|g5d*~ zH}6nkL`_0;9!c<1WRMGF`Lsbq@CBa&%{O1gz_pIK(I#xj{dqC4K^6`~-GRXgJ=@A1 zfp>vyS#VPBonUb3so2BZKs;Ub9$=bONyHrO@b(lz23C5aMJV*N0449kW(?5c{i^Xs}Gf$q~kx$ruPt%WPYc)@^`vKcCyX{V}U#r$U zSFh<#x98Z*_Pv^+d7XVnbB!7?x~6^4X}2xb(A=Zyalqc%-`DE0@|v){Hbietk5A8B z1zRJ;c2C>)5X01jp?@n3-;Vs)#Ms287y{q4yxIZt_0E>*cSzuO;40xkw9(YDeP;Wx z-)6VxxW4pQ(p{$ctZA_>v;DVM9fL`lC++2j70Gtou4b8!7_~IdL$LIaA~`)~tCpi5 z;cWDzq{+k(`QZ?hI^80UlEaGRGS9J&VUVj10keZ4#w=Aq?w+gJp6Q#8jdSs%BAu9i zhx(^DF20AzvV8I9GwHx}y3($E9I##a)~>BPw&zQG9mn*1X6%hgbJF8oTarv;R@#;Q z4(qZN%{xMy-IaIkv;3O6G$-xs%KGW9tVp}E-sgYaUHL&Cc$@E(r-{&Cg z6z$+3uys^{%WQ+WBYQfCx~FS;hbhwap6m2HMY`@WKj4^1#v=`Wwt^-@6gfluE`Pr-w7}*hu z-}6x$ds&2%R5CR8s5C2u?17sOXU`s#BLXL;;dg-eSaqCr6O=p5Y3 zz&H@h=z;4p+oz7@xO`JnmXdV7BfD}}^Nv7~u`@wXwA- zKRXcb!szICi#H)X5i0qlWBM#1mmOG^B2~u9Iok`l(@j^$vl{a!j4WeQ9B{0F=)R@t zM@b_+P1~9DmQvXl|^W@5AIA_*BbdwIxv-Uo0ybre4t$IAw+5qaWWzR5xH{Gj7qc8SbTn} z)oOSY>ZyZKhl4TTc)_7fpNz4b9{YSKF>+eZ1L4qkk>L+g)bObTsRr!u?=A(-IhXhMe%4eT&T|^DB{2d*&m?Q;=+y1Ry&1tuTG8xg(W| z2Clw>&bh*!a|K}{?=MMbLUrYGl%?$n&wEyW06F`atjMCI5NRoAjOVtcxGd*^2i*8b zIpkfW`;jEvzt2j3$MmY#J>PLzwat8=xn4E!5X}mdfiXNJy0g-?q6K>3g$slfw|E*2 zpIzp69K(yWm`~@+FrXy@@%t}deEAD_<}eY%2hs@g$~iA5H?dZe&j0wg=N~+I{?n%~ z-}~+PhrfCLn_r$k`}mt@ADzGd-t#BFI)DG)(%2+P;KHalCmm>($8P0ju^1RID|Dti z-LC16lsx9sSZyUm^4)-yFJH77Z%#?!l;Txq60 zLwchYb%=ONAnt8c3tMc*0lVS%du+~U-JYfS?1pK~P3mJ4Gt8L0;pt9~8FL^IxD$cf z(_ORY4~drp->@{hJ$L8<7U5{#cx40;BbToQCws%R4R$&=I!H2(TKCepIhS#ZDrB}= zu>n3X}1v|Gp1anWeFXT6~{0SOy+t~A1@jis;3z}Z-5b` zL2yVBN92y_g+hmqiZt(P?QW=z@ZohdN{4SY#+8@0?_Jzw)Lc`mu+yGq8_XEkVN7G~ zX>C^VPE23#Ft_5HzQqO*2^*01iW7K@**sZ)9u(e~et-*c{Z2gX>dIRIwG)s90(MNp@Jq2j)IlW!^LAe~ETXRe>VZ%AG zBcu~4q!U+18Xt`a=VS`!8c!VY-kp+mIeDT2={=Oumo$Krv!dCqm|IXQVz*-ir>T(4}R1e&XO2c$k8l zjA9R?TTF8oonz)QBi2^R!4!iG>tDj{8!mPU0Xt^9W5K;hE`}YOp1E(aD2#Qod@Vt7 zAzhoBLnF(^HPPkCWS%22iAqIajO-ThT}EzBkP}Vxi(tdvPuh)iOv7N}rYo%O5+`M< ztfU%fSTh%=6^Z1SuT7-U@$oS2>;dr5@Oj48c(4ueW#6BtCkW1`+ zqQ5r4XJ6p8vys2RiF(Y>+cFn8fh6?SujrGVK@K=~J9z~c6gnX%=Ws7|x!>ODPF~=2 zot%e#phy#=sXj3862fHtCbo&k;VKXQPF&!RGdcSOklA!R??9nyt5^aoktAo@u2CyP zcU)FE^lD*Gfq7NUb+vxA7kC|PBHT(eJ_?{spShavxK%7M+(3u#S6O#pT0Xn#65Gfu z$W}*K?Ut$+zv@+r*XQaXj^HnnZ(3zxLKGMDuv0H*@isQrlTq`SJE(iwexfPQJ%VUp zgoDwG8>L93QnFpA@G>uCHbR#XTj0ypbrFioy6nlcZfGe8@mo5#Lhqck`9xsKZ#H(X6ZU{dUbtY0Oo`BgX$itdXQ>QnVHU;CXqJzH z^k6tvz+nww=31JWY@Ko|cVvrilNyd5fMM`Jivc;oS#%Y2omp>z@)ZPN1nr5LrQ+#bpnVz5bH+XtzCcYYx`&KW~DH_drqKt-Zt3@`1t}8 zIWcX+IjMFvU+=6i!_-DfBj^ifC3txZ(%K$x|IA9dqq!a{m&zQRd4)R5rdny$C9VRq ztlhXFg%@Q>PYvUs&uc^I6Vl&;Eg7uKAvbF<*C{Z;1;14; zbVn?+JJ*H~^dgqeE~Co3U$07a(6P&qy`YN7oZ~?iBQLTtIvh}H4~-Mji44lL8Z(G8 zM>SSTA96AE|TdLE|&lNZk0p9u5_!6FFQnq8$OkG-ADyI*hlmH5dq-; z7V{<3yUPp{UVDb?df=1%s#HJwi?a7 z=IYxRZA(4ZF#=?uB)x^uv(meO=lbKowa(s+m=}a!{PNSU{`cqSAN|$&kAHXm-oHM7 z^659v-e2_nUdy)n5_Oy-lSyAa`$W7%^y4qiKmVt1o_!Evh?=D?Gnnn0ng!C8Ok1}C z18U&}wWxQ*z?M)8;S~I@TCHXvlyLeig@+rP%e>v=hzrxxQ0+E~l13JPa3A zJzw(!4^=iXI)+J7YOl*_-m-SU<3$1>_gW2B*>{|Fn;A=X;>8*_^@h*aKmXa+U;gyv zXTN{>$A5Y8voFv8_;+9b@;|?M_R&|LKRJK)-{HFtTe)sYZzj*nFe|-7ruU|g>p|p8Fu_?S)7$>r&nkKk0?NS*kC(W|@ z;YCz(RgtW*%}2>oEXP?=!y@?&m5e|L06!vwY6pKS7~lKCK{aG09;qiE#*+{5^EK`u zU{v={@eg$QWku#U^6&+(+l< zN1S_*0$;h375Rwu;gO@n799Le5}Y(bLB9olhX=oj0225c2w9QE?@na=C;cp30`G9j ziVS0bQim@(d~@+1_wxXcc%dD@K$m^^I0YT{QIWtRR|CXdR1a9GtjOZ6Mp=;)FG2!= z_+2od!V6ItN4o}`DK8s$Nz?kxbePhU*+vs8CYkwwj1DR+bw`fRag#gRpbV`13?rNgN1SmGEr-RO=N0!SOf6b^1!Vw%F6&@Vaf_J=UWZ9qhg&Yz={%XS&>77 zkLoH}k$HQN@0Q4yWJS*JMZpGyjW@uY;s=^6+$xhQPvvg#%C6Afb*>B1eE{`h=K=MT z$b9iArz><&rDz@CETkLp85GqQA_PfAl@8nnUIz^*Rp8(eg903nN?3x24-7d=W%sE0 zxL&{`j_ETTAt5YiJCixfikwP^k@Z~qi~J>ADjcGVccLHm-gO*bo|WaZ{{t\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 0000000000000000000000000000000000000000..170df5ec4672365dff4c4d4f5450f6c274fd8663 GIT binary patch literal 2747 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 BS>XTx literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4d985c19ed00123b244f350a8c633ca774d6ee1f GIT binary patch literal 8201 zcmV+kAokxMiwFP!000023hg~>chgq3e?`^w;)E)8obU`c(~)GyxJd{Q0tLcK75l^% zu_YtPNuXt|v{Ty9LSZ_T(n25fMP}v_=(IyqNa4p!~}Cojh&w0$){XHB~E_ zd>>yuERKl6peScWAuo!eDC9&rD-4U`h#-sdkStUsQPd?NE6O!V7S2ebXyPwR^2P?m zEHgGJX45!Bl!Z}I90TY>vXDjS^lx4ij|s9U%7P+_1woZWaas}zqDTOUyf-5YV?Ht? zqBtT8gQ7Sn3&%zA_yGJZz}TFO`{ZCBcJ=@>TNaLqq5{Os!0fCj3$s#)(mgMU`6JGt z86Mm*EsN9g5g{k$24t5r*&&20ia^G3r0$R` zDVwcO1ga7URzB#EtGMICH99^7K;?tosAvU)xtKGg!O%`QG21JhrgO|7;6tJ~D#&8~ z;7eg$86E_-jtM&?Q7!|vpo62LI4TQ76v+VU1ZbjxdNiCvDGcD09AYJm!e9oj4`*Te z;1Fo|%Q$m5hl;w~7JzVIbyghqO-L5Svl6P&45b(5X7>xn#SG=tA!@inK^&X{dh(OZE-+y%!(JE> z<((N}M9dE$mI{(xWEnIf%9?x(uIG;;gM?vGJ~D7$H2+RV`pY&nk=J^2@CUPyGVPFm+A4fpjl$YT9;C{SvNH{LamVB5QMuY|rIK#&r z?{!F&0l34=GZLCBSYsAlD>zWJ%sOx${9q1dfqtfP$Z={T1e|F0Ffx8BqRaW+t}as( ztD|nDB?4Gd1mL4iKTOHxKYDuc_{+$wGt_V@DDHDIwd5CMp+^$M9_eL3X{TgK7))?i zk-Qud_OVRxg1i$#1sbm`oRz3D<ldCSKgg*K$;mx z5K{7Wx9bTsC{(;1+u ziZ)Qoop9WE6{l3Q=m25&n!J}Tf5F{jPI3szi}G$MO}EMj1u=U9$u=|K4;`|DvT+Qd zmZ6+H5sUm;{5V$5;^+Zna21(Ch(I1DIlwdEKaL{S^^DN%VeN{) z2iF!X#CNA0kFP%|E6RJR=zC}yN1?IWkrT7$B-F?{ILbDnZbZ zkAM>ug<&y!!kHT0e;3_h_b*#TsEFSV6DXe_Ws z?v?hlBQLNcX^Kuy7Ngj#gg*Rumbx{Zj&`sGzgMQqX6Z7_r^}M;$PuM0iGg1SV~}&u z%0m9MQ!+u><$(Zw)eH?rXC!erB~h+`N#tQzuF;TpC`GxcldY%boBr>HAN^pAsYK24PeqbzZ=dBEKo@HARf z;Oj6DV`b`Dmh>HT9JE_bOTyWVD4xw67l$VA(6tDTN$ZX<0%A7srm^ zYBdW=bxb%e=0x~*jw))Q3^7M8ONPu$-XpuR%=HFGrn8iUQHY0VIeVpm<#^7H=4Rl6 zWXB)NL4Q0#Q=qIxnbS>E4@@)+APZ8S6TYI-loNCUhX|d4v0C0OnbbL;+)0fN?Wdu| z@$CoE37FD|^NV^yOuI(Hh{=0twz`Xwemb{Vbja<^Ow$anmJPcEOLB53BQi82oeTK{ ziqRo3ZYNnkEp2XZ1mPFaR^WSX605{xUhU*<9&7V^0#jTqC1UQJq)R@a{VahmumpxZ zn~qeBfG5#Fm1MBB>=5QWLnVW z#O%?M&)1>ej2{3(fb}efjzKY-*)22MPer%iEi)s5?aOpzw#oK$?DkV}+mDF(OgTz@ zV3XNq1i4fXiVz(~#B63RN=Z{t0pw;wpmNYl8x`lW0hza3*vjSoG{nhG>a$!gO)j#4 z+b(%_0Dc*g0dmgvN?7tai)fEZtkeADm;(_%Ozc|>R%oS5bN8Q9YvyRJ=|tDIH=acs zR~=89is~w%T1tIquS|XC9*NFB7c-x#6*|=1oV-JdX6q`#8o*XVW}2q!N8NNicL2*? z5h=^hfxnk$K=we#jO04EY(-+d8+!ZPB<8gvQ{JQ^jRIr6Vds=fv+C5^7aoJ8T^JVg z2Tk~eK*__X&3I(-Gc5)uJSrnj5-i_tMkdPDV zS$VE3y@Z_Y8K9EI*88X^yUjRCLDp@L9g6%#`s8%RX-VWn@dcCt?J>(Uv=0D?7T~gu zYH|penUbBJIW}Ku_mpZ0kTN3Duh?`0eLDnyN3oMO3SC37L>WIihzWfOo7Hk9m!*}$ zs3;$x@K0cp0=0*jLoL910QXZ4Iwm8F@^1MMU3o~94;-YJ5mCks(QU~`1z8~S3EC@F zB|5t*iSmKn`|14*S(Fds&5}L)y@u*834*gF_3o#o?tX_;m=}O+AFy(6=U6@nRlm4r zz;DN5yJloBUEG5ols{M$PAqCTRJ5~oGND#W<@#hQnKF$+s;bVZnwgqZ3ezP+ zuWQ9&MN>+|pf{6RuPx}+nywMeGE+l}R;nu{GCHeTg)%XcGj;M}cR^8pE|8y%#NKXF z;7@rRk#)@?ngxtWZQnj_jBDI>ZvBs!8Xw)WZ$4gIy1jPwEp8Z?;*70bTU>qk-rA$j zR+s1L@W$X+8y5E} zS5;~`Vp+s6x%1qVp;x)YOr6Xn+=*lkCl<++QmHgw4gIIM#^M7;P zq^gyUDV54WrACarRwQ$MT({tl7wV>^S6j{Sl_0NK#F$YkeVkUWR0J-S;_SOO>^BxE zf%ekJjSnB#A1(T8y&3kxC-$9p?Mv6~D{nMDxc_wJ66N6P@}rF}ZrBTNH!gqC`0&BT z+m{>H?|YNukx;FJilJ0Z2Mu@9dHUtNa{)A9e`xWTI{oL)Nt^wUiLJ zM1WH!T&bHRqZre}dXd1-S*22`!C+QXCM%?vIMwNGJ~{0&hZTn>5UZ@3Nq@T+lm2|} zwb!`b?(S}n3*>*uX(*a^S3NDr68dt8aKECPe=*73~3x8bu{`0ku-)t=2 zZhZ2@+uCP$RVfkk2&vX8ibY~EdBwlNasRDWOPpHlALl1a>2aPbR20*MUmnCR6+pt6 zQnC8SdC42$aI@nzIHTOsD=TuDaA zXIH?#nr^C=s%w4RlsZR>`+}pEUhCt!Ll-M#%8Fi{Rf|@+k4txV|5s?FOw>}@iXGA? zPm_YxHKkg8TtS~9Mriz8mr5N&S9)I(c9%z)h(Yix^yYvX>4BblsG0RJk4AY`t#9L5Ep=oLNvRq$AzgY(|%E zs3leF;|c_baXuo9tyH=SWko9y4_yYA&}@ozA2*{I9bH{v@psW-ftxfyCK@r#j&x@b zzw<2>sOLWl^dALkTY+AQ4U+WxtYQ_)Oq5KexV4*qvakM6@VYyPbblD(^MY0uA1$zvx?F^_F^Xq(UOr>gMUs$xiowvVy zeeL10y)tiK_^!`hnNQglzKbS&R0CWP;e@M|t}!~%@9V^CuW`?{PzoBVeIT3bg}+T_ zSYbfhSLW@j_xf5A#q4AdRZ}fhsi^0OFR%Zo7gZ^aR7?`bRU~D zTc{AlkV5HNhh@}BXA>Xk>vN2gtm<{mB1JaS161BwY|Ovj_-@g@@bzY?BVwg$5GH-J z-25@R;Ut;T4Kk+T#-VN39=*Bx=)uOd`NqB1?TeQi%NI62`YKX=fvQGiL2HhH?jonW z>ZRF=5N{|Re|y)y{2kq%CI9KlrPbxjt3N$iySBLgtF*P!g`;L7=+d4m>V-O(O0q;O$7-ar`C^9yt25+=n2or8&Rbkyt*#@1W~}*V~%!rY?W7(OZLJ|`_aQ_(a%i$Lk%1>_v-#5 z!$S_<=Q%G>a9!N`H?KFYydU*)_R^2`M~h*29{Z`<`RsSyeuoD;62qU1AEF%BDvay?CZvjd-m0DoV4`r4g1z&3#K8m z&E%b!ETt2jkbSh6(US-p@8*b7S#p!5G#AE)Y9x#_w|li(Vp%g;N>htRe1q4q%W^=e zl8{Bv?nP*_QUQmM2=`r>S@Bf#G^L_vD^&D&RP-c**IQB%p4^IxApZB?qIgrAuov!A zm8G&w7`r_sfKBxQ|xSGY0oB0nH)Um4uT1(ee-dQ z3otE1)kEyaN%Cn96 zi;Z{xVt=&gwS?D~9s|hvD~%iPh0;48@T9I+h@ze6;!;wsi=(zoQ;>~EH`bTFYDKgM zEt;Wvu-4!HtNqSmz?n94d$C!)pR31kqn}G8D|$)Q5<)yh{oIsNf!0L~hR#@|^#10J z#;3QU)fdg5f!#O1Z@l+4n@8I}K3IQp&A$0*$R}f{4_9MxHFb-mZeP^X?Td+Li2CZ2 zPrw2H%zFk+3lXkA5?W%)sMdwjrlnA;VkgG2qp&t^&98s+I;&|^$Dmu{e7Q^`)6r&DYp{+B-wwgg|ioxiw?5<#9caRFulqk`i(fZlPZ`-yO z8Ll5hpW7sgcE+UR@&20hz?A*Cgjo9(pSpYlBfU zM(dq+18gZ8hH^Hkn)n$(pcAwmp)$o@nSn#vAI!uX_MKOt~8aE4~L29$cI49{L26evjAY_{Ly&M*5Y45u zxn%6iAJ{9Ohvd^tGA&$}huK)HMn8*Cnm}rwHd>^#CaGOd7%BuBpa0mnyk!6MXXq6( z_w?4@dC-`Dofcrx>c|P;stI@cn6T~M_zO>TP9`C9xPEsXt2Hlj202q#4bqYLLrO7C zVzDR8lBa7B(%A)lEf;iE;Layq)>ONjN{&VMStUmgc(F~Q7|F$9pjJyxP9<>IiWoHt zv8GF~)H@DlFuA;`cH_$p_TB4>_6`*OrP^u(8Mr~ngOYS;O z(K*2tSqR-?pO;a{F|hqJ4*guhIlqwX-m$YY5ng;gc;S5OyS!mu)(iqF&h>K|nWY^w zwo&a2Cw0x46_?;JxElp<9*#`}Zb7&*i*19m8xh06mdY=^Q#^#A!`PaY#2PskgZ}*Z zOpnUqoUT_hbpth#>*t0QtDLMVa~+|O%e}y*d%C*?ZbwgdcV`Rh_s`dG{S2Bxr~b;b zoxFMeRTkUxRsR^yE5R6$csBUn#l&U=!t@b5zXPTcIKk7_TE@V9KDSy%Ty)U2u%^;zgQ$m~dL=Yw`+m|02pBpEHWO-r%VLL%CNa2n8NXbqPzNJX*K z8J6+qqlJBNPd6IDj?j46Y(Fo0CAt%>98_SDYU&l&HWKs)NwgK{vDe7fig77gt4bv- z*JrEe+>}fzrRBO|(EG4(1116kX1gZ@)m~by37f z=5V%IB@fBw;${2slKtqx`jgMNo!wOvdh(cnHvVyC{mz2@(PHDBcPP6W%YSct_Gf$H zK9?C8=2n;AfhIOG+y3G2jho*$uHO#?U1A+kt3U+?vzqM#T z{9twY-Hk^#HXhvoE}@Rm+g$d;Z|tAm-?;ezl1)je*2Ax=(&&IxHFCG z@_6nvcF=LCKGB={(Y88E(K8eO@sUwy@GtRV|8fWQ|HoypXAzq{l*SxS3f--aeS)jq zW0YGxNZGmp3s1If@rFk99A@Lj{XB+}3!*G*}6Z(5epktU5FSprpc0-kqCG@BaRe)FcF zbtDpzY^3q}7xq_|n<2Qlmtu%$hV{R$CXaIkp`H}QrYDA_J?*o!XLFYJ{PHaA>1>Mi zugKE4v-NQ7CZgDoF~9wAYwF#U!CO_kSXsnIlC3Gr&qmM{;(@QA_sl0|;*Qwjd9u~z%Z(fN zSY}cQ)6-+LMh+dHd%CjVRa|rloH@Jlp`(mHeQW>uGOKH}OBqZ5Yp+F#f#>z=T9Hht zTKoyZCeK8*l0-cF7(~iR-Cm$355RDeq=^Otd}8^lbrYimodkuZhcMe$>HjH9vZW{sv7{ z0ZV8oa}-H9th)3U$`A*i3kz_3{m#3aC0VQg2Ti8E4e+_Z+=BFF; z^Y+61O+97sR4z4hKeO5lFirCko&Pr9yBPypm`tlwHuhO)`{v_NLQC_Km{gW|lJQOH!&%;~51nzmg z25ayphvo*_3GYQ{6H~foO(?U()T?AdEnw3j!jz729_Dp9^SWT(IN!MsAUZEL@_EtG zDa6s;G0vMcMH}Y@iU~(w+0@64^A+b^Y+a`FGPZGEpi^{BuBe6SK8MPa-KQX>?eKr~ za~;WKQZY&$(Mg{t=T5TP($R{|9v9#T>{+Vllf>IHz#E6(xJTzHf!iZ6+5%EI&#Jje zEQfCQm2rPaRq%qD*cbE4IE~{prAqp^MEIR}2_gK-G>Wl#qTJEx{tCW&?0Gf4M@!P} z=(&w^M^ z{61dbQ`@<^R;$!Ys@64ACtdz)0lA`T;$v*w_7vkcz}$ShO~$`GaHdYSS!Zjc-*R4y zwoNVeckkJ`Yj?3**=82>8Y%XJp9e`gz|Df8)~t2`)7jfVCHhaB0LBsK_GgFSq0+`; z$ltc%8=LyOn-NE07tA1Vil^^+U38PFWHP1cMKV#pWE{KsTs-~5qEBBL1 z4c{{fP#qsOL5IwV39g?@ZU5cG#KEz{*@=nmsnBj6lxl%Hc``v|nGopbDdA*dVgj+x z7Zbub4?eSNrpqO4oIiD{6UYb|4YN1AE)vWKU!Mufd4Z3HXkOssLNd&aWDKE;?&FC7 z!m&j9e{OT$SP0XnnYCadyuka7A)MeO*+JNWm-xjD(f1<2TQ%VU6$;d?H+g}lZ@l3J zp1xLx7kKX_Iq+7|xZW8O;iLfcdoTxZ_6R2dyue4Z0K_Z!@F_3w@d+X96_w5Mu}n$3bGn*dQ+l^vd^0!8^A~bKjvu$)CO$c zV6ISNl*>7)4Ep08=H&(coa>@=&v!Jr#Sf^tr=y*HBB$ShNAB$@3JF-l3%t9EHbMXt zqT*EMfCqCRm=}0BzKjlV&IRdume8?X#$melKu^F@%acQ6?pal2pmQP=zx!u%(2E;V z34I^5G@LJEt~i~VD8}3Pa`tX2gC4j&Zwi_Aaj0kY>uH}``6>+hsUPwh;uu^lSabLR znK39SmIJ7*pvLgUiB4`RjI*03sIJ|kEHDcP>o-bpfz8zb3F\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 93a0198a5ac5d106182aa2671f1d3185a5bbf7ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2699 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 F0002~OlAN8 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 7a47ade3224e8ddc8d13ad32bff5e9f170ea1be4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7966 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 U-ZUMtPZZDpFJbE{NI7r-0IDUB@Bjb+ 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 0c915bd0b1ec859a9cd8587d0ea891c011d41294..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3610 zcmV+#4(0J5iwFP!000023hg>=bKAz5-|tsI+g1T4OPHXj7lVa0mfB1;7q^*?v*xj z_q&{h)T{WU+Y@HT+T5tFwO#YoK^H{Os&1~;E{Dj($ZBt5yqTb=Z(Xgf6;K=?u2Bc+ z8`aINn$ZyEb!X@yfplZYu?RUGwh8V21o{3;Xn^@1_3$mb3f(XetY283Qs1Kj^8@7D zH1z$Mbs}Cu9Q6aW6GhNv{XrL;#@N{T|}` zH<*V(%Yg0ulwiiVCVC_=r&zYlDbQ%NhSwt4-v7}6xkMZ-J(R$VMpl#;q>s8dxQY7% z9|@cxc322aIiTIOfadxr2po_zG?5rApdnv4U?*GG6lQScS}CU5LQJ)b zF+Eol;AL^-;~--nOo^HWR<+@DSJMV8Akvd;twU~MuaVyqY+!5EnI#{0#QfSJ@kGzo ztZMZ;GwVGp??A~0Yrl$JQRxt2Yc4y$d}jA{g(yGNDpq5bQzGqN!3UU%z}6_EcouDJ z;d%B1M>Lf&0nse87HAj+xI$=!g#v0F;tR~Rs<{?#!1!E;@xE5ipjjx2xFw9O1upWj zZW-nK6~;-IP+N1c6e9VUQ={)!+#aG`oH3f?Vg@$m*47RX*DIBI6IbGGsI|GY0L4L| zTSlIem-yGF=tN{~jN~r7!{!iuudf$F5*}39OU_cTnhyX`o#K zjzYn9IYt71-^YFFUPfd@5$v;&3he1dEES>BZ>Jd3upGfQ?l6vjOx1xDyqITKS6v?? zo@K!WU`EWUg58-*1^P-g+2**<4saPaeJpy+3+&+{hKDYrfza?we(EENx|ml21q2$T zqpx_(4W&NJE*6Puc8>Nu9UCbQ;bbswUV}PNcz~={i05D^Oo4BST}B0_!kL#mm*!xG zu!oUnqQL-DZ?{K$PZ!cCi{yS9pE|B-Luz*sC#n=N zMx!PBHDDyf8yA^@^t-7M6k;e$Rh#?}^>JCH1BF>$p(K>h1(cAP)<6&~qonrBDM4%! z8elGV)V0zD#Ab)^KqxOT=C{%8b_59}f*_yV&KXaJGzXYI>k$*#;_25Yyr!njE!J1n%Fc-v=>aZ_gaYgQHo6$MniEj;CO&|j`7`;upStYuCD4U z!BW?-fU&x|+;v8yIKC|M@4zq;cDb{h5@gPDQYwn@(P)J&xh!XI-kH4r>G=NF@$JyQ z)$Ur_bk1KHN-95N^j z`#R_7$RvUK)QPdWN=zTquIOE}a%Xq57EGPqMVy5J_7xUVj>nSZ6I?k=FB97J@f<## zL(;6aBqEfgV+EYJWgbo#5iAiW=`iC=9tg&<>5*U{O9CBquyA`jvt6BGiXNtMuCK}p zLEWDjn1uP&)i}ZV40&^DOp-00YZlj3&)V8HL+(Qav)otAnNEO3mRECy$RWvzkcn(W z37)LkG-SqyOKql91!UdCle?GEMy@G%-B>(+q|u`=Tt11t|Y~=Q-$Rr^9Dlba!^PX5P8C$5po`Pg0zXOt{!mQTU z4In+#h#+$)K8!PEgPDvm$|vHjC$YrnodL{Wd*fc?}4&xR*k1hAm$AF1}t0WNL1icfvU&)MJM-SMDYgHC4XK>JtP43F6A^Bh0id&$&gqy7i>Il8Q)pVKz21RolY8bF22-YP>487<4YjJdBVWrOBtxU#${B!N&1+D zLQmJ11%%*&U{JtEFBcqDE{dSMvPJ~gt65awsXr`8A886GF?HZjWoquwsj16SVPfpE zEop8vYh30m%c_l_U`KvAJMx?zNzRUB#*SQRhZXeBm)ntF){epD>=+d7NMcSSI6pv` z4&N8fC-lnVssIr|0hNbdq$^Ih88GHF`2sGteA_>CQ!3yW!+gi zG@R+%Wn~D1oE!1-K2GLdIvS~7Q#L7lru$6BXN$%JkiuXZ*Dr8W@-z)F8;w@Tv$EjJ zP|Ieuy3K3?-Leg0GZ+@@bI(C~n6J-aHy7!;Gm*|!w(+1lv+7@HS9fV7jDu4IyR&ua z>?Gji(f^!3_}6S6aQ@(}@jD-#ef8D&w|_eO{CD3xzB9i6Z|ASSK0f~J^#13QfBxP0 z_?MG+AAoEkx>TQ%wvtTF5HCL?S{O~AYFb-T@g$MGG(nc!xOf7+Kt9=*$_LO=#Zd$| zwraJF!eeA)$~hB6rl$)y^x_V03Y9%x-H9Tjkv?>09e-YnB0#e)Z}` zeM^2>-`L#P%8iSLYT{=D%0#83hJD%K49M1{2?(W_|KR407eNb>1@M>(5J5lNm5HX( z4uxQ}a>(UGSYmUtedSLTl(tN2+ua$Z9{^ z>0y6R@d@3R%e`#*wUD^`>3SnotG1sQXdkxWQ5v^8j$Va<*{vBm=rAfO=nx02k1NDw z6c}*Nq2|lAMr;rT8vdi98&G}S{l1|Cj~oEVVN zvKd6autB|A2QbCzGb9M@X6~NY(lg35)0LXBsi2w!3Z@#OXFi_cCT zJvjNxFF?$_Xj)c+$jT!c%;WKJ;BqoZt|`za@BC@<$G5+Ed}s2;Cua|zod5da=?8Dc zG{*0JdiLg5<1hd7?7<(##~+=)|J(n4{b!T=pO5dpJ2}2L`QVMoumAhx(YxdK)UX$n zsSFP zbfBF*`IXFbzrT0>@fV3)<=zhSvRxodfL%ttQgLK1xr8`~b9PvfZvre3YCRTey+o*! zNAFxDRMAlf(owI*NUtvNE)|pI6GrJ(Cx8C;vxko+Z+tR&^S{o1|Fdr%e^Blnz5FFZ z01kT`cWm$~IzX|P+Ok;FtHxAcqM2M6d0$M^#D;S%b&1v0^jo}Rz(QuoV#|z1U7v+s zB^=0VtAczHt8pVHv@xT`@%^t)-~Q#vqjydoe>7F&<)uh(>#P*tLqV_25cgtHvY(ff zM<7@FynI_DlV&p}xH%)u>BEmt@BZTa!v~WOpZqn_)MDhdyfhqlI1YL*p{_Da?&l?? z;n-ub3|ldotyzm4e>u7LSsb!58PfkUFec1dwdB|f2ZsLKcRg~Dz9g1~ZJa))(&XEH zm4nK9eQguhHtN?(!Gj(eU`_q4SS4q!c;w*XleK3)x%SK_>(6|0ec?&<_c^H4A0fS7 zx2$?x#2_J(=`@SyoBI6)PV5l)iVeuu;jq8Ipvl z^uZrzp};(TD;8XlU3r`pbYqxItb0U096XwP#+e@MGQDCM_F`nyNK#JHOZO#s{;FmS z_{>$sy~(lEk1iV>xaS~!)2h|2v;#SiS8UI`F0XI12{@*n)YpCsHo+^e1TGukJr6)I z=R=^?id|*LIf$UL*VDYmTd&s5E$mrVr@dwlXct6L%V_-Fl`G%U0v2)?-#~)_q1_+< g!;4O>wqe$4c&qJh)y!7|vyTS<2f`|f#M~?Z0P%$U+W-In 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 ca406666679fff7aeb6a109104536ae212dbc506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9685 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 XO{!z2>4*cOc>ezbok=_CHH`oOWlJ~* 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 0000000000000000000000000000000000000000..45146e33509e0a4ddd3c6137bafc37d2b723ea1f GIT binary patch literal 898 zcmV-|1AY7-iwFP!000023XN24Z`(Ey{=Q$~a794^7y6}6?8(rEv}l0>84zp@Ho!0j zTDn-ADN^83aScWPeUNC!$(D5eM)IC}?zuOzns7kD>nyMZCp33Uw!?L$vh9bWwp&tm zU*li8+!Xbit@ z@@f&8_z0}5{}fz6fBfTKa05-y!C->&P2kM9jkZ$drM6$XXC~lIqsb}pvbTNeZ@{Qt zmpYsW{2JIZ-)LY0*ji=Vjd!)p&$qZ|3F~REJJkE_=W@e7BY`2V9rGo3Qe-EauuRI z5^&MNPKB&U8umty=T;h*DTC}=9xap@3YSyTykL%gPei86W{dlT)r8)v5*Zk^Mw9fo zQ@b9`0xF|2ES$;FzlORwL70HBuP|Y;(mHcCVYh^ywGbm$ifHG2{z~LW^EV^+<8gC< zz7+lxg$lPjBD;BtlCE90W$mg3MSGhKo=g$P!;&<|^b&$2U836*7rmIrF-Xrwi?~%G zwYVGHcvosdj_J>Y;fpTO)qx|7@tx>a)XOVbISQN&Ri%fj4#n`a0}Nh?3(Zc4;)BN= zZP3b4ayDv(3tq?Nn1}PfQd*}PtMezHW+!9x*+9@55a-}kcFD-pNUeGz2Jw3u9zRYBWJgEYu(NcdJ7Z(>A)E1iQwsIoTe%LTktPY zMu|jfbBMxU8mv!B8_byy$#-}V`g`;rqcG97vGDG&de1a|58IvsmM6Bh1(Rw%8&9TV zaTv2abj{|bG&+u1ORoZTDf4fd6lbM{4 YewxlNCTsaO$x>DS03y33`|Sn*01h~@`v3p{ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c813c852095d33f508e0588991c2ca9526e9fc33 GIT binary patch literal 2458 zcmV;L31#*liwFP!000023Y}P8ZydK3{VN1(cz0cTN0KeuSz()UW>>N-$&xJDvZ@sp z)C{#d+F5ck+rh=@unjO4mL3yJr4wUiiE2ktOQQcF0<8le%P?dN*CNPU$+?q0}dvlrn>* zT;fqrcRVm(-+-Z&O|nGk5|J+T4n1(%Tr~@>kzMKq#HW-$s2UDj>K(fzbSWLVWaLsW za>*{GyQE9KpDn>+TLyV;liW9$Ta@0v2P0csgcH5f)yREHcVO}P z4)KU`y=@9HcF8gYWAg~~A(YkI5aA9i{csUjFtS9uM=lJ|HJIB4vj-l4Zjlw*eF!0D zFdh(D@yOVv-iC4UN@R%8>n={1EYa>_*V6Ui9Ymmu2CHKXw}FFiqw*kB2CP@e4)s%e_z815RjCY#&9#0Sy6r~|~8cg^;@4TY5& z+-vSqHUxWjg{;%1#JgscUb$|!qh~jzbSafCh;|Gc6%1~Qh4v+$42tCMPR55!&$eR4do0ykuwZU@CiSNnLlbdj$-08<^6Cx7^VkK(@}}<9EbcwIW!oDVpR@8 z(L7H1hd!I1$K*Xc-^=O4nHzi-?-!&!DKr-vxQF9dCK^3P30E>Y=AInKQgERWQ>Z^Z zNRW)Va3krD%zW`ike_g-c{x>mKSPI!9HSmSPI(V6^aOuoRy|CGuR|$N!bQN7df(TN z2)1tX5WPzz!Zm55`mhcYOMzQJhGC^Lh*YH_=c-d6K(NZ2L-ltI{8p@$Kii&J3A4 z6+Wu$`TC(u#vP_vCBgO(t_YJWUJWy&QLKd8D2G~@sFY#{p|+vC&=dK*<7>A+*vm162wUOW_D0{1C-viYC2~u2dhhr{NosSYUJ2NxWXe?A#yT?CD zxzhPsRtTULYK7#9Ks-rgg0#%fflyEKF?lS>n1iJmOQq{IhsB}8QayCaQ@cj~Ul}JH zPC`BO5*~1&Ll!BU^1`&y)I%;H+*k@_RH#>+^YPNY(e&ZusM{c?%*|lMwoGDjTIFPQ z*h{!dBfSqAoUl;mDQU7Os_#`*BGWnCFQE|%4^iDhHH$bdUq(|yO{JMm6>7KJXl`bv zQRQRu`s(Q)Up;&B;`6W0zxc!J=f8aM&1bKk{`LI3Z(siIpXcBI=H(ZEfAPta*Uvxy z;U8a~fBNP5Uw(W3^FN(G`}E~EPhLO&#T3*J&%b{4?DuF}j<`VQ-+lX^PriQj@6XU} zt>bkOogz=lQOMEDU;pj=t6#nR^Rrh^|Ml|wr&SQU>6MlVZ~AgP4t2ezxXzon0S}g; zFd&yzDRRd|rkW?_dsweI0aL>R$>5Nw*q$LCDLyHKO-z>CTtWN#@yBM{bm665yDvtf zsP)<#C{%Z>`RGlUK+25kM8+mZstLP3Gdq>AJkl{&iVe6WS%1@6xyZtZ2erl|$u~v+ zPMC@($2{rUxTi2H;+AKc*)LhR6G1o*+8W9<3XqT*C7k&~G~@|KLCWFy2!-H@btmW` z)#xZy8ifM+tlW|BAosfjb*eNUUkK`~`jPL6vjt4Ba|NX$j?zIWt{$iSYT2ToAXMxi z;sLtiR4x(F$Cv$nbNV83obt=?xoT@Zjw7b|{LgxPV}0??gNbeL!BS(AHTam|N^fW0OmRXJpBE}7 zMURgOu5=Ta;B4)(v@pTdC9{SX79WN%d7;;YOEGL5_`%cmrI_FmKLsw(hhc&%O%?#1 z#t;NFKya0>G)WLu)|9|X+4mO!N`tA-6DGKP%329PE&7XGpwh~80RSo$%uao^O{82{ zG;=zF3R!?=N87110%sOMeD?S>Ifc)N)zhk-eIH=CQ~^XcgUC+_$o6Cng##fIz8Wg{ YjiC75;GUEkw=h2YFTozn?SK{l03xNr9{>OV literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..34a38fcaec5b89f888160d92dd665ac2fd55279a GIT binary patch literal 3572 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 [_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 0000000000000000000000000000000000000000..a15018085645818a1fa9763ca8b67b84e53969ed GIT binary patch literal 9933 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["_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 0000000000000000000000000000000000000000..d494e34c5a6c3b851b8d5d27e0c6bb1ca361f685 GIT binary patch literal 3481 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 Hw<7=m!A0t? literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d29c28997e125ec41da57f13888fdaf272c269f7 GIT binary patch literal 9678 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 QiQ@ME2H5J8LwbDx06|6#LjV8( literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d9368882c4eb76c0e50f93c244ac74da479c1587 GIT binary patch literal 2652 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 $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 0000000000000000000000000000000000000000..27985e6a368386b8449f8909534323b5faac26cf GIT binary patch literal 6983 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 Zv%xRcPuaF7[(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 0000000000000000000000000000000000000000..160d5eff7967e0635867dcede9cec5b0175a8772 GIT binary patch literal 3794 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 I0@yDA026X> [_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 0000000000000000000000000000000000000000..d75b7f6aabaae2ed0d01e22e5db5a2e8f43c5540 GIT binary patch literal 10200 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 Sr-oChv;Ph*`A@BkK literal 0 HcmV?d00001 diff --git a/frontend-dist/js/345.cdce570b.js.gz b/frontend-dist/js/345.cdce570b.js.gz deleted file mode 100644 index 1f4318efda7e9174d5f0fe3bfd7206ae21d890e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcmV-{1AhD;iwFP!000023XN24Ya=%h{@!2VsK+6}M7A$>64t0Ccih223ZZwQ1!Ic5 zJMpU4N{dDt*KGE`7q9F%xhB{9CTX5|=9xFKhHyYJm^`u>C$x8Sw!vks^Yw?aack0U z+u&cOT9wU`E!6)a9v}{X=8!&2? zm5HYj|B39GZ!$0eY^n40D)`0~r)%7@jPvdt=Dhtxk zbvlE0UwXbw%Tl|-V(;F8YpjJ!n6q9y1C~^>=fZ&PIT^466I+PR@X2I6o}{VL3rOBNkk=u{0!`y3jG% z69E?;Y;?@atYvS^_|i%1b8V4*&!dA1W9bXZ+84~p?}LDs6J_GImQCSO+O`t%){16t6^nG=Dd8KOQ%G z=u6>`QK<5yFmZz4w+e>u-6U*Uo2N=8(7ut=9<%fU; zx@fee>}1pl8B27#P`nLDwReOWc0$N}H%Q5VA^6b0&SKc6(HrPT37Qq-{_k$OVW2b8(5Dib*)j92?yR#<#?3{FM@5;FKEVn}}= z8y1?%rPsSo&(IR?e*EBMzW zqe3FR+DG9p4b~@ZEEY_N><2su!##$NNto!mRCvE%y=NMKgl$U^t0P<2fmMcIjNeVh zVn1eu;v=x~N^lMHISc4^lMjBeNMBc}imqFT*-yja&ja#J$niH_*T$`Gf4^2|lc~&$ X9H$qfrTm*@rR#qIzj`5)?FIk<_h7Xy 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 dafcef9f7c753ee34ba6c557dccff2f80088c1d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2456 zcmV;J31{{niwFP!000023Y}P8ZydK3{VN1(cz0cTN3tV3U16JYW=FCtDUvMNvZ@sp z)C{#d+F5ckXg`OuhLYSubodm#k3lwo5iB-5|S^24ss;X0Vh? zJnHG52j&}_FtoZwmML8((xu*!2TogSX2Er`N4<~)l=264!=X#P6PH9TrDKHT{!vb{~1F<+&09R`+(N2zCAjFnl9+^2LG7GLNQ zk0{sMp%9}_Rwx*oN1zX(tlfbKcVX#=OTdDWW$GWhFhJK~ZV${JcmTRhR;m9GLd;=2 zAhPO_iA%jr>gSzLA|5M$j9ETPuy~;m%8IzsSWDA>)FRGVCGS;clXVJ$6g(HmwNB|AbJ4NhrMDA z|AA4%#J7G3;p}mUa^#viBiq!wYl{#b?^!jMz~}A*v)ZPW-lxmQ)-ur=A-0VV;6?!`SIzOrYw-yJBd%;4U1 zm-8XmyQ^e_E~nm2qx9-qb~}1@Q%aXo>4In{uu;L_Z8z7%gbL|9v{eX%H*5R72N2ta z*p^KO)afH{vV`uR}7&=Up2$V9%qV=y1N^_o#G^%vaTSDC%% zQh#K!u>_J?JtvT5e>1nN*d4nYuYu?N#I<-UWY?Sb?;5LHrf_Z;MTf4f!hFL~i>9HF z{lq65m|!KdG~fz%_VFn{Ojt1PIF4fCEaQV{G8|=xPTNsw;G9JKR5>)9L}E=2Bhfy| z_&WhxSis~BJm1Laow-|l9v_sXJt;I78n{Q3M5Y?Ok5aB=e8N3BNu=OHBc{+`c90;M zaN))>7@PU>ji4aqO!I20{(g>*QaM3=e3J1#UhE70$gFyli9knEpp=V{r_Dj29}zSN zSTN!QT}e`zD1xpiuCs)oDRt|@*~jI4 zAGa0(A>}$tMJGmkzp2d<#5$zY0A#pNv1~aV`T~| zx2|$;3a;@pr_7vk%1PJ~jmn8VilizXG9AUrF=LIYQbT^kvRK=kgHX*@k^j7W@;8J^ z1v}`7#j4O5lrA&gLHh@G_Mksv(~; z9gIrQ#+7LPZPAWpz+&F0fL;NG(0PS8;d&&)is(z6W?*aKqb}MnClMO+vkq!xil>52 zc!N|kF+1dO$NEF7(0>^XHIk==`_#6t#kVGdaTVV|k?Y)$sWTCv z+MaJ7$#l|Vn$;3)58;|Hh2r%va~kDJsEZ1y#i>ducM$3t%8Pwb%sUQRj|2*N%+64f z%1Na7G>J(hdN8|bCs7v(ev0z9X8t`u-Jc@G^-eV5GSkHG4AIV{s7r#iJ8VwCP)3Dj&AAw_>|5;sPL8Gxa>m>Y)@-XJre}3dR)_tR zt1Q+Bpus7Nbdi!ai{s{gT_rM`!-EPMq38%TEmXUV+e7O^2L8XL3gxH zHbi`eJSoQ!N6&xr_lqxn{roRaUOfKy^KT#5LF}eiTBf`m$jKzq&4%K-XyS%ET!F%X zT-K#198;NTo|^Arv*CnHjSeM)L#AeXj(Dv2v&6!!PX^9cEzu&NeHi-RyaL@vhGd*by8SZ%Sy)f5O>w^h~ zdxZH1_bN=Vy;#A6xmm#jw6yR)@9~ZG z5YPa@Rle3FK~#BD0xRX;UjV2KW=VTFA9MwE7Ju4s8ldJ^VK$ya$(WT z=?E(10h%3cr?MEFSq$;nt){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 0000000000000000000000000000000000000000..ab6485bf741ac166c5c19785ad28a20dbb04beff GIT binary patch literal 47759 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 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