*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0e0e0c;--bg-elevated:#161614;--text:#e8e4de;--text-muted:#8a8680;--accent:#c47a4a;--accent-light:#d4956a;--accent-glow:#c47a4a26;--divider:#e8e4de14;--serif:"Instrument Serif", Georgia, serif;--sans:"DM Sans", sans-serif;--status-off:var(--text-muted);--status-starting:#d4956a;--status-synching:#d4c56a;--status-running:#4a9;--status-cooldown:#d4956a;--status-stopping:#c44a4a;--status-prelubrication:#8a96d4;--status-idle:#6ab4d4;--status-connected:#4a9;--status-connecting:#d4c56a;--status-disconnected:var(--text-muted)}html{scroll-behavior:smooth;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;font-weight:300;line-height:1.7;overflow-x:hidden}body:before{content:"";z-index:9999;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:200px;position:fixed;inset:0}.reveal{opacity:0;transition:opacity .9s cubic-bezier(.23,1,.32,1),transform .9s cubic-bezier(.23,1,.32,1);transform:translateY(40px)}.reveal.visible{opacity:1;transform:translateY(0)}@keyframes fadeUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes statusBlink{0%,to{opacity:1}50%{opacity:.3}}.cable-line{fill:none;stroke:var(--accent);stroke-width:1px;opacity:.35}.cable-pulse{fill:none;stroke:var(--accent);stroke-width:1.5px;opacity:0;stroke-dasharray:40 500;animation:6s ease-in-out infinite cablePulse}.cable-pulse:nth-child(2){animation-delay:1.5s}.cable-pulse:nth-child(4){animation-delay:3s}.cable-pulse:nth-child(6){animation-delay:4.5s}.cable-pulse:nth-child(8){animation-delay:2s}.cable-pulse:nth-child(10){animation-delay:3.5s}.cable-pulse:nth-child(12){animation-delay:5s}@keyframes cablePulse{0%{stroke-dashoffset:540px;opacity:0}10%{opacity:.5}90%{opacity:.5}to{stroke-dashoffset:0;opacity:0}}.cable-node{fill:var(--accent);opacity:.4}.cable-node-glow{fill:var(--accent);opacity:0;animation:4s ease-in-out infinite nodeGlow}.cable-node-glow:nth-child(2){animation-delay:1s}.cable-node-glow:nth-child(3){animation-delay:2.5s}.cable-node-glow:nth-child(4){animation-delay:3.8s}@keyframes nodeGlow{0%,to{opacity:0;r:3}50%{opacity:.6;r:6}}.equipment{opacity:.5!important}.sim-main .equipment{opacity:.7!important}.sld-readout{font-family:var(--sans);fill:var(--accent);letter-spacing:.05em;font-size:7px}.sld-value{fill:var(--accent-light);font-family:JetBrains Mono,SF Mono,monospace;font-size:8px}.sld-value.off{fill:var(--text-muted);opacity:.4}.sld-status-blink{animation:1s ease-in-out infinite statusBlink}.sld-controls{z-index:2;flex-direction:column;gap:.5rem;display:flex;position:absolute;bottom:2rem;right:2rem}.sld-ctrl-btn{background:var(--bg-elevated);border:1px solid var(--divider);color:var(--text-muted);font-family:var(--sans);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;white-space:nowrap;align-items:center;gap:.6rem;padding:.5rem 1rem;font-size:.65rem;transition:border-color .3s,color .3s;display:flex}.sld-ctrl-btn:hover{border-color:var(--accent);color:var(--text)}.sld-ctrl-btn.active{border-color:var(--accent);color:var(--accent)}.sld-indicator{background:var(--text-muted);opacity:.4;border-radius:50%;width:6px;height:6px;transition:all .4s}.sld-ctrl-btn.active .sld-indicator{opacity:1;background:#4a9;box-shadow:0 0 6px #4a89}@media (width<=600px){.sld-controls{bottom:1rem;right:1rem}.sld-ctrl-btn{padding:.4rem .7rem;font-size:.6rem}}.alarm-ticker{border-top:1px solid var(--divider);z-index:3;background:#0e0e0cd9;align-items:center;height:28px;display:flex;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.alarm-label{font-family:var(--sans);letter-spacing:.15em;text-transform:uppercase;color:#c44a4a;border-right:1px solid var(--divider);flex-shrink:0;align-items:center;height:100%;padding:0 1rem;font-size:.6rem;animation:2s ease-in-out infinite statusBlink;display:flex}.alarm-scroll{white-space:nowrap;flex:1;overflow:hidden}.alarm-scroll-inner{font-family:var(--sans);color:var(--text-muted);letter-spacing:.05em;font-size:.65rem;animation:40s linear infinite alarmScroll;display:inline-block}.alarm-scroll-inner span{padding:0 2rem}.alarm-scroll-inner .alarm-warn{color:#d4956a}.alarm-scroll-inner .alarm-crit{color:#c44a4a}@keyframes alarmScroll{0%{transform:translate(0)}to{transform:translate(-50%)}}
