#app{font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%}body,html{height:100%;margin:0;padding:0}*{box-sizing:border-box}.navbar[data-v-f1f498c6]{height:50px;overflow:hidden;position:relative;background:#fff;box-shadow:0 1px 4px rgba(0,21,41,.08)}.right-menu[data-v-f1f498c6]{float:right;height:100%;line-height:50px;margin-right:20px}.avatar-container[data-v-f1f498c6]{margin-right:30px}.avatar-wrapper[data-v-f1f498c6]{display:flex;align-items:center;cursor:pointer}.user-name[data-v-f1f498c6]{font-size:14px;color:#606266;margin-right:8px}.app-menu[data-v-77a12ca2]{height:100%;overflow-y:hidden}.el-menu[data-v-77a12ca2]{border-right:none;height:100%;background-color:transparent!important}.app-menu[data-v-77a12ca2] .el-menu-item{background-color:transparent!important;border-radius:8px;margin:4px 8px;transition:all .3s ease;color:#000!important;font-weight:700!important}.app-menu[data-v-77a12ca2] .el-menu-item span{color:#000!important;font-weight:700!important;letter-spacing:1.5px!important}.app-menu[data-v-77a12ca2] .el-menu-item i{color:#000!important}.app-menu[data-v-77a12ca2] .el-menu-item:hover{background-color:hsla(0,0%,100%,.1)!important;border-radius:12px;margin:4px 16px;padding:6px 10px}.app-menu[data-v-77a12ca2] .el-menu-item.is-active{background-color:rgba(64,158,255,.15)!important;border-radius:12px;border:1px solid rgba(64,158,255,.4);margin:4px 16px;padding:6px 10px}.app-menu[data-v-77a12ca2] .el-submenu .el-menu-item{background-color:transparent!important;border-radius:6px;margin:2px 12px;color:#000!important;font-weight:700!important}.app-menu[data-v-77a12ca2] .el-submenu .el-menu-item span{color:#000!important;font-weight:700!important;letter-spacing:1.5px!important}.app-menu[data-v-77a12ca2] .el-submenu .el-menu-item i{color:#000!important}.app-menu[data-v-77a12ca2] .el-submenu .el-menu-item:hover{background-color:hsla(0,0%,100%,.08)!important;border-radius:10px;margin:2px 18px;padding:4px 8px}.app-menu[data-v-77a12ca2] .el-submenu .el-menu-item.is-active{background-color:rgba(64,158,255,.12)!important;border-radius:10px;border:1px solid rgba(64,158,255,.25);margin:2px 18px;padding:4px 8px}.app-menu[data-v-77a12ca2] .el-submenu__title{background-color:transparent!important;border-radius:8px;margin:4px 8px;transition:all .3s ease;color:#000!important;font-weight:700!important}.app-menu[data-v-77a12ca2] .el-submenu__title span{color:#000!important;font-weight:700!important;letter-spacing:1.5px!important}.app-menu[data-v-77a12ca2] .el-submenu__title i{color:#000!important}.app-menu[data-v-77a12ca2] .el-submenu__title:hover{background-color:hsla(0,0%,100%,.1)!important;border-radius:8px}.app-menu[data-v-77a12ca2] .el-menu--popup,.app-menu[data-v-77a12ca2] .el-submenu .el-menu,.app-menu[data-v-77a12ca2] .el-submenu .el-menu-item-group{background-color:transparent!important}.sidebar[data-v-1eacb581]{height:100%;background:linear-gradient(180deg,#fff,rgba(255,182,193,.3));display:flex;flex-direction:column}.logo-container[data-v-1eacb581]{display:flex;align-items:center;justify-content:center;padding:20px;border-bottom:1px solid #434a50;background:transparent;flex-shrink:0}.logo-link[data-v-1eacb581]{text-decoration:none;display:inline-block}.logo-title[data-v-1eacb581]{display:inline-block;color:#000;font-weight:700;font-size:14px;letter-spacing:2px;vertical-align:middle}.scrollbar-wrapper[data-v-1eacb581]{overflow-x:hidden!important;height:calc(100% - 50px)}.scrollbar-view[data-v-1eacb581]{height:100%}.app-wrapper[data-v-661cec7e]{position:relative;height:100%;width:100%}.sidebar-container[data-v-661cec7e]{position:fixed;top:0;left:0;bottom:0;width:210px;height:100%;overflow-y:auto;background-color:#304156;transition:width .28s;z-index:1001}.main-container[data-v-661cec7e]{min-height:100%;margin-left:210px;position:relative;transition:margin-left .28s}.app-main[data-v-661cec7e]{position:relative;padding:20px;box-sizing:border-box;height:calc(100vh - 50px);overflow-y:auto}.modern-img-container{position:relative;box-sizing:border-box;overflow:hidden;border-radius:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.modern-img-container img{box-sizing:border-box;max-width:100%;max-height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .3s ease;transform-origin:center center}.modern-img-container img:hover{transform:scale(1.05)}.fullscreen-viewer{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:9999;display:flex;align-items:center;justify-content:center}.fullscreen-viewer .img-contain{position:relative;max-width:90%;max-height:90%}.fullscreen-viewer .img-contain img{box-sizing:border-box;max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;border-radius:4px;box-shadow:0 20px 40px rgba(0,0,0,.3)}.el-card{border-radius:12px!important;box-shadow:0 4px 20px rgba(0,0,0,.08)!important;border:1px solid rgba(0,0,0,.06)!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.el-card:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(0,0,0,.12)!important}.el-card .el-card__header{background:linear-gradient(135deg,#f8f9fa,#fff);border-bottom:1px solid rgba(0,0,0,.06)!important;border-radius:12px 12px 0 0!important}.el-table{border-radius:8px!important;overflow:hidden!important}.el-table th{background:linear-gradient(135deg,#f8f9fa,#fff)!important;border-bottom:2px solid #e9ecef!important;font-weight:600!important}.el-table td{border-bottom:1px solid rgba(0,0,0,.04)!important}.el-table .el-table__row{transition:background-color .2s ease}.el-table .el-table__row:hover{background-color:rgba(64,158,255,.04)!important}.el-button{border-radius:8px!important;font-weight:500!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.el-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.el-button.el-button--primary{background:linear-gradient(135deg,#409eff,#66b3ff)!important;border:none!important}.el-button.el-button--success{background:linear-gradient(135deg,#67c23a,#85ce61)!important;border:none!important}.el-button.el-button--warning{background:linear-gradient(135deg,#e6a23c,#eebc6b)!important;border:none!important}.el-button.el-button--danger{background:linear-gradient(135deg,#f56c6c,#f89898)!important;border:none!important}.el-input__inner{border-radius:8px!important;border:2px solid #e9ecef!important;transition:all .3s ease!important}.el-input__inner:focus{border-color:#409eff!important;box-shadow:0 0 0 3px rgba(64,158,255,.1)!important}.el-select .el-input__inner{border-radius:8px!important}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;padding:20px}.image-grid .image-item{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;box-shadow:0 4px 12px rgba(0,0,0,.1);transition:all .3s cubic-bezier(.4,0,.2,1)}.image-grid .image-item:hover{transform:translateY(-4px);box-shadow:0 8px 25px rgba(0,0,0,.15)}.image-grid .image-item img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .3s ease}.image-grid .image-item img:hover{transform:scale(1.1)}.image-grid .image-item .image-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.7));opacity:0;transition:opacity .3s ease;display:flex;align-items:flex-end;padding:16px}.image-grid .image-item .image-overlay .image-info{color:#fff;font-size:14px;font-weight:500}.image-grid .image-item:hover .image-overlay{opacity:1}.loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #409eff;border-radius:50%;animation:spin 1s linear infinite}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:rgba(0,0,0,.05);border-radius:4px}::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#c1c1c1,#a8a8a8);border-radius:4px;-webkit-transition:background .3s ease;transition:background .3s ease}::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#a8a8a8,#909090)}.el-scrollbar__bar.is-horizontal{display:none!important}@media(max-width:768px){.image-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;padding:16px}.el-card{margin:8px!important}}@media(prefers-color-scheme:dark){.el-card{background-color:#2d3748!important;border-color:#4a5568!important}.el-card .el-card__header{background:linear-gradient(135deg,#2d3748,#4a5568);color:#e2e8f0}.el-table th{background:linear-gradient(135deg,#2d3748,#4a5568)!important;color:#e2e8f0!important}}.fade-in{animation:fadeIn .5s ease-in}.slide-up{animation:slideUp .3s ease-out}.scale-in{animation:scaleIn .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}:root{--animation-duration-fast:0.2s;--animation-duration-normal:0.3s;--animation-duration-slow:0.5s;--animation-easing:cubic-bezier(0.4,0,0.2,1);--animation-easing-bounce:cubic-bezier(0.68,-0.55,0.265,1.55)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes bounce{0%,20%,53%,80%,to{transform:translateZ(0)}40%,43%{transform:translate3d(0,-8px,0)}70%{transform:translate3d(0,-4px,0)}90%{transform:translate3d(0,-2px,0)}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-2px)}20%,40%,60%,80%{transform:translateX(2px)}}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInLeft{0%{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideInRight{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes loading{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes loadingDots{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}@keyframes breathe{0%,to{opacity:.4}50%{opacity:1}}.animate-fade-in{animation:fadeIn var(--animation-duration-normal) var(--animation-easing)}.animate-fade-out{animation:fadeOut var(--animation-duration-normal) var(--animation-easing)}.animate-fade-in-up{animation:fadeInUp var(--animation-duration-normal) var(--animation-easing)}.animate-fade-in-down{animation:fadeInDown var(--animation-duration-normal) var(--animation-easing)}.animate-fade-in-left{animation:fadeInLeft var(--animation-duration-normal) var(--animation-easing)}.animate-fade-in-right{animation:fadeInRight var(--animation-duration-normal) var(--animation-easing)}.animate-scale-in{animation:scaleIn var(--animation-duration-normal) var(--animation-easing)}.animate-scale-out{animation:scaleOut var(--animation-duration-normal) var(--animation-easing)}.animate-pulse{animation:pulse 2s infinite}.animate-spin{animation:spin 1s linear infinite}.animate-bounce{animation:bounce 1s infinite}.animate-shake{animation:shake .5s ease-in-out}.animate-slide-in-up{animation:slideInUp var(--animation-duration-normal) var(--animation-easing)}.animate-slide-in-down{animation:slideInDown var(--animation-duration-normal) var(--animation-easing)}.animate-slide-in-left{animation:slideInLeft var(--animation-duration-normal) var(--animation-easing)}.animate-slide-in-right{animation:slideInRight var(--animation-duration-normal) var(--animation-easing)}.animate-loading{animation:loading 1s linear infinite}.animate-breathe{animation:breathe 2s ease-in-out infinite}.transition-all{transition:all var(--animation-duration-normal) var(--animation-easing)}.transition-colors{transition:color var(--animation-duration-normal) var(--animation-easing),background-color var(--animation-duration-normal) var(--animation-easing),border-color var(--animation-duration-normal) var(--animation-easing)}.transition-transform{transition:transform var(--animation-duration-normal) var(--animation-easing)}.transition-opacity{transition:opacity var(--animation-duration-normal) var(--animation-easing)}.transition-shadow{transition:box-shadow var(--animation-duration-normal) var(--animation-easing)}.hover-lift{transition:transform var(--animation-duration-normal) var(--animation-easing)}.hover-lift:hover{transform:translateY(-4px)}.hover-scale{transition:transform var(--animation-duration-normal) var(--animation-easing)}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:box-shadow var(--animation-duration-normal) var(--animation-easing)}.hover-glow:hover{box-shadow:0 0 20px rgba(64,158,255,.3)}.hover-rotate{transition:transform var(--animation-duration-normal) var(--animation-easing)}.hover-rotate:hover{transform:rotate(5deg)}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-500{animation-delay:.5s}.duration-fast{animation-duration:var(--animation-duration-fast)}.duration-normal{animation-duration:var(--animation-duration-normal)}.duration-slow{animation-duration:var(--animation-duration-slow)}.glassmorphism{background:hsla(0,0%,100%,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2)}.neumorphism{background:#f0f0f0;box-shadow:8px 8px 16px #d1d1d1,-8px -8px 16px #fff;border-radius:12px}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.page-enter-active,.page-leave-active{transition:all var(--animation-duration-normal) var(--animation-easing)}.page-enter-from{opacity:0;transform:translateY(20px)}.page-leave-to{opacity:0;transform:translateY(-20px)}.list-enter-active,.list-leave-active{transition:all var(--animation-duration-normal) var(--animation-easing)}.list-enter-from,.list-leave-to{opacity:0;transform:translateX(30px)}.list-move{transition:transform var(--animation-duration-normal) var(--animation-easing)}.pagination-container{padding:20px 0;text-align:right}.form-container{padding:20px}.form-container .el-form-item{margin-bottom:22px}.form-container .form-actions{margin-top:30px;text-align:center}.el-card .el-card__body{padding:24px}.page-title{font-size:18px;font-weight:700;margin-bottom:20px;color:#303133}.table-operations{margin-bottom:24px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}.icon-button{padding:8px;font-size:16px;border-radius:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.icon-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.search-container{margin-bottom:24px;padding:24px;background:linear-gradient(135deg,#fff,#f8f9fa);border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.06);transition:all .3s cubic-bezier(.4,0,.2,1)}.search-container:hover{transform:translateY(-1px);box-shadow:0 6px 25px rgba(0,0,0,.12)}.mb-10{margin-bottom:10px}.mb-20{margin-bottom:20px}.mt-10{margin-top:10px}.mt-20{margin-top:20px}.waves-ripple{position:absolute;border-radius:100%;background-color:rgba(0,0,0,.15);background-clip:padding-box;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform:scale(0);opacity:1}.waves-anim{animation:waves-ripple .4s ease-out}@keyframes waves-ripple{0%{transform:scale(0);opacity:1}to{transform:scale(2);opacity:0}}.pagination-container[data-v-284f2420]{background:#fff;padding:15px 0;text-align:center}