#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{height:100%;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;color:#333}.login-page{height:100vh;display:flex;overflow:hidden}.login-page .login-left{flex:1;display:flex;flex-direction:column;justify-content:space-between;padding:32px 40px;background:linear-gradient(160deg,#5b7fe8,#8e6ccf,#c9a0dc);position:relative;color:#fff;min-width:0}.login-page .login-left:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 30% 80%,rgba(255,255,255,.08) 0%,transparent 60%)}.login-page .login-left .brand-top{position:relative;z-index:1}.login-page .login-left .brand-top .brand-logo{display:flex;align-items:center;gap:10px}.login-page .login-left .brand-top .brand-logo .logo-cloud{font-size:32px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.15))}.login-page .login-left .brand-top .brand-logo .logo-img-sm{width:36px;height:36px;border-radius:8px;object-fit:cover}.login-page .login-left .brand-top .brand-logo .logo-info{display:flex;flex-direction:column}.login-page .login-left .brand-top .brand-logo .logo-title{font-size:18px;font-weight:700;letter-spacing:1px}.login-page .login-left .brand-top .brand-logo .logo-sub{font-size:11px;opacity:.75;margin-top:2px}.login-page .login-left .brand-center{position:relative;z-index:1;text-align:center;padding:0 20px}.login-page .login-left .brand-center .brand-name{font-size:42px;font-weight:300;letter-spacing:6px;margin-bottom:16px;text-shadow:0 2px 12px rgba(0,0,0,.15)}.login-page .login-left .brand-center .brand-slogan{font-size:16px;opacity:.8;letter-spacing:3px}.login-page .login-left .brand-footer{position:relative;z-index:1;text-align:center;font-size:12px;opacity:.6;line-height:1.8}.login-page .login-right{width:520px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#0a0e27;position:relative;overflow:hidden}@media(min-width:1400px){.login-page .login-right{width:580px}}.login-page .login-right .particle-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.login-page .login-right .tech-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;opacity:.03;background-image:linear-gradient(rgba(99,130,255,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(99,130,255,.5) 1px,transparent 1px);background-size:40px 40px}.login-page .login-right .scan-line{position:absolute;left:0;right:0;height:1px;z-index:2;background:linear-gradient(90deg,transparent,rgba(99,130,255,.4),transparent);animation:scanMove 4s ease-in-out infinite}@keyframes scanMove{0%{top:0;opacity:0}50%{opacity:1}to{top:100%;opacity:0}}.login-page .login-right .hex-pattern{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.login-page .login-right .hex{position:absolute;border:1px solid rgba(99,130,255,.12);border-radius:4px;transform:rotate(45deg);animation:hexPulse 5s ease-in-out infinite}@keyframes hexPulse{0%,to{opacity:.15;transform:rotate(45deg) scale(1)}50%{opacity:.35;transform:rotate(45deg) scale(1.1)}}.login-page .login-right .data-bar{position:relative;z-index:10;display:flex;gap:20px;margin-bottom:28px;padding:0 10px}.login-page .login-right .data-bar .data-item{display:flex;flex-direction:column;align-items:center;gap:2px}.login-page .login-right .data-bar .data-item .data-val{font-size:16px;font-weight:700;color:#60a5fa;font-family:Courier New,monospace;letter-spacing:1px}.login-page .login-right .data-bar .data-item .data-label{font-size:10px;color:#ffffff59;letter-spacing:1px}.login-page .login-right .login-card{position:relative;z-index:10;width:380px}.login-page .login-right .login-card .card-glow{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:16px;z-index:-1;background:linear-gradient(135deg,#60a5fa4d,#a78bfa4d,#60a5fa1a);filter:blur(1px);animation:glowPulse 3s ease-in-out infinite}@keyframes glowPulse{0%,to{opacity:.6}50%{opacity:1}}.login-page .login-right .login-card .card-inner{background:#0f1432bf;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:16px;border:1px solid rgba(99,130,255,.15);padding:32px 30px 24px}.login-page .login-right .card-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.login-page .login-right .card-header .ai-icon{flex-shrink:0;animation:iconSpin 20s linear infinite}@keyframes iconSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-page .login-right .card-header .card-title-group .card-title{font-size:20px;font-weight:700;color:#e2e8f0;letter-spacing:2px;margin:0}.login-page .login-right .card-header .card-title-group .card-subtitle{font-size:10px;color:#ffffff4d;margin-top:4px;letter-spacing:.5px;font-family:Courier New,monospace}.login-page .login-right .security-badge{display:flex;align-items:center;gap:6px;font-size:11px;color:#34d399b3;margin-bottom:24px;padding:6px 12px;border-radius:6px;background:#34d3990f;border:1px solid rgba(52,211,153,.1)}.login-page .login-right .security-badge .badge-dot{width:6px;height:6px;border-radius:50%;background:#34d399;animation:dotBlink 2s ease-in-out infinite}@keyframes dotBlink{0%,to{opacity:1}50%{opacity:.3}}.login-page .login-right .tech-form .input-wrap{display:flex;align-items:center;width:100%;background:#ffffff0a;border:1px solid rgba(99,130,255,.15);border-radius:10px;transition:all .3s;padding-left:14px}.login-page .login-right .tech-form .input-wrap:hover,.login-page .login-right .tech-form .input-wrap:focus-within{border-color:#6382ff66;background:#ffffff0f;box-shadow:0 0 20px #6382ff14}.login-page .login-right .tech-form .input-wrap .input-icon{color:#96aaff80;flex-shrink:0;display:flex;align-items:center}.login-page .login-right .tech-form .el-input{flex:1}.login-page .login-right .tech-form .el-input__wrapper{background:transparent!important;box-shadow:none!important;border:none!important;padding-left:8px}.login-page .login-right .tech-form .el-input__wrapper input{color:#e2e8f0!important;font-size:14px}.login-page .login-right .tech-form .el-input__wrapper input::placeholder{color:#ffffff40!important}.login-page .login-right .tech-form .el-input__suffix{color:#96aaff66}.login-page .login-right .tech-form .el-form-item{margin-bottom:18px}.login-page .login-right .tech-form .el-form-item__error{padding-left:14px}.login-page .login-right .tech-form .form-options{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.login-page .login-right .tech-form .form-options .el-checkbox{--el-checkbox-text-color: rgba(255,255,255,.4);--el-checkbox-checked-bg-color: #6366f1;--el-checkbox-checked-input-border-color: #6366f1;--el-checkbox-input-border-color: rgba(99,130,255,.25)}.login-page .login-right .tech-form .form-options .el-checkbox .el-checkbox__label{font-size:12px}.login-page .login-right .tech-form .login-tabs{display:flex;gap:4px;margin-bottom:20px;padding:3px;background:#ffffff0a;border-radius:8px}.login-page .login-right .tech-form .login-tabs .login-tab{flex:1;text-align:center;padding:8px 0;font-size:13px;color:#ffffff59;border-radius:6px;cursor:pointer;transition:all .3s;-webkit-user-select:none;user-select:none;letter-spacing:1px}.login-page .login-right .tech-form .login-tabs .login-tab:hover{color:#fff9}.login-page .login-right .tech-form .login-tabs .login-tab.active{background:#6382ff26;color:#a5b4fc;box-shadow:0 2px 8px #6382ff1a}.login-page .login-right .tech-form .sms-input-wrap .el-input{flex:1}.login-page .login-right .tech-form .sms-input-wrap .sms-send-btn{flex-shrink:0;margin-left:8px;height:38px;padding:0 14px;font-size:12px;border-radius:8px;border:1px solid rgba(99,130,255,.2);background:#6382ff14;color:#a5b4fc;letter-spacing:.5px}.login-page .login-right .tech-form .sms-input-wrap .sms-send-btn:hover:not(:disabled){background:#6382ff26;border-color:#6382ff66}.login-page .login-right .tech-form .sms-input-wrap .sms-send-btn:disabled{opacity:.4;cursor:not-allowed}.login-page .login-right .tech-form .sms-input-wrap .captcha-img{flex-shrink:0;margin-left:8px;height:38px;width:110px;border-radius:8px;cursor:pointer;border:1px solid rgba(99,130,255,.2);background:#fff;object-fit:cover}.login-page .login-right .tech-form .sms-input-wrap .captcha-img:hover{border-color:#6382ff80}.login-page .login-right .tech-form .login-btn{width:100%;height:46px;border-radius:10px;font-size:15px;letter-spacing:4px;border:none;background:linear-gradient(135deg,#4f6ef7,#7c5bf5);position:relative;overflow:hidden;font-weight:600}.login-page .login-right .tech-form .login-btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);transform:translate(-100%);transition:transform .6s}.login-page .login-right .tech-form .login-btn:hover{background:linear-gradient(135deg,#5a7af8,#8b6cf6);box-shadow:0 4px 24px #6366f166}.login-page .login-right .tech-form .login-btn:hover:before{transform:translate(100%)}.login-page .login-right .tech-form .login-btn:active{transform:scale(.98)}.login-page .login-right .card-footer{margin-top:20px;padding-top:16px;border-top:1px solid rgba(99,130,255,.08)}.login-page .login-right .card-footer .tech-tags{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.login-page .login-right .card-footer .tech-tags .tech-tag{font-size:10px;color:#96aaff73;padding:3px 10px;border:1px solid rgba(99,130,255,.1);border-radius:20px;background:#6382ff0a;letter-spacing:1px}.login-page .login-right .status-bar{position:relative;z-index:10;display:flex;gap:20px;margin-top:24px;font-size:11px;color:#ffffff40;font-family:Courier New,monospace}.login-page .login-right .status-bar .status-item{display:flex;align-items:center;gap:4px}.login-page .login-right .status-bar .status-dot{width:5px;height:5px;border-radius:50%;display:inline-block}.login-page .login-right .status-bar .status-dot.green{background:#34d399;box-shadow:0 0 6px #34d39980}:root{--el-color-primary: #2563eb;--el-color-primary-light-3: #5b8def;--el-color-primary-light-5: #8fb2f4;--el-color-primary-light-7: #bcd2f9;--el-color-primary-light-8: #d4e2fb;--el-color-primary-light-9: #eaf1fe;--el-color-primary-dark-2: #1d4fd0}.layout-container{height:100vh;display:flex}.layout-container .sidebar{width:210px;background:#fff;transition:width .3s;overflow:hidden;display:flex;flex-direction:column;border-right:1px solid #eef0f4;box-shadow:0 0 12px #00000008}.layout-container .sidebar.collapsed{width:64px}.layout-container .sidebar.collapsed .logo-text{display:none}.layout-container .sidebar .logo-wrap{height:56px;display:flex;align-items:center;padding:0 18px;gap:10px;cursor:pointer;border-bottom:1px solid #f2f4f8}.layout-container .sidebar .logo-wrap .logo-icon{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#2563eb,#3b82f6);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px;flex-shrink:0}.layout-container .sidebar .logo-wrap .logo-img{width:30px;height:30px;border-radius:8px;object-fit:cover;flex-shrink:0}.layout-container .sidebar .logo-wrap .logo-text{color:#1e293b;font-size:16px;font-weight:700;white-space:nowrap;letter-spacing:.5px}.layout-container .sidebar .el-menu{border-right:none;flex:1;overflow-y:auto;padding:6px 8px;--el-menu-bg-color: #ffffff;--el-menu-text-color: #475569;--el-menu-hover-bg-color: #f1f5fd;--el-menu-active-color: #2563eb;--el-menu-active-bg-color: transparent}.layout-container .sidebar .el-menu-item,.layout-container .sidebar .el-sub-menu__title{height:44px;line-height:44px;font-size:14px;border-radius:8px;margin-bottom:2px}.layout-container .sidebar .el-menu-item:hover,.layout-container .sidebar .el-sub-menu__title:hover{background:#f1f5fd;color:#2563eb}.layout-container .sidebar .el-menu-item.is-active{color:#fff!important;background:linear-gradient(135deg,#2563eb,#3b82f6)!important;font-weight:600;box-shadow:0 4px 10px #2563eb40}.layout-container .sidebar .el-sub-menu.is-active>.el-sub-menu__title{color:#2563eb!important}.layout-container .sidebar .el-sub-menu .el-menu-item{padding-left:46px!important;font-size:13px;height:40px;line-height:40px}.layout-container .sidebar .el-sub-menu .el-menu-item.is-active{color:#fff!important}.layout-container .main-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f4f6fa}.layout-container .main-area .header{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:#fff;border-bottom:1px solid #eef0f4;flex-shrink:0}.layout-container .main-area .header .header-left{display:flex;align-items:center;gap:12px}.layout-container .main-area .header .header-right{display:flex;align-items:center;gap:14px;font-size:13px;color:#475569}.layout-container .main-area .tabs-bar{background:#fff;padding:0 14px;display:flex;align-items:center;height:38px;border-bottom:1px solid #eef0f4;flex-shrink:0;gap:6px;overflow-x:auto}.layout-container .main-area .tabs-bar .tab-item{display:inline-flex;align-items:center;gap:4px;padding:0 14px;height:28px;border-radius:6px;font-size:12px;cursor:pointer;white-space:nowrap;color:#64748b;background:#f4f6fa;border:1px solid transparent}.layout-container .main-area .tabs-bar .tab-item.active{color:#2563eb;background:#eaf1fe;border-color:#bcd2f9}.layout-container .main-area .tabs-bar .tab-item:hover{color:#2563eb}.layout-container .main-area .tabs-bar .tab-item .close-btn{font-size:10px;margin-left:2px;cursor:pointer}.layout-container .main-area .tabs-bar .tab-item .close-btn:hover{color:#f56c6c}.layout-container .main-area .main-content{flex:1;padding:16px;overflow-y:auto}.layout-container .main-area .footer{height:40px;display:flex;align-items:center;justify-content:center;font-size:12px;color:#94a3b8;background:#fff;border-top:1px solid #eef0f4;flex-shrink:0}.page-container .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:8px}.card-box{background:#fff;border-radius:8px;padding:20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.card-box .card-title{font-size:15px;font-weight:600;color:#1e293b;margin-bottom:16px;display:flex;align-items:center;gap:8px}.card-box .card-title .title-icon{color:#2563eb}.stat-card{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000000a;display:flex;align-items:center;justify-content:space-between}.stat-card .stat-info .stat-label{font-size:13px;color:#999;margin-bottom:8px}.stat-card .stat-info .stat-value{font-size:26px;font-weight:700;color:#1e293b}.stat-card .stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px}.stat-card .stat-icon.blue{background:#eaf1fe;color:#2563eb}.stat-card .stat-icon.green{background:#ecfdf5;color:#10b981}.stat-card .stat-icon.orange{background:#fff7ed;color:#f59e0b}.stat-card .stat-icon.red{background:#fef2f2;color:#ef4444}.stat-card .stat-icon.purple{background:#f5f3ff;color:#8b5cf6}.stats-section{display:flex;gap:24px;padding:20px 0}.stats-section .stats-left,.stats-section .stats-right{flex:1}.stats-section .stats-number{font-size:32px;font-weight:700;margin-bottom:8px}.stats-section .stats-number.blue{color:#2563eb}.stats-section .stats-number.green{color:#10b981}.stats-section .stats-detail{font-size:13px;color:#888;line-height:1.8}.stats-section .stats-chart{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:16px}.el-table{font-size:13px}.el-table th.el-table__cell{background:#fafafa!important;color:#666;font-weight:600;font-size:13px}.el-pagination{margin-top:16px;justify-content:flex-end}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px}.status-dot.online{background:#10b981}.status-dot.offline{background:#ef4444}.status-dot.pending{background:#f59e0b}
