:root {
  --amber: #ffb000;
  --amber-bright: #ffd977;
  --amber-soft: #d99000;
  --amber-dim: #7a5200;
  --amber-faint: #3a2600;
  --bg: #0b0500;
  --bg-raised: #170c00;
  --danger: #ff5533;
  --glow: 0 0 6px rgba(255, 176, 0, 0.5), 0 0 18px rgba(255, 176, 0, 0.15);
  --font-mono: "Cascadia Mono", Consolas, "IBM Plex Mono", "Courier New", monospace;
}

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--amber);
  font-family: var(--font-mono);
  font-size: 15px;
  text-shadow: var(--glow);
  overflow: hidden;
}

::selection {
  background: var(--amber);
  color: var(--bg);
  text-shadow: none;
}

::-webkit-scrollbar {
  width: 10px;
}

::-webkit-scrollbar-track {
  background: var(--bg);
}

::-webkit-scrollbar-thumb {
  background: var(--amber-faint);
  border: 1px solid var(--amber-dim);
}

button,
input {
  font-family: inherit;
  font-size: inherit;
}

.btn {
  background: transparent;
  border: 1px solid var(--amber-dim);
  color: var(--amber);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  padding: 0.55em 1.1em;
  cursor: pointer;
  text-shadow: var(--glow);
}

.btn:hover:not(:disabled),
.btn:focus-visible {
  background: var(--amber);
  color: var(--bg);
  text-shadow: none;
  outline: none;
}

.btn:disabled {
  color: var(--amber-dim);
  border-color: var(--amber-faint);
  cursor: default;
}

.btn-warn {
  border-color: var(--danger);
  color: var(--danger);
}

.btn-warn:hover:not(:disabled),
.btn-warn:focus-visible {
  background: var(--danger);
  color: var(--bg);
}

.hidden {
  display: none;
}

.blink {
  animation: blink 1s steps(1) infinite;
}

@keyframes blink {
  50% {
    opacity: 0;
  }
}

.crt-scanlines {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 90;
  background: repeating-linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.22) 0 1px,
    transparent 1px 3px
  );
}

.crt-vignette {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 91;
  background: radial-gradient(
    ellipse at center,
    transparent 55%,
    rgba(0, 0, 0, 0.55) 100%
  );
}

.crt-flicker {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 92;
  background: rgba(255, 176, 0, 0.02);
  animation: crt-flicker 5s infinite;
}

@keyframes crt-flicker {
  0%,
  100% {
    opacity: 0.3;
  }
  47% {
    opacity: 0.12;
  }
  48% {
    opacity: 0.42;
  }
  49% {
    opacity: 0.18;
  }
  80% {
    opacity: 0.28;
  }
  92% {
    opacity: 0.4;
  }
  93% {
    opacity: 0.08;
  }
}
