.login-container{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0a0e27;overflow:hidden}.login-background{position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(ellipse at top,#1a1f3a,#0a0e27 50%),radial-gradient(ellipse at bottom,#0f1433,#0a0e27 50%)}.bg-grid{position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(rgba(99,102,241,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.05) 1px,transparent 1px);background-size:60px 60px;-webkit-mask-image:radial-gradient(ellipse at center,black 0%,transparent 75%);mask-image:radial-gradient(ellipse at center,black 0%,transparent 75%);animation:gridPulse 4s ease-in-out infinite}@keyframes gridPulse{0%,to{opacity:.3}50%{opacity:.6}}.particles{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden}.particle{position:absolute;width:2px;height:2px;background:#6366f1;border-radius:50%;box-shadow:0 0 4px #6366f1,0 0 8px #6366f1;animation:particleFloat linear infinite}@keyframes particleFloat{0%{opacity:0;transform:translateY(0) scale(0)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(-100vh) scale(1)}}.meteors{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;pointer-events:none}.meteor{position:absolute;width:2px;height:2px;background:linear-gradient(90deg,#fff,transparent);border-radius:50%;box-shadow:0 0 6px 2px #fffc;animation:meteorFall linear infinite}.meteor:before{content:"";position:absolute;top:0;right:0;width:80px;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.8),transparent)}@keyframes meteorFall{0%{transform:translate(0) rotate(-45deg);opacity:1}70%{opacity:1}to{transform:translate(300px,300px) rotate(-45deg);opacity:0}}.glow-orbs{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden}.orb{position:absolute;border-radius:50%;filter:blur(60px);opacity:.15;animation:orbFloat 20s ease-in-out infinite}.orb-1{width:400px;height:400px;background:#6366f1;top:-200px;left:-200px;animation-delay:0s}.orb-2{width:300px;height:300px;background:#8b5cf6;bottom:-150px;right:-150px;animation-delay:5s}.orb-3{width:350px;height:350px;background:#a855f7;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:10s}@keyframes orbFloat{0%,to{transform:translate(0)}33%{transform:translate(50px,-50px)}66%{transform:translate(-50px,50px)}}.login-card{position:relative;width:440px;padding:48px 56px 56px;background:#111827b3;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(99,102,241,.3);border-radius:2px;box-shadow:0 0 0 1px #6366f126,0 20px 40px #00000080,inset 0 1px #ffffff0d,0 0 60px #6366f11a;z-index:10}.scan-line{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(99,102,241,.8),transparent);animation:scan 3s linear infinite}@keyframes scan{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}to{top:100%;opacity:0}}.card-glow{position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(99,102,241,.5),transparent);box-shadow:0 0 20px #6366f180;animation:glowPulse 2s ease-in-out infinite}@keyframes glowPulse{0%,to{opacity:.3}50%{opacity:1}}.login-header{text-align:center;margin-bottom:40px}.logo-wrapper{display:flex;justify-content:center;align-items:center;margin-bottom:24px;padding:0}.company-logo{max-width:280px;max-height:120px;width:auto;height:auto;object-fit:contain;display:block}.logo-fallback{display:none;font-size:36px;font-weight:700;color:#6366f1}.logo-fallback.visible{display:block}.login-title{margin:0 0 6px;font-size:20px;font-weight:600;color:#f8fafc;letter-spacing:-.5px;text-shadow:0 0 20px rgba(99,102,241,.3)}.login-subtitle{margin:0;font-size:12px;color:#64748b;letter-spacing:.5px;font-weight:400}.login-card .ant-form{margin-top:8px}.login-card .ant-form-item{margin-bottom:20px}.login-card .ant-input-affix-wrapper,.login-card .ant-input{background:#0f172a99;border:1px solid rgba(99,102,241,.2);color:#e2e8f0;border-radius:2px;transition:all .3s ease;position:relative}.login-card .ant-input-affix-wrapper:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:2px;padding:1px;background:linear-gradient(135deg,transparent,rgba(99,102,241,.3),transparent);-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;opacity:0;transition:opacity .3s ease}.login-card .ant-input-affix-wrapper:hover:before,.login-card .ant-input-affix-wrapper-focused:before{opacity:1}.login-card .ant-input-affix-wrapper:hover,.login-card .ant-input:hover{background:#0f172acc;border-color:#6366f166;box-shadow:0 0 10px #6366f11a}.login-card .ant-input-affix-wrapper-focused,.login-card .ant-input-affix-wrapper:focus,.login-card .ant-input:focus{background:#0f172ae6;border-color:#6366f1;box-shadow:0 0 0 2px #6366f11a,0 0 20px #6366f133}.login-card .ant-input::placeholder{color:#475569}.login-card .ant-input-prefix{color:#64748b;margin-right:12px}.login-card .ant-input-password-icon{color:#64748b}.login-card .ant-input-password-icon:hover{color:#94a3b8}.login-button{height:44px;margin-top:12px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:2px;font-size:15px;font-weight:500;letter-spacing:.5px;position:relative;overflow:hidden;box-shadow:0 0 0 1px #6366f14d,0 4px 12px #6366f14d,inset 0 1px #ffffff1a;transition:all .3s ease}.login-button:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(45deg,transparent,rgba(255,255,255,.1),transparent);transform:translate(-100%);transition:transform .6s ease}.login-button:hover:before{transform:translate(100%)}.login-button:hover{background:linear-gradient(135deg,#7c3aed,#a855f7);box-shadow:0 0 0 1px #6366f166,0 6px 16px #6366f166,0 0 30px #6366f14d;transform:translateY(-1px)}.login-button:active{transform:translateY(0)}.login-card .ant-form-item-explain-error{color:#f87171;font-size:12px}@media (max-width: 640px){.login-card{width:calc(100% - 32px);margin:0 16px;padding:40px 32px 48px}.login-title{font-size:22px}.login-subtitle{font-size:12px}.meteor{display:none}}.login-card .ant-btn-loading-icon{color:#fff}.login-card .ant-input:-webkit-autofill,.login-card .ant-input:-webkit-autofill:hover,.login-card .ant-input:-webkit-autofill:focus{-webkit-text-fill-color:#e2e8f0;-webkit-box-shadow:0 0 0 1000px rgba(15,23,42,.9) inset;transition:background-color 5000s ease-in-out 0s}.dashboard-container{padding:24px;background:var(--bg-secondary);min-height:calc(100vh - 64px)}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:16px}.stats-row{margin-bottom:0;width:100%}.stats-row .ant-col{min-width:250px}@media (min-width: 992px){.stats-row .ant-col-lg-6{flex:0 0 25%;max-width:25%}}.stat-card{height:130px!important;transition:all .3s ease;border-radius:8px;overflow:visible!important;position:relative}.stat-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001f!important}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--card-color-start),var(--card-color-end));z-index:1;border-radius:8px 8px 0 0}.stat-card:after{content:"";position:absolute;bottom:0;left:0;right:0;height:6px;background:linear-gradient(90deg,var(--card-color-start),var(--card-color-end));opacity:.6;z-index:0;border-radius:0 0 8px 8px;pointer-events:none}.stat-card-primary{--card-color-start: #1890ff;--card-color-end: #36cfc9}.stat-card-success{--card-color-start: #52c41a;--card-color-end: #73d13d}.stat-card-success:after{content:""!important;display:block!important;position:absolute!important;bottom:0!important;left:0!important;right:0!important;height:6px!important;background:linear-gradient(90deg,#52c41a,#73d13d)!important;opacity:.6!important;z-index:0!important;border-radius:0 0 8px 8px!important;pointer-events:none!important}.stat-card-danger{--card-color-start: #ff4d4f;--card-color-end: #ff7a45}.stat-card-warning{--card-color-start: #faad14;--card-color-end: #ffc53d}.stat-card .ant-card-body{padding:20px!important;display:flex!important;align-items:center!important;gap:16px!important;position:relative;z-index:2;background:var(--bg-primary)!important;height:120px!important;max-height:120px!important;width:100%!important}.stat-icon{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0;position:relative;z-index:1}.stat-icon.primary{background:linear-gradient(135deg,#1890ff,#36cfc9);color:#fff!important;box-shadow:0 2px 8px #1890ff4d}.stat-icon.success{background:linear-gradient(135deg,#52c41a,#73d13d);color:#fff!important;box-shadow:0 2px 8px #52c41a4d}.stat-icon.danger{background:linear-gradient(135deg,#ff4d4f,#ff7a45);color:#fff!important;box-shadow:0 2px 8px #ff4d4f4d}.stat-icon.warning{background:linear-gradient(135deg,#faad14,#ffc53d);color:#fff!important;box-shadow:0 2px 8px #faad144d}.stat-content{flex:1 1 auto;min-width:0;position:relative;z-index:1;width:100%;display:flex;flex-direction:column;justify-content:center}.stat-value{font-size:32px;font-weight:700;line-height:1.2;margin:4px 0;color:#262626!important;background:transparent!important;display:block!important;visibility:visible!important;opacity:1!important}.chart-card{transition:box-shadow .3s ease;border-radius:8px}.chart-card:hover{box-shadow:0 4px 16px #00000014}.chart-card .ant-card-body{padding:20px}.map-card{transition:box-shadow .3s ease;border-radius:8px;overflow:hidden}.map-card:hover{box-shadow:0 4px 16px #00000014}.map-card .ant-card-body{padding:0}.activity-card{transition:box-shadow .3s ease;border-radius:8px;height:100%}.activity-card:hover{box-shadow:0 4px 16px #00000014}.activity-card .ant-card-body{padding:16px}.activity-item{display:flex;justify-content:space-between;align-items:flex-start}.alert-item{cursor:pointer;transition:background-color .2s ease;padding:12px!important;border-radius:6px;margin-bottom:4px!important}.alert-item:hover{background-color:var(--bg-hover)}.shortcut-card{border-radius:8px;height:100%}.shortcut-card .ant-card-body{padding:20px}.shortcut-button{background:linear-gradient(135deg,var(--btn-color-start),var(--btn-color-end));color:#fff;border-radius:12px;padding:20px;text-align:center;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 8px #0000001a}.shortcut-button:hover{transform:translateY(-4px);box-shadow:0 6px 20px #00000026}.shortcut-button:active{transform:translateY(-2px)}.shortcut-button.primary{--btn-color-start: #1890ff;--btn-color-end: #36cfc9}.shortcut-button.success{--btn-color-start: #52c41a;--btn-color-end: #73d13d}.shortcut-button.warning{--btn-color-start: #faad14;--btn-color-end: #ffc53d}.shortcut-button.danger{--btn-color-start: #ff4d4f;--btn-color-end: #ff7a45}.shortcut-button.info{--btn-color-start: #13c2c2;--btn-color-end: #36cfc9}.shortcut-button.purple{--btn-color-start: #722ed1;--btn-color-end: #9254de}.shortcut-icon{font-size:32px;margin-bottom:8px;display:block}.shortcut-text{font-size:14px;font-weight:500}.activity-card .ant-card-body>div::-webkit-scrollbar,.alert-item::-webkit-scrollbar{width:6px}.activity-card .ant-card-body>div::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.activity-card .ant-card-body>div::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.activity-card .ant-card-body>div::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.ant-timeline-item{padding-bottom:16px}@media (max-width: 992px){.dashboard-header{flex-direction:column;gap:12px}.stat-card{margin-bottom:12px}.stat-icon{width:50px;height:50px;font-size:24px}.stat-value{font-size:28px}.shortcut-button{padding:16px}.shortcut-icon{font-size:28px}.shortcut-text{font-size:13px}.chart-card canvas{max-height:250px}.activity-card .ant-card-body>div{max-height:300px!important}}@media (max-width: 576px){.dashboard-container{padding:12px}.dashboard-header h2{font-size:20px!important}.stat-card .ant-card-body{padding:16px;gap:12px}.stat-icon{width:40px;height:40px;font-size:20px;border-radius:8px}.stat-content{min-width:0}.stat-value{font-size:24px}.shortcut-button{padding:12px}.shortcut-icon{font-size:24px;margin-bottom:4px}.shortcut-text{font-size:12px}.chart-card{margin-bottom:12px}.chart-card canvas{max-height:200px}.chart-card .ant-card-head-title{font-size:14px}.map-card{height:300px!important}.activity-card .ant-card-body>div{max-height:250px!important}.ant-timeline-item-content{font-size:13px}.alert-item{padding:10px!important}.ant-row{margin-bottom:8px!important}.chart-card .ant-card-extra{display:none}}@media (max-width: 375px){.dashboard-container{padding:8px}.stat-card .ant-card-body{padding:12px;flex-direction:column;align-items:flex-start!important;gap:8px}.stat-icon{width:36px;height:36px;font-size:18px}.stat-value{font-size:20px}.shortcut-button{padding:10px}.shortcut-icon{font-size:20px}.shortcut-text{font-size:11px}}@media (max-height: 600px) and (orientation: landscape){.dashboard-container{padding:12px}.chart-card{height:auto}.chart-card canvas{max-height:180px}.activity-card .ant-card-body>div{max-height:200px!important}.map-card{height:250px!important}}@keyframes valueUpdate{0%{transform:scale(1)}50%{transform:scale(1.1);color:#1890ff}to{transform:scale(1)}}.stat-value-animating{animation:valueUpdate .5s ease-in-out}.stats-row .ant-col{animation:fadeInUp .4s ease-out;animation-fill-mode:both}.stats-row .ant-col:nth-child(1){animation-delay:0s}.stats-row .ant-col:nth-child(2){animation-delay:.05s}.stats-row .ant-col:nth-child(3){animation-delay:.1s}.stats-row .ant-col:nth-child(4){animation-delay:.15s}.chart-card canvas{max-height:300px}.ant-badge-status-text{margin-left:8px;font-size:13px}.ant-list-item{border-bottom:1px solid #f0f0f0!important;padding:12px 0!important}.ant-list-item:last-child{border-bottom:none!important}@keyframes pulse{0%{box-shadow:0 0 #1890ffb3}70%{box-shadow:0 0 0 10px #1890ff00}to{box-shadow:0 0 #1890ff00}}.stat-icon.pulse{animation:pulse 2s infinite}.trend-indicator{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:12px;background:#0000000a}.trend-indicator.up{color:#52c41a;background:#52c41a1a}.trend-indicator.down{color:#ff4d4f;background:#ff4d4f1a}.stat-card-gradient{background:linear-gradient(135deg,#f5f7fa,#c3cfe2)}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.chart-loading{animation:shimmer 2s infinite linear;background:linear-gradient(to right,#f0f0f0,#e0e0e0,#f0f0f0);background-size:1000px 100%}@keyframes zoomIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.chart-card:hover canvas{transition:transform .3s ease}.ant-timeline-item{animation:fadeInUp .4s ease-out}@keyframes blink{0%,to{opacity:1}50%{opacity:.7}}.alert-item.critical{animation:blink 2s ease-in-out infinite;border-left:3px solid #ff4d4f;padding-left:12px!important}.ant-skeleton{padding:20px 0}.ant-skeleton-content .ant-skeleton-paragraph>li{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.connection-status{position:relative;padding-left:12px}.connection-status:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;background:var(--color-success);animation:pulse 2s infinite}.connection-status.disconnected:before{background:#ff4d4f;animation:none}.main-content,.right-panel{min-height:0;overflow:hidden}.device-list-wrapper{min-height:0;max-height:100%}.device-list-item:hover{background:linear-gradient(90deg,#1890ff14,#1890ff05)!important;transform:translate(4px);border-left:2px solid #1890ff;transition:all .3s cubic-bezier(.4,0,.2,1)}.device-list-item.active{background:linear-gradient(90deg,#1890ff26,#1890ff0d)!important;border-left:4px solid #1890ff;box-shadow:0 2px 8px #1890ff33}.device-list-container{overflow-y:auto;overflow-x:hidden;flex:1 1 auto;min-height:0;max-height:100%}.device-list-container::-webkit-scrollbar{width:8px}.device-list-container::-webkit-scrollbar-track{background:#ffffff0d;border-radius:4px;margin:4px 0}.device-list-container::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#1890ff99,#1890ff66);border-radius:4px;border:2px solid transparent;background-clip:padding-box;transition:all .3s ease}.device-list-container::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#1890ffcc,#1890ff99);background-clip:padding-box;box-shadow:0 0 10px #1890ff80}.stats-card{transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--bg-primary);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light)}.stats-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #1890ff4d!important;border-color:#1890ff80}.stats-card div[style*=fontSize]{color:var(--text-primary)!important}.stats-card div[style*="color: #666"],.stats-card div[style*="color: #8c8c8c"]{color:var(--text-secondary)!important}.control-panel{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:var(--bg-primary)!important;border:1px solid var(--border-light);box-shadow:var(--shadow-md)}.control-panel .ant-select-selector,.control-panel .ant-tree-select-selector{background:var(--bg-secondary)!important;border:1px solid var(--border-light)!important;color:var(--text-primary)!important;font-size:14px!important;font-weight:500!important;transition:all .3s ease}.control-panel .ant-select-selector:hover,.control-panel .ant-tree-select-selector:hover{background:var(--bg-hover)!important;border-color:#1890ff!important;box-shadow:0 0 8px #1890ff4d}.control-panel .ant-select-selection-placeholder,.control-panel .ant-tree-select-selection-placeholder,.control-panel .ant-select-arrow,.control-panel .ant-tree-select-arrow{color:var(--text-secondary)!important}.control-panel span[style*=color]{color:var(--text-primary)!important;font-size:13px!important;font-weight:500!important}.control-panel .ant-switch{background:var(--bg-secondary)!important}.control-panel .ant-switch-checked{background:#1890ff!important;box-shadow:0 0 8px #1890ff80}.control-panel .ant-btn{border-color:var(--border-light)!important;color:var(--text-primary)!important;font-weight:500!important;transition:all .3s ease;background:var(--bg-secondary)!important}.control-panel .ant-btn:hover{border-color:#1890ff!important;box-shadow:0 0 8px #1890ff4d;background:var(--bg-hover)!important;color:#1890ff!important;transform:translateY(-1px)}.control-panel .ant-btn-primary{background:linear-gradient(135deg,#1890ff,#096dd9)!important;border:none!important;color:#fff!important;box-shadow:0 2px 8px #1890ff4d}.control-panel .ant-btn-primary:hover{background:linear-gradient(135deg,#40a9ff,#1890ff)!important;box-shadow:0 4px 12px #1890ff66;transform:translateY(-1px)}.control-panel .ant-slider-rail{background:#00000014!important}.control-panel .ant-slider-track{background:linear-gradient(90deg,#1890ff,#40a9ff)!important}.control-panel .ant-slider-handle{border:2px solid #1890ff!important;box-shadow:0 0 6px #1890ff4d}.control-panel .anticon{color:#595959d9!important;font-size:15px}.control-panel .ant-btn .anticon{color:inherit!important}.map-container{position:relative;overflow:hidden;border-radius:8px;box-shadow:0 4px 20px #00000080,inset 0 0 0 1px #1890ff1a}.map-container:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 50% 50%,rgba(24,144,255,.03) 0%,transparent 70%);pointer-events:none;z-index:1000}.loading-container{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.loading-container .ant-spin-dot-item{background-color:#fff}@media (max-width: 992px){.main-content{flex-direction:column!important}.right-panel{width:100%!important;height:400px!important;max-height:50vh}.device-list-container{max-height:250px}}@media (max-width: 768px){.right-panel{height:350px!important}.device-list-container{max-height:200px}}@media (prefers-color-scheme: dark){.control-panel{background:#141414f2!important;color:#fff}.device-list-item:hover{background-color:#262626!important}.stats-card{background:#1f1f1f!important;border-color:#303030!important}}.fade-in-up{animation:fadeInUp .3s ease-out}.status-indicator{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;position:relative;animation:pulse 2s ease-in-out infinite}.status-indicator.online{background:radial-gradient(circle,#52c41a 0%,#52c41a 60%,transparent 100%);box-shadow:0 0 12px #52c41acc,0 0 4px #52c41a66 inset}.status-indicator.online:after{content:"";position:absolute;top:-4px;left:-4px;right:-4px;bottom:-4px;border-radius:50%;border:2px solid rgba(82,196,26,.3);animation:ripple 2s ease-out infinite}.status-indicator.offline{background:radial-gradient(circle,#8c8c8c 0%,#8c8c8c 60%,transparent 100%);box-shadow:0 0 6px #8c8c8c66;animation:none}.status-indicator.maintenance{background:radial-gradient(circle,#faad14 0%,#faad14 60%,transparent 100%);box-shadow:0 0 12px #faad14cc,0 0 4px #faad1466 inset}@keyframes ripple{0%{transform:scale(.8);opacity:1}to{transform:scale(1.8);opacity:0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.custom-tooltip{background:#000c;color:#fff;border:none;border-radius:6px;font-size:12px}.leaflet-control-container .leaflet-top.leaflet-right{top:60px;right:10px}.leaflet-control-zoom a{background-color:#ffffffe6;border:1px solid rgba(0,0,0,.1)}.leaflet-control-zoom a:hover{background-color:#fff}[data-theme=dark] .device-list-wrapper>div:first-child{background:var(--bg-secondary);border-bottom:1px solid var(--border-light);color:var(--text-primary)!important}[data-theme=dark] .device-list-item{border-color:var(--border-light);color:var(--text-primary)}[data-theme=dark] .device-list-item strong{color:var(--text-primary)!important}[data-theme=dark] .device-list-item div[style*="color: #8c8c8c"],[data-theme=dark] .device-list-item div[style*="color: #595959"]{color:var(--text-secondary)!important}[data-theme=dark] .device-list-item:hover{background:linear-gradient(90deg,#1890ff26,#1890ff0d)!important;border-left-color:#1890ff!important}[data-theme=dark] .device-list-item.active{background:linear-gradient(90deg,#1890ff40,#1890ff1a)!important;border-left-color:#1890ff!important}[data-theme=dark] .stats-card div[style*="color: #1890ff"]{color:#40a9ff!important}[data-theme=dark] .stats-card div[style*="color: #52c41a"]{color:#73d13d!important}[data-theme=dark] .stats-card div[style*="color: #ff4d4f"]{color:#ff7875!important}[data-theme=dark] .control-panel h4{color:var(--text-primary)!important}[data-theme=dark] .control-panel span[style*="fontSize: '12px'"]{color:var(--text-secondary)!important}[data-theme=dark] .ant-badge-status-text{color:var(--text-primary)!important}.status-indicator{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;animation:statusPulse 2s ease-in-out infinite}.status-indicator.online{background:#52c41a;box-shadow:0 0 8px #52c41a99}.status-indicator.offline{background:#8c8c8c;box-shadow:0 0 8px #8c8c8c66;animation:none}@keyframes statusPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}[data-theme=dark] .device-list-container{background:var(--bg-primary)}[data-theme=dark] .loading-container{background:var(--bg-primary);color:var(--text-primary)}[data-theme=dark] .loading-container p{color:var(--text-secondary)!important}[data-theme=dark] .control-panel .ant-btn-primary{background:#1890ff!important;border-color:#1890ff!important;color:#fff!important;box-shadow:0 2px 8px #1890ff66}[data-theme=dark] .control-panel .ant-btn-primary:hover{background:#40a9ff!important;border-color:#40a9ff!important;box-shadow:0 4px 12px #1890ff80;transform:translateY(-1px)}[data-theme=dark] .control-panel .ant-slider-rail{background:var(--bg-secondary)!important}[data-theme=dark] .control-panel .ant-slider-track{background:#1890ff!important}[data-theme=dark] .control-panel .ant-slider-handle{border-color:#1890ff!important;background:#fff!important;box-shadow:0 0 8px #1890ff80}[data-theme=dark] .control-panel .anticon{color:var(--text-primary)!important}[data-theme=dark] .control-panel .ant-btn .anticon{color:inherit!important}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.map-view{position:relative;border-radius:8px;overflow:hidden;box-shadow:0 4px 20px #0000004d}.map-view .leaflet-container{height:100%;width:100%;background:#1a1f2e;filter:brightness(.9) contrast(1.1) saturate(1.3) hue-rotate(-5deg)}[data-theme=light] .map-view .leaflet-container{background:#e5e3df;filter:brightness(1) contrast(1) saturate(1)}.map-view .leaflet-control-zoom{border:none!important;box-shadow:0 4px 12px #00000080!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.map-view .leaflet-control-zoom a{color:#1890ff!important;border:none!important;border-radius:6px!important;background:#141e30e6!important;transition:all .3s ease}.map-view .leaflet-control-zoom a:hover{background:#1890ff33!important;transform:scale(1.05);box-shadow:0 0 15px #1890ff66}.map-view .leaflet-popup-content-wrapper{border-radius:10px;box-shadow:0 8px 32px #0009;background:linear-gradient(135deg,#141e30fa,#1c283cfa);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);border:1px solid rgba(255,255,255,.1)}.map-view .leaflet-popup-content{margin:12px 16px;font-size:14px;line-height:1.6;color:#f0f0f0}.map-view .leaflet-popup-tip{background:#141e30fa!important;border:1px solid rgba(255,255,255,.1)}.map-view .leaflet-popup-close-button{color:#8c8c8c!important;transition:all .2s ease}.map-view .leaflet-popup-close-button:hover{color:#1890ff!important;transform:scale(1.1)}.device-popup{min-width:180px}.device-popup-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.15)}.device-popup-title{font-size:14px;font-weight:600;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.device-popup-status{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;box-shadow:0 2px 8px #0000004d}.device-popup-status.online{background:linear-gradient(135deg,#52c41a4d,#52c41a33);color:#95de64;border:1px solid rgba(82,196,26,.5)}.device-popup-status.offline{background:linear-gradient(135deg,#8c8c8c4d,#8c8c8c33);color:#bfbfbf;border:1px solid rgba(140,140,140,.5)}.device-popup-status.maintenance{background:linear-gradient(135deg,#faad144d,#faad1433);color:#ffc53d;border:1px solid rgba(250,173,20,.5)}.device-popup-body{font-size:11px;color:#d8d8d8}.device-popup-item{display:flex;align-items:flex-start;margin-bottom:6px;transition:all .2s ease}.device-popup-item:hover{background:#ffffff0d;padding:3px;border-radius:3px;margin-left:-3px;margin-right:-3px}.device-popup-label{color:#a8a8a8;margin-right:6px;min-width:50px;font-size:10px}.device-popup-value{color:#f0f0f0;flex:1;font-weight:500;font-size:11px}.device-popup-footer{margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,.15);text-align:right}.device-popup-time{font-size:10px;color:#a8a8a8;opacity:.9}.map-view-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;z-index:1000}.map-view-loading-text{margin-top:12px;color:#8c8c8c;font-size:14px}@media (max-width: 768px){.device-popup{min-width:140px}.device-popup-title{font-size:12px}.device-popup-body{font-size:10px}}.leaflet-draw-section{position:relative}.leaflet-draw-toolbar{margin-top:12px}.leaflet-draw-toolbar-top{margin-top:0}.leaflet-draw-toolbar-notop a:first-child{border-top-right-radius:0}.leaflet-draw-toolbar-nobottom a:last-child{border-bottom-right-radius:0}.leaflet-draw-toolbar a{background-image:url(data:image/png;base64,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);background-image:linear-gradient(transparent,transparent),url(./spritesheet-DpIxuf5L.svg);background-repeat:no-repeat;background-size:300px 30px;background-clip:padding-box}.leaflet-retina .leaflet-draw-toolbar a{background-image:url(data:image/png;base64,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);background-image:linear-gradient(transparent,transparent),url(./spritesheet-DpIxuf5L.svg)}.leaflet-draw a{display:block;text-align:center;text-decoration:none}.leaflet-draw a .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.leaflet-draw-actions{display:none;list-style:none;margin:0;padding:0;position:absolute;left:26px;top:0;white-space:nowrap}.leaflet-touch .leaflet-draw-actions{left:32px}.leaflet-right .leaflet-draw-actions{right:26px;left:auto}.leaflet-touch .leaflet-right .leaflet-draw-actions{right:32px;left:auto}.leaflet-draw-actions li{display:inline-block}.leaflet-draw-actions li:first-child a{border-left:0}.leaflet-draw-actions li:last-child a{-webkit-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.leaflet-right .leaflet-draw-actions li:last-child a{-webkit-border-radius:0;border-radius:0}.leaflet-right .leaflet-draw-actions li:first-child a{-webkit-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.leaflet-draw-actions a{background-color:#919187;border-left:1px solid #AAA;color:#fff;font:11px/19px Helvetica Neue,Arial,Helvetica,sans-serif;line-height:28px;text-decoration:none;padding-left:10px;padding-right:10px;height:28px}.leaflet-touch .leaflet-draw-actions a{font-size:12px;line-height:30px;height:30px}.leaflet-draw-actions-bottom{margin-top:0}.leaflet-draw-actions-top{margin-top:1px}.leaflet-draw-actions-top a,.leaflet-draw-actions-bottom a{height:27px;line-height:27px}.leaflet-draw-actions a:hover{background-color:#a0a098}.leaflet-draw-actions-top.leaflet-draw-actions-bottom a{height:26px;line-height:26px}.leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:-2px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:0 -1px}.leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-31px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-29px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-62px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-60px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-92px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-90px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-122px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-120px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-273px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-271px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-152px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-150px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-182px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-180px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-212px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-210px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-242px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-240px -2px}.leaflet-mouse-marker{background-color:#fff;cursor:crosshair}.leaflet-draw-tooltip{background:#363636;background:#00000080;border:1px solid transparent;-webkit-border-radius:4px;border-radius:4px;color:#fff;font:12px/18px Helvetica Neue,Arial,Helvetica,sans-serif;margin-left:20px;margin-top:-21px;padding:4px 8px;position:absolute;visibility:hidden;white-space:nowrap;z-index:6}.leaflet-draw-tooltip:before{border-right:6px solid black;border-right-color:#00000080;border-top:6px solid transparent;border-bottom:6px solid transparent;content:"";position:absolute;top:7px;left:-7px}.leaflet-error-draw-tooltip{background-color:#f2dede;border:1px solid #e6b6bd;color:#b94a48}.leaflet-error-draw-tooltip:before{border-right-color:#e6b6bd}.leaflet-draw-tooltip-single{margin-top:-12px}.leaflet-draw-tooltip-subtext{color:#f8d5e4}.leaflet-draw-guide-dash{font-size:1%;opacity:.6;position:absolute;width:5px;height:5px}.leaflet-edit-marker-selected{background-color:#fe57a11a;border:4px dashed rgba(254,87,161,.6);-webkit-border-radius:4px;border-radius:4px;box-sizing:content-box}.leaflet-edit-move{cursor:move}.leaflet-edit-resize{cursor:pointer}.leaflet-oldie .leaflet-draw-toolbar{border:1px solid #999}.geofence-draw-map{width:100%}.geofence-draw-map .leaflet-container{font-family:inherit}.geofence-draw-map .leaflet-marker-icon.leaflet-div-icon.leaflet-middle-icon{background-color:#fffc!important;border:2px solid #faad14!important;border-radius:50%!important;width:8px!important;height:8px!important;margin-left:-4px!important;margin-top:-4px!important;cursor:pointer!important;opacity:.7!important}.geofence-draw-map .leaflet-marker-icon.leaflet-div-icon.leaflet-middle-icon:hover{background-color:#faad14!important;opacity:1!important;transform:scale(1.3)}.geofence-draw-map .leaflet-marker-icon.leaflet-div-icon.leaflet-drag-target{background-color:#fff!important;border:3px solid #52c41a!important;border-radius:50%!important;width:16px!important;height:16px!important;margin-left:-8px!important;margin-top:-8px!important;cursor:move!important;box-shadow:0 2px 6px #0000004d!important;opacity:1!important}.geofence-draw-map .leaflet-marker-icon.leaflet-div-icon.leaflet-drag-target:hover{background-color:#52c41a!important;border-color:#389e0d!important;box-shadow:0 4px 8px #0006!important;transform:scale(1.2)}.geofence-draw-map .leaflet-editing-icon:not(.leaflet-drag-target):not(.leaflet-middle-icon){background-color:#fff!important;border:3px solid #1890ff!important;border-radius:50%!important;width:12px!important;height:12px!important;margin-left:-6px!important;margin-top:-6px!important;cursor:move!important;box-shadow:0 2px 4px #0003!important;opacity:1!important}.geofence-draw-map .leaflet-editing-icon:not(.leaflet-drag-target):not(.leaflet-middle-icon):hover{background-color:#1890ff!important;border-color:#096dd9!important;box-shadow:0 3px 6px #0000004d!important;transform:scale(1.2)}.geofence-draw-map .leaflet-marker-icon.leaflet-edit-resize,.geofence-draw-map .leaflet-marker-icon.leaflet-edit-move{background-color:#fff!important;border:3px solid #1890ff!important;border-radius:50%!important;box-shadow:0 2px 4px #0003!important}.geofence-draw-map .leaflet-marker-icon.leaflet-edit-resize:hover,.geofence-draw-map .leaflet-marker-icon.leaflet-edit-move:hover{background-color:#1890ff!important;border-color:#096dd9!important}.leaflet-draw-toolbar a{background-color:#fff;border:2px solid rgba(0,0,0,.2);border-radius:4px}.leaflet-draw-toolbar a:hover{background-color:#f4f4f4}.leaflet-draw-actions{background-color:#fff;border-radius:4px;border:1px solid rgba(0,0,0,.2)}.leaflet-draw-actions a{background-color:#fff;border:none;color:#333!important;font-weight:500;padding:6px 12px;text-decoration:none}.leaflet-draw-actions a:hover{background-color:#f4f4f4;color:#000!important}.leaflet-draw-actions a:first-child{color:#1890ff!important;font-weight:600}.leaflet-draw-actions a:first-child:hover{color:#096dd9!important;background-color:#e6f7ff}.leaflet-draw-actions a:last-child{color:#ff4d4f!important}.leaflet-draw-actions a:last-child:hover{color:#cf1322!important;background-color:#fff1f0}.leaflet-draw-edit-edit,.leaflet-draw-edit-remove{background-color:#fff;border:2px solid rgba(0,0,0,.2);border-radius:4px}.leaflet-draw-edit-edit:hover,.leaflet-draw-edit-remove:hover{background-color:#f4f4f4}.leaflet-draw-tooltip{background-color:#fffffff2;border:1px solid rgba(0,0,0,.2);color:#333!important;font-weight:500}.leaflet-draw-tooltip-single{color:#333!important}.leaflet-draw-tooltip-subtext{color:#666!important}.geofence-management{padding:24px}.geofence-form,.geofence-detail{padding:20px 0}.geofence-map{height:400px;margin:16px 0;border:1px solid #d9d9d9;border-radius:4px}.settings-page{min-height:calc(100vh - 112px);background:var(--bg-secondary);padding:24px}.settings-main-card{max-width:1200px;margin:0 auto;border-radius:12px;box-shadow:var(--shadow-lg);background:var(--bg-primary)}.settings-main-card .ant-card-body{padding:32px}.settings-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.settings-title .ant-typography h3{margin:0 0 8px;color:var(--text-primary);display:flex;align-items:center;gap:12px}.settings-title .ant-typography h3 .anticon{color:#1890ff;font-size:28px}.settings-selector{display:flex;align-items:center;flex-shrink:0}.settings-selector .ant-select{border-radius:8px}.settings-selector .ant-select-selector{border:2px solid var(--border-light);box-shadow:0 2px 8px #0000000f}.settings-selector .ant-select-selector:hover,.settings-selector .ant-select-focused .ant-select-selector{border-color:#1890ff;box-shadow:0 2px 8px #1890ff33}.settings-content{min-height:400px}.settings-section{padding:0}.settings-section .settings-header{margin-bottom:32px;padding-bottom:24px;border-bottom:2px solid var(--border-light)}.settings-section .settings-header .ant-typography h3{margin:0 0 8px;color:var(--text-primary);display:flex;align-items:center;gap:12px;font-size:24px}.settings-section .settings-header .ant-typography h3 .anticon{color:#1890ff;font-size:28px}.settings-section .settings-header .ant-typography-secondary{margin:0;font-size:14px}.settings-form{max-width:100%}.settings-form .ant-form-item-label>label{color:var(--text-primary);font-weight:500;font-size:14px}.settings-form .ant-input,.settings-form .ant-input-number,.settings-form .ant-select-selector{border-radius:6px}.settings-form .ant-input-disabled,.settings-form .ant-input[disabled]{background:var(--bg-secondary);color:var(--text-secondary);border-color:var(--border-light)}.settings-form .ant-divider{margin:32px 0 24px;border-color:var(--border-light)}.settings-form .ant-divider-inner-text{color:var(--text-primary);font-weight:600;font-size:15px}.settings-form .ant-btn-lg{height:44px;font-size:16px;border-radius:6px;padding:0 32px}.settings-form .ant-btn-primary{box-shadow:0 2px 8px #1890ff4d}.settings-form .ant-btn-primary:hover{box-shadow:0 4px 12px #1890ff66;transform:translateY(-2px);transition:all .3s ease}.settings-form .ant-tag{border-radius:4px;font-size:12px;padding:2px 8px}.settings-form .ant-alert{border-radius:8px;border:1px solid}.settings-form .ant-switch{background:#00000040}.settings-form .ant-switch-checked{background:#1890ff}.settings-content::-webkit-scrollbar,.settings-card .ant-card-body::-webkit-scrollbar{width:8px}.settings-content::-webkit-scrollbar-track,.settings-card .ant-card-body::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:4px}.settings-content::-webkit-scrollbar-thumb,.settings-card .ant-card-body::-webkit-scrollbar-thumb{background:#1890ff4d;border-radius:4px;transition:background .3s ease}.settings-content::-webkit-scrollbar-thumb:hover,.settings-card .ant-card-body::-webkit-scrollbar-thumb:hover{background:#1890ff80}[data-theme=dark] .settings-form .ant-alert-info{background:#1890ff1a;border-color:#1890ff4d}[data-theme=dark] .settings-form .ant-alert-warning{background:#faad141a;border-color:#faad144d}[data-theme=dark] .settings-form .ant-alert-success{background:#52c41a1a;border-color:#52c41a4d}[data-theme=dark] .settings-form .ant-alert-error{background:#ff4d4f1a;border-color:#ff4d4f4d}@media (max-width: 1024px){.settings-header{flex-direction:column;gap:16px;align-items:flex-start}.settings-selector{width:100%;justify-content:flex-start}.settings-selector .ant-select{width:100%;max-width:300px}}@media (max-width: 768px){.settings-page{padding:16px}.settings-main-card .ant-card-body{padding:20px}.settings-section{padding:24px 0}.settings-header .ant-typography h3{font-size:20px}.settings-form .ant-col{width:100%!important}.settings-selector .ant-select{width:100%}}.settings-form .ant-card{border-radius:8px;border:1px solid var(--border-light);background:var(--bg-secondary);box-shadow:var(--shadow-sm)}.settings-form .ant-card-head{background:var(--bg-primary);border-bottom:1px solid var(--border-light);color:var(--text-primary)}.settings-form .ant-card-body{background:var(--bg-secondary)}.settings-form a{color:#1890ff;text-decoration:none;transition:all .3s ease}.settings-form a:hover{color:#40a9ff;text-decoration:underline}.settings-form .ant-input-prefix,.settings-form .ant-input-suffix{color:var(--text-secondary)}.settings-form .ant-input:focus .ant-input-prefix,.settings-form .ant-input:focus .ant-input-suffix{color:#1890ff}.audit-log-page{padding:24px}.audit-log-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.audit-log-page .page-header h2{margin:0}.audit-log-page .statistics-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.audit-log-page .statistics-card .ant-statistic-title{color:#ffffffd9}.audit-log-page .statistics-card .ant-statistic-content{color:#fff}.audit-log-page .statistics-card h5{color:#fff;margin-bottom:12px}.audit-log-page .ant-table-cell{font-size:13px}.fault-management-page{padding:24px}.fault-management-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.fault-management-page .page-header h2{margin:0}.fault-management-page .statistics-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.fault-management-page .statistics-card .ant-statistic-title{color:#ffffffd9}.fault-management-page .statistics-card .ant-statistic-content{color:#fff}.fault-detail .ant-descriptions-item-label{font-weight:500}.fault-detail .ant-timeline{margin-top:16px}.fault-detail code{padding:2px 6px;background:#f5f5f5;border:1px solid #d9d9d9;border-radius:2px;font-family:Courier New,monospace}@media (max-width: 768px){.fault-management-page{padding:16px}.fault-management-page .page-header{flex-direction:column;align-items:flex-start;gap:12px}}.notification-history-page{padding:24px;background:var(--bg-secondary);min-height:calc(100vh - 64px)}.page-header{margin-bottom:16px}.page-header h2{display:flex;align-items:center;gap:8px}.notification-history-page .stat-card{transition:all .3s ease}.notification-history-page .stat-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.notification-history-page .ant-statistic-title{color:#595959;font-size:14px}.notification-history-page .ant-statistic-content{font-size:24px;font-weight:600}.notification-history-page .ant-card{border-radius:8px;box-shadow:0 2px 8px #0000000f}.notification-history-page .ant-table{font-size:13px}.notification-history-page .ant-table-thead>tr>th{background:var(--bg-secondary);font-weight:600;color:var(--text-primary);border-bottom:2px solid var(--border-light);padding:14px 12px;font-size:13px;text-align:center}.notification-history-page .ant-table-tbody>tr{transition:all .2s ease}.notification-history-page .ant-table-tbody>tr:hover{background:var(--bg-hover)!important;box-shadow:0 2px 8px #1890ff26}.notification-history-page .ant-table-tbody>tr:hover>td{background:transparent!important}.notification-history-page .ant-table-tbody>tr>td{padding:12px;vertical-align:middle}.notification-history-page .ant-table-tbody a{color:#1890ff;transition:all .2s;font-weight:500}.notification-history-page .ant-table-tbody a:hover{color:#40a9ff}.notification-history-page .ant-tag{margin:0;padding:2px 10px;border-radius:4px;font-size:11px;font-weight:500}.notification-history-page .ant-btn-link{padding:4px 8px;height:auto;font-size:12px;font-weight:500}.notification-history-page .ant-btn-link:hover{transform:scale(1.05)}.notification-history-page .ant-pagination{margin-top:16px;text-align:right}.notification-history-page .ant-drawer-header{border-bottom:2px solid var(--border-light);padding:20px 24px;background:var(--bg-secondary)}.notification-history-page .ant-drawer-body{padding:24px;background:var(--bg-secondary)}.notification-history-page .ant-drawer-body .ant-card{border-radius:8px;box-shadow:0 2px 8px #00000026;border:1px solid var(--border-light)}.notification-history-page .ant-drawer-body .ant-card-head{background:var(--bg-secondary);border-bottom:2px solid var(--border-light);padding:12px 16px;min-height:auto}.notification-history-page .ant-drawer-body .ant-card-head-title{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}.notification-history-page .ant-drawer-body .ant-card-head-title .anticon{color:#1890ff;font-size:16px}.notification-history-page .ant-drawer-body .ant-card-body{padding:18px;background:var(--bg-primary)}.notification-history-page .detail-item{padding:8px 0}@media (max-width: 1200px){.notification-history-page{padding:16px}}@media (max-width: 768px){.notification-history-page{padding:12px}.notification-history-page .ant-table{font-size:12px}.notification-history-page .ant-pagination{text-align:center}}.notification-rules-page{padding:24px}.notification-rules-page .ant-card{box-shadow:0 2px 8px #0000000f}.notification-rules-page .ant-table{background:#fff}.notification-rules-page .ant-table-thead>tr>th{background:#fafafa;font-weight:600}.notification-rules-page .ant-tag{margin:2px}.notification-rules-page .ant-form-item{margin-bottom:16px}.notification-rules-page .ant-card-small{border-radius:8px}.notification-rules-page .ant-card-small .ant-card-body{padding:16px}@media (max-width: 768px){.notification-rules-page{padding:16px}}.email-config-container{padding:20px;background:var(--bg-secondary);min-height:calc(100vh - 64px)}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;flex-wrap:wrap;gap:16px}.page-header h2{margin-bottom:4px;display:flex;align-items:center;gap:12px}.page-header h2 .anticon{color:#1890ff}.config-list-card{border-radius:8px;box-shadow:0 2px 8px #0000000f;height:calc(100vh - 180px);overflow:hidden}.config-list-card .ant-card-head{background:var(--bg-secondary);border-bottom:2px solid var(--border-light);font-weight:600}.config-list-card .ant-card-body{padding:0;height:calc(100% - 57px);overflow-y:auto}.config-list-card .ant-list{padding:8px}.config-item{cursor:pointer;transition:all .3s;border-radius:8px;padding:16px;margin-bottom:8px;border:2px solid var(--border-light);background:var(--bg-primary)}.config-item:hover{background:var(--bg-hover);border-color:#1890ff80;box-shadow:0 2px 8px #1890ff33}.config-item.active{background:#1890ff26;border-color:#1890ff;box-shadow:0 4px 12px #1890ff4d}.config-item-header{margin-bottom:12px}.config-name{font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:4px;display:flex;align-items:center}.config-item-footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-light)}.config-detail-card{border-radius:8px;box-shadow:0 2px 8px #0000000f;min-height:calc(100vh - 180px)}.config-detail-card .ant-card-head{background:var(--bg-secondary);border-bottom:2px solid var(--border-light);font-weight:600}.config-detail-card .ant-card-body{padding:24px}.config-detail-card .ant-descriptions-bordered .ant-descriptions-item-label{background:var(--bg-secondary);font-weight:600;width:180px}.config-detail-card .ant-descriptions-bordered .ant-descriptions-item-content{background:var(--bg-primary)}.email-config-container .ant-modal-header{background:var(--bg-secondary);border-bottom:2px solid var(--border-light);padding:16px 24px}.email-config-container .ant-modal-body{max-height:calc(100vh - 250px);overflow-y:auto;padding:24px}.email-config-container .ant-form-item-label>label{font-weight:500;font-size:13px}.email-config-container .ant-divider{margin:16px 0;font-size:14px;font-weight:600}.email-config-container .ant-divider .anticon{margin-right:6px;color:#1890ff}.email-config-container .ant-input,.email-config-container .ant-input-number,.email-config-container .ant-select-selector,.email-config-container .ant-input-affix-wrapper{border-radius:6px}.email-config-container .ant-btn{border-radius:6px;transition:all .3s}.email-config-container .ant-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.email-config-container .ant-alert{border-radius:6px}.email-config-container .ant-alert-info{background:#1890ff1a;border:1px solid rgba(24,144,255,.3)}.email-config-container .ant-alert-success{background:#52c41a1a;border:1px solid rgba(82,196,26,.3)}.email-config-container .ant-alert-error{background:#ff4d4f1a;border:1px solid rgba(255,77,79,.3)}.email-config-container .ant-tag{border-radius:4px;font-size:11px;padding:2px 8px;font-weight:500}.email-config-container .ant-empty{padding:60px 20px}.email-config-container .ant-empty .anticon{font-size:64px;color:#d9d9d9;margin-bottom:20px}@media (max-width: 992px){.email-config-container{padding:16px}.config-list-card{height:auto;margin-bottom:20px;min-height:300px}.config-list-card .ant-card-body{height:auto;max-height:400px}.config-detail-card{min-height:auto}}@media (max-width: 768px){.email-config-container{padding:12px}.page-header{flex-direction:column;align-items:stretch}.config-item{padding:12px}.config-name{font-size:14px}.email-config-container .ant-modal{max-width:100%;margin:0;padding:0}.email-config-container .ant-modal-body{padding:16px}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.config-list-card,.config-detail-card{animation:fadeInUp .4s ease-out}.config-item{animation:fadeInUp .3s ease-out;animation-fill-mode:both}.config-item:nth-child(1){animation-delay:0s}.config-item:nth-child(2){animation-delay:.05s}.config-item:nth-child(3){animation-delay:.1s}.config-item:nth-child(4){animation-delay:.15s}.config-item:nth-child(5){animation-delay:.2s}.config-list-card .ant-card-body::-webkit-scrollbar,.email-config-container .ant-modal-body::-webkit-scrollbar{width:8px}.config-list-card .ant-card-body::-webkit-scrollbar-track,.email-config-container .ant-modal-body::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:4px}.config-list-card .ant-card-body::-webkit-scrollbar-thumb,.email-config-container .ant-modal-body::-webkit-scrollbar-thumb{background:#1890ff4d;border-radius:4px}.config-list-card .ant-card-body::-webkit-scrollbar-thumb:hover,.email-config-container .ant-modal-body::-webkit-scrollbar-thumb:hover{background:#1890ff80}.sms-config-page{padding:24px}.sms-config-page .ant-card{box-shadow:0 2px 8px #0000000f}.sms-config-page .ant-table{background:#fff}.sms-config-page .ant-table-thead>tr>th{background:#fafafa;font-weight:600}.sms-config-page .ant-tag{margin:2px}.sms-config-page .ant-form-item{margin-bottom:16px}@media (max-width: 768px){.sms-config-page{padding:16px}}.import-export-container{padding:24px}.import-export-container .ant-card{box-shadow:0 2px 8px #0000001a}.import-export-container .ant-upload-drag{border:2px dashed #d9d9d9;border-radius:8px;background:#fafafa;transition:all .3s}.import-export-container .ant-upload-drag:hover{border-color:#1890ff}.import-export-container .ant-statistic-title{font-size:14px;color:#8c8c8c}.import-export-container .ant-statistic-content{font-size:24px;font-weight:600}.import-export-container .ant-alert{border-radius:8px}@media (max-width: 768px){.import-export-container{padding:16px}.import-export-container .ant-col{margin-bottom:16px}}.device-simulator-page{padding:24px}.device-simulator-page .ant-card{margin-bottom:16px}.device-simulator-page .ant-collapse-header{font-weight:500}.device-simulator-page .ant-descriptions-item-label{font-weight:500;color:#000000d9}.mobile-stream-player{width:100%;background:#000}.player-container{position:relative;width:100%;background:#000}.player-content{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.stream-image{width:100%;height:100%;object-fit:contain}.placeholder{color:#888;font-size:14px;text-align:center}.frame-info{position:absolute;top:8px;right:8px;background:#000000b3;color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;z-index:10}.video-player-card{height:100%;box-shadow:0 2px 8px #0000001a}.video-player-container{display:flex;flex-direction:column;gap:12px}.video-wrapper{position:relative;width:100%;padding-bottom:56.25%;background:#000;border-radius:4px;overflow:hidden}.video-element{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.video-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10;background:#00000080;padding:24px;border-radius:8px}.video-description{color:#666;font-size:13px;line-height:1.6}.video-info{color:#999;font-size:12px;padding-top:8px;border-top:1px solid #f0f0f0}.video-monitoring-page{padding:24px;min-height:calc(100vh - 64px);background:var(--bg-secondary)}.toolbar-card{margin-bottom:16px;box-shadow:0 2px 8px #00000014}.video-grid-container{position:relative}.loading-container{display:flex;justify-content:center;align-items:center;min-height:400px}.video-item{position:relative;height:100%}.video-actions{position:absolute;top:16px;right:16px;z-index:10;background:#ffffffe6;border-radius:4px;padding:4px;box-shadow:0 2px 8px #00000026}@media (max-width: 768px){.video-monitoring-page{padding:12px}.toolbar-card .ant-row{flex-direction:column;gap:12px}}.chatbot-assistant{width:100%}.chat-container{border-radius:8px;box-shadow:0 2px 8px #0000001a}.messages-container{flex:1;overflow-y:auto;padding:20px;background:#f5f5f5}.message-wrapper{display:flex;margin-bottom:20px;animation:fadeIn .3s ease-in}.message-wrapper.user{flex-direction:row-reverse}.message-avatar{flex-shrink:0;margin:0 12px}.message-content{max-width:70%;display:flex;flex-direction:column}.message-wrapper.user .message-content{align-items:flex-end}.message-header{display:flex;align-items:center;margin-bottom:6px;font-size:12px;color:#8c8c8c}.message-wrapper.user .message-header{flex-direction:row-reverse}.message-role{font-weight:500;margin-right:8px}.message-wrapper.user .message-role{margin-right:0;margin-left:8px}.message-time{font-size:11px}.message-text{background:#fff;padding:12px 16px;border-radius:8px;box-shadow:0 1px 2px #0000001a;white-space:pre-wrap;word-break:break-word;line-height:1.6}.message-wrapper.user .message-text{background:#1890ff;color:#fff}.message-metadata{margin-top:8px;display:flex;gap:8px}.suggested-actions,.related-questions{margin-top:12px;padding:12px;background:#fafafa;border-radius:6px;border:1px solid #e8e8e8}.section-title{font-size:12px;color:#595959;margin-bottom:8px;font-weight:500}.question-button{text-align:left;height:auto;padding:4px 8px;color:#1890ff}.question-button:hover{background:#e6f7ff}.input-container{padding:16px;border-top:1px solid #e8e8e8;background:#fff;display:flex;align-items:flex-end}.messages-container::-webkit-scrollbar{width:6px}.messages-container::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.messages-container::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.messages-container::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.ai-analysis-page{padding:24px;background:#f0f2f5;min-height:100vh}.ai-analysis-card{border-radius:8px;box-shadow:0 2px 8px #0000001a}.page-header{display:flex;align-items:center;color:#1890ff}.predictive-maintenance,.anomaly-detection,.route-optimization,.report-generation,.chatbot-assistant{min-height:400px}.ant-statistic-title{font-size:14px;color:#8c8c8c}.ant-statistic-content{font-size:24px;font-weight:600}.ant-table-small{font-size:13px}.ant-tag{border-radius:4px;padding:2px 8px;font-size:12px}.ant-progress-line{margin-bottom:0}.ant-empty{padding:60px 0}.ant-card-head-title{font-weight:600;font-size:16px}.ant-space{gap:8px!important}.ant-alert{border-radius:6px}.ant-alert ul{padding-left:20px;margin-top:8px}.ant-alert li{margin-bottom:4px;line-height:1.6}.ant-divider{margin:16px 0}.ant-form-vertical .ant-form-item-label{padding:0 0 4px}@media (max-width: 768px){.ai-analysis-page{padding:12px}.ant-statistic-content{font-size:20px}}.visualization-container{width:100%;height:100vh;background:radial-gradient(ellipse at top,#1a2a4ee6,#0a1428f2,#050a14),linear-gradient(135deg,#0a1428,#1a2a4e,#0a1428);color:#fff;overflow:hidden;display:grid;grid-template-rows:auto 1fr;font-size:16px;position:relative}.visualization-container:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 20% 30%,rgba(100,200,255,.03) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(139,92,246,.03) 0%,transparent 50%);animation:particleMove 20s ease-in-out infinite alternate;pointer-events:none;z-index:0}@keyframes particleMove{0%{transform:translate(0) scale(1)}to{transform:translate(20px,20px) scale(1.05)}}.visualization-container:after{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(100,200,255,.5),transparent);animation:scanLine 3s linear infinite;pointer-events:none;z-index:1}@keyframes scanLine{0%{top:0}to{top:100%}}.visualization-loading{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0a1428,#1a2a4e,#0a1428);animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.visualization-main{display:grid;grid-template-columns:350px 1fr 320px;gap:20px;padding:20px;overflow:hidden;position:relative;z-index:2;height:100%}.visualization-sidebar-left{display:flex;flex-direction:column;overflow:hidden;animation:slideInLeft .6s ease-out}.visualization-center{position:relative;border-radius:8px;overflow:hidden;box-shadow:0 0 30px #64c8ff33,inset 0 0 0 1px #64c8ff4d;background:#14233c80;animation:zoomIn .6s ease-out}.visualization-sidebar-right{display:flex;flex-direction:column;overflow:hidden;animation:slideInRight .6s ease-out}.ws-warning{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:linear-gradient(135deg,#ef4444f2,#dc2626f2);color:#fff;padding:12px 24px;border-radius:8px;font-size:14px;z-index:1000;box-shadow:0 4px 20px #ef444466;animation:warningPulse 2s ease-in-out infinite;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@keyframes warningPulse{0%,to{box-shadow:0 4px 20px #ef444466}50%{box-shadow:0 4px 30px #ef444499}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes countUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.stat-card{animation:cardSlideIn .5s ease-out backwards}.stat-card:nth-child(1){animation-delay:.1s}.stat-card:nth-child(2){animation-delay:.15s}.stat-card:nth-child(3){animation-delay:.2s}.stat-card:nth-child(4){animation-delay:.25s}.stat-card:nth-child(5){animation-delay:.3s}.stat-card:nth-child(6){animation-delay:.35s}@keyframes cardSlideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.alert-item{animation:alertSlideIn .4s ease-out backwards}@keyframes alertSlideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.chart-item{animation:chartFadeIn .6s ease-out backwards}.chart-item:nth-child(1){animation-delay:.1s}.chart-item:nth-child(2){animation-delay:.2s}.chart-item:nth-child(3){animation-delay:.3s}@keyframes chartFadeIn{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.leaflet-marker-icon{animation:markerPulse 2s ease-in-out infinite}@keyframes markerPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}@media (max-width: 1600px){.visualization-container{font-size:14px}.visualization-main{grid-template-columns:320px 1fr 300px;gap:15px;padding:15px}}@media (max-width: 1366px){.visualization-main{grid-template-columns:280px 1fr 280px;gap:12px;padding:12px}}@media (max-width: 1280px){.visualization-main{grid-template-columns:260px 1fr 260px}}@media (min-width: 2560px){.visualization-container{font-size:18px}.visualization-main{grid-template-columns:420px 1fr 380px;gap:24px;padding:24px}}@media (min-width: 3840px){.visualization-container{font-size:20px}.visualization-main{grid-template-columns:500px 1fr 450px;gap:30px;padding:30px}}@media (max-height: 800px){.visualization-main{padding:15px}}@media (max-height: 700px){.visualization-main{padding:10px;gap:10px}}.pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.bounce{animation:bounce 1s infinite}@keyframes bounce{0%,to{transform:translateY(-5%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);animation-timing-function:cubic-bezier(0,0,.2,1)}}.spin{animation:spin 1s linear infinite}.glow{animation:glow 2s ease-in-out infinite alternate}@keyframes glow{0%{box-shadow:0 0 10px #64c8ff80}to{box-shadow:0 0 20px #64c8ffcc}}.typewriter{overflow:hidden;border-right:2px solid rgba(100,200,255,.75);white-space:nowrap;animation:typing 3.5s steps(40,end),blink-caret .75s step-end infinite}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink-caret{0%,to{border-color:transparent}50%{border-color:#64c8ffbf}}.smooth-transition{transition:all .3s cubic-bezier(.4,0,.2,1)}.ease-in{animation:easeIn .5s ease-out}@keyframes easeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.device-status-3d{perspective:1200px;perspective-origin:center center;transform-style:preserve-3d}.pie-3d-wrapper{position:relative;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1)}.pie-3d-wrapper:hover{transform:scale(1.02) translateZ(10px)}.pie-3d-container{position:relative;display:inline-block;filter:drop-shadow(0 15px 35px rgba(0,0,0,.5)) drop-shadow(0 5px 15px rgba(0,0,0,.3));transition:filter .3s ease}.pie-3d-container:hover{filter:drop-shadow(0 20px 45px rgba(0,0,0,.6)) drop-shadow(0 10px 25px rgba(100,200,255,.2))}.pie-3d-canvas{display:block;cursor:pointer;transition:transform .3s ease,filter .3s ease;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.pie-3d-canvas:hover{transform:translateY(-3px) scale(1.01);filter:brightness(1.05) contrast(1.05)}.pie-3d-canvas:active{transform:translateY(-1px) scale(.99);transition:transform .1s ease}.pie-3d-shadow{position:absolute;bottom:-25px;left:50%;transform:translate(-50%);width:75%;height:20px;background:radial-gradient(ellipse at center,rgba(0,0,0,.5) 0%,rgba(0,0,0,.3) 30%,transparent 70%);filter:blur(12px);opacity:.8;z-index:-1;transition:all .3s ease;animation:shadowPulse 3s ease-in-out infinite}@keyframes shadowPulse{0%,to{transform:translate(-50%) scaleX(1);opacity:.8}50%{transform:translate(-50%) scaleX(1.1);opacity:.6}}.pie-3d-container:hover .pie-3d-shadow{width:80%;height:25px;opacity:1;filter:blur(15px)}.pie-3d-glow{position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;border-radius:50%;background:radial-gradient(circle at center,rgba(100,200,255,.1) 0%,transparent 70%);pointer-events:none;opacity:0;transition:opacity .3s ease}.pie-3d-container:hover .pie-3d-glow{opacity:1;animation:glowPulse 2s ease-in-out infinite}@keyframes glowPulse{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.05);opacity:.8}}.pie-3d-label{font-family:Consolas,Monaco,monospace;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.8),0 0 10px currentColor;letter-spacing:.5px}.pie-3d-slice-hover{filter:brightness(1.2) saturate(1.3);transform:scale(1.05);transition:all .2s ease}@keyframes labelLineIn{0%{stroke-dashoffset:100;opacity:0}to{stroke-dashoffset:0;opacity:1}}.pie-3d-label-line{stroke-dasharray:100;animation:labelLineIn .6s ease-out forwards}.chart-3d-perspective{transform:perspective(1200px) rotateX(5deg);transform-origin:center center;transition:transform .4s ease}.chart-3d-perspective:hover{transform:perspective(1200px) rotateX(0) rotateY(2deg)}.device-status-section.with-3d{background:linear-gradient(135deg,#14233c99,#14233c66),radial-gradient(ellipse at top left,rgba(100,200,255,.05) 0%,transparent 50%);border:1px solid rgba(100,200,255,.25);box-shadow:0 8px 32px #0000004d,inset 0 1px #ffffff1a}.device-status-section.with-3d:hover{border-color:#64c8ff73;box-shadow:0 12px 48px #0006,0 0 30px #64c8ff26,inset 0 1px #ffffff26}@keyframes chart3DLoad{0%{opacity:0;transform:translateY(30px) rotateX(-15deg) scale(.9)}60%{opacity:1;transform:translateY(-5px) rotateX(2deg) scale(1.02)}to{opacity:1;transform:translateY(0) rotateX(0) scale(1)}}.pie-3d-container.loading-complete{animation:chart3DLoad .8s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes dataFlash{0%,to{filter:brightness(1)}50%{filter:brightness(1.3) saturate(1.2)}}.pie-3d-canvas.data-updated{animation:dataFlash .6s ease-out}.pie-3d-glass-effect{position:relative;-webkit-backdrop-filter:blur(10px) saturate(180%);backdrop-filter:blur(10px) saturate(180%);background:#14233c4d;border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d,inset 0 1px 1px #ffffff1a}.pie-3d-floating{animation:floating 3s ease-in-out infinite}@keyframes floating{0%,to{transform:translateY(0) translateZ(0)}50%{transform:translateY(-8px) translateZ(5px)}}@media (max-width: 1600px){.pie-3d-container{filter:drop-shadow(0 12px 28px rgba(0,0,0,.4))}}@media (max-width: 1366px){.device-status-3d{perspective:1000px}.pie-3d-shadow{bottom:-20px;height:18px}}@media (prefers-reduced-motion: reduce){.pie-3d-canvas,.pie-3d-wrapper,.pie-3d-shadow{animation:none!important;transition:none!important}}@media (prefers-reduced-motion: no-preference){.pie-3d-canvas{will-change:transform,filter}.pie-3d-container{will-change:filter}}.pie3d-widget-container{width:100%;display:flex;flex-direction:column;align-items:center;gap:20px;padding:10px 0;position:relative}.pie3d-canvas-wrapper{position:relative;display:flex;align-items:center;justify-content:center;perspective:1200px;perspective-origin:center 45%;transform-style:preserve-3d;filter:drop-shadow(0 10px 30px rgba(0,0,0,.5)) drop-shadow(0 5px 15px rgba(0,0,0,.3));transition:all .4s cubic-bezier(.4,0,.2,1)}.pie3d-canvas-wrapper:hover{filter:drop-shadow(0 15px 40px rgba(0,0,0,.6)) drop-shadow(0 8px 20px rgba(59,130,246,.3));transform:translateY(-3px) scale(1.02)}.pie3d-canvas{display:block;transition:transform .3s cubic-bezier(.4,0,.2,1);image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges;position:relative;z-index:2}.pie3d-shadow-layer{position:absolute;bottom:-15px;left:50%;transform:translate(-50%);width:70%;height:25px;background:radial-gradient(ellipse at center,rgba(0,0,0,.5) 0%,rgba(0,0,0,.3) 40%,transparent 70%);filter:blur(15px);opacity:.8;z-index:1;animation:shadowBreathing 3s ease-in-out infinite;pointer-events:none}.pie3d-labels-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.pie3d-label-group{position:absolute;top:0;left:0;width:100%;height:100%}.pie3d-label-line{position:absolute;top:0;left:0;overflow:visible}.pie3d-label-text{position:absolute;display:flex;flex-direction:column;gap:2px;white-space:nowrap}.label-percent{font-size:11px;font-weight:700;font-family:Consolas,Monaco,Courier New,monospace;text-shadow:0 0 8px currentColor,0 1px 2px rgba(0,0,0,.8);line-height:1}.label-device-name{font-size:9px;font-weight:500;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.8);line-height:1}@keyframes shadowBreathing{0%,to{transform:translate(-50%) scaleX(1) scaleY(1);opacity:.8}50%{transform:translate(-50%) scaleX(1.1) scaleY(1.2);opacity:.6}}.pie3d-canvas-wrapper:hover .pie3d-shadow-layer{width:75%;height:30px;opacity:1;animation-play-state:paused}.pie3d-legend{display:flex;flex-direction:column;gap:12px;width:100%;padding:0 15px;position:relative;z-index:3}.pie3d-legend-item{display:flex;align-items:center;gap:12px;padding:10px 15px;background:linear-gradient(135deg,#3b82f614,#1e40af0a);border:1px solid rgba(59,130,246,.2);border-radius:8px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.pie3d-legend-item:before{content:"";position:absolute;left:0;top:0;height:100%;width:0;background:linear-gradient(90deg,#3b82f626,#3b82f614);transition:width .3s ease;z-index:0}.pie3d-legend-item:hover:before,.pie3d-legend-item.active:before{width:100%}.pie3d-legend-item:hover{border-color:#3b82f673;background:linear-gradient(135deg,#3b82f626,#1e40af14);transform:translate(5px) scale(1.02);box-shadow:0 4px 15px #3b82f64d,inset 0 1px #ffffff1a}.pie3d-legend-item.active{border-color:#3b82f699;background:linear-gradient(135deg,#3b82f633,#1e40af1f);transform:translate(8px) scale(1.03);box-shadow:0 6px 20px #3b82f666,inset 0 1px #ffffff26}.legend-color-box{width:14px;height:14px;border-radius:3px;flex-shrink:0;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;z-index:1;box-shadow:0 0 10px currentColor,inset 0 1px #ffffff4d,inset 0 -1px #0000004d}.pie3d-legend-item:hover .legend-color-box,.pie3d-legend-item.active .legend-color-box{transform:scale(1.3) rotate(5deg);border-radius:50%}.legend-color-box:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:inherit;border:2px solid currentColor;opacity:0;transition:all .3s ease}.pie3d-legend-item:hover .legend-color-box:after,.pie3d-legend-item.active .legend-color-box:after{opacity:.6;top:-6px;right:-6px;bottom:-6px;left:-6px;animation:colorBoxPulse 1.5s ease-out infinite}@keyframes colorBoxPulse{0%{transform:scale(.8);opacity:.6}to{transform:scale(1.5);opacity:0}}.legend-text{display:flex;flex-direction:column;gap:4px;flex:1;position:relative;z-index:1}.legend-name{font-size:13px;font-weight:500;color:#ffffffd9;letter-spacing:.3px;transition:all .3s ease;text-shadow:0 1px 2px rgba(0,0,0,.3)}.pie3d-legend-item:hover .legend-name,.pie3d-legend-item.active .legend-name{color:#fff;letter-spacing:.5px;text-shadow:0 0 10px rgba(59,130,246,.6),0 1px 2px rgba(0,0,0,.5)}.legend-value{font-size:16px;font-weight:700;font-family:Consolas,Monaco,Courier New,monospace;color:#60a5fa;text-shadow:0 0 10px rgba(96,165,250,.6),0 1px 3px rgba(0,0,0,.5);display:flex;align-items:baseline;gap:6px;transition:all .3s ease;position:relative}.pie3d-legend-item:hover .legend-value,.pie3d-legend-item.active .legend-value{color:#93c5fd;transform:scale(1.05);text-shadow:0 0 15px rgba(147,197,253,.9),0 0 25px rgba(147,197,253,.5),0 1px 3px rgba(0,0,0,.5)}.legend-count{font-size:11px;font-weight:500;color:#ffffff80;font-family:Consolas,Monaco,Courier New,monospace;text-shadow:0 1px 2px rgba(0,0,0,.3);transition:all .3s ease}.pie3d-legend-item:hover .legend-count,.pie3d-legend-item.active .legend-count{color:#ffffffb3}@keyframes pie3dFadeIn{0%{opacity:0;transform:translateY(20px) scale(.9)}60%{transform:translateY(-5px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}.pie3d-widget-container{animation:pie3dFadeIn .8s cubic-bezier(.34,1.56,.64,1) forwards}.pie3d-legend-item{animation:legendSlideIn .5s cubic-bezier(.4,0,.2,1) backwards}.pie3d-legend-item:nth-child(1){animation-delay:.1s}.pie3d-legend-item:nth-child(2){animation-delay:.2s}.pie3d-legend-item:nth-child(3){animation-delay:.3s}.pie3d-legend-item:nth-child(4){animation-delay:.4s}@keyframes legendSlideIn{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@media (max-width: 1600px){.pie3d-legend{gap:10px;padding:0 12px}.pie3d-legend-item{padding:8px 12px;gap:10px}.legend-name{font-size:12px}.legend-value{font-size:14px}.legend-count{font-size:10px}}@media (max-width: 1366px){.pie3d-canvas-wrapper{perspective:1000px}.pie3d-legend{gap:8px;padding:0 10px}.pie3d-legend-item{padding:7px 10px;gap:8px}.legend-color-box{width:12px;height:12px}.legend-name{font-size:11px}.legend-value{font-size:13px}}.pie3d-canvas,.pie3d-canvas-wrapper,.pie3d-legend-item{will-change:transform;transform:translateZ(0);backface-visibility:hidden}@media (prefers-reduced-motion: reduce){.pie3d-canvas-wrapper,.pie3d-legend-item,.legend-color-box,.legend-value,.pie3d-shadow-layer{animation:none!important;transition:none!important}.pie3d-canvas-wrapper:hover,.pie3d-legend-item:hover{transform:none}}@media (prefers-contrast: high){.pie3d-legend-item{border-width:2px}.legend-color-box{border:2px solid currentColor}.legend-name,.legend-value{text-shadow:none}}.chatbot-widget-content{height:100%;display:flex;flex-direction:column}.chatbot-messages{flex:1;overflow-y:auto;padding:16px;background:#f5f5f5}.chatbot-message{display:flex;margin-bottom:16px;animation:fadeIn .3s ease-in}.chatbot-message.user{flex-direction:row-reverse}.chatbot-message-avatar{flex-shrink:0;margin:0 8px}.chatbot-message-content{max-width:75%;display:flex;flex-direction:column}.chatbot-message.user .chatbot-message-content{align-items:flex-end}.chatbot-message-header{display:flex;align-items:center;margin-bottom:4px;font-size:11px;color:#8c8c8c}.chatbot-message.user .chatbot-message-header{flex-direction:row-reverse}.chatbot-message-role{font-weight:500;margin-right:6px}.chatbot-message.user .chatbot-message-role{margin-right:0;margin-left:6px}.chatbot-message-time{font-size:10px}.chatbot-message-text{background:#fff;padding:8px 12px;border-radius:8px;box-shadow:0 1px 2px #0000001a;white-space:pre-wrap;word-break:break-word;line-height:1.5;font-size:13px}.chatbot-message.user .chatbot-message-text{background:#1890ff;color:#fff}.chatbot-suggested-actions,.chatbot-related-questions{margin-top:8px;padding:8px;background:#fafafa;border-radius:6px;border:1px solid #e8e8e8}.chatbot-section-title{font-size:11px;color:#595959;margin-bottom:6px;font-weight:500}.chatbot-quick-questions{padding:16px;background:#fff;border-top:1px solid #e8e8e8}.chatbot-quick-title{font-size:12px;color:#595959;margin-bottom:12px;font-weight:500}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.chatbot-messages::-webkit-scrollbar{width:6px}.chatbot-messages::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.chatbot-messages::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.chatbot-messages::-webkit-scrollbar-thumb:hover{background:#a8a8a8}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5715;color:var(--text-primary, rgba(0, 0, 0, .85));background-color:var(--bg-secondary, #f0f2f5)}#root{height:100%}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-column{display:flex;flex-direction:column}.w-full{width:100%}.h-full{height:100%}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.p-16{padding:16px}.p-24{padding:24px}.map-container{width:100%;height:100%;position:relative}.device-status-indicator{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px}.device-status-online{background-color:#52c41a}.device-status-offline{background-color:#ff4d4f}.device-status-maintenance{background-color:#faad14}.device-status-error{background-color:#ff4d4f}.loading-spinner{display:inline-block;width:20px;height:20px;border:3px solid #f3f3f3;border-top:3px solid #1890ff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.ant-layout-sider{position:fixed!important;height:100vh;z-index:1000}.ant-layout-content{margin-left:0!important}}.custom-card{border-radius:8px;box-shadow:0 2px 8px #0000001a}.custom-button{border-radius:6px;font-weight:500}.custom-input,.custom-select{border-radius:6px}.leaflet-marker-icon{border-radius:50%}.trajectory-line{stroke:#1890ff;stroke-width:3;stroke-opacity:.8;fill:none}.trajectory-line:hover{stroke-width:5;stroke-opacity:1}.device-card{transition:all .3s ease;cursor:pointer}.device-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.stat-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none}.stat-card .ant-card-head{border-bottom:1px solid rgba(255,255,255,.2)}.stat-card .ant-card-head-title{color:#fff}[data-theme=dark] .custom-card{box-shadow:0 2px 8px #00000073}[data-theme=dark] .device-card{background:var(--card-bg);border-color:var(--border-color)}[data-theme=dark] .device-card:hover{box-shadow:0 4px 12px #0009}.alert-critical{border-left:4px solid #ff4d4f}.alert-high{border-left:4px solid #ff7a45}.alert-medium{border-left:4px solid #faad14}.alert-low{border-left:4px solid #52c41a}@media (max-width: 768px){*{touch-action:manipulation}button,a,[role=button]{min-height:44px;min-width:44px}input,textarea,select{font-size:16px}.scrollable{-webkit-overflow-scrolling:touch;overflow-y:auto}.scrollable::-webkit-scrollbar{display:none}.ant-table{font-size:14px}.ant-table-thead>tr>th{padding:12px 8px}.ant-table-tbody>tr>td{padding:12px 8px}.ant-card{margin-bottom:12px}.ant-card-body{padding:16px}.ant-space{gap:8px!important}.ant-btn{height:40px;padding:0 12px}.ant-form-item{margin-bottom:16px}.ant-modal{max-width:calc(100vw - 32px);margin:16px auto}.ant-modal-body,.ant-drawer-body{padding:16px}}@media (max-width: 576px){body{font-size:14px}h1{font-size:24px}h2{font-size:20px}h3{font-size:18px}.mobile-full-width{width:100%!important}.mobile-stack{flex-direction:column!important}.desktop-only{display:none!important}.ant-table-wrapper{overflow-x:auto}.ant-statistic-title{font-size:12px}.ant-statistic-content{font-size:20px}}@media (min-width: 576px) and (max-width: 768px){.tablet-col-2{grid-template-columns:repeat(2,1fr)!important}}.touch-friendly{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.touch-friendly:active{opacity:.7}@supports (padding: max(0px)){.safe-area-bottom{padding-bottom:max(16px,env(safe-area-inset-bottom))}.safe-area-top{padding-top:max(16px,env(safe-area-inset-top))}}@media (max-height: 500px) and (orientation: landscape){.ant-layout-header{height:48px;line-height:48px}.ant-menu{line-height:48px}}@media (max-width: 768px){.ant-layout-sider{position:fixed!important;left:0;top:0;bottom:0;z-index:999;box-shadow:2px 0 8px #00000026}.ant-layout-sider-collapsed{transform:translate(-100%)}.mobile-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000073;z-index:998}}.skeleton-loading{animation:skeleton-loading 1.5s ease-in-out infinite}@keyframes skeleton-loading{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-loading{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%}.will-change-transform{will-change:transform}.will-change-opacity{will-change:opacity}.gpu-accelerated{transform:translateZ(0);backface-visibility:hidden}.reduce-repaint{contain:layout style paint}:root{--bg-primary: #ffffff;--bg-secondary: #f0f2f5;--bg-tertiary: #fafafa;--text-primary: rgba(0, 0, 0, .88);--text-secondary: rgba(0, 0, 0, .65);--text-tertiary: rgba(0, 0, 0, .45);--border-color: #d9d9d9;--border-light: #f0f0f0;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .12);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .15);--hover-bg: rgba(0, 0, 0, .04);--active-bg: rgba(0, 0, 0, .06);--header-bg: #001529;--sider-bg: #001529;--content-bg: #f0f2f5;--card-bg: #ffffff;--card-hover-shadow: 0 4px 16px rgba(0, 0, 0, .12)}[data-theme=dark],body.dark-theme{--bg-primary: #1f1f1f;--bg-secondary: #141414;--bg-tertiary: #2a2a2a;--text-primary: rgba(255, 255, 255, .85);--text-secondary: rgba(255, 255, 255, .65);--text-tertiary: rgba(255, 255, 255, .45);--border-color: #434343;--border-light: #303030;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .45);--shadow-md: 0 4px 12px rgba(0, 0, 0, .55);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .65);--hover-bg: rgba(255, 255, 255, .08);--active-bg: rgba(255, 255, 255, .12);--header-bg: #1f1f1f;--sider-bg: #1f1f1f;--content-bg: #141414;--card-bg: #1f1f1f;--card-hover-shadow: 0 4px 16px rgba(0, 0, 0, .8)}body{background-color:var(--bg-secondary);color:var(--text-primary);transition:background-color .3s ease,color .3s ease}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-tertiary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#1890ff99}[data-theme=dark] ::-webkit-scrollbar-track{background:#ffffff0d}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#fff3}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#1890ff99}.theme-card{background:var(--card-bg);border:1px solid var(--border-light);box-shadow:var(--shadow-sm);transition:all .3s ease}.theme-card:hover{box-shadow:var(--card-hover-shadow);transform:translateY(-2px)}.theme-input{background:var(--bg-primary);border-color:var(--border-color);color:var(--text-primary)}.theme-input:hover{border-color:#1890ff}.theme-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff33}.theme-button{background:var(--bg-primary);border-color:var(--border-color);color:var(--text-primary);transition:all .3s ease}.theme-button:hover{border-color:#1890ff;color:#1890ff;background:var(--hover-bg)}[data-theme=dark] .ant-layout-header{background:var(--bg-primary)!important;border-bottom:1px solid var(--border-light)!important}[data-theme=dark] .ant-layout-content{background:var(--bg-secondary)!important}[data-theme=dark] .ant-layout-sider{background:var(--sider-bg)!important}[data-theme=dark] .control-panel{background:linear-gradient(135deg,#1f1f1ff2,#2a2a2af2)!important;border:1px solid rgba(67,67,67,.5);box-shadow:0 4px 20px #00000080}[data-theme=dark] .control-panel .ant-select-selector,[data-theme=dark] .control-panel .ant-tree-select-selector{background:#2a2a2ae6!important;border:1px solid rgba(67,67,67,.8)!important;color:#ffffffd9!important}[data-theme=dark] .control-panel .ant-select-selector:hover,[data-theme=dark] .control-panel .ant-tree-select-selector:hover{background:#2a2a2a!important;border-color:#1890ff99!important}[data-theme=dark] .stats-card{background:linear-gradient(135deg,#1f1f1fe6,#2a2a2ae6);border:1px solid rgba(67,67,67,.3)}[data-theme=dark] .device-list-item:hover{background:linear-gradient(90deg,#1890ff26,#1890ff0d)!important}[data-theme=dark] .device-list-item.active{background:linear-gradient(90deg,#1890ff40,#1890ff1a)!important}[data-theme=dark] .map-container{background:#1f1f1f;box-shadow:0 4px 20px #0009,inset 0 0 0 1px #43434333}[data-theme=dark] .ant-card{background:var(--card-bg);border-color:var(--border-color)}[data-theme=dark] .ant-card-head{border-bottom-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-table{background:var(--bg-primary);color:var(--text-primary)}[data-theme=dark] .ant-table-thead>tr>th{background:var(--bg-tertiary);border-bottom-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-table-tbody>tr>td{border-bottom-color:var(--border-light);color:var(--text-primary)}[data-theme=dark] .ant-table-tbody>tr:hover>td{background:var(--hover-bg)}[data-theme=dark] .ant-modal-content{background:var(--bg-primary);color:var(--text-primary)}[data-theme=dark] .ant-modal-header{background:var(--bg-primary);border-bottom-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-drawer-content{background:var(--bg-primary);color:var(--text-primary)}[data-theme=dark] .ant-drawer-header{background:var(--bg-primary);border-bottom-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-descriptions{color:var(--text-primary)}[data-theme=dark] .ant-descriptions-item-label{color:var(--text-secondary)}[data-theme=dark] .ant-descriptions-item-content{color:var(--text-primary)}[data-theme=dark] .ant-empty-description{color:var(--text-secondary)}[data-theme=dark] .ant-tree{background:transparent;color:var(--text-primary)}[data-theme=dark] .ant-tree-node-content-wrapper{color:var(--text-primary)}[data-theme=dark] .ant-tree-node-content-wrapper:hover{background-color:var(--hover-bg)}[data-theme=dark] .ant-input,[data-theme=dark] .ant-input-number,[data-theme=dark] .ant-picker{background:var(--bg-tertiary);border-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-input::placeholder,[data-theme=dark] .ant-input-number-input::placeholder{color:var(--text-tertiary)}[data-theme=dark] .ant-select-selector{background:var(--bg-tertiary)!important;border-color:var(--border-color)!important;color:var(--text-primary)!important}[data-theme=dark] .ant-select-selection-placeholder{color:var(--text-tertiary)}[data-theme=dark] .ant-statistic{color:var(--text-primary)}[data-theme=dark] .ant-statistic-title{color:var(--text-secondary)}[data-theme=dark] .ant-statistic-content{color:var(--text-primary)}[data-theme=dark] .ant-tag{border-color:var(--border-color)}[data-theme=dark] .ant-divider{border-top-color:var(--border-color)}[data-theme=dark] .ant-list-item{border-bottom-color:var(--border-light);color:var(--text-primary)}[data-theme=dark] .ant-steps-item-title{color:var(--text-primary)}[data-theme=dark] .ant-steps-item-description{color:var(--text-secondary)}[data-theme=dark] .ant-timeline-item-content{color:var(--text-primary)}[data-theme=dark] .ant-collapse{background:var(--bg-primary);border-color:var(--border-color)}[data-theme=dark] .ant-collapse-header{color:var(--text-primary)}[data-theme=dark] .ant-collapse-content{background:var(--bg-primary);border-top-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-tabs-tab{color:var(--text-secondary)}[data-theme=dark] .ant-tabs-tab-active{color:var(--text-primary)}[data-theme=dark] .ant-breadcrumb{color:var(--text-secondary)}[data-theme=dark] .ant-pagination-item{background:var(--bg-tertiary);border-color:var(--border-color)}[data-theme=dark] .ant-pagination-item a,[data-theme=dark] .ant-progress-text{color:var(--text-primary)}[data-theme=dark] .ant-alert{border-color:var(--border-color)}[data-theme=dark] .ant-result-title{color:var(--text-primary)}[data-theme=dark] .ant-result-subtitle{color:var(--text-secondary)}[data-theme=dark] .ant-dropdown,[data-theme=dark] .ant-dropdown-menu{background:var(--bg-tertiary);box-shadow:0 3px 12px #0009}[data-theme=dark] .ant-dropdown-menu-item{color:var(--text-primary)}[data-theme=dark] .ant-dropdown-menu-item:hover{background:var(--hover-bg)}[data-theme=dark] .ant-select-dropdown{background:var(--bg-tertiary);box-shadow:0 3px 12px #0009}[data-theme=dark] .ant-select-item{color:var(--text-primary)}[data-theme=dark] .ant-select-item-option-selected{background:#1890ff33}[data-theme=dark] .ant-select-item-option-active{background:var(--hover-bg)}[data-theme=dark] .ant-tooltip-inner{background:var(--bg-tertiary);color:var(--text-primary)}[data-theme=dark] .ant-tooltip-arrow-content{background:var(--bg-tertiary)}[data-theme=dark] .ant-popover-inner{background:var(--bg-tertiary);color:var(--text-primary);box-shadow:0 3px 12px #0009}[data-theme=dark] .ant-popover-inner-content{color:var(--text-primary)}[data-theme=dark] .ant-popover-arrow-content{background:var(--bg-tertiary)}[data-theme=dark] .ant-notification-notice{background:var(--bg-primary);border-color:var(--border-color);box-shadow:0 4px 12px #0009}[data-theme=dark] .ant-notification-notice-message{color:var(--text-primary)}[data-theme=dark] .ant-notification-notice-description{color:var(--text-secondary)}[data-theme=dark] .ant-message-notice-content{background:var(--bg-tertiary);color:var(--text-primary);box-shadow:0 3px 12px #0009}[data-theme=dark] .ant-spin-text{color:var(--text-secondary)}[data-theme=dark] .ant-skeleton-content .ant-skeleton-title,[data-theme=dark] .ant-skeleton-content .ant-skeleton-paragraph>li{background:linear-gradient(90deg,var(--bg-tertiary) 25%,rgba(255,255,255,.05) 37%,var(--bg-tertiary) 63%)}[data-theme=dark] .ant-image-preview-wrap{background:#000000d9}[data-theme=dark] .ant-tree-select-dropdown{background:var(--bg-tertiary);box-shadow:0 3px 12px #0009}[data-theme=dark] .ant-tree-select-dropdown .ant-select-tree{background:transparent;color:var(--text-primary)}[data-theme=dark] .ant-tree-select-dropdown .ant-select-tree-node-content-wrapper{color:var(--text-primary)}[data-theme=dark] .ant-tree-select-dropdown .ant-select-tree-node-content-wrapper:hover{background:var(--hover-bg)}[data-theme=dark] .ant-picker-dropdown{box-shadow:0 3px 12px #0009}[data-theme=dark] .ant-picker-panel-container{background:var(--bg-primary);color:var(--text-primary)}[data-theme=dark] .ant-picker-header{border-bottom-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-picker-content th{color:var(--text-secondary)}[data-theme=dark] .ant-picker-cell{color:var(--text-primary)}[data-theme=dark] .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-disabled) .ant-picker-cell-inner{background:var(--hover-bg)}[data-theme=dark] .ant-upload{color:var(--text-primary)}[data-theme=dark] .ant-upload-list-item{border-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-upload-list-item:hover{background:var(--hover-bg)}[data-theme=dark] .ant-switch{background:#fff3}[data-theme=dark] .ant-checkbox-wrapper,[data-theme=dark] .ant-radio-wrapper{color:var(--text-primary)}[data-theme=dark] .ant-checkbox-inner,[data-theme=dark] .ant-radio-inner{background:var(--bg-tertiary);border-color:var(--border-color)}[data-theme=dark] .ant-rate{color:var(--text-secondary)}[data-theme=dark] .ant-transfer{color:var(--text-primary)}[data-theme=dark] .ant-transfer-list{background:var(--bg-primary);border-color:var(--border-color)}[data-theme=dark] .ant-transfer-list-header{background:var(--bg-tertiary);border-bottom-color:var(--border-color);color:var(--text-primary)}[data-theme=dark] .ant-transfer-list-content-item{color:var(--text-primary)}[data-theme=dark] .ant-transfer-list-content-item:hover{background:var(--hover-bg)}*{transition:background-color .3s ease,border-color .3s ease,color .3s ease}.leaflet-container,.leaflet-tile,canvas,video{transition:none!important}
