*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ant-card{animation:fadeIn .3s ease-out}.dcs-header{background:linear-gradient(135deg,#001529,#003a8c)}.dcs-panel{background:#f5f5f5;border:1px solid #d9d9d9}.alarm-high{background:#ffccc7;border-left:4px solid #ff4d4f}.alarm-low{background:#fff7e6;border-left:4px solid #fa8c16}@keyframes pipelineFlash{0%,to{opacity:1;stroke:#faad14}50%{opacity:.3;stroke:#ffd666}}.pipeline-flash{animation:pipelineFlash .5s ease-in-out 3}@keyframes equipmentFlash{0%,to{opacity:0}50%{opacity:.6}}.equipment-flash-glow{animation:equipmentFlash .5s ease-in-out 3}.standard-icon-tabpane{height:100%}.standard-icon-tabpane>*{height:100%}.ant-tabs{height:100%}.ant-tabs>.ant-tabs-content-holder{flex:1;min-height:0}.ant-tabs>.ant-tabs-content-holder>.ant-tabs-content{height:100%}.ant-tabs>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{height:100%}.icon-grid-scroll::-webkit-scrollbar{width:8px;height:8px}.icon-grid-scroll::-webkit-scrollbar-track{background:#f0f0f0;border-radius:4px}.icon-grid-scroll::-webkit-scrollbar-thumb{background:#bfbfbf;border-radius:4px}.icon-grid-scroll::-webkit-scrollbar-thumb:hover{background:#999}.standard-icon-grid::-webkit-scrollbar{width:8px;height:8px}.standard-icon-grid::-webkit-scrollbar-track{background:#f0f0f0;border-radius:4px}.standard-icon-grid::-webkit-scrollbar-thumb{background:#bfbfbf;border-radius:4px}.standard-icon-grid::-webkit-scrollbar-thumb:hover{background:#999}.standard-icon-grid{scrollbar-width:thin;scrollbar-color:#bfbfbf #f0f0f0}@keyframes flowDashMove{to{stroke-dashoffset:-26}}.flow-anim{animation:flowDashMove .9s linear infinite}.flow-anim-rev{animation:flowDashMove .9s linear infinite reverse}
