/* HydroManifold Platform — Operations Center */
:root{--bg:#070b12;--panel:#0e1622;--panel2:#121d2c;--edge:#1f2e42;--txt:#d8e6f5;--muted:#7f93ab;--accent:#3fd0ff;
  --ok:#27e07a;--warn:#ffc233;--bad:#ff7a2f;--crit:#ff3b4e;--grid:#13202f}
*{box-sizing:border-box}html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--txt);font-family:"Segoe UI",system-ui,sans-serif;font-size:14px}
.mono{font-family:ui-monospace,Consolas,monospace}
a{color:var(--accent)}
.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 14px;background:var(--topbar,#0b1422);border-bottom:1px solid var(--edge);position:sticky;top:0;z-index:30}
.top .brand{font-weight:800}.top .brand .eq{color:var(--accent);font-family:ui-monospace,monospace}
.top .brand small{display:block;font-weight:400;color:var(--muted);font-size:11px}
.poweredby{font-size:11px;color:var(--muted);text-decoration:none;border:1px solid var(--edge);border-radius:20px;padding:3px 10px;white-space:nowrap;cursor:pointer}
.poweredby:hover{color:var(--accent);border-color:var(--accent)}
.top select,.top input,.top button{background:var(--panel2);color:var(--txt);border:1px solid var(--edge);border-radius:8px;padding:7px 10px;font:inherit}
.top button{cursor:pointer}.top button:hover{border-color:var(--accent)}
.top .spacer{flex:1}
.role-chip{font-size:11px;color:var(--muted)}
.layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 52px)}
.nav{border-right:1px solid var(--edge);background:#0a111b;padding:8px 0;overflow:auto}
.nav .grp{font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);padding:10px 14px 4px}
.nav a{display:flex;align-items:center;gap:8px;padding:7px 14px;color:var(--txt);text-decoration:none;cursor:pointer;font-size:13px;border-left:3px solid transparent}
.nav a:hover{background:var(--panel2)}
.nav a.active{background:var(--panel2);border-left-color:var(--accent);color:#fff}
.nav a .ct{margin-left:auto;font-size:11px;color:var(--muted);font-family:ui-monospace,monospace}
.nav a.locked{opacity:.4;cursor:not-allowed}
.main{padding:16px;overflow:auto}
.h1{font-size:20px;font-weight:800;margin:0 0 2px}.sub{color:var(--muted);font-size:12.5px;margin:0 0 12px}
.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.bar input{background:var(--panel2);color:var(--txt);border:1px solid var(--edge);border-radius:8px;padding:7px 10px;font:inherit}
.btn{background:var(--panel2);color:var(--txt);border:1px solid var(--edge);border-radius:8px;padding:7px 12px;font:inherit;cursor:pointer}
.btn:hover{border-color:var(--accent)}.btn.primary{background:rgba(63,208,255,.18);border-color:var(--accent)}
.btn.danger{border-color:var(--crit);color:#ffd0d4}
.card{background:var(--panel);border:1px solid var(--edge);border-radius:12px;padding:14px;margin-bottom:14px}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th,td{text-align:left;padding:7px 9px;border-bottom:1px solid var(--grid);vertical-align:top}
th{color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;position:sticky;top:0;background:var(--panel)}
td .x{cursor:pointer;color:var(--muted);border:1px solid var(--edge);border-radius:5px;padding:1px 6px}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.kpi{background:var(--panel);border:1px solid var(--edge);border-radius:12px;padding:13px}
.kpi .v{font-size:24px;font-weight:800;font-family:ui-monospace,monospace}.kpi .l{font-size:11px;color:var(--muted);margin-top:3px}
.pill{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11px;font-weight:700;border:1px solid currentColor}
.pill.ok{color:var(--ok)}.pill.warn{color:var(--warn)}.pill.bad{color:var(--bad)}.pill.crit{color:var(--crit)}
.tag{font-family:ui-monospace,monospace;font-size:10px;padding:1px 6px;border-radius:5px;background:#15212f;color:var(--accent)}
.muted{color:var(--muted)}.good{color:var(--ok)}.warnc{color:var(--warn)}.badc{color:var(--bad)}.critc{color:var(--crit)}
.form{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.form label{font-size:11px;color:var(--muted);display:block}
.form input,.form select,.form textarea{width:100%;background:var(--panel2);color:var(--txt);border:1px solid var(--edge);border-radius:7px;padding:6px 8px;font:inherit}
.form textarea.ta{resize:vertical;min-height:38px}
.form input[type=file]{padding:4px 6px}
.req{color:var(--crit);font-weight:700}
.lnk{color:var(--accent)}
.note{font-size:12px;color:var(--muted)}
.demobar{background:rgba(255,194,51,.1);border-bottom:1px solid rgba(255,194,51,.4);color:var(--warn);font-size:12px;text-align:center;padding:5px 12px}
/* simulated indicator: always visible (designated space), gentle pulse — never blinks fully out */
.simblink{color:var(--bad);font-weight:800;letter-spacing:.5px;margin-right:8px;animation:simpulse 1.8s ease-in-out infinite}
@keyframes simpulse{0%,100%{opacity:1}50%{opacity:.55}}
@keyframes blink{50%{opacity:.25}}
/* designated space — digits keep constant width so values update in place without bouncing panels */
.mono,td,.kpi .v{font-variant-numeric:tabular-nums}
.kpi .v{min-height:28px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:820px){.grid2{grid-template-columns:1fr}}
.incl{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:4px}
.incl .ck{font-size:12px;color:var(--txt);display:flex;align-items:center;gap:5px}
.anrow td{background:rgba(255,122,47,.07)}
tr.hl td{background:rgba(63,208,255,.16);outline:1px solid var(--accent)}
.pill.acc{color:var(--accent)}
.pager{display:flex;align-items:center;gap:10px;margin-top:8px}
.doc{border-color:#2a3b52}
.dochd{display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid var(--edge);padding-bottom:8px;margin-bottom:8px}
.manifest{margin:8px 0;font-size:12.5px}
.cert{margin-top:10px;border:1px dashed var(--edge);border-radius:8px;padding:10px;background:#0a131e}
.certgrid{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin-top:6px;font-size:12px}
.certgrid span:nth-child(odd){color:var(--muted)}
.flagbox{margin-top:8px;border-left:3px solid var(--warn);background:rgba(255,194,51,.08);padding:8px 12px;border-radius:0 8px 8px 0;font-size:12.5px}
pre.csv{background:#060d14;border:1px solid var(--edge);border-radius:8px;padding:10px;max-height:300px;overflow:auto;font-size:11px;color:#cfe3ff;white-space:pre}
.fsm{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.fsm .st{padding:4px 10px;border-radius:8px;border:1px solid var(--edge);font-family:ui-monospace,monospace;font-size:12px}
.fsm .st.on{background:rgba(63,208,255,.2);border-color:var(--accent);color:#fff;font-weight:700}
.fsm .st.danger.on{background:rgba(255,59,78,.25);border-color:var(--crit)}
/* wall-display mode for control-room monitors */
body.wall .nav,body.wall .top .spacer~*:not(#wall-exit),body.wall .bar{display:none}
body.wall .layout{grid-template-columns:1fr}
body.wall .kpi .v{font-size:42px}body.wall .kpi .l{font-size:14px}
body.wall .main{padding:26px}
body.wall .h1{font-size:30px}
