html,body,#root{min-height:100%;margin:0}body{background:#f0f2f5}@keyframes scada-flow{to{stroke-dashoffset:-24px}}.pipe-flow{stroke-dasharray:8 4;animation:1s linear infinite scada-flow}@keyframes scada-water{to{stroke-dashoffset:-32px}}.pipe-flow-water{stroke-dasharray:10 6;animation:.9s linear infinite scada-water}@keyframes scada-spin{to{transform:rotate(360deg)}}.impeller-spin{animation:1.1s linear infinite scada-spin}@media (prefers-reduced-motion:reduce){.pipe-flow,.pipe-flow-water,.impeller-spin{animation:none}}.kpi-card .ant-card-body{padding:12px 16px}.kpi-title{color:#0000008c;font-size:12px}.kpi-value{font-size:22px;font-weight:600;line-height:1.3}.kpi-sub{color:#00000073;font-size:12px}.diagram-wrap{width:100%;overflow-x:auto}.diagram-wrap svg{min-width:760px;display:block}.pump-symbol{cursor:pointer}.diagram-fit{width:100%;height:100%;display:block}.overview-frame{background:#f4f7fa;border:1px solid #e5e9ee;border-radius:6px;height:calc(100vh - 120px);min-height:360px;position:relative;overflow:hidden}.overview-frame.is-fullscreen{z-index:999;border:0;border-radius:0;height:100vh;position:fixed;inset:0}.scada-frame{flex-direction:column;display:flex}.scada-frame .fm-header{border-radius:6px 6px 0 0}.scada-frame.is-fullscreen .fm-header{border-radius:0}.scada-frame-body{flex:1;min-height:0;position:relative}.overview-toolbar{z-index:2;align-items:center;gap:8px;display:flex;position:absolute;top:8px;right:8px}.pump-symbol:focus-visible{outline:2px solid #0b5c8e}.fm-screen{color:#e8f1fa;background:radial-gradient(120% 90% at 50% 0,#1a4a78 0%,#0f3256 55%,#0a2540 100%);border-radius:8px;flex-direction:column;height:calc(100vh - 96px);min-height:600px;display:flex;overflow:hidden}.fm-screen.is-fullscreen{z-index:999;border-radius:0;height:100vh;position:fixed;inset:0}.fm-header{background:linear-gradient(90deg,#2f5e8f 0%,#4b82b3 50%,#2f5e8f 100%);border-bottom:2px solid #7cc4ff;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:8px 16px;display:grid;box-shadow:0 2px 10px #00000040}.fm-brand{letter-spacing:.5px;color:#fff;white-space:nowrap;align-items:center;gap:10px;font-size:24px;font-weight:800;display:flex}.fm-brand>div{line-height:1.15}.fm-address{letter-spacing:.2px;color:#dceaf7;margin-top:3px;font-size:12px;font-weight:500}.fm-title{text-align:center;min-width:0}.fm-title h1{color:#fff;text-shadow:0 1px 2px #0000004d;margin:0;font-size:22px;font-weight:800;line-height:1.25}.fm-title div{color:#dceaf7;letter-spacing:.3px;font-size:13px}.fm-clock{color:#fff;white-space:nowrap;background:#0a254073;border:1px solid #ffffff4d;border-radius:6px;grid-template-columns:auto auto;gap:0 22px;padding:4px 14px;font-size:16px;display:grid}.fm-time{font-variant-numeric:tabular-nums;text-align:right}.fm-plc{align-items:center;gap:6px;font-size:14px;font-weight:600;display:inline-flex}.fm-dot{vertical-align:middle;border-radius:50%;flex:none;width:12px;height:12px;display:inline-block;box-shadow:0 0 0 1px #00000040}.fm-body{flex:1;grid-template-columns:410px minmax(0,1fr);gap:10px;min-height:0;padding:10px;display:grid}.fm-left{flex-direction:column;gap:10px;min-height:0;display:flex}.fm-panel{background:#ffffff0f;border:1px solid #7cc4ff47;border-radius:8px;overflow:hidden;box-shadow:0 4px 14px #00000040}.fm-panel-title{letter-spacing:.3px;text-transform:uppercase;color:#fff;background:linear-gradient(#4b82b3,#2f5e8f);border-bottom:1px solid #7cc4ff59;align-items:center;gap:8px;padding:7px 12px;font-size:13.5px;font-weight:700;display:flex}.fm-group-cards{grid-template-columns:repeat(2,1fr);gap:8px;padding:10px;display:grid}.fm-group-card{text-align:center;background:#06182b8c;border:1px solid #ffffff1f;border-top:3px solid;border-radius:6px;padding:8px 6px}.fm-group-card .t{color:#c6dbef;font-size:11px}.fm-group-card .v{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800;line-height:1.3}.fm-group-card .v small{font-size:12px}.fm-group-card .s{color:#c6dbef;font-size:11px}.fm-group-card .s.warn{color:#ffb74d}.fm-list{flex-direction:column;flex:1;min-height:0;display:flex}.fm-table-wrap{flex:1;min-height:0;overflow:auto}.fm-table{border-collapse:collapse;width:100%;font-size:12px}.fm-table th{z-index:1;color:#fff;text-align:center;background:#2f5e8f;border-bottom:1px solid #7cc4ff66;padding:5px 6px;font-weight:600;position:sticky;top:0}.fm-table td{font-variant-numeric:tabular-nums;border-bottom:1px solid #ffffff12;padding:3px 6px}.fm-table tbody tr:nth-child(2n) td{background:#ffffff09}.fm-table td.c{text-align:center}.fm-table td.r{text-align:right;color:#fff;font-weight:600}.fm-table tr{cursor:pointer}.fm-table tbody tr:hover td{background:#7cc4ff24}.fm-table tbody tr.is-selected td{background:#4b82b399}.fm-table tr:focus-visible{outline-offset:-2px;outline:2px solid #7cc4ff}.fm-name{color:#e8f1fa;font-size:9.5px;line-height:1.2}.fm-sub{color:#9fc3e6;font-size:10px;line-height:1.2}.fm-legend{flex-wrap:wrap;gap:6px 18px;padding:9px 12px;font-size:12px;display:flex}.fm-leg-item{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.fm-map{background:#f4f7fa;border:1px solid #7cc4ff59;border-radius:8px;min-width:0;min-height:0;position:relative;overflow:hidden;box-shadow:0 4px 14px #0000004d}.fm-fs{z-index:2;position:absolute;top:8px;right:8px}.ft-marker{cursor:pointer}.ft-marker:focus-visible{outline:2px solid #1677ff}@media (width<=1279px){.fm-screen:not(.is-fullscreen){height:auto}.fm-screen:not(.is-fullscreen) .fm-body{grid-template-columns:1fr}.fm-screen:not(.is-fullscreen) .fm-map{height:80vh}.fm-screen:not(.is-fullscreen) .fm-table-wrap{max-height:440px}.fm-header{grid-template-columns:1fr}.fm-title{text-align:left}.fm-title h1{font-size:18px}.fm-clock{justify-self:start}}.row-unack td{background:#fff1f0!important}.row-cleared-unack td{background:#fffbe6!important}.fm-detail-flow .ant-typography{font-size:22px}.pump-figure{background:#f4f7fa;border:1px solid;border-left-width:5px;border-radius:8px;align-items:center;gap:16px;margin-bottom:12px;padding:8px 16px;display:flex}.pump-figure svg{flex:none}.pump-figure-info{flex-direction:column;gap:6px;display:flex}.pump-figure-state{font-size:20px;font-weight:700}.pump-figure-values{color:#3c4a57;flex-wrap:wrap;gap:6px 18px;font-size:14px;display:flex}.pump-figure-values b{font-variant-numeric:tabular-nums;font-size:18px}
