:root{--bg-0: #14151a;--bg-1: #1c1e24;--bg-2: #262830;--bg-3: #32343c;--text: #d8d9dc;--text-dim: #9aa0a8;--border: #464a54;--accent-ok: #5cb87a;--accent-warn: #d4a843;--accent-alarm: #e05c5c;--pipe-liq: #3d8fd4;--pipe-vap: #7eb8e8;--pipe-2ph: #a894e8;--title-bar: #2a2d35;--font: "Segoe UI", "Noto Sans", system-ui, sans-serif;--mono: "Consolas", "Liberation Mono", monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%;height:100%;background:var(--bg-0);color:var(--text);font-family:var(--font);font-size:14px}#app{height:100vh;max-height:100vh;display:flex;flex-direction:column;overflow:clip}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hmi-chrome{flex-shrink:0;border-bottom:1px solid var(--border);background:var(--bg-1)}.title-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;padding:10px 16px;background:linear-gradient(180deg,#353840,var(--title-bar));border-bottom:1px solid #1a1b1f}.title-brand{display:flex;align-items:center;gap:12px}.app-mark{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:4px;background:#1f2126;border:1px solid var(--border);font-family:var(--mono);font-size:12px;font-weight:700;color:var(--pipe-vap)}.title-main{font-size:15px;font-weight:600;letter-spacing:.01em}.title-sub{font-size:12px;color:var(--text-dim);margin-top:2px}.status-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:3px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:var(--bg-2);border:1px solid var(--border);color:var(--text-dim)}.status-pill.ok{color:var(--accent-ok);border-color:#3d6b4f}.status-pill.alarm{color:var(--accent-alarm)}.status-pill.neutral{color:var(--text)}.status-lamp{width:8px;height:8px;border-radius:50%;background:var(--accent-ok);box-shadow:0 0 6px var(--accent-ok)}.status-pill.alarm .status-lamp{background:var(--accent-alarm);box-shadow:0 0 6px var(--accent-alarm)}.status-lamp.sim{background:var(--pipe-vap);box-shadow:0 0 6px var(--pipe-vap)}.plant-clock{font-family:var(--mono);font-size:12px;color:var(--text);padding:4px 10px;background:#1a1b1f;border:1px solid var(--border);border-radius:3px}.hmi-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;padding:8px 16px 10px}.case-select label{margin-right:6px;color:var(--text-dim);font-size:12px}.case-select select{background:var(--bg-0);color:var(--text);border:1px solid var(--border);padding:5px 8px;border-radius:3px;font-size:13px}.case-active{margin:0;font-size:13px;color:var(--text-dim)}.basis-banner{flex:1;min-width:200px;font-size:13px;color:var(--text-dim);line-height:1.35;margin:0}.electrical-stack{display:flex;flex-direction:column;gap:4px;min-width:300px}.electrical-bar{display:flex;align-items:center;gap:10px;padding:6px 12px;background:var(--bg-2);border:1px solid var(--border);border-radius:3px}.electrical-bar .label{font-size:13px;color:var(--text-dim)}.electrical-bar meter{flex:1;height:12px;accent-color:var(--accent-ok)}.electrical-bar meter.warn{accent-color:var(--accent-warn)}.electrical-bar .amps{font-family:var(--mono);font-size:13px;white-space:nowrap}.electrical-load-list{margin:0;padding:4px 12px 6px;list-style:none;font-size:13px;color:var(--text-dim);background:var(--bg-1);border:1px solid var(--border);border-radius:3px;line-height:1.45}.electrical-load-list .mono{font-family:var(--mono);color:var(--text)}.pid-wrap{flex:1;min-height:0;display:flex;flex-direction:column;padding:4px 8px 2px;background:var(--bg-0);overflow:hidden}.pid-diagram-header{flex-shrink:0;padding:6px 12px;font-size:13px;font-family:var(--mono);color:#9aa0a8;border:1px solid var(--border);border-bottom:none;border-radius:4px 4px 0 0;background:#1a1c21}.pid-svg{display:block;flex:1;width:100%;height:100%;min-height:0;max-height:none;background:linear-gradient(180deg,#1a1c21,#15171b);border:1px solid var(--border);box-shadow:inset 0 1px #ffffff0a}.hmi-chrome{flex-shrink:0}.pid-svg .tag-bg{fill:#2a2d34;stroke:#50555f;stroke-width:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}.pid-svg .tag-leader{stroke:#5a5d64;stroke-width:1;stroke-dasharray:3 3}.pid-svg .connector-label-bg{fill:#24262c;stroke:#50555f;stroke-width:1}.pid-svg .legend-panel{fill:#24262c;stroke:#464a54}.pid-svg .legend-title{fill:var(--text);font-weight:600}.pid-svg .energy-bubble{fill:#2e2820;stroke:#8a6d2e;stroke-width:1}.stream-tag,.equip-tag-hit{cursor:pointer}.stream-tag:hover .tag-bg,.equip-tag-hit:hover .equip-outline{stroke:#c5c7cb}.pid-svg .tag-text{fill:var(--text);font-family:var(--mono)}.pid-svg .tag-live{fill:var(--text-dim);font-family:var(--mono)}.pid-svg .tag-val{fill:var(--text)}.pid-svg .equip-label{fill:var(--text);font-weight:600;font-family:var(--mono)}.pid-svg .equip-sublabel{fill:var(--text-dim)}.pid-svg .energy-text{fill:var(--accent-warn);font-family:var(--mono)}.pipe-flow{fill:none}@keyframes dash-flow{to{stroke-dashoffset:-56}}.pipe-anim{animation:dash-flow linear infinite}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:var(--bg-1);border:1px solid var(--border);border-radius:4px;max-width:520px;width:100%;max-height:90vh;overflow:auto;box-shadow:0 8px 32px #00000080}.modal header{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border);background:var(--bg-2)}.modal header h2{margin:0;font-size:14px;font-family:var(--mono)}.modal header button{background:var(--bg-0);border:1px solid var(--border);color:var(--text);padding:4px 10px;cursor:pointer;border-radius:3px}.modal .body{padding:14px;font-size:13px;line-height:1.45}.modal table{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px}.modal th,.modal td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--bg-3)}.modal th{color:var(--text-dim);font-weight:500}.modal .note{font-size:11px;color:var(--accent-warn);margin-top:10px}.footer-strip{padding:6px 16px;font-size:10px;color:var(--text-dim);border-top:1px solid var(--border);background:var(--bg-1);flex-shrink:0}.app-tab-bar{display:flex;gap:8px;padding:10px 16px;background:var(--bg-1);border-bottom:1px solid var(--border)}.tab-btn{font-size:14px;min-height:36px;padding:8px 14px;border:1px solid var(--border);border-radius:4px;background:var(--bg-2);color:var(--text);cursor:pointer}.tab-btn.active{border-color:#5a8fd4;background:#2a3548}.screen-root{flex:1;display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 54px);overflow:hidden}.p01-screen{display:flex;flex-direction:column;flex:1;min-height:0;overflow:visible}.m2-layout{display:grid;grid-template-columns:minmax(248px,300px) 1fr;grid-template-rows:minmax(0,1fr);gap:6px;padding:6px 8px;flex:1;min-height:0;height:calc(100vh - 54px);max-height:calc(100vh - 54px);overflow:hidden;align-items:stretch}.m2-layout-collapsed{grid-template-columns:1fr;grid-template-rows:auto 1fr;padding:6px 10px}.m2-layout-collapsed .m2-main.panel{grid-row:2;grid-column:1}.m2-layout-collapsed .m2-hmi-strip{display:none}.m2-layout-collapsed .m2-step-strip{margin-bottom:2px;padding:3px 6px}.m2-layout-collapsed .m2-step-head,.m2-layout-collapsed .m2-progress{margin-bottom:4px}.m2-layout-collapsed .m2-transport{margin-bottom:0}.m2-intake-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;grid-column:1 / -1}.m2-intake-chip{font-size:12px;color:var(--text-dim)}.m2-intake-drawer{grid-column:1 / -1;max-height:45vh;overflow:auto}.m2-intake-drawer:not(.open){display:none}.m2-intake.panel,.m2-main.panel{background:var(--bg-1);border:1px solid var(--border);border-radius:6px;padding:8px 10px;min-height:0}.m2-intake.panel{max-height:100%;overflow-y:auto;overflow-x:hidden}.m2-intake.panel h2{margin:0 0 6px;font-size:15px}.m2-intake.panel #m2-demo{margin-bottom:8px}.m2-intake.panel .m2-field{margin-bottom:6px;font-size:13px}.m2-intake.panel .m2-routing-field{margin:6px 0;padding:6px 8px}.m2-intake.panel #m2-demo{margin-top:4px;width:100%}.m2-field{display:block;margin-bottom:10px;font-size:14px}.m2-field select,.m2-count,.m2-intake .case-select{display:block;width:100%;margin-top:4px;font-size:14px;min-height:32px;background:var(--bg-2);color:var(--text);border:1px solid var(--border);border-radius:4px}.m2-lines-table{width:100%;font-size:13px;border-collapse:collapse;margin:8px 0}.m2-lines-table th,.m2-lines-table td{border-bottom:1px solid var(--border);padding:6px 4px;text-align:left}.m2-totals{display:grid;gap:6px;font-size:13px;margin:12px 0}.m2-totals dt{color:var(--text-dim)}.m2-totals dd{margin:0;font-family:var(--mono)}.est-tag{display:inline-block;font-size:11px;padding:1px 5px;margin-left:4px;border-radius:3px;background:#4a3d20;color:#e8c66a;vertical-align:middle}.btn-accent,.btn-secondary{font-size:13px;padding:8px 12px;border-radius:4px;border:1px solid var(--border);cursor:pointer;margin-right:8px}.btn-accent{background:#2f4a68;color:var(--text)}.btn-secondary{background:var(--bg-2);color:var(--text)}.m2-transport{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;font-size:13px}.m2-main.panel{display:flex;flex-direction:column;min-height:0;flex:1;max-height:100%;overflow:hidden;padding:6px 8px}.m2-body-split{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:6px;align-items:stretch}.m2-hero-col{display:flex;flex-direction:column;min-height:0;min-width:0}.m2-hmi-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.m2-step-strip{background:var(--bg-2);border:1px solid var(--border);border-radius:4px;padding:4px 8px;margin-bottom:4px;flex-shrink:0}.m2-step-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;font-size:13px;margin-bottom:8px}.m2-step-num{color:var(--text-dim)}.m2-progress{width:100%;height:8px;margin-bottom:8px}.m2-plant-wrap{flex:1 1 auto;min-height:45vh;display:flex;border:1px solid var(--border);border-bottom:none;background:#181a1f;border-radius:4px 4px 0 0;overflow:hidden}.m2-plant-footnote{flex-shrink:0;margin:0;padding:4px 10px 6px;font-size:13px;line-height:1.3;color:var(--text-dim);border:1px solid var(--border);border-top:none;border-radius:0 0 4px 4px;background:#181a1f}.m2-plant-svg{display:block;width:100%;height:100%;min-height:0}.m2-faceplate-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin:10px 0}.m2-faceplate-compact{grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;margin:4px 0 0;flex-shrink:0}.m2-faceplate-compact .m2-faceplate{padding:4px 6px;font-size:12px}.m2-faceplate-compact .m2-fp-cap,.m2-faceplate-compact .m2-fp-mix{display:none}.m2-routing-field{border:1px solid var(--border);border-radius:4px;margin:10px 0;padding:8px 10px;font-size:13px}.m2-routing-field legend{padding:0 4px}.m2-analytics-panel{border:1px solid var(--border);border-radius:4px;padding:6px 8px;overflow:visible;min-height:0;max-height:100%;font-size:12px;display:flex;flex-direction:column}.m2-analytics-side-inner{display:flex;flex-direction:column;gap:6px;min-height:0;flex:1;overflow:visible}.m2-analytics-tabs{display:flex;flex-wrap:wrap;gap:4px;flex-shrink:0}.m2-analytics-tab{flex:1 1 auto;min-width:0;font-size:13px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;background:var(--bg-2);color:var(--text-dim);cursor:pointer}.m2-analytics-tab.active{border-color:var(--accent);color:var(--text);background:#252830}.m2-analytics-tab-panels{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:visible}.m2-tab-panel{display:none;flex-direction:column;gap:4px;overflow:visible}.m2-tab-panel.active{display:flex}.m2-analytics-side-inner .gc-table td,.m2-analytics-side-inner .gc-table th,.m2-mb-compact .m2-mb-table td{padding:2px 4px;line-height:1.25}.m2-split-note{font-size:11px;margin:0;line-height:1.25}.gc-card-compact header{font-size:12px;margin-bottom:4px}.gc-card-compact .gc-table{font-size:12px}.gc-card-compact .gc-lab-time,.gc-card-compact .gc-note{font-size:12px;margin:4px 0 0}.m2-mb-compact .m2-mb-table{font-size:12px}.m2-mb-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px;font-size:12px;margin-bottom:2px}.m2-mb-head-sub{margin-top:-2px}.m2-mb-footnote{font-size:11px;color:var(--text-dim);margin:4px 0 0;line-height:1.3}.m2-mb-block{margin-bottom:10px}.m2-mb-block h4{margin:0 0 6px;font-size:13px}.m2-mb-note{font-size:12px;color:var(--text-dim);margin:4px 0 0}.gc-pending td{color:var(--text-dim)}.m2-faceplate{background:var(--bg-2);border:1px solid var(--border);border-radius:4px;padding:8px 10px;font-size:13px}.m2-fp-h{display:flex;justify-content:space-between;margin-bottom:6px}.m2-fp-bar-wrap{position:relative;height:10px;background:#1a1b1e;border-radius:3px;overflow:visible;margin-bottom:6px}.m2-fp-bar{height:100%;background:var(--pipe-liq);border-radius:3px;max-width:100%}.m2-fp-80{position:absolute;top:-2px;bottom:-2px;width:2px;background:#d4a843;opacity:.9}.m2-fp-press,.m2-fp-cap{margin:0 0 4px;color:var(--text-dim);font-size:12px}.m2-fp-mix{display:flex;height:6px;gap:1px;margin-top:4px}.m2-mix-chip{display:block;height:6px;background:#3d8fd4;font-size:0}.m2-fp-alarms,.m2-alarm-chip{display:inline-block;font-size:11px;padding:2px 6px;border-radius:3px;background:#4a2828;color:#e88;margin-right:4px}.m2-mass-balance{margin-top:10px;font-size:13px}.m2-mb-table{width:100%;border-collapse:collapse}.m2-mb-table th,.m2-mb-table td{border:1px solid var(--border);padding:5px 8px;text-align:left}.m2-mb-table .num{font-family:var(--mono);text-align:right}.m2-split-note{color:var(--text-dim);margin-top:8px;line-height:1.45}.m2-pipe-active{opacity:1}.m2-pipe-idle{opacity:.35}.m2-layout{min-height:calc(100vh - 56px)}.m2-plant-svg .m2-legend-slim{fill:#181a1f8c;stroke:#40444c;stroke-width:1}.m2-plant-svg .pipe-anim{animation-name:pipe-dash;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes pipe-dash{to{stroke-dashoffset:-24}}.m2-vessel-shell{fill:#2a2d35;stroke:#6c7078;stroke-width:1.2}.m2-liquid{fill:var(--pipe-liq);opacity:.75}.m2-vessel-label,.m2-vessel-data,.m2-footnote{fill:var(--text)}.m2-alarm{fill:var(--accent-alarm)}.gc-card{margin-top:12px;font-size:13px}.gc-card header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.gc-table{width:100%;border-collapse:collapse;font-size:13px}.gc-table th,.gc-table td{border:1px solid var(--border);padding:6px 8px;text-align:left}.gc-pass td:last-child{color:var(--accent-ok)}.gc-fail td:last-child{color:var(--accent-alarm)}.gc-note{color:var(--text-dim);margin-top:8px}@media(max-width:720px){.m2-layout{grid-template-columns:1fr}}@media(max-width:720px){.title-bar,.hmi-toolbar{flex-direction:column;align-items:flex-start}.electrical-stack{width:100%}}
