*{margin:0;padding:0;box-sizing:border-box}
:root {
  --neon-cyan: #5ee7ff;
  --neon-pink: #ff4fd8;
  --neon-purple: #bd5eff;
  --neon-orange: #ff8c2a;
  --bg-dark: #05070f;
  --glass-bg: rgba(10, 12, 30, 0.65);
  --glass-border: rgba(0, 229, 255, 0.2);
  --text-primary: #ffffff;
  --text-muted: #aab4d4;
}

html,body{width:100%;height:100%;overflow:hidden;background:var(--bg-dark);font-family:'Segoe UI',system-ui,sans-serif;color:var(--text-primary)}
canvas{display:block}

#overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,rgba(10,12,30,.88),rgba(2,3,8,.97));z-index:10;transition:opacity .4s}
body:not(.menu-open) #overlay, body.chat-open #overlay{opacity:0;pointer-events:none}

#ov-card{
  text-align:center;
  padding:32px 40px;
  width:95%;
  max-width:1060px;
  border:1px solid var(--glass-border);
  border-radius:24px;
  background:var(--glass-bg);
  box-shadow:0 0 60px rgba(0, 229, 255, 0.08), inset 0 0 40px rgba(255, 0, 170, 0.04);
  backdrop-filter:blur(16px);
  display:flex;
  flex-direction:column;
  gap:24px;
  animation: fadeIn 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes fadeIn {
  from { opacity: 0; transform: scale(0.97); }
  to { opacity: 1; transform: scale(1); }
}

#ov-card h1{font-size:54px;letter-spacing:2px;line-height:1}
#ov-card h1 .pink{color:var(--neon-pink);font-style:italic;text-shadow:0 0 15px var(--neon-pink),0 0 40px rgba(255,79,216,0.5)}
#ov-card h1 .cyan{color:var(--neon-cyan);text-shadow:0 0 15px var(--neon-cyan),0 0 40px rgba(94,231,255,0.5)}
.sub{color:#9fd8ff;letter-spacing:8px;margin-top:6px;font-size:12px;text-shadow:0 0 10px rgba(46,168,255,0.5)}

/* Меню-вкладки */
.menu-tabs {
  display: flex;
  justify-content: center;
  gap: 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  padding-bottom: 12px;
}

.tab-btn {
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 1.5px;
  padding: 8px 24px;
  cursor: pointer;
  transition: all 0.3s ease;
  position: relative;
  outline: none;
}

.tab-btn:hover {
  color: var(--neon-cyan);
  text-shadow: 0 0 8px rgba(94, 231, 255, 0.4);
}

.tab-btn.active {
  color: var(--text-primary);
  text-shadow: 0 0 10px var(--neon-pink);
}

.tab-btn.active::after {
  content: '';
  position: absolute;
  bottom: -13px;
  left: 0;
  width: 100%;
  height: 2px;
  background: linear-gradient(90deg, var(--neon-pink), var(--neon-purple));
  box-shadow: 0 0 8px var(--neon-pink);
}

/* Контент вкладок */
.tab-content {
  display: none;
  min-height: 340px;
  animation: tabFade 0.4s ease;
}

.tab-content.active {
  display: block;
}

@keyframes tabFade {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Вкладка: Играть */
.modes-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 24px;
  margin-top: 10px;
}

.mode-card {
  background: rgba(255, 255, 255, 0.015);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 16px;
  padding: 24px;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.mode-card:hover {
  border-color: rgba(94, 231, 255, 0.3);
  background: rgba(94, 231, 255, 0.01);
  transform: translateY(-2px);
}

.mode-card.active {
  border-color: var(--neon-cyan);
  background: rgba(94, 231, 255, 0.03);
  box-shadow: 0 0 20px rgba(94, 231, 255, 0.1), inset 0 0 15px rgba(94, 231, 255, 0.02);
}

.mode-icon {
  font-size: 28px;
  margin-bottom: 4px;
}

.mode-card h3 {
  font-size: 18px;
  font-weight: 700;
  color: #fff;
}

.mode-card p {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.5;
}

/* Формы ввода */
.play-form {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
  animation: formFade 0.3s ease;
}

@keyframes formFade {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

.input-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  width: 100%;
}

.input-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
  text-align: left;
  width: 100%;
}

.input-group label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--text-muted);
}

