.cyber-controls{position:relative;display:flex;flex-direction:column;gap:6px;flex:0 0 245px}
.cyber-controls>button{width:100%;font-family:'Courier New',monospace;font-weight:bold;font-size:14px;letter-spacing:.07em;padding:9px 10px;color:#9cdeab;border-color:#3d6b49;background:#0a1a10}
.cyber-controls>button:hover:enabled{color:#ccffd3;border-color:#9ee5a7;background:#163a20}.cyber-controls>button:disabled{opacity:.38;cursor:not-allowed}
.cyber-menu{position:absolute;bottom:calc(100% + 12px);right:0;width:100%;padding:8px;background:#06140bf5;border:1px solid #5c9870;box-shadow:0 8px 24px #000b}
.cyber-menu[hidden]{display:none}.cyber-menu button{display:block;width:100%;text-align:left;font:700 16px 'Courier New',monospace;color:#83ee9a;background:transparent;border:0;border-radius:0}.cyber-menu button:hover{background:#184723}
footer .resource-hud{flex:1;width:auto;min-width:0}
.cyber-terminal{width:min(800px,calc(100vw - 40px));max-height:calc(100dvh - 60px);padding:0;border:3px solid #324b36;border-radius:10px;background:#030b05;color:#79f28e;box-shadow:0 0 0 7px #0b140e,0 25px 90px #000d;font:700 16px/1.6 'Courier New',Courier,monospace;text-shadow:0 0 5px #37e56455}
.cyber-terminal::backdrop{background:#0008}.cyber-terminal header{height:auto;min-height:54px;padding:10px 18px;display:flex;gap:12px;border-bottom:1px solid #284b30;font:700 14px 'Courier New',monospace;letter-spacing:.06em}.cyber-terminal header span{flex:1}
.cyber-terminal button{font:inherit;text-shadow:inherit;color:inherit;border:1px solid #376743;background:#08180d;border-radius:0}.cyber-terminal button:hover,.cyber-terminal button:focus-visible{background:#75f28e;color:#041008;outline:2px solid #a3ffb2;outline-offset:2px}
.cyber-screen{position:relative;min-height:420px;max-height:65dvh;overflow:auto;padding:22px 26px;background:repeating-linear-gradient(0deg,#0002 0px,#0002 1px,transparent 1px,transparent 3px)}
.cyber-output p{margin:0 0 7px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.cyber-output .typing::after{content:'█';animation:cyber-cursor .8s steps(1) infinite}
.cyber-options{display:flex;align-items:flex-start;flex-direction:column;gap:8px;margin-top:20px}.cyber-options:empty{display:none}.cyber-options button{min-width:200px;text-align:left;padding:7px 12px}.cyber-options button::before{content:'> ';opacity:.7}
@keyframes cyber-cursor{50%{opacity:0}}
@media(prefers-reduced-motion:reduce){.cyber-output .typing::after{animation:none}}
@media(max-width:900px){.cyber-controls{flex-basis:200px}.cyber-controls>button{font-size:12px}.cyber-terminal header{flex-wrap:wrap}.cyber-screen{padding:16px;min-height:320px}}
.cyber-options .cyber-faction{width:100%;border-width:2px;font-size:14px}.cyber-options .access-active{border-color:#6fed87}.cyber-options .access-locked{border-color:#bc5757}.cyber-options button:disabled{opacity:.45;cursor:not-allowed}.cyber-puzzle{text-align:center;padding:14px 0}.cyber-puzzle>p:first-child{letter-spacing:.16em;font-size:23px}.cyber-terminal .cyber-character{display:block;margin:20px auto;width:100px;height:100px;padding:0;font:700 64px 'Courier New',monospace;background:#07130a;color:#b6c5b9;border:2px solid #506254;cursor:pointer}.cyber-terminal .cyber-character:hover,.cyber-terminal .cyber-character:focus-visible{background:#07130a;color:#b6c5b9;outline:1px solid #6a8d72}.cyber-terminal .cyber-character.is-green{background:#76ff91;color:#032009;border-color:#b8ffc6;box-shadow:0 0 25px #47ef7755}.cyber-instructions{font-size:14px;text-align:left;max-width:620px;margin:20px auto!important;color:#a8c9af}.cyber-offline{filter:sepia(1);opacity:.65}
.cyber-offline-badge{position:absolute;top:calc(100% + 3px);left:50%;transform:translateX(-50%);white-space:nowrap;background:#251900;color:#ffcf76;font:bold 10px monospace;padding:3px 5px;pointer-events:none}
.citylabel.own.cyber-hit{outline:2px solid #ff3030!important;outline-offset:3px;animation:cyber-damage 1.15s ease-in-out infinite}
@keyframes cyber-damage{0%,100%{outline-color:#ff3030;box-shadow:0 0 9px #f33636aa}50%{outline-color:#a3262677;box-shadow:0 0 2px #f3363633}}
@media(prefers-reduced-motion:reduce){.citylabel.own.cyber-hit{animation:none}}

.cyber-menu button[data-mode="attack"]{border:1px solid transparent}
.cyber-controls .campaign-hacking-pulse{animation:campaign-hacking-border 1.2s ease-in-out infinite}
@keyframes campaign-hacking-border{0%,100%{border-color:#a6ffb6}50%{border-color:#294431}}
@media(prefers-reduced-motion:reduce){.cyber-controls .campaign-hacking-pulse{animation:none;border-color:#a6ffb6}}
