:root {
  --bg0: #05070f;
  --bg1: #0a1020;
  --ink: #e8f7ff;
  --muted: #7a93a8;
  --line: rgba(0, 245, 255, 0.28);
  --cell: rgba(8, 16, 32, 0.85);
  --cyan: #00f5ff;
  --magenta: #ff2bd6;
  --lime: #39ff14;
  --amber: #ffb000;
}
* { box-sizing: border-box; }
html, body {
  margin: 0;
  min-height: 100%;
}
body {
  min-height: 100vh;
  font-family: "Share Tech Mono", ui-monospace, monospace;
  color: var(--ink);
  background: var(--bg0);
  overflow-x: hidden;
}
.cyber-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(ellipse 80% 50% at 50% -10%, rgba(255, 43, 214, 0.22), transparent 55%),
    radial-gradient(ellipse 60% 40% at 100% 80%, rgba(0, 245, 255, 0.14), transparent 50%),
    radial-gradient(ellipse 50% 35% at 0% 70%, rgba(57, 255, 20, 0.08), transparent 45%),
    linear-gradient(180deg, var(--bg1) 0%, var(--bg0) 55%, #02040a 100%);
}
.cyber-grid {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(0, 245, 255, 0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 245, 255, 0.06) 1px, transparent 1px);
  background-size: 48px 48px;
  transform: perspective(400px) rotateX(58deg) scale(1.6) translateY(-12%);
  transform-origin: center top;
  opacity: 0.55;
  mask-image: linear-gradient(180deg, transparent 0%, #000 25%, #000 70%, transparent 100%);
}
.cyber-scan {
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(0, 0, 0, 0.18) 2px,
    rgba(0, 0, 0, 0.18) 4px
  );
  opacity: 0.35;
  animation: scan-drift 9s linear infinite;
}
@keyframes scan-drift {
  from { background-position: 0 0; }
  to { background-position: 0 80px; }
}
.decoy {
  position: relative;
  z-index: 2;
  max-width: 26rem;
  margin: 0 auto;
  padding: clamp(4rem, 14vh, 8rem) 1.25rem 2.5rem;
  text-align: center;
}
.decoy-brand {
  margin: 0 0 1.4rem;
  font-family: Orbitron, sans-serif;
  font-weight: 800;
  font-size: 0.72rem;
  letter-spacing: 0.42em;
  color: var(--cyan);
  text-shadow: 0 0 12px rgba(0, 245, 255, 0.7);
}
.decoy h1 {
  margin: 0 0 0.35rem;
  font-family: Orbitron, sans-serif;
  font-weight: 700;
  font-size: clamp(2.2rem, 7vw, 3rem);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #fff;
  text-shadow:
    0 0 8px rgba(255, 43, 214, 0.85),
    0 0 28px rgba(255, 43, 214, 0.45),
    2px 0 0 rgba(0, 245, 255, 0.35),
    -2px 0 0 rgba(255, 43, 214, 0.25);
  animation: title-glow 3.2s ease-in-out infinite alternate;
}
@keyframes title-glow {
  from { filter: brightness(1); }
  to { filter: brightness(1.12); }
}
.decoy-sub {
  margin: 0 0 1.75rem;
  font-size: 1.05rem;
  letter-spacing: 0.18em;
  color: var(--muted);
  text-shadow: 0 0 10px rgba(0, 245, 255, 0.25);
}
.lock-matrix {
  display: grid;
  grid-template-columns: repeat(5, minmax(38px, 44px));
  gap: 7px;
  justify-content: center;
  margin: 0 auto 1.35rem;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: rgba(0, 10, 24, 0.55);
  box-shadow:
    0 0 0 1px rgba(255, 43, 214, 0.12),
    0 0 40px rgba(0, 245, 255, 0.08),
    inset 0 0 30px rgba(0, 245, 255, 0.04);
}
.lock-matrix span {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(0, 245, 255, 0.22);
  border-radius: 2px;
  background: var(--cell);
  font-family: Orbitron, sans-serif;
  font-size: 1rem;
  font-weight: 700;
  color: var(--cyan);
  text-shadow: 0 0 8px rgba(0, 245, 255, 0.55);
  user-select: none;
  transition: border-color 0.2s, box-shadow 0.2s, color 0.2s;
}
.lock-matrix span.lock-decoy-blue {
  border-color: #3b82f6;
  background: rgba(30, 64, 175, 0.35);
  color: #93c5fd;
  box-shadow: 0 0 14px rgba(59, 130, 246, 0.55);
  text-shadow: 0 0 10px rgba(59, 130, 246, 0.9);
}
.lock-matrix span.lock-decoy-green {
  border-color: var(--lime);
  background: rgba(20, 83, 45, 0.4);
  color: #bbf7d0;
  box-shadow: 0 0 14px rgba(57, 255, 20, 0.45);
  text-shadow: 0 0 10px rgba(57, 255, 20, 0.8);
}
.lock-matrix span.lock-decoy-red {
  border-color: #ff2a6d;
  background: rgba(127, 29, 29, 0.4);
  color: #fecdd3;
  box-shadow: 0 0 14px rgba(255, 42, 109, 0.5);
  text-shadow: 0 0 10px rgba(255, 42, 109, 0.85);
}
.lock-matrix span.lock-pulse {
  animation: cell-pulse 1.35s ease-in-out;
}
@keyframes cell-pulse {
  0%, 100% {
    transform: scale(1);
    filter: brightness(1);
    box-shadow: inherit;
  }
  45% {
    transform: scale(1.06);
    filter: brightness(1.35);
    box-shadow: 0 0 16px rgba(0, 245, 255, 0.55);
  }
}
.lock-matrix span.lock-decoy-blue.lock-pulse {
  animation-name: cell-pulse-blue;
}
.lock-matrix span.lock-decoy-green.lock-pulse {
  animation-name: cell-pulse-green;
}
.lock-matrix span.lock-decoy-red.lock-pulse {
  animation-name: cell-pulse-red;
}
@keyframes cell-pulse-blue {
  0%, 100% { transform: scale(1); filter: brightness(1); }
  45% {
    transform: scale(1.07);
    filter: brightness(1.4);
    box-shadow: 0 0 18px rgba(59, 130, 246, 0.75);
  }
}
@keyframes cell-pulse-green {
  0%, 100% { transform: scale(1); filter: brightness(1); }
  45% {
    transform: scale(1.07);
    filter: brightness(1.4);
    box-shadow: 0 0 18px rgba(57, 255, 20, 0.65);
  }
}
@keyframes cell-pulse-red {
  0%, 100% { transform: scale(1); filter: brightness(1); }
  45% {
    transform: scale(1.07);
    filter: brightness(1.4);
    box-shadow: 0 0 18px rgba(255, 42, 109, 0.7);
  }
}
.decoy-form {
  display: flex;
  gap: 0.55rem;
  justify-content: center;
  align-items: stretch;
}
.decoy-form input {
  flex: 1;
  max-width: 13rem;
  padding: 0.85rem 0.9rem;
  border: 1px solid rgba(0, 245, 255, 0.35);
  border-radius: 2px;
  font: inherit;
  font-size: 1.05rem;
  letter-spacing: 0.28em;
  text-align: center;
  color: var(--ink);
  background: rgba(0, 8, 20, 0.75);
  outline: none;
  box-shadow: inset 0 0 18px rgba(0, 245, 255, 0.06);
}
.decoy-form input:focus {
  border-color: var(--magenta);
  box-shadow:
    0 0 0 1px rgba(255, 43, 214, 0.35),
    0 0 22px rgba(255, 43, 214, 0.25);
}
.decoy-form input::placeholder {
  color: rgba(122, 147, 168, 0.55);
  letter-spacing: 0.35em;
}
.decoy-form button {
  padding: 0.85rem 1.15rem;
  border: 1px solid var(--magenta);
  border-radius: 2px;
  background: linear-gradient(180deg, rgba(255, 43, 214, 0.35), rgba(255, 43, 214, 0.12));
  color: #fff;
  font-family: Orbitron, sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  cursor: pointer;
  text-shadow: 0 0 10px rgba(255, 43, 214, 0.8);
  box-shadow: 0 0 18px rgba(255, 43, 214, 0.25);
  transition: transform 0.15s, box-shadow 0.15s, filter 0.15s;
}
.decoy-form button:hover {
  filter: brightness(1.15);
  box-shadow: 0 0 28px rgba(255, 43, 214, 0.45);
}
.decoy-form button:active {
  transform: translateY(1px);
}
.decoy-refresh {
  margin-top: 1rem;
  background: none;
  border: none;
  color: var(--cyan);
  font: inherit;
  font-size: 0.85rem;
  letter-spacing: 0.12em;
  cursor: pointer;
  text-shadow: 0 0 8px rgba(0, 245, 255, 0.4);
  opacity: 0.75;
}
.decoy-refresh:hover {
  opacity: 1;
  text-decoration: underline;
}
.decoy-hint {
  min-height: 1.35rem;
  margin: 1rem 0 0;
  color: var(--amber);
  font-size: 0.92rem;
  letter-spacing: 0.04em;
  text-shadow: 0 0 10px rgba(255, 176, 0, 0.35);
}
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

@media (max-width: 420px) {
  .lock-matrix {
    grid-template-columns: repeat(5, minmax(32px, 38px));
    gap: 5px;
    padding: 10px;
  }
  .lock-matrix span {
    font-size: 0.9rem;
  }
}
