.search .operation{margin-bottom:2vh}.search .icons{display:flex;align-items:center}.search .icons .item{width:40px;cursor:pointer}.search .icons .tip{margin-bottom:4px}.search .select-count{font-weight:600;color:#40a9ff}.search .select-clear{margin-left:10px}.search .page{margin-top:2vh}.search .drop-down{margin-left:5px}.tree-list{position:relative;min-height:80px}.drawer-footer{z-index:10;width:100%;position:absolute;bottom:0;left:0;border-top:1px solid #e8e8e8;padding:10px 16px;text-align:left;background:#fff}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.device-card{border-radius:16px;padding:16px;transition:all .3s ease}.info-section{margin-bottom:12px;padding-bottom:8px}.info-section:last-child{border-bottom:none;margin-bottom:0}.sensor-card{background:hsla(0,0%,100%,.6);backdrop-filter:blur(12px);border:1px solid rgba(0,174,255,.3);box-shadow:0 4px 12px rgba(0,174,255,.15)}.sensor-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px rgba(0,174,255,.3)}.sensor-tag{background:linear-gradient(45deg,#00b4d8,#48cae4);color:#fff;border-radius:12px;padding:0 8px}.sensor-value{font-size:20px;font-weight:700;color:#0077b6}.unit{font-size:14px;margin-left:4px;color:#555}.threshold-value{font-weight:700;color:#0077b6}.status-message{margin:8px 0}.status-text{font-weight:500;padding:2px 6px;border-radius:4px;font-size:13px}.status-error{background-color:rgba(255,77,79,.1);color:#ff4d4f;border:1px solid rgba(255,77,79,.3)}.status-normal{background-color:rgba(82,196,26,.1);color:#52c41a;border:1px solid rgba(82,196,26,.3)}.status-info{background-color:rgba(24,144,255,.1);color:#1890ff;border:1px solid rgba(24,144,255,.3)}.relay-card{background:linear-gradient(145deg,#1f1f1f,#2a2a2a);color:#e0e0e0;border:1px solid #333;box-shadow:0 4px 10px rgba(0,0,0,.4)}.relay-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px rgba(0,0,0,.6)}.relay-card.device-on{border:1px solid #06d6a0;box-shadow:0 4px 15px rgba(6,214,160,.5)}.interlock-card{background:linear-gradient(145deg,#f0f0ff,#f8f8ff);border:1px solid rgba(138,43,226,.3);box-shadow:0 4px 12px rgba(138,43,226,.15)}.interlock-card:hover{box-shadow:0 8px 20px rgba(138,43,226,.25)}.motor-card{background:linear-gradient(145deg,#f0fcff,#e6f7ff);border:1px solid rgba(0,188,212,.3);box-shadow:0 4px 12px rgba(0,188,212,.15)}.motor-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px rgba(0,188,212,.25)}.motor-controls{margin-top:12px}.motor-speed{font-size:18px;font-weight:700;color:#00bcd4;transition:all .3s ease}.motor-speed.speed-running{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.analog-output-card{background:linear-gradient(145deg,#fff7ed,#ffedd5);border:1px solid rgba(251,146,60,.3);box-shadow:0 4px 12px rgba(251,146,60,.15)}.analog-output-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px rgba(251,146,60,.25)}.output-value{font-size:28px;font-weight:700;color:#ea580c}.value-highlight{background:rgba(251,146,60,.1);border-radius:8px}.motor-status-section{background:rgba(0,188,212,.05);padding:12px;border-radius:8px;margin-bottom:12px}.motor-status-section .info-item{display:flex;align-items:center;margin:8px 0}.motor-status-section .label{font-weight:500;color:#666;margin-right:8px}.card-header{justify-content:space-between;margin-bottom:16px}.card-header,.card-header .left-section{display:flex;align-items:center}.card-header .left-section .device-icon{margin-right:12px}.card-header .left-section .device-icon .card-icon{width:40px;border-radius:6px}.card-header .left-section .device-info{display:flex;align-items:flex-start}.card-header .left-section .device-info .card-title{font-weight:700;font-size:16px;margin-bottom:4px}.card-content{margin-top:10px}.info-item{margin:6px 0}.card-actions{display:flex;gap:8px}.ivu-spin-fullscreen{background:transparent!important}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.filter-item{margin-bottom:16px}.filter-item .filter-label{display:block;font-weight:500;color:#515a6e;margin-bottom:8px}.value-highlight{background:rgba(0,119,182,.05);padding:8px;border-radius:6px}.interlock-card{background:linear-gradient(145deg,#2d1b69,#3d2777);color:#e0e0e0;border:1px solid #6c4ab6;box-shadow:0 4px 12px rgba(108,74,182,.3)}.interlock-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px rgba(108,74,182,.5)}.interlock-controls{display:flex;justify-content:space-between;gap:12px;margin-top:12px}.interlock-controls button{flex:1;font-size:14px;font-weight:600;min-height:36px}.ptz-control-section{margin-top:20px}.ptz-control-container{padding:15px;background:#f8f8f9;border-radius:8px}.ptz-speed-control{margin-bottom:20px;display:flex;align-items:center}.ptz-speed-control .label{font-weight:500;color:#515a6e;min-width:60px}.ptz-direction-control{display:flex;justify-content:center;margin-top:15px}.ptz-grid{flex-direction:column}.ptz-grid,.ptz-row{display:flex;gap:8px}.ptz-cell,.ptz-row{justify-content:center}.ptz-cell{width:100px;height:50px;display:flex;align-items:center}.ptz-cell button{font-weight:600}.c-card{border-radius:12px;padding:14px 12px;background:#fff;border:1px solid #eee;box-shadow:0 2px 8px rgba(0,0,0,.08);display:flex;flex-direction:column;align-items:center;min-height:148px;transition:all .25s ease}.c-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.14);transform:translateY(-2px)}.c-name{width:100%;font-size:14px;font-weight:600;color:#333;display:flex;align-items:center;gap:6px;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.dot-on{background:#19be6b;box-shadow:0 0 6px rgba(25,190,107,.6)}.dot-off{background:#bbb}.dot-blue{background:#2d8cf0}.dot-purple{background:#9b59b6}.c-indicator{width:48px;height:48px;border-radius:50%;margin:6px auto;flex-shrink:0;transition:all .3s}.ind-on{background:radial-gradient(circle,#19be6b,#0b8049);box-shadow:0 0 16px rgba(25,190,107,.5)}.ind-off{background:radial-gradient(circle,#555,#333)}.c-status-text{font-size:13px;color:#888;margin:2px 0 8px;text-align:center}.c-big-value{font-size:26px;font-weight:700;color:#2d8cf0;text-align:center;flex:1;display:flex;align-items:center;justify-content:center;margin:8px 0}.c-unit{font-size:14px;color:#999;font-weight:400;margin-left:2px}.c-actions{width:100%;gap:8px;margin-top:8px}.c-actions,.c-custom-value{display:flex;justify-content:center}.c-custom-value{font-size:22px;font-weight:700;color:#9b59b6;flex:1;align-items:center;text-align:center}.cc-relay{background:linear-gradient(145deg,#23272e,#2a2a2a);color:#e0e0e0;border-color:#383838;box-shadow:0 4px 10px rgba(0,0,0,.4)}.cc-relay .c-name{color:#ddd}.cc-relay .c-status-text{color:#aaa}.cc-relay:hover{box-shadow:0 6px 18px rgba(0,0,0,.55)}.cc-relay.c-card-on{border-color:#19be6b;box-shadow:0 4px 14px rgba(25,190,107,.35)}.cc-analog{background:linear-gradient(135deg,#f0f8ff,#e6f3ff);border-color:rgba(45,140,240,.2)}.cc-switch{background:#fafafa;border-color:#e0e0e0}.cc-custom{background:linear-gradient(135deg,#fdf6ff,#f5eaff);border-color:rgba(155,89,182,.2)}.cc-motor{background:linear-gradient(135deg,#f0fcff,#e6f7ff);border-color:rgba(0,188,212,.2)}.cc-motor .c-big-value{color:#00bcd4}.cc-quick{background:linear-gradient(135deg,#fdf4ff,#f3e8ff);border-color:rgba(156,39,176,.2)}.cc-quick .c-name{color:#7b1fa2}.c-state-tags{width:100%;display:flex;flex-wrap:wrap;justify-content:center;margin-top:4px}.c-action-label{font-size:13px;color:#90caf9;margin:4px 0 0;text-align:center;width:100%}.cc-relay .c-action-label{color:#90caf9}