* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; background: #050805; overscroll-behavior: none; }

.crt { cursor: text; }

/* CRT scanline overlay */
.scanlines {
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 5;
  background: repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,0) 0px,
    rgba(0,0,0,0) 2px,
    rgba(0,0,0,0.18) 3px,
    rgba(0,0,0,0) 4px
  );
  mix-blend-mode: multiply;
  animation: flicker 4s infinite steps(60);
}
@keyframes flicker {
  0%,100% { opacity: 0.75; }
  50% { opacity: 0.9; }
}

/* subtle screen vignette */
.crt::after {
  content: '';
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 4;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0) 55%, rgba(0,0,0,0.45) 100%);
}

.cursor {
  display: inline-block;
  width: 8px;
  height: 15px;
  margin-left: 2px;
  vertical-align: text-bottom;
  animation: blink 1s steps(2) infinite;
}
@keyframes blink { 0%,50% { opacity: 1; } 50.01%,100% { opacity: 0; } }

.term-line { animation: lineIn 0.12s ease-out; }
@keyframes lineIn { from { opacity: 0; } to { opacity: 1; } }

/* scrollbar */
.term-scroll::-webkit-scrollbar { width: 8px; }
.term-scroll::-webkit-scrollbar-track { background: transparent; }
.term-scroll::-webkit-scrollbar-thumb { background: var(--dim); border-radius: 4px; opacity: 0.4; }

/* selection */
::selection { background: var(--accent); color: var(--bg); }

a:hover { text-decoration: underline !important; }