.input-group input {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 10px;
  padding: 10px 14px;
  color: #fff;
  font-size: 14px;
  outline: none;
  transition: all 0.3s ease;
  width: 100%;
}

.input-group input:focus {
  border-color: var(--neon-cyan);
  box-shadow: 0 0 10px rgba(0, 229, 255, 0.15);
  background: rgba(255, 255, 255, 0.08);
}

.btn-primary {
  background: linear-gradient(135deg, var(--neon-pink), var(--neon-purple));
  color: #fff;
  border: none;
  padding: 12px 40px;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 2px;
  border-radius: 30px;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 0 20px rgba(255, 79, 216, 0.35);
  outline: none;
  margin-top: 8px;
}

.btn-primary:hover {
  transform: scale(1.04);
  box-shadow: 0 0 30px rgba(255, 79, 216, 0.6);
  background: linear-gradient(135deg, #ff6ae2, #ca75ff);
}

.btn-primary:active {
  transform: scale(0.98);
}

/* Фракции (Команды) */
.teams-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-top: 10px;
}

.team-card {
  background: rgba(255, 255, 255, 0.015);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 16px;
  padding: 24px;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.team-card:hover {
  transform: translateY(-2px);
}

.team-card[data-team="Codys"]:hover {
  border-color: rgba(0, 229, 255, 0.3);
  background: rgba(0, 229, 255, 0.01);
}

.team-card[data-team="Scuffs"]:hover {
  border-color: rgba(255, 140, 42, 0.3);
  background: rgba(255, 140, 42, 0.01);
}

.team-card.active[data-team="Codys"] {
  border-color: var(--neon-cyan);
  background: rgba(0, 229, 255, 0.03);
  box-shadow: 0 0 20px rgba(0, 229, 255, 0.1), inset 0 0 15px rgba(0, 229, 255, 0.02);
}

.team-card.active[data-team="Scuffs"] {
  border-color: var(--neon-orange);
  background: rgba(255, 140, 42, 0.03);
  box-shadow: 0 0 20px rgba(255, 140, 42, 0.1), inset 0 0 15px rgba(255, 140, 42, 0.02);
}

.team-logo {
  font-size: 32px;
}

.team-card h3 {
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 1px;
}

.team-card[data-team="Codys"] h3 {
  color: var(--neon-cyan);
  text-shadow: 0 0 8px rgba(0, 229, 255, 0.2);
}

.team-card[data-team="Scuffs"] h3 {
  color: var(--neon-orange);
  text-shadow: 0 0 8px rgba(255, 140, 42, 0.2);
}

.team-card p {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.5;
  flex: 1;
}

.team-status {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 4px 10px;
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.05);
  align-self: flex-start;
}

.team-status.cyan {
  color: var(--neon-cyan);
  background: rgba(0, 229, 255, 0.1);
  border: 1px solid rgba(0, 229, 255, 0.2);
}

.team-status.orange {
  color: var(--neon-orange);
  background: rgba(255, 140, 42, 0.1);
  border: 1px solid rgba(255, 140, 42, 0.2);
}

#nj-status {
  min-height: 16px;
  font-size: 13px;
  font-weight: 600;
  color: #ff7a8a;
  text-align: center;
  text-shadow: 0 0 8px rgba(255, 122, 138, 0.35);
  margin-top: 4px;
}

/* Вкладка: Настройки */
.settings-grid {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin-top: 15px;
  text-align: left;
}

.setting-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.setting-group label {
  font-size: 14px;
  font-weight: 700;
  color: var(--neon-cyan);
  letter-spacing: 0.5px;
}

.range-wrap {
  display: flex;
  align-items: center;
  gap: 16px;
}

.range-wrap input[type="range"] {
  flex: 1;
  -webkit-appearance: none;
  appearance: none;
  height: 6px;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.1);
  outline: none;
}

.range-wrap input[type="range"]::-webkit-slider-runnable-track {
  width: 100%;
  height: 6px;
  cursor: pointer;
}

.range-wrap input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--neon-pink);
  box-shadow: 0 0 10px var(--neon-pink);
  cursor: pointer;
  margin-top: -5px;
  transition: transform 0.1s ease;
}

