*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif}#root{width:100%;height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#d9d9d9;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#bfbfbf}.route-type-tag{font-weight:600}.route-type-hnp{color:#1890ff}.route-type-unp{color:#52c41a}.route-type-scene{color:#fa8c16}.main-layout{min-height:100vh}.main-layout-sider{overflow:auto;height:100vh;position:fixed;left:0;top:0;bottom:0}.main-layout-logo{height:24px;margin:16px;color:#fff;font-size:18px;font-weight:500;text-align:left}.main-layout-right{margin-left:180px;display:flex;flex-direction:column;height:100vh}.main-layout-header{flex-shrink:0;position:sticky;top:0;z-index:10;padding:0 24px;background:#fff;box-shadow:0 2px 8px #0000000f;font-size:18px;font-weight:500;display:flex;align-items:center;height:64px}.main-layout-content{flex:1;margin:0;overflow:hidden;display:flex;flex-direction:column}.main-layout-content-inner{flex:1;padding:0;background:#fff;border-radius:8px;overflow:auto;display:flex;flex-direction:column}.router-config-page{width:100%;height:100%;display:flex;flex-direction:column}.router-config-table-wrapper{flex:1;overflow:auto;margin-bottom:0}.router-config-table{width:100%}.router-config-table .ant-table-cell{height:48px;vertical-align:middle}.router-config-table .disabled-row{background-color:#f5f5f5;opacity:1;color:#999}.router-config-table .disabled-row:hover{background-color:#f0f0f0}.router-config-table .disabled-row .ant-switch{opacity:1}.router-config-table .ant-table-column-has-sorters:hover{background:transparent}.router-config-table .ant-table-column-sorter{color:#00000073;transition:color .3s}.router-config-table .ant-table-column-sorter-up.active,.router-config-table .ant-table-column-sorter-down.active{color:#1890ff}.router-config-table .ant-input,.router-config-table .ant-input-number,.router-config-table .ant-select{width:100%}.router-config-table .route-link{color:#1890ff;text-decoration:none;cursor:pointer}.router-config-table .route-link:hover{text-decoration:underline}.router-config-table .empty-placeholder{color:#999;font-style:italic}@media screen and (max-width:768px){.router-config-table{font-size:12px}.router-config-actions{flex-wrap:wrap}}.loading-container{display:flex;justify-content:center;align-items:center;min-height:400px}.status-switch.ant-switch-checked{background-color:#52c41a}.status-switch.ant-switch{background-color:#d9d9d9}.number-input{width:100%}.number-input.error{border-color:#ff4d4f}.edit-tips{padding:8px 12px;background-color:#e6f7ff;border:1px solid #91d5ff;border-radius:4px;margin-bottom:16px;color:#0050b3}.edit-tips .anticon{margin-right:8px}.ant-table-fixed-right{box-shadow:-2px 0 4px #00000014}.rules-config-page{width:100%;height:100%;display:flex;flex-direction:column}.rules-config-table-wrapper{flex:1;overflow:auto;margin-bottom:0}.rules-config-table{width:100%}.rules-config-table .ant-table-cell{height:48px;vertical-align:middle}.record-sessions-page{width:100%;height:100%;display:flex;flex-direction:column}.record-sessions-table-wrapper{flex:1;overflow:auto;margin-bottom:0}.table-bottom-bar{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:16px 14px;background:#fff;border-top:1px solid #f0f0f0;box-shadow:0 -2px 8px #0000000f}.record-sessions-table{width:100%}.record-sessions-table .ant-table-cell{height:48px;vertical-align:middle}.record-sessions-table .ant-table-column-has-sorters:hover{background:transparent}.record-sessions-table .ant-table-column-sorter{color:#00000073;transition:color .3s}.record-sessions-table .ant-table-column-sorter-up.active,.record-sessions-table .ant-table-column-sorter-down.active{color:#1890ff}.record-sessions-table .ant-input,.record-sessions-table .ant-select{width:100%}.edit-mode .ant-table-row{background-color:#fafafa}.edit-mode .ant-table-row:hover{background-color:#f0f0f0}.modified-row{background-color:#fff7e6!important}.modified-row:hover{background-color:#ffe7ba!important}.add-modal{top:30px!important}.add-modal .ant-form-item-label{font-weight:500}.cancel-confirm-modal{top:30px!important}.cancel-confirm-modal .warning-text{color:#faad14;font-size:14px;margin-top:8px}.delete-button{color:#ff4d4f}.delete-button:hover{color:#ff7875}.batch-edit-info{display:inline-flex;align-items:center;padding:4px 8px;background-color:#fff1f0;border:1px solid #ffccc7;border-radius:4px;margin-left:16px;font-size:12px;color:#cf1322}.batch-edit-info .count{font-weight:700;margin:0 4px}.issue-records-page{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:#f5f5f5}.issue-records-header{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:#1a2942;color:#fff;flex-shrink:0}.header-left{display:flex;align-items:center;gap:48px}.header-right{display:flex;align-items:center;gap:12px}.header-info{font-size:14px;color:#ffffffe6}.header-left .header-info:first-child{font-weight:600;color:#fff}.issue-records-table-wrapper{flex:1;overflow:auto;min-height:0;padding:0 16px;background:#fff;margin:0}.issue-records-table{min-width:100%}.issue-records-table .ant-table-thead>tr>th{background:#fafafa;font-weight:600}.issue-records-table .ant-table-cell{padding:8px 12px!important;height:48px;vertical-align:middle}.table-bottom-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;flex-shrink:0;border-top:1px solid #f0f0f0;background:#fff}.add-modal .ant-form-item{margin-bottom:16px}.cancel-confirm-modal .warning-text{color:#ff4d4f;font-size:12px;margin-top:8px}.video-preview-modal .ant-modal-content{max-height:calc(100vh + -0px);display:flex;flex-direction:column}.video-preview-modal .ant-modal-body{padding:12px;flex:1;overflow:hidden;display:flex;flex-direction:column}.video-preview-content{display:flex;gap:16px;flex:1;min-height:40%;max-height:calc(100vh - 150px)}.video-player-wrapper{flex:2;min-width:0;background:#000;border-radius:8px;display:flex;align-items:center;justify-content:center}.video-player{max-width:100%;max-height:100%;border-radius:8px;object-fit:contain}.video-connecting{display:flex;flex-direction:column;align-items:center;gap:12px;color:#fff;padding:80px 100px}.video-connecting-tip{font-size:14px;color:#999}.video-error{color:#ff4d4f;font-size:14px;text-align:center;padding:40px 30px}.video-error .ant-alert{text-align:left;max-width:500px}.cert-trust-guide{font-size:13px;line-height:1.8}.cert-trust-guide p{margin:0 0 8px}.cert-trust-guide ol{margin:8px 0;padding-left:20px}.cert-trust-guide li{margin:6px 0}.cert-trust-guide a{word-break:break-all;color:#1890ff;font-weight:500}.charts-section{flex:1;min-width:300px;max-width:500px;display:flex;flex-direction:column;gap:12px;min-height:0}.charts-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;flex:1;color:#666;font-size:13px;background:#fafafa;border-radius:8px}.charts-loading-tip{color:#999}.charts-wrapper{display:flex;flex-direction:column;gap:12px;flex:1;min-height:0}.chart-item{flex:1;min-height:0;border:1px solid #f0f0f0;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.chart-title{padding:6px 10px;background:#fafafa;font-size:12px;font-weight:500;color:#333;border-bottom:1px solid #f0f0f0;flex-shrink:0}.chart-item .ant-image{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#fff;overflow:hidden}.chart-item img,.chart-image{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.chart-placeholder{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:#fafafa}.no-charts-hint{display:flex;align-items:center;justify-content:center;flex:1;color:#999;font-size:13px;background:#fafafa;border-radius:8px}.video-preview-footer{display:flex;justify-content:center;padding:0;flex-shrink:0}.video-preview-footer .ant-btn{min-width:120px;height:36px}.map-preview-popover .ant-popover-inner{padding:0;border-radius:8px;overflow:hidden}.map-preview-content{width:300px}.map-preview-image-wrapper{position:relative;width:300px;height:200px;background-color:#f5f5f5}.map-preview-image{width:100%;height:100%;object-fit:cover;display:block}.map-preview-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1}.map-preview-image-wrapper .map-preview-image[src]~.map-preview-loading{display:none}.map-preview-address{padding:8px 12px;font-size:13px;color:#333;background-color:#fff;border-top:1px solid #f0f0f0;display:flex;align-items:flex-start;gap:6px}.map-preview-icon{color:#ff4d4f;font-size:14px;margin-top:2px;flex-shrink:0}.map-preview-address span{line-height:1.4;word-break:break-all}.map-preview-tip{display:block;padding:6px 12px;font-size:12px;color:#1890ff;background-color:#fafafa;text-align:center;border-top:1px solid #f0f0f0;text-decoration:none;cursor:pointer;transition:background-color .2s}.map-preview-tip:hover{background-color:#e6f7ff;color:#1890ff}.compare-session-list{max-height:60vh;overflow-y:scroll}.compare-session-item{display:flex;align-items:center;padding:0 12px;height:52px;border-bottom:1px solid #f0f0f0;cursor:pointer;transition:background-color .2s;box-sizing:border-box}.compare-session-item .tag-slot{width:66px;min-height:22px;flex-shrink:0;display:flex;justify-content:center;align-items:center}.compare-session-item:hover{background-color:#fafafa}.compare-session-item.selected{background-color:#e6f4ff}.compare-session-item.first-selected{background-color:#f6ffed}.compare-session-item.disabled{cursor:not-allowed;opacity:.6}.compare-session-item.disabled:hover{background-color:transparent}.compare-session-item .session-info{flex:1;display:flex;align-items:center;gap:16px;font-size:13px;overflow:hidden}.compare-session-item .info-item{white-space:nowrap}.compare-session-item .info-item.record-id{font-weight:500;color:#1890ff;min-width:120px}.compare-session-item .route-type-tag{display:inline-block;padding:0 6px;border-radius:4px;font-size:12px}.compare-session-item .route-type-hnp{background-color:#e6f7ff;color:#1890ff}.compare-session-item .route-type-unp{background-color:#f6ffed;color:#52c41a}.compare-session-item .first-tag{padding:2px 8px;background-color:#52c41a;color:#fff;border-radius:4px;font-size:12px}.compare-session-item .order-tag{padding:2px 8px;background-color:#1890ff;color:#fff;border-radius:4px;font-size:12px;min-width:24px;text-align:center}.compare-session-item .drag-handle{cursor:grab;color:#999;padding:4px;margin-right:4px;display:flex;align-items:center;transition:color .2s}.compare-session-item .drag-handle:hover{color:#1890ff}.compare-session-item .drag-handle:active{cursor:grabbing}.compare-session-item.dragging{opacity:.5;background-color:#f0f0f0}.compare-session-item.dragging-overlay{background-color:#e6f4ff;box-shadow:0 4px 12px #00000026;border-radius:4px}.compare-modal-hint{float:left;line-height:32px;color:#666}.compare-modal-hint .max-hint{color:#ff4d4f;margin-left:8px}.sync-modal-content{padding:0}.sync-modal-desc{margin-bottom:16px;color:#333}.sync-option-card{margin-bottom:16px;padding:12px 16px;border-radius:6px}.sync-option-title{font-weight:500;margin-bottom:8px}.sync-option-desc{margin:0;color:#666;font-size:13px}.sync-option-incremental{background:#e6f4ff;border:1px solid #91caff}.sync-option-incremental .sync-option-title{color:#1890ff}.sync-option-full{background:#fff7e6;border:1px solid #ffd591}.sync-option-full .sync-option-title{color:#fa8c16}.sync-modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.sync-modal-footer .ant-btn.sync-btn-full{background-color:#fa8c16;border-color:#fa8c16}.sync-modal-footer .ant-btn.sync-btn-full:hover{background-color:#ffa940;border-color:#ffa940}.sync-modal-footer .ant-btn.sync-btn-full:active{background-color:#d46b08;border-color:#d46b08}.sync-modal-footer .ant-btn.sync-btn-full:focus{background-color:#fa8c16;border-color:#fa8c16}.result-hnp-page{min-height:100vh;background:#f5f5f5;padding-top:48px}.loading-container{min-height:calc(100vh - 48px);display:flex;flex-direction:column;justify-content:center;align-items:center;background:#fff}.loading-container .ant-spin{color:#1890ff}.loading-container .ant-spin-text{margin-top:12px;color:#666;font-size:14px}.result-hnp-header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:flex-start;gap:48px;padding:12px 34px;background:#1a2942;color:#fff;height:48px;box-sizing:border-box}.result-hnp-header .header-info{font-size:14px;color:#ffffffe6}.result-hnp-header .header-info:first-child{font-weight:600;color:#fff}.result-hnp-header .header-actions{margin-left:auto;display:flex;align-items:center;gap:22px}.result-hnp-header .ant-btn-primary:disabled{background-color:#ffffff4d;border-color:#ffffff4d;color:#fff9}.result-hnp-header .ant-btn-default:disabled{background-color:#ffffff26;border-color:#fff3;color:#ffffff73}.stats-container{overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:16px 16px 0}.charts-container{display:flex;flex-direction:column;gap:12px;padding:32px 16px 16px;flex-shrink:0}.resizable-charts-container{display:flex;flex-wrap:wrap;gap:16px;padding:16px;align-items:flex-start;align-content:flex-start}.chart-card{height:100%}.chart-card .ant-card-head{min-height:40px;padding:0 12px;background:#fafafa}.chart-card .ant-card-head-title{font-size:14px;font-weight:600;padding:8px 0}.chart-card .ant-card-body{padding:12px}.resizable-chart-card{position:relative;flex-shrink:0;background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;overflow:hidden}.resizable-chart-card .chart-card{border:none;box-shadow:none}.resizable-chart-card .chart-card .ant-card-body{padding:8px 12px;height:calc(100% - 40px);overflow:hidden}.resize-handle{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 50%,#d9d9d9 50%);border-radius:0 0 8px;z-index:10;transition:background .2s}.resize-handle:hover{background:linear-gradient(135deg,transparent 50%,#1890ff 50%)}.resizable-chart-card.resizing{-webkit-user-select:none;user-select:none}.stats-card{flex-shrink:0}.stats-card .ant-card-head{min-height:40px;padding:0 12px;background:#fafafa}.stats-card .ant-card-head-title{font-size:14px;font-weight:600;padding:8px 0}.stats-card .ant-card-body{padding:12px}.stat-field{display:flex;flex-direction:column;gap:4px}.stat-label{font-size:13px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-input{width:85%}.stat-input .ant-input-number-input{text-align:center}.calc-field .stat-label{color:#1890ff}.calc-field .ant-statistic-content{font-size:16px;color:#1890ff}.rate-field .stat-label{color:#52c41a}.rate-field .ant-statistic-content{font-size:16px;color:#52c41a}.stat-value{height:30px;display:flex;align-items:center}.calc-field .stat-value,.rate-field .stat-value{justify-content:left}.stat-value .ant-statistic-content{font-size:16px;font-weight:500;line-height:1}.stat-value .ant-statistic-content-suffix{font-size:12px;margin-left:2px}@media(max-width:768px){.result-hnp-page{padding:8px}.page-header{padding:8px 12px}.stats-card .ant-card-body{padding:8px}}.result-hnp-compare-page{padding:0;min-height:100vh;background-color:#f5f5f5}.result-hnp-compare-page .loading-container{display:flex;justify-content:center;align-items:center;min-height:400px}.result-hnp-compare-page .empty-container{display:flex;justify-content:center;align-items:center;min-height:400px;color:#999;font-size:16px}.result-hnp-compare-page .compare-header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:flex-start;gap:48px;padding:12px 34px;background:#1a2942;color:#fff;height:48px;box-sizing:border-box}.result-hnp-compare-page .compare-header .header-info{font-size:14px;color:#ffffffe6}.result-hnp-compare-page .compare-header .header-info:first-child{font-weight:600;color:#fff}.result-hnp-compare-page .compare-header .header-actions{margin-left:auto;display:flex;align-items:center;gap:22px}.result-hnp-compare-page .charts-container{display:flex;flex-direction:column;gap:12px;padding:60px 16px 16px;flex-shrink:0}.result-hnp-compare-page .chart-card{height:100%}.result-hnp-compare-page .chart-card .ant-card-head{min-height:40px;padding:0 12px;background:#fafafa}.result-hnp-compare-page .chart-card .ant-card-head-title{font-size:14px;font-weight:600;padding:8px 0}.result-hnp-compare-page .chart-card .ant-card-body{padding:12px 0}.result-hnp-compare-page .resizable-charts-container{display:flex;flex-wrap:wrap;gap:16px;padding:60px 16px 16px;align-items:flex-start;align-content:flex-start}.result-hnp-compare-page .resizable-chart-card{position:relative;flex-shrink:0;background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;overflow:hidden}.result-hnp-compare-page .resizable-chart-card .chart-card{border:none;box-shadow:none}.result-hnp-compare-page .resizable-chart-card .chart-card .ant-card-body{padding:8px 12px;height:calc(100% - 40px);overflow:hidden}.result-hnp-compare-page .resize-handle{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 50%,#d9d9d9 50%);border-radius:0 0 8px;z-index:10;transition:background .2s}.result-hnp-compare-page .resize-handle:hover{background:linear-gradient(135deg,transparent 50%,#1890ff 50%)}.result-hnp-compare-page .resizable-chart-card.resizing{-webkit-user-select:none;user-select:none}.track-map-page{height:100vh;display:flex;flex-direction:column;background-color:#f0f2f5}.track-map-header{padding:16px 24px;background-color:#fff;border-bottom:1px solid #e8e8e8;display:flex;justify-content:space-between;align-items:center}.track-map-header h1{margin:0;font-size:20px;font-weight:600;color:#262626}.legend{display:flex;gap:20px}.legend-item{display:flex;align-items:center;gap:6px;font-size:14px;color:#595959}.legend-dot{width:14px;height:14px;border-radius:50%;border:2px solid white;box-shadow:0 1px 3px #0003}.track-map-container{flex:1;position:relative}.loading-overlay{position:absolute;inset:0;background-color:#fffc;display:flex;align-items:center;justify-content:center;z-index:100}.error-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:100;max-width:500px;width:90%}.map-container{width:100%;height:100%}.track-info-window{background:#fff;border-radius:10px;padding:16px 20px;width:320px;max-width:320px;box-shadow:0 4px 20px #0003}.info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #f0f0f0}.info-header .info-id{font-size:16px;font-weight:600;color:#262626}.info-header .info-address{font-size:12px;color:#8c8c8c;max-width:200px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-row{display:flex;align-items:flex-start;margin-bottom:8px;font-size:14px}.info-label{color:#8c8c8c;flex-shrink:0}.info-value{color:#262626;word-break:break-all}.info-video-preview{margin:10px 0;border-radius:6px;overflow:hidden;background:#000;cursor:pointer;display:flex;justify-content:center;align-items:center}.info-video-preview .preview-video{max-width:100%;height:180px;object-fit:contain;display:block}.info-video-preview .video-placeholder{width:320px;height:180px;display:flex;align-items:center;justify-content:center;color:#999;font-size:13px;background:#f5f5f5}.info-video-preview:hover{opacity:.9}.info-filename{font-size:13px;color:#1890ff;cursor:pointer;padding:8px 0;text-align:center;word-break:break-all}.info-filename:hover{color:#40a9ff;text-decoration:underline}.track-marker{transition:transform .2s}.track-marker:hover{transform:scale(1.2)}
