@import"https://fonts.googleapis.com/css2?family=VT323&family=Share+Tech+Mono&display=swap";:root{--bg: #0a0a0a;--bg-light: #111;--bg-panel: #0d0d0d;--green: #00ff41;--green-dim: #00aa2a;--green-dark: #004411;--green-faint: #002a0a;--red: #ff0040;--red-dim: #aa0028;--yellow: #ffff00;--yellow-dim: #aaaa00;--blue: #0080ff;--blue-dim: #004488;--orange: #ff8800;--purple: #aa44ff;--white: #cccccc;--white-dim: #666666;--border: #00ff41;--glow: 0 0 5px #00ff41, 0 0 10px #00ff4133;--glow-red: 0 0 5px #ff0040, 0 0 10px #ff004033;--glow-blue: 0 0 5px #0080ff, 0 0 10px #0080ff33;--text-glow: 0 0 5px #00ff41;--font: "Share Tech Mono", "VT323", monospace}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--green);font-family:var(--font);font-size:16px;overflow:hidden;height:100vh;width:100vw}#root{height:100vh;width:100vw}.app{height:100vh;width:100vw;position:relative;overflow:hidden}.scanlines{pointer-events:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.12) 2px,rgba(0,0,0,.12) 4px)}@keyframes flicker{0%,to{opacity:1}92%{opacity:1}93%{opacity:.85}94%{opacity:1}}.app{animation:flicker 5s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.blink{animation:blink 1s infinite}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes pulse-glow{0%,to{box-shadow:0 0 5px currentColor}50%{box-shadow:0 0 15px currentColor,0 0 25px currentColor}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@keyframes slide-down{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.screen{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.boot-screen .boot-text{text-align:left;max-width:600px}.boot-screen p{margin:.5rem 0;text-shadow:var(--text-glow)}.glitch{position:relative;text-shadow:var(--text-glow)}.glitch:before,.glitch:after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%}.glitch:before{animation:glitch-1 2s infinite linear alternate-reverse;clip-path:inset(0 0 80% 0);color:var(--red);left:2px}.glitch:after{animation:glitch-2 2s infinite linear alternate-reverse;clip-path:inset(80% 0 0 0);color:var(--blue);left:-2px}@keyframes glitch-1{0%{clip-path:inset(0 0 85% 0)}25%{clip-path:inset(15% 0 60% 0)}50%{clip-path:inset(50% 0 20% 0)}75%{clip-path:inset(70% 0 5% 0)}to{clip-path:inset(10% 0 75% 0)}}@keyframes glitch-2{0%{clip-path:inset(85% 0 0 0)}25%{clip-path:inset(40% 0 30% 0)}50%{clip-path:inset(20% 0 50% 0)}75%{clip-path:inset(5% 0 60% 0)}to{clip-path:inset(60% 0 10% 0)}}.home-screen .title{font-size:3rem;letter-spacing:.3em;margin-bottom:.5rem}.home-screen .subtitle{color:var(--green-dim);margin-bottom:2rem}.menu{display:flex;flex-direction:column;gap:1rem;align-items:center;min-width:400px}.input-group{display:flex;flex-direction:column;gap:.5rem;width:100%}.input-group label{color:var(--green-dim)}input,select{background:var(--bg);border:1px solid var(--green-dark);color:var(--green);font-family:var(--font);font-size:1.2rem;padding:.75rem;outline:none;box-shadow:inset 0 0 5px #00ff411a}input:focus,select:focus{border-color:var(--green);box-shadow:var(--glow),inset 0 0 5px #00ff4133}input::placeholder{color:var(--green-dark)}button{background:transparent;border:1px solid var(--green);color:var(--green);font-family:var(--font);font-size:1rem;padding:.75rem 1.5rem;cursor:pointer;text-shadow:var(--text-glow);transition:all .15s;width:100%}button:hover:not(:disabled){background:var(--green);color:var(--bg);box-shadow:var(--glow)}button:disabled{opacity:.3;cursor:not-allowed}button.primary{border-width:2px;font-size:1.2rem}button.back,.back-btn{border-color:var(--green-dark);color:var(--green-dim);font-size:.9rem;width:auto;padding:.5rem 1rem;margin-bottom:1rem}button.selected{background:var(--green);color:var(--bg)}.button-group{display:flex;gap:1rem;width:100%}.difficulty-select{display:flex;flex-direction:column;gap:.5rem;width:100%}.lobby-screen{text-align:center}.lobby-info{margin-top:2rem}.room-code{font-size:5rem;letter-spacing:.5em;text-shadow:var(--text-glow);margin:1rem 0}.room-code-display .hint{color:var(--green-dim);font-size:.9rem}.lobby-details{margin-top:2rem;text-align:left;display:inline-block}.lobby-details p{margin:.5rem 0}.game-screen{padding:0;justify-content:flex-start;height:100vh}.game-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1.5rem;border-bottom:1px solid var(--green-dark);background:var(--bg-panel);width:100%;flex-shrink:0}.timer{font-size:1.5rem;text-shadow:var(--text-glow)}.timer-label{color:var(--green-dim);margin-right:.5rem}.timer.urgent .timer-value{color:var(--yellow);text-shadow:0 0 5px var(--yellow)}.timer.critical .timer-value{color:var(--red);text-shadow:0 0 5px var(--red);animation:blink .5s infinite}.game-info{display:flex;gap:1.5rem;align-items:center}.role-badge{border:1px solid var(--green);padding:.25rem .75rem;font-size:.9rem}.serial{color:var(--green-dim)}.strike-indicator{font-size:1.2rem}.strike-label{color:var(--green-dim);margin-right:.5rem}.strike-dot{margin:0 .25rem}.strike-dot.active{color:var(--red);text-shadow:0 0 5px var(--red)}.game-body{display:flex;flex:1;overflow:hidden;width:100%}.main-panel{flex:1;overflow-y:auto;padding:1.5rem}.chat-panel{width:340px;border-left:1px solid var(--green-dark);display:flex;flex-direction:column;flex-shrink:0;background:var(--bg-panel)}.chat{display:flex;flex-direction:column;height:100%}.chat-header{padding:.75rem 1rem;border-bottom:1px solid var(--green-dark);color:var(--green-dim);text-align:center;font-size:.85rem;letter-spacing:.15em}.chat-messages{flex:1;overflow-y:auto;padding:.75rem}.chat-msg{margin-bottom:.6rem;word-wrap:break-word;font-size:.9rem;line-height:1.4;animation:slide-down .15s ease-out}.chat-msg.defuser .chat-name{color:var(--blue)}.chat-msg.instructor .chat-name{color:var(--yellow)}.chat-text{color:var(--white)}.chat-input{display:flex;align-items:center;border-top:1px solid var(--green-dark);padding:.5rem}.chat-input .prompt{color:var(--green-dim);padding:0 .5rem}.chat-input input{flex:1;border:none;font-size:.9rem;padding:.5rem}.chat-input button{width:auto;padding:.5rem .75rem;font-size:.8rem}.bomb-view,.manual-view{height:100%}.bomb-title,.manual-title{text-align:center;font-size:1.5rem;margin-bottom:1rem;text-shadow:var(--text-glow);letter-spacing:.15em}.manual-subtitle{text-align:center;color:var(--green-dim);margin-bottom:1.5rem;font-size:.85rem;letter-spacing:.1em}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;padding:.5rem}.module-slot{padding:1.5rem 1rem;text-align:center;display:flex;flex-direction:column;gap:.75rem;background:var(--bg-panel);position:relative;overflow:hidden}.module-slot:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--red);box-shadow:var(--glow-red);animation:pulse 2s infinite}.module-slot .module-name{font-size:1.1rem;letter-spacing:.1em}.module-slot .module-status{font-size:.8rem;color:var(--red-dim)}.module-slot.solved{border-color:var(--green-dark);opacity:.5}.module-slot.solved:before{background:var(--green);box-shadow:var(--glow);animation:none}.module-slot.solved .module-status{color:var(--green)}.module-detail{animation:slide-down .2s ease-out}.module-detail h3{margin-bottom:1rem;text-shadow:var(--text-glow);letter-spacing:.1em}.solved-text{font-size:1.5rem;color:var(--green);text-shadow:var(--text-glow);text-align:center;padding:3rem;border:1px solid var(--green-dark);background:var(--green-faint)}.manual-tabs{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.manual-tab{width:auto;padding:.75rem 1.5rem;position:relative}.manual-tab.solved{border-color:var(--green-dark);color:var(--green-dim)}.manual-page{padding:.5rem;animation:slide-down .2s ease-out}.manual-content{border:1px solid var(--green-dark);padding:1.5rem;background:var(--bg-panel);position:relative}.manual-content:before{content:"CLASSIFIED";position:absolute;top:.5rem;right:.75rem;font-size:.7rem;color:var(--red-dim);letter-spacing:.2em}.manual-content h4{margin-bottom:1rem;text-shadow:var(--text-glow);padding-bottom:.5rem;border-bottom:1px solid var(--green-dark);letter-spacing:.1em}.manual-content h5{margin:1.25rem 0 .5rem;color:var(--green-dim);letter-spacing:.05em}.manual-content p{margin:.5rem 0;line-height:1.5}.manual-content table{width:100%;border-collapse:collapse;margin:.75rem 0}.manual-content th,.manual-content td{border:1px solid var(--green-dark);padding:.5rem .75rem;text-align:left}.manual-content th{color:var(--green-dim);background:var(--green-faint)}.manual-content ul{padding-left:1.5rem;list-style:none}.manual-content li{margin:.5rem 0;line-height:1.5}.manual-content li:before{content:">";color:var(--green-dim);margin-right:.5rem}.manual-warning{border:1px solid var(--yellow-dim);padding:.75rem 1rem;margin:.75rem 0;color:var(--yellow);background:#ffff0008}.manual-note{border:1px solid var(--green-dark);padding:.75rem 1rem;margin:.75rem 0;color:var(--green-dim);background:var(--green-faint);font-size:.9rem}.symbol-columns{display:flex;gap:.75rem;flex-wrap:wrap;margin:1rem 0}.symbol-column{border:1px solid var(--green-dark);padding:.75rem;min-width:80px;text-align:center;background:var(--bg)}.symbol-column h5{margin:0 0 .5rem!important;font-size:.8rem}.symbol{display:block;font-size:1.8rem;padding:.3rem 0;line-height:1.3}.morse-tables{display:flex;gap:2rem;flex-wrap:wrap}.morse-alphabet,.morse-words{flex:1;min-width:250px}.morse-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:.3rem}.morse-entry{font-size:.85rem;padding:.15rem .3rem;border:1px solid transparent}.morse-entry:hover{border-color:var(--green-dark)}.word-list{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0}.word-entry{border:1px solid var(--green-dark);padding:.35rem .65rem;font-size:.9rem;background:var(--bg)}.target-grid{display:grid;gap:.5rem;max-width:400px;margin:.75rem 0}.target-grid.cols-3{grid-template-columns:repeat(3,1fr)}.target-grid.cols-4{grid-template-columns:repeat(4,1fr)}.target-cell{border:1px solid var(--green-dark);padding:.6rem;text-align:center}.target-cell.target-on{background:var(--green-faint);border-color:var(--green-dim);color:var(--green)}.target-cell.target-off{color:var(--white-dim)}.maze-manual-grid,.maze-grid{display:inline-block;margin:1rem 0}.maze-manual-row,.maze-row{display:flex}.maze-manual-cell{width:45px;height:45px;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700}.maze-start{color:var(--green);text-shadow:var(--text-glow)}.maze-end{color:var(--red);text-shadow:0 0 5px var(--red)}.maze-indicator{color:var(--green-dim)}.stage-rules{margin:.75rem 0;border:1px solid var(--green-dark);padding:.75rem 1rem;background:var(--bg)}.stage-rules h5{margin:0 0 .5rem!important}.color-cell-red{color:#ff4060}.color-cell-blue{color:#4090ff}.color-cell-green{color:#00ff41}.color-cell-yellow{color:#ff0}.module{padding:1rem 0}.module p{margin:.5rem 0}.module-status-bar{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;padding:.5rem .75rem;border:1px solid var(--green-dark);background:var(--bg-panel);font-size:.85rem;color:var(--green-dim)}.wire-cutting{max-width:600px}.wire-container{display:flex;flex-direction:column;gap:8px;margin:1rem 0;padding:1rem;border:1px solid var(--green-dark);background:var(--bg-panel)}.wire-row{display:flex;align-items:center;gap:.75rem;cursor:pointer;transition:all .15s}.wire-row:hover:not(.cut){transform:translate(4px)}.wire-number{width:30px;font-size:.85rem;color:var(--green-dim);text-align:center;flex-shrink:0}.wire-body{flex:1;height:20px;border-radius:10px;position:relative;overflow:hidden;transition:all .2s}.wire-body:after{content:"";position:absolute;top:2px;left:0;right:0;height:4px;background:#fff3;border-radius:4px}.wire-row:hover:not(.cut) .wire-body{height:24px;filter:brightness(1.2)}.wire-row.cut .wire-body{opacity:.3;height:4px;margin:8px 0}.wire-label{font-size:.75rem;color:var(--white-dim);width:120px;flex-shrink:0}.wire-led{width:12px;height:12px;border-radius:50%;flex-shrink:0;border:1px solid}.wire-led.lit{box-shadow:0 0 6px currentColor,0 0 12px currentColor}.wire-led.dim{opacity:.3}.wire-row.cut{opacity:.5;cursor:default}.keypad{max-width:350px}.keypad-progress{display:flex;gap:.5rem;margin-bottom:1rem}.keypad-progress-dot{width:20px;height:20px;border:1px solid var(--green-dark);display:flex;align-items:center;justify-content:center;font-size:.7rem}.keypad-progress-dot.done{background:var(--green);color:var(--bg);border-color:var(--green)}.keypad-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin-top:1rem}.keypad-btn{font-size:3rem;padding:1.5rem 1rem;position:relative;line-height:1;min-height:90px}.keypad-btn.pressed{background:var(--green-faint);border-color:var(--green);color:var(--green);box-shadow:var(--glow);cursor:default}.keypad-btn.pressed:after{content:"✓";position:absolute;top:4px;right:8px;font-size:1rem}.keypad-btn:not(.pressed){animation:pulse-glow 3s infinite}.simon-says{max-width:380px}.simon-state{text-align:center;margin-bottom:.75rem;font-size:1.1rem;min-height:1.5em}.simon-state.watching{color:var(--yellow)}.simon-state.your-turn{color:var(--green)}.simon-progress{display:flex;gap:4px;justify-content:center;margin-bottom:1rem}.simon-progress-pip{width:24px;height:6px;border:1px solid var(--green-dark)}.simon-progress-pip.done{background:var(--green);border-color:var(--green)}.simon-progress-pip.current{border-color:var(--green);animation:pulse 1s infinite}.simon-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:1rem auto;max-width:280px}.simon-btn{height:100px;border-width:3px;font-size:.85rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;transition:all .15s}.simon-btn.flash{filter:brightness(2.5)!important;transform:scale(1.05)}.replay-btn{margin-top:1rem}.morse-code{max-width:500px}.morse-light-container{display:flex;flex-direction:column;align-items:center;margin:1.5rem 0}.morse-light{width:80px;height:80px;border-radius:50%;border:3px solid var(--green);transition:all .08s;margin-bottom:1rem}.morse-light.on{background:var(--green);box-shadow:0 0 30px var(--green),0 0 60px var(--green),0 0 100px #00ff414d}.morse-light.off{background:var(--green-dark);box-shadow:none}.morse-visual{display:flex;gap:4px;align-items:center;flex-wrap:wrap;justify-content:center;margin:.75rem 0;min-height:30px}.morse-dot{width:10px;height:10px;border-radius:50%;background:var(--green)}.morse-dash{width:30px;height:10px;border-radius:5px;background:var(--green)}.morse-letter-space{width:15px}.morse-word-space{width:30px}.frequency-dial{margin:1.5rem 0;padding:1rem;border:1px solid var(--green-dark);background:var(--bg-panel)}.frequency-display{text-align:center;font-size:2rem;margin-bottom:1rem;text-shadow:var(--text-glow);letter-spacing:.1em}.frequency-slider{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;background:var(--green-dark);border-radius:3px;outline:none}.frequency-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:30px;background:var(--green);cursor:pointer;border-radius:3px;box-shadow:var(--glow)}.frequency-range{display:flex;justify-content:space-between;color:var(--green-dim);font-size:.8rem;margin-top:.5rem}.toggle-grid{max-width:450px}.toggle-grid-container{display:grid;gap:8px;margin:1rem 0}.toggle-grid-container.cols-3{grid-template-columns:repeat(3,1fr)}.toggle-grid-container.cols-4{grid-template-columns:repeat(4,1fr)}.toggle-btn{padding:1rem .5rem;display:flex;flex-direction:column;gap:.5rem;align-items:center;min-height:80px;justify-content:center;transition:all .2s;position:relative}.toggle-btn.on{background:var(--green);color:var(--bg);box-shadow:inset 0 -4px 0 var(--green-dim),var(--glow)}.toggle-btn.off{background:var(--bg);box-shadow:inset 0 4px 0 var(--green-dark)}.toggle-btn.linked-flash{animation:shake .3s ease-out}.toggle-label{font-size:.75rem;letter-spacing:.05em}.toggle-state{font-size:1.1rem;font-weight:700}.password{max-width:450px}.password-columns{display:flex;gap:6px;margin:1.5rem 0;justify-content:center}.password-col{display:flex;flex-direction:column;align-items:center;gap:4px}.scroll-btn{width:56px;padding:.4rem;font-size:1.2rem}.password-letter{font-size:2.5rem;width:56px;height:64px;display:flex;align-items:center;justify-content:center;border:2px solid var(--green-dark);text-transform:uppercase;background:var(--bg-panel);text-shadow:var(--text-glow);position:relative;overflow:hidden}.password-letter:before,.password-letter:after{content:"";position:absolute;left:0;right:0;height:15px;pointer-events:none}.password-letter:before{top:0;background:linear-gradient(to bottom,var(--bg-panel),transparent)}.password-letter:after{bottom:0;background:linear-gradient(to top,var(--bg-panel),transparent)}.password-assembled{text-align:center;margin:1rem 0;font-size:1.8rem;letter-spacing:.5em;text-shadow:var(--text-glow);padding:.5rem;border:1px solid var(--green-dark);background:var(--bg-panel)}.submit-btn{margin-top:1rem}.sequence-memory{max-width:400px}.sequence-stage-bar{display:flex;gap:4px;margin-bottom:1.5rem;justify-content:center}.stage-pip{width:40px;height:8px;border:1px solid var(--green-dark)}.stage-pip.done{background:var(--green);border-color:var(--green)}.stage-pip.current{border-color:var(--green);animation:pulse 1s infinite}.sequence-display{border:3px solid var(--green);width:120px;height:120px;display:flex;align-items:center;justify-content:center;margin:1rem auto;background:var(--bg-panel);box-shadow:var(--glow),inset 0 0 20px var(--green-faint)}.display-number{font-size:4rem;text-shadow:var(--text-glow);color:var(--green)}.sequence-buttons{display:flex;gap:8px;margin:1.5rem 0;justify-content:center}.seq-btn{width:70px;height:70px;padding:0;font-size:1.4rem;display:flex;align-items:center;justify-content:center}.seq-btn:active{transform:scale(.95)}.position-labels{display:flex;gap:8px;justify-content:center;margin-top:-.5rem}.position-label{width:70px;text-align:center;color:var(--green-dim);font-size:.7rem}.maze{max-width:500px}.maze-container{display:flex;flex-direction:column;align-items:center}.maze-grid{margin:1rem 0;border:2px solid var(--green)}.maze-row{display:flex}.maze-cell{width:45px;height:45px;border:1px solid rgba(0,255,65,.12);display:flex;align-items:center;justify-content:center;font-size:1.4rem;position:relative;transition:all .2s}.maze-cell.current{color:var(--green);text-shadow:0 0 10px var(--green),0 0 20px var(--green)}.maze-cell.target{color:var(--red);text-shadow:0 0 10px var(--red);animation:pulse 1.5s infinite}.maze-cell.indicator{color:var(--green-dim)}.maze-cell.trail{background:var(--green-faint)}.maze-controls{margin-top:1rem;display:flex;flex-direction:column;align-items:center;gap:4px}.maze-controls-row{display:flex;gap:4px}.maze-controls button{width:56px;height:56px;padding:0;font-size:1.4rem;display:flex;align-items:center;justify-content:center}.maze-spacer{width:56px;height:56px}.maze-hint{margin-top:.75rem;font-size:.8rem;color:var(--green-dim);text-align:center}.gameover-screen{text-align:center}.gameover-screen.win .title{color:var(--green);font-size:3rem;text-shadow:0 0 20px var(--green),0 0 40px var(--green),0 0 80px var(--green)}.gameover-screen.lose .title{color:var(--red);font-size:5rem;text-shadow:0 0 20px var(--red),0 0 40px var(--red),0 0 80px var(--red)}.explosion-text{animation:explosion .5s ease-out}@keyframes explosion{0%{transform:scale(.5);opacity:0}50%{transform:scale(1.5)}to{transform:scale(1);opacity:1}}.result-details{margin:2rem 0;line-height:2;color:var(--green-dim)}.gameover-screen button{width:auto;padding:1rem 2rem}.error-toast{position:fixed;top:1rem;left:50%;transform:translate(-50%);background:var(--red);color:var(--bg);padding:.75rem 1.5rem;z-index:2000;font-family:var(--font);animation:slide-down .2s ease-out}.module-done{color:var(--green-dim);font-style:italic}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--green-dark);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--green-dim)}input[type=range]{border:none;box-shadow:none;padding:0}input[type=range]:focus{border:none;box-shadow:none}