.range-wrap input[type="range"]::-webkit-slider-thumb:hover {
  transform: scale(1.2);
}

.range-val {
  font-size: 13px;
  font-weight: 700;
  width: 45px;
  text-align: right;
  color: #fff;
}

.toggle-wrap {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: rgba(255, 255, 255, 0.015);
  border: 1px solid rgba(255, 255, 255, 0.04);
  border-radius: 12px;
  padding: 14px 18px;
}

.toggle-desc {
  font-size: 13px;
  color: var(--text-muted);
}

/* Switch */
.switch {
  position: relative;
  display: inline-block;
  width: 44px;
  height: 24px;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.slider-round {
  position: absolute;
  cursor: pointer;
  inset: 0;
  background-color: rgba(255, 255, 255, 0.1);
  transition: .3s;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.05);
}

.slider-round:before {
  position: absolute;
  content: "";
  height: 16px;
  width: 16px;
  left: 3px;
  bottom: 3px;
  background-color: var(--text-muted);
  transition: .3s;
  border-radius: 50%;
}

.switch input:checked + .slider-round {
  background-color: rgba(0, 229, 255, 0.2);
  border-color: var(--neon-cyan);
}

.switch input:checked + .slider-round:before {
  transform: translateX(20px);
  background-color: var(--neon-cyan);
  box-shadow: 0 0 8px var(--neon-cyan);
}

/* Вкладка: Управление */
.controls-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap: 20px;text-align:left}
.control-sec{background:rgba(255,255,255,.01);border:1px solid rgba(0,229,255,.08);border-radius:14px;padding:14px 18px;box-shadow:inset 0 0 15px rgba(0,229,255,.01)}
.control-sec h3{font-size:12px;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:12px;color:var(--neon-cyan);border-bottom:1px solid rgba(0,229,255,.15);padding-bottom:6px}
.control-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;color:var(--text-muted)}
.control-row:last-child{margin-bottom:0}
.control-keys{display:flex;gap:3px}
kbd{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.15);border-radius:4px;padding:2px 6px;font-family:inherit;color:#fff;font-weight:700;font-size:10px;box-shadow:0 1.5px 0 rgba(0,0,0,.3);white-space:nowrap}

/* HUD элементы */
#crosshair{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);font-size:22px;color:rgba(255,255,255,.85);text-shadow:0 0 6px #000;display:none;z-index:5;pointer-events:none}
body.locked.fp #crosshair{display:block}
#hud-help{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);font-size:13px;color:rgba(255,255,255,.55);background:rgba(5,8,18,.5);padding:6px 16px;border-radius:20px;display:none;z-index:5;pointer-events:none}
body.locked #hud-help{display:block}
#loading {
  position: fixed;
  inset: 0;
  background: radial-gradient(circle at center, rgba(10, 12, 30, 0.98), rgba(2, 3, 8, 1));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: var(--neon-cyan);
  font-family: inherit;
  z-index: 1000;
  gap: 20px;
  transition: opacity 0.5s ease, visibility 0.5s;
}
#loading.hide {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.loader-spinner {
  width: 60px;
  height: 60px;
  border: 3px solid rgba(0, 229, 255, 0.1);
  border-top-color: var(--neon-cyan);
  border-bottom-color: var(--neon-pink);
  border-radius: 50%;
  animation: loader-spin 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
  box-shadow: 0 0 20px rgba(0, 229, 255, 0.2), inset 0 0 20px rgba(255, 79, 216, 0.1);
}
.loader-text {
  font-size: 13px;
  letter-spacing: 4px;
  text-transform: uppercase;
  text-shadow: 0 0 10px var(--neon-cyan);
  animation: loader-pulse 1.8s ease-in-out infinite;
}
@keyframes loader-spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes loader-pulse {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 1; }
}

#teleport-flash {
  position: fixed;
  inset: 0;
  background: radial-gradient(circle at center, #ffffff 40%, #c4f7ff 100%);
  opacity: 0;
  z-index: 1500;
  pointer-events: none;
}
#teleport-flash.flash {
  animation: teleport-flash-anim 0.5s cubic-bezier(0.1, 0.85, 0.25, 1) forwards;
}
@keyframes teleport-flash-anim {
  0% { opacity: 1; }
  100% { opacity: 0; }
}
