:root{--ink: #eaf1f6;--muted: #93a4b3;--line: rgba(255,255,255,.09);--accent: #4fe3a0;--blue: #5ab6f0;--blue-soft: rgba(90,182,240,.14);--pos: #4fe3a0;--neg: #ff6b6b;--bg: #0a1018;--panel: rgba(16,22,32,.86);--glass: rgba(10,16,24,.72);--shadow: 0 12px 32px rgba(0,0,0,.45);--sans: "DM Sans", system-ui, sans-serif}*{box-sizing:border-box;margin:0}html,body{height:100%;overflow:hidden}body{font-family:var(--sans);color:var(--ink);font-size:13px;background:var(--bg)}button,input{font-family:inherit}#app{display:grid;grid-template-columns:1fr 360px;grid-template-rows:auto 1fr auto;height:100vh}#viewport-wrap{grid-column:1;grid-row:1 / -1;position:relative;min-width:0;background:#0a1018}#viewport{width:100%;height:100%;display:block}#viewport.can-pick{cursor:pointer}.topbar{position:absolute;top:0;left:0;right:360px;z-index:10;display:flex;align-items:center;gap:13px;padding:10px 16px;background:var(--glass);backdrop-filter:blur(16px) saturate(140%);border-bottom:1px solid var(--line);box-shadow:0 4px 18px #00000059}.brand{min-width:220px}.brand h1{font-size:15px;font-weight:700;letter-spacing:-.2px;color:#fff}.brand p{font-size:9.5px;color:var(--muted);margin-top:1px}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px #4fe3a0b3;margin-right:4px}.hero{flex:1;text-align:center;font-size:21px;font-weight:700;color:var(--accent);letter-spacing:-.3px;text-shadow:0 0 18px rgba(79,227,160,.35)}.status-pill{font-size:10px;font-weight:700;padding:5px 12px;border-radius:20px;white-space:nowrap;border:1px solid transparent}.status-pill.good{background:#4fe3a024;color:var(--pos);border-color:#4fe3a04d}.status-pill.warn{background:#ffb44624;color:#ffb446;border-color:#ffb4464d}.status-pill.bad{background:#ff6b6b24;color:var(--neg);border-color:#ff6b6b4d}.modes{display:flex;gap:5px}.mode,.btn{text-decoration:none;font-size:10.5px;font-weight:600;padding:7px 12px;border-radius:8px;color:var(--muted);border:1px solid var(--line);background:#ffffff08;cursor:pointer;transition:.16s ease}.mode:hover,.btn:hover{color:var(--ink);border-color:#ffffff38;box-shadow:0 2px 10px #0000004d}.mode.active{background:var(--accent);color:#07140e;border-color:var(--accent)}.side{grid-column:2;grid-row:1 / -1;display:flex;flex-direction:column;background:#0d1420;border-left:1px solid var(--line);overflow:hidden;z-index:20;box-shadow:-8px 0 28px #0006}.side-tabs{display:flex;border-bottom:1px solid var(--line);flex-shrink:0}.stab{flex:1;padding:12px 8px;border:none;background:#0a0f18;font-size:11.5px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent}.stab.active{background:#101826;color:#fff;border-bottom-color:var(--accent)}.side-panel{flex:1;overflow-y:auto;padding:13px;min-height:0}.side-panel.hidden{display:none}.scroll{max-height:320px;overflow-y:auto}.detail-tag{font-size:8.5px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--accent);margin-bottom:4px}.detail h2{font-size:16px;font-weight:700;margin-bottom:8px;letter-spacing:-.2px;color:#fff}.detail-body{font-size:11.5px;line-height:1.55;color:#b7c4cf}.detail-specs{margin:8px 0 0;padding-left:16px;font-size:10px;color:var(--muted);line-height:1.55}.detail-placeholder{font-size:11.5px;color:var(--muted);line-height:1.5}.detail-metrics{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:11px}.dm{background:#ffffff0a;border-radius:8px;padding:7px 9px;border:1px solid var(--line)}.dm span{display:block;font-size:8.5px;color:var(--muted);text-transform:uppercase}.dm strong{font-size:13px;font-weight:700;display:block;margin-top:2px;color:#fff}.eq-group{margin-bottom:9px}.eq-group-title{font-size:8.5px;font-weight:700;letter-spacing:.55px;text-transform:uppercase;color:#6b7c8c;padding:8px 3px 5px;border-top:1px solid var(--line);margin-top:4px}.eq-group:first-child .eq-group-title{border-top:none;margin-top:0}.eq-btn{display:block;width:100%;text-align:left;cursor:pointer;padding:7px 9px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--ink)}.eq-btn strong{display:block;font-size:10.5px;font-weight:600}.eq-btn span{font-size:9px;color:var(--muted)}.eq-btn:hover{background:#ffffff0d}.eq-btn.active{background:var(--blue-soft);border-color:#5ab6f066}.eq-btn.active strong{color:var(--blue)}.controls-scroll{display:flex;flex-direction:column;gap:11px}.ctrl label{display:flex;justify-content:space-between;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:4px}.ctrl label output{color:var(--ink);font-weight:700}.ctrl input[type=range]{width:100%;accent-color:var(--accent);height:4px}.toggle-row{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:600}.toggle{width:42px;height:24px;border-radius:12px;border:none;cursor:pointer;background:#ffffff1f;position:relative}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0006;transition:.15s}.toggle.on{background:var(--accent)}.toggle.on:after{left:21px}.legend{padding:11px 13px;background:#0a0f18;border-top:1px solid var(--line);flex-shrink:0;max-height:150px;overflow-y:auto}.legend .li{display:flex;align-items:center;gap:8px;font-size:9.5px;color:var(--muted);margin-bottom:4px}.legend .li i{width:14px;height:6px;border-radius:3px;flex-shrink:0;box-shadow:0 0 6px currentColor}.dock{position:absolute;bottom:0;left:0;right:360px;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--glass);backdrop-filter:blur(16px) saturate(140%);border-top:1px solid var(--line);box-shadow:0 -4px 18px #0000004d}.dock-actions{display:flex;gap:6px;flex-wrap:wrap}.scenario-chip{font-size:9.5px;font-weight:600;padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:#ffffff08;color:var(--muted);cursor:pointer}.scenario-chip:hover{border-color:#ffffff40;color:var(--ink)}.scenario-chip.active{background:var(--accent);color:#07140e;border-color:var(--accent)}.zone-nav-bar{position:absolute;top:56px;left:0;right:360px;z-index:9;display:flex;flex-wrap:wrap;gap:5px;padding:7px 16px;background:#0a101899;backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.zone-chip{font-size:9.5px;font-weight:600;padding:5px 11px;border-radius:14px;border:1px solid var(--line);background:#ffffff0a;cursor:pointer;color:var(--muted)}.zone-chip:hover{background:#ffffff17;color:var(--ink)}.zone-chip.active{background:var(--accent);color:#07140e;border-color:var(--accent)}.plant-label{pointer-events:none;user-select:none;background:#080e16e0;border:1px solid rgba(79,227,160,.25);border-radius:6px;padding:5px 9px;text-align:center;box-shadow:0 4px 16px #00000073;white-space:nowrap;transition:opacity .15s}.plant-label b{display:block;font-size:11px;font-weight:700;color:#fff}.plant-label span{display:block;font-size:8.5px;color:var(--accent);margin-top:1px}.telemetry{position:absolute;z-index:8;top:100px;left:16px;display:flex;gap:7px;pointer-events:none}.telemetry-card{min-width:114px;padding:8px 10px;border-radius:10px;background:#0a1018b8;border:1px solid var(--line);backdrop-filter:blur(12px);box-shadow:var(--shadow)}.telemetry-card span,.telemetry-card small{display:block;color:var(--muted);font-size:7.5px;text-transform:uppercase;letter-spacing:.42px}.telemetry-card strong{display:block;color:#fff;font-size:16px;line-height:1.25;margin:2px 0}.telemetry-card.primary{border-color:#4fe3a066}.telemetry-card.primary strong{color:var(--accent)}.telemetry-card.alarm{border-color:#ff6b6b80}.telemetry-card.alarm strong{color:var(--neg)}.scene-tools{position:absolute;right:16px;top:100px;z-index:9;display:flex;gap:6px}.scene-tool{border:1px solid var(--line);background:#0a1018b8;color:var(--muted);font:600 9px var(--sans);padding:6px 10px;border-radius:8px;cursor:pointer;backdrop-filter:blur(12px);box-shadow:0 4px 14px #0000004d}.scene-tool:hover{color:var(--ink);border-color:#ffffff40}.scene-tool.active{color:#07140e;background:var(--accent);border-color:var(--accent)}.scene-hint{position:absolute;left:16px;bottom:58px;z-index:8;color:#cdd9e0;font-size:9px;padding:5px 9px;border-radius:6px;background:#0a1018a6;pointer-events:none;border:1px solid var(--line)}@media(max-width:1100px){.brand{min-width:150px}.brand p{display:none}.telemetry-card:nth-child(n+4){display:none}}@media(max-width:900px){#app{grid-template-columns:1fr;grid-template-rows:1fr auto auto}.side{grid-column:1;grid-row:2;max-height:45vh}.topbar,.dock,.zone-nav-bar{right:0}.telemetry{display:none}.scene-tools{right:12px}}
