*{box-sizing:border-box;margin:0;padding:0}*,body,html{color-scheme:light!important}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f0f2f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overflow:hidden}button,input,select,textarea{color-scheme:light!important}#root{height:100vh;overflow:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}.login-box{background:#fff;border-radius:10px;box-shadow:0 10px 25px #0003;max-width:400px;padding:40px;width:100%}.login-box h1{color:#333;font-size:24px;margin:0 0 10px;text-align:center}.login-box h2{color:#666;font-size:18px;font-weight:400;margin:0 0 30px;text-align:center}.form-group{margin-bottom:20px}.form-group label{color:#333;display:block;font-weight:500;margin-bottom:8px}.form-group input{border:1px solid #ddd;border-radius:5px;box-sizing:border-box;font-size:14px;padding:12px;width:100%}.form-group input:focus{border-color:#667eea;outline:none}.error-message{background:#fee;border-radius:5px;color:#c33;font-size:14px;margin-bottom:15px;padding:10px}.login-button{background:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:16px;padding:12px;transition:background .3s;width:100%}.login-button:hover:not(:disabled){background:#5568d3}.login-button:disabled{background:#ccc;cursor:not-allowed}.notification-icon-wrapper{align-items:center;cursor:pointer;display:flex;justify-content:center;margin-right:16px;padding:8px}.notification-icon{color:#666;font-size:20px;transition:color .3s}.notification-icon-wrapper:hover .notification-icon{color:#1890ff}.notification-dropdown{max-width:400px}.notification-item{border-bottom:1px solid #f0f0f0;cursor:pointer;padding:12px 16px;transition:background-color .3s}.notification-item:hover{background-color:#f5f5f5}.notification-item.unread{background-color:#e6f7ff;font-weight:500}.notification-item.read{background-color:#fff}.notification-title{color:#333;font-size:14px;font-weight:500;margin-bottom:4px}.notification-message{color:#666;font-size:12px;line-height:1.5;margin-bottom:4px}.notification-time{color:#999;font-size:11px}.notification-empty{color:#999;padding:20px;text-align:center}.alert-content{padding:16px 0}.alert-message{background-color:#fff7e6;border-left:4px solid #faad14;border-radius:4px;color:#333;font-size:16px;margin-bottom:20px;padding:12px}.alert-details{margin-top:16px}.alert-detail-item{font-size:14px;line-height:1.8;margin-bottom:12px}.alert-detail-item strong{color:#333;margin-right:8px}.contact-status{border-radius:4px;font-size:12px;font-weight:500;margin-left:8px;padding:2px 8px}.contact-status.connected{background-color:#f6ffed;border:1px solid #b7eb8f;color:#52c41a}.contact-status.not-connected{background-color:#fff2e8;border:1px solid #ffd591;color:#fa8c16}.layout{background:#f0f2f5;display:flex;height:100vh}.sidebar{background:#001529;flex-direction:column;width:180px}.logo,.sidebar{color:#fff;display:flex}.logo{align-items:center;border-bottom:1px solid #ffffff1a;font-size:20px;font-weight:700;justify-content:flex-start;line-height:1.5;padding:50px 20px;text-align:left}.logo img{height:auto;max-height:80px;max-width:100%;object-fit:contain}.menu{flex:1 1;padding:16px 0 8px}.menu-item{border-left:3px solid #0000;color:#ffffffbf;display:block;font-size:14px;padding:12px 20px;text-decoration:none;transition:all .2s}.menu-item:hover{background:#ffffff14;border-left-color:#ffffff4d;color:#fff}.menu-item.active{background:#1890ff26;border-left-color:#1890ff;color:#fff}.main{display:flex;flex:1 1;flex-direction:column;overflow:hidden}.header{align-items:center;background:#fff;border-bottom:1px solid #e8e8e8;display:flex;height:50px;justify-content:space-between;padding:0 20px}.header h2{font-size:16px;font-weight:500;margin:0}.header-right{align-items:center;display:flex;gap:12px}.user-info{color:#333;font-size:14px}.user-info-link{color:#333;cursor:pointer;text-decoration:none;transition:color .2s}.user-info-link:hover{color:#1890ff}.btn-logout{background:#fff;border:1px solid #d9d9d9;border-radius:2px;color:#333;cursor:pointer;font-size:13px;padding:4px 12px;transition:all .2s}.btn-logout:hover{border-color:#1890ff;color:#1890ff}.content{flex:1 1;overflow-y:auto;padding:16px}.transfer-progress-container{padding:20px 0}.connection-status{margin-bottom:20px;text-align:right}.progress-nodes{display:flex;flex-direction:column;gap:16px}.progress-node{align-items:flex-start;background-color:#fafafa;border:1px solid #e8e8e8;border-radius:6px;display:flex;padding:16px;transition:all .3s}.progress-node:hover{background-color:#f5f5f5;border-color:#d9d9d9}.node-number{background-color:#1890ff;border-radius:50%;color:#fff;flex-shrink:0;font-size:14px;font-weight:700;height:32px;line-height:32px;margin-right:16px;text-align:center;width:32px}.node-content{align-items:center;display:flex;flex:1 1;justify-content:space-between}.node-title{color:#333;flex:1 1;font-size:14px;font-weight:500}.contact-info{color:#666;font-size:12px;font-weight:400;margin-left:8px}.node-status{flex-shrink:0;margin-left:16px}@media (max-width:768px){.node-content{align-items:flex-start;flex-direction:column}.node-status{margin-left:0;margin-top:8px}}.dashboard{gap:12px}.analytics,.dashboard{display:flex;flex-direction:column}.analytics{gap:16px;padding-top:4px}.stat-cards{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr)}.analytics-top{display:flex;gap:3%;height:35vh;justify-content:center}.analytics-top-left,.analytics-top-right{background:#0000}.analytics-top-left{display:flex;flex:0 0 30%;flex-direction:column}.analytics-top-right{display:flex;flex:0 0 60%;flex-direction:column}.analytics-bottom{display:flex;height:50svh;justify-content:center;margin-top:12px}.analytics-line-card{display:flex;flex-direction:column;width:93%}.analytics-pie-card{display:flex;flex:1 1;flex-direction:column}.analytics-stat-cards{grid-gap:12px;display:grid;flex:1 1;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card{background:#fff;border:1px solid #e8e8e8;border-radius:2px;padding:16px}.stat-label{color:#666;font-size:13px;margin-bottom:8px}.stat-value{color:#1890ff;font-size:28px;font-weight:500;margin-bottom:4px}.stat-value.warning{color:#faad14}.stat-value.error{color:#ff4d4f}.stat-desc{color:#999;font-size:12px}.recent-events{background:#fff;border:1px solid #e8e8e8;border-radius:2px;overflow:hidden}.panel-header{border-bottom:1px solid #e8e8e8;font-size:14px;font-weight:500;padding:12px 16px}.compact-table{border-collapse:collapse;font-size:13px;width:100%}.compact-table th{background:#fafafa;border-bottom:1px solid #e8e8e8;font-weight:500;padding:8px 12px;text-align:center}.compact-table td{border-bottom:1px solid #f0f0f0;padding:8px 12px;text-align:center}.compact-table tbody tr:hover{background:#fafafa}.mini-badge{border-radius:2px;display:inline-block;font-size:12px;padding:1px 6px}.mini-badge.warning{background:#fffbe6;border:1px solid #ffe58f;color:#faad14}.mini-badge.success{background:#f6ffed;border:1px solid #b7eb8f;color:#52c41a}.mini-badge.processing{background:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}.mini-badge.error{background:#fff2f0;border:1px solid #ffccc7;color:#ff4d4f}.mini-badge.info{background:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}.btn-mini{background:none;border:none;color:#1890ff;cursor:pointer;font-size:12px;padding:2px 8px}.btn-mini:hover{color:#40a9ff}.chart-row{display:flex;flex-direction:column;gap:16px;margin-top:8px}.chart-card{background:#fff;border:1px solid #e8e8e8;border-radius:2px;overflow:hidden}.chart-body{justify-content:space-between;padding:12px 16px 16px}.chart-body,.chart-body--pie{align-items:center;display:flex}.chart-body--pie{height:100%;justify-content:flex-start;padding:10px}.chart-body--line{justify-content:center}.analytics-line-card canvas{height:100%;max-height:100%;width:100%}.chart-legend{color:#666;display:flex;flex-direction:column;font-size:12px;gap:12px}.legend-item{align-items:center;display:flex;gap:8px}.legend-dot{border-radius:50%;display:inline-block;height:12px;width:12px}.legend-online{background-color:#52c41a}.legend-offline{background-color:#f0f0f0;border:1px solid #d9d9d9}@media (max-width:992px){.analytics-top{flex-direction:column;height:auto}.analytics-top-left,.analytics-top-right{flex:0 0 auto;width:100%}.analytics-bottom{height:auto}}@media (max-width:600px){.analytics-stat-cards{grid-template-columns:1fr}}.page-container{background:#fff;border-radius:2px;display:flex;flex-direction:column;height:calc(100vh - 82px)}.page-header{align-items:center;border-bottom:1px solid #e8e8e8;display:flex;justify-content:space-between;padding:12px 16px}.filter-group{display:flex;gap:8px}.filter-input,.filter-select{background:#fff;border:1px solid #d9d9d9;border-radius:2px;color:#000000d9;font-size:13px;height:28px;padding:4px 8px}.filter-select{min-width:100px}.btn-primary{background:#1890ff;border:none;border-radius:2px;color:#fff;cursor:pointer;font-size:13px;height:28px;padding:4px 12px}.btn-primary:hover{background:#40a9ff}.btn-link{background:none;border:none;cursor:pointer;font-size:13px;padding:2px 8px}.btn-link,.btn-link:hover{color:#40a9ff}.table-container{flex:1 1;overflow-y:auto}.data-table{border-collapse:collapse;font-size:13px;width:100%}.data-table thead{background:#fafafa;position:-webkit-sticky;position:sticky;top:0;z-index:1}.data-table th{border-bottom:1px solid #e8e8e8;color:#000000d9;font-weight:500}.data-table td,.data-table th{padding:8px 12px;text-align:center}.data-table td{border-bottom:1px solid #f0f0f0;color:#000000a6}.data-table tbody tr:hover{background:#fafafa}.empty{padding:40px!important}.empty,.loading{color:#999;text-align:center}.loading{padding:40px}.status-badge{border-radius:2px;display:inline-block;font-size:12px;line-height:1.5;padding:2px 8px}.status-success{background:#f6ffed;border:1px solid #b7eb8f;color:#52c41a}.status-warning{background:#fffbe6;border:1px solid #ffe58f;color:#faad14}.status-error{background:#fff2f0;border:1px solid #ffccc7;color:#ff4d4f}.status-processing{background:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}.status-default{background:#fafafa;border:1px solid #d9d9d9;color:#00000073}.status-info{background:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}.emergency-contact-item{margin-bottom:12px}.emergency-contact-input{border:1px solid #d9d9d9;border-radius:2px;box-sizing:border-box;color:#000000a6;font-size:13px;height:28px;padding:4px 8px}.emergency-contact-input:hover{border-color:#1890ff}.emergency-contact-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff33;outline:none}.emergency-contact-input::placeholder{color:#00000040;font-size:12px}.emergency-contact-item{background:#fff;border-radius:2px;margin-bottom:16px!important;padding:8px}.emergency-contact-item:last-child{margin-bottom:0!important}.skeleton-viewer{display:flex;flex-direction:column;height:100%;padding:20px}.viewer-controls{align-items:center;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:flex;gap:20px;margin-bottom:20px;padding:15px}.control-group{align-items:center;display:flex;gap:10px}.control-group label{color:#333;font-weight:500}.device-select{background:#fff;border:1px solid #ddd;border-radius:4px;font-size:14px;min-width:200px;padding:8px 12px}.device-select:focus{border-color:#1890ff;outline:none}.play-btn{background:#1890ff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:8px 20px;transition:all .3s}.play-btn:hover:not(:disabled){background:#40a9ff}.play-btn:disabled{background:#d9d9d9;cursor:not-allowed}.play-btn.playing{background:#ff4d4f}.play-btn.playing:hover{background:#ff7875}.fps-indicator{background:#f0f0f0;color:#333}.fps-indicator,.frame-indicator{border-radius:4px;font-weight:500;min-width:100px;padding:8px 12px;text-align:center}.frame-indicator{background:#e6f7ff;color:#1890ff}.status-indicator{border-radius:4px;font-size:14px;font-weight:500;min-width:100px;padding:8px 12px;text-align:center}.status-indicator.receiving{background:#f6ffed;color:#52c41a}.status-indicator.waiting{background:#fff7e6;color:#faad14}.status-indicator.error{background:#fff1f0;color:#ff4d4f}.update-time{background:#f0f0f0;border-radius:4px;color:#666;font-size:12px;min-width:120px;padding:8px 12px;text-align:center}.viewer-content{gap:20px}.canvas-container,.viewer-content{display:flex;flex:1 1;overflow:hidden}.canvas-container{align-items:center;background:#1a1a1a;border-radius:8px;box-shadow:0 2px 8px #0003;justify-content:center;position:relative}.skeleton-canvas{display:block;max-height:100%;max-width:100%}.canvas-placeholder{color:#999;font-size:18px;left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%)}.info-panel{display:flex;flex-direction:column;gap:15px;overflow-y:auto;width:300px}.info-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:15px}.info-section h3{border-bottom:2px solid #f0f0f0;color:#333;font-size:16px;margin:0 0 12px;padding-bottom:8px}.info-item{color:#666;display:flex;flex-direction:column;font-size:14px;gap:8px}.info-item div{align-items:center;display:flex;justify-content:space-between}.info-item strong{color:#333;margin-right:8px}.fall-alert{background:#fff1f0;color:#ff4d4f}.fall-alert,.no-fall{border-radius:4px;font-weight:700;padding:2px 8px}.no-fall{background:#f6ffed;color:#52c41a}@media (max-width:1200px){.viewer-content{flex-direction:column}.info-panel{max-height:300px;width:100%}}.profile-container{padding:0}.profile-card,.profile-container{display:flex;flex-direction:column;height:100%}.profile-card{border-radius:0;margin:0}.profile-card .ant-card-body{padding:16px}.profile-card .ant-card-body,.profile-tabs{display:flex;flex:1 1;flex-direction:column;overflow:hidden}.profile-tabs{min-height:0}.profile-tabs .ant-tabs-content-holder{flex:1 1;min-height:0;overflow-x:hidden;overflow-y:auto}.profile-tabs .ant-tabs-content{height:100%}.profile-tabs .ant-tabs-tabpane{padding:16px 0}.profile-descriptions,.profile-form{max-width:100%;width:100%}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{align-items:center;background-color:#282c34;color:#fff;display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.3d0fbbe4.css.map*/