:root{--bg:#07090a;--green:#39ff88;--amber:#ffb000;--red:#ff3b3b;--zombie:#b45cff;--steel1:#2a2f33;--steel2:#14181b}
html,body{background:var(--bg);color:#cfe;font-family:'JetBrains Mono',monospace;margin:0;min-height:100vh}
body{background-image:radial-gradient(ellipse at top,#0f1d16 0%,transparent 60%),repeating-linear-gradient(90deg,#0c0f10 0 1px,transparent 1px 40px),repeating-linear-gradient(0deg,#0c0f10 0 1px,transparent 1px 40px)}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:60;background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 1px,transparent 1px 3px)}
#fx{position:fixed;inset:0;pointer-events:none;z-index:50}
.title{font-family:'Major Mono Display',monospace}
.rack{background:linear-gradient(160deg,var(--steel1),var(--steel2));border:1px solid #333a3f;box-shadow:inset 0 1px 0 #444c52,inset 0 -8px 20px #0008,0 6px 20px #000a;position:relative;transition:transform .2s}
.rack:hover{transform:translateY(-3px)}
.rack.sel{outline:2px solid var(--amber)}
.screw{position:absolute;width:8px;height:8px;border-radius:50%;background:radial-gradient(#888,#333);}
.vents{background:repeating-linear-gradient(90deg,#0a0c0d 0 3px,#22282b 3px 6px);height:8px;border-radius:2px}
.led{width:9px;height:9px;border-radius:50%;display:inline-block}
.led.on{background:var(--green);box-shadow:0 0 8px var(--green);animation:flick .3s infinite alternate}
.led.off{background:#5a1010}
.led.offlit{background:var(--red);box-shadow:0 0 6px var(--red)}
.led.boot{background:var(--amber);box-shadow:0 0 8px var(--amber);animation:flick .15s infinite alternate}
.led.zombie{background:var(--zombie);box-shadow:0 0 8px var(--zombie);animation:flick .5s infinite alternate}
.led.dead{background:#222}
@keyframes flick{from{opacity:1}to{opacity:.35}}
.term{background:#020403;color:var(--green);font-size:10px;height:96px;overflow:hidden;border:1px solid #123;text-shadow:0 0 4px #39ff8866}
.wreck{filter:grayscale(1) brightness(.55);background-image:linear-gradient(115deg,transparent 48%,#000 49%,#000 50%,transparent 51%),linear-gradient(160deg,var(--steel1),var(--steel2))}
.shake{animation:shake .45s}
@keyframes shake{0%,100%{transform:translate(0)}20%{transform:translate(-8px,4px)}40%{transform:translate(7px,-5px)}60%{transform:translate(-5px,3px)}80%{transform:translate(4px,-2px)}}
.switch{width:52px;height:26px;border-radius:4px;background:#111;border:1px solid #444;position:relative;cursor:pointer}
.switch .knob{position:absolute;top:2px;left:2px;width:22px;height:20px;background:linear-gradient(#777,#333);border-radius:3px;transition:left .15s}
.switch.on{box-shadow:0 0 10px var(--green)}
.switch.on .knob{left:26px;background:linear-gradient(#6f9,#2a6)}
.btn{border:1px solid #2d3a33;background:#0d1411;padding:.45rem .7rem;font-size:12px;transition:all .15s}
.btn:hover{border-color:var(--green);color:var(--green)}
.btn-big{background:var(--green);color:#021;font-weight:800;border:none}
.btn-big:hover{background:#7fffb3;color:#021}
input,select{background:#050807;border:1px solid #2d3a33;color:#cfe;padding:.35rem;font-size:12px;width:100%}
input[type=range]{accent-color:var(--green);padding:0}
.toast{animation:pop .4s}
@keyframes pop{from{transform:translateY(20px);opacity:0}}
.fadein{animation:pop .5s both}