/* БЕЗЛУНЬЕ — VHS-обвязка */
:root {
  --bg: #000;
  --ink: #e9e6f2;
  --dim: #8a87a0;
  --vhs-r: rgba(255, 40, 80, .55);
  --vhs-b: rgba(40, 160, 255, .55);
  --box-a: rgba(18, 22, 70, .92);
  --box-b: rgba(6, 8, 30, .92);
  --font: "Courier New", Courier, ui-monospace, Menlo, monospace;
  color-scheme: dark;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; background: var(--bg); color: var(--ink); }
body {
  font-family: var(--font);
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  align-items: center;
  -webkit-tap-highlight-color: transparent;
}
a { color: var(--ink); }
.vhs-text { text-shadow: 1.5px 0 var(--vhs-r), -1.5px 0 var(--vhs-b); }

/* телевизор */
.deck { width: 100%; display: flex; flex-direction: column; align-items: center; padding: max(8px, env(safe-area-inset-top)) 0 0; }
.tv {
  position: relative;
  width: min(100vw, 1024px, calc((100svh - 70px) * 4 / 3));
  aspect-ratio: 4 / 3;
  background: #000;
  overflow: hidden;
  user-select: none;
  -webkit-user-select: none;
  touch-action: manipulation;
  font-size: clamp(10px, 2.1vw, 19px);
}
.tv canvas {
  display: block;
  width: 100%;
  height: 100%;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
.tv::after {               /* строки развёртки и виньетка в полном разрешении */
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    repeating-linear-gradient(0deg, rgba(0, 0, 0, .22) 0 1px, transparent 1px 3px),
    radial-gradient(ellipse at center, transparent 60%, rgba(0, 0, 0, .55) 100%);
  z-index: 9;
}

/* HUD */
.hud { position: absolute; inset: 0; pointer-events: none; z-index: 5; text-transform: uppercase; letter-spacing: .08em; }
.hud span { position: absolute; color: #f2f0ff; text-shadow: 1.5px 0 var(--vhs-r), -1.5px 0 var(--vhs-b), 0 0 6px rgba(255, 255, 255, .35); }
.hud-tl { top: 5%; left: 5%; animation: blink 1.6s steps(2) infinite; }
.hud-tr { top: 5%; right: 5%; }
.hud-bl { bottom: 5%; left: 5%; }
.hud-br { bottom: 5%; right: 5%; }
.hud-label { bottom: 13%; left: 0; right: 0; text-align: center; font-weight: 700; }
@keyframes blink { 50% { opacity: .25; } }
body[data-room="title"] .hud-tr, body[data-room="title"] .hud-label { display: none; }

/* кнопки поверх экрана */
.tv-btn {
  position: absolute;
  z-index: 7;
  font: inherit;
  font-size: .85em;
  letter-spacing: .08em;
  color: #f2f0ff;
  background: rgba(0, 0, 0, .35);
  border: 1px solid rgba(242, 240, 255, .5);
  padding: .35em .7em;
  cursor: pointer;
  text-shadow: 1px 0 var(--vhs-r), -1px 0 var(--vhs-b);
}
.tv-btn:hover, .tv-btn:focus-visible { background: rgba(242, 240, 255, .9); color: #000; text-shadow: none; outline: none; }
#back { left: 5%; bottom: 19%; }
#hint { right: 5%; bottom: 19%; }
body[data-room="title"] #hint { display: none; }

/* маркеры подсказки */
#marks { position: absolute; inset: 0; pointer-events: none; z-index: 6; }
#marks i { position: absolute; width: 1.1em; height: 1.1em; margin: -.55em 0 0 -.55em; border: 2px solid #fff; transform: rotate(45deg);
  box-shadow: 0 0 8px #fff; animation: blink .5s steps(2) infinite; }

/* титульный экран */
.layer { position: absolute; inset: 0; z-index: 8; }
.title-layer { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .4em; text-align: center; }
.logo {
  margin: 0;
  font-size: 3.6em;
  letter-spacing: .12em;
  font-weight: 700;
  color: #f4f1ff;
  text-shadow: 3px 0 var(--vhs-r), -3px 0 var(--vhs-b), 0 0 18px rgba(255, 255, 255, .35);
  animation: jitter 3.5s infinite;
}
@keyframes jitter { 0%, 92%, 100% { transform: none; } 93% { transform: translateX(4px) skewX(8deg); } 95% { transform: translateX(-3px); } }
.logo-sub { margin: 0 0 1.2em; font-size: .9em; letter-spacing: .5em; color: var(--dim); }
.menu { display: flex; flex-direction: column; gap: .3em; }
.menu button, .menu a {
  font: inherit;
  font-size: 1.15em;
  letter-spacing: .2em;
  color: #e9e6f2;
  background: none;
  border: 0;
  padding: .2em .8em;
  cursor: pointer;
  text-decoration: none;
  text-shadow: 1.5px 0 var(--vhs-r), -1.5px 0 var(--vhs-b);
}
.menu button:hover, .menu a:hover, .menu button:focus-visible, .menu a:focus-visible { background: #e9e6f2; color: #000; text-shadow: none; outline: none; }
.menu button:hover::before, .menu a:hover::before { content: "▶ "; }

/* диалог в стиле PS1 */
.dialog-wrap { display: flex; align-items: flex-end; justify-content: center; padding: 0 4% 6%; background: transparent; }
.dialog {
  width: 100%;
  min-height: 26%;
  background: linear-gradient(180deg, var(--box-a), var(--box-b));
  border: 2px solid #d8d4ee;
  outline: 1px solid #000;
  box-shadow: inset 0 0 0 1px #000, 0 0 0 3px rgba(0, 0, 0, .6);
  border-radius: 4px;
  padding: .9em 1.1em 1.6em;
  position: relative;
  font-size: 1.05em;
  line-height: 1.45;
  text-shadow: 1px 1px 0 #000;
}
.dialog p { margin: 0; white-space: pre-wrap; }
.dialog-next { position: absolute; right: .9em; bottom: .4em; animation: blink .8s steps(2) infinite; }
.about .dialog { max-height: 86%; overflow: auto; font-size: .95em; }
.about { display: flex; align-items: center; justify-content: center; padding: 5%; background: rgba(0, 0, 0, .5); }
.about h2 { margin: 0 0 .5em; font-size: 1.1em; letter-spacing: .2em; }
.about p { margin: 0 0 .7em; }
.about .row { display: flex; gap: .6em; flex-wrap: wrap; margin-top: 1em; }
.about .tv-btn { position: static; }

/* баннер ночи и конец записи */
.banner { display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; gap: .3em; }
.banner b { font-size: 2.6em; letter-spacing: .25em; text-shadow: 2px 0 var(--vhs-r), -2px 0 var(--vhs-b); }
.banner span { letter-spacing: .3em; color: #d9d5ea; }
.banner.show { animation: fadeban 2.6s ease both; }
@keyframes fadeban { 0% { opacity: 0; } 15%, 75% { opacity: 1; } 100% { opacity: 0; } }
.end { display: flex; align-items: center; justify-content: center; background: #0018a8; }
.end b { font-size: 2.2em; letter-spacing: .2em; color: #fff; }

/* нет WebGL */
.nogl-msg { display: none; }
body.nogl .tv { display: none; }
body.nogl .nogl-msg { display: block; padding: 30vh 1rem 0; text-align: center; letter-spacing: .1em; }

.tape-foot { padding: .8rem 1rem 1.2rem; font-size: 12px; letter-spacing: .15em; color: var(--dim); text-transform: uppercase; text-align: center; }
.tape-foot a { color: var(--dim); }

/* текстовые страницы (записи, архив) */
.page { width: 100%; max-width: 46rem; padding: 2.5rem 1.1rem 3rem; line-height: 1.65; font-size: 1rem; }
.page h1 { font-size: 1.7rem; letter-spacing: .18em; margin: 0 0 .3rem; text-shadow: 2px 0 var(--vhs-r), -2px 0 var(--vhs-b); }
.page .sub { color: var(--dim); letter-spacing: .25em; font-size: .8rem; margin: 0 0 2rem; text-transform: uppercase; }
.page h2 { font-size: 1rem; letter-spacing: .2em; margin: 2.2rem 0 .6rem; color: #cfcbe4; }
.page .entry { border-left: 2px solid #3a3655; padding-left: 1rem; margin: 0 0 1.4rem; }
.page .entry time { display: block; color: var(--dim); font-size: .8rem; letter-spacing: .15em; }
.page .redact { background: #e9e6f2; color: #e9e6f2; }
.page .found { list-style: none; padding: 0; margin: 0; }
.page .found li { border: 1px solid #2a2840; padding: .7rem .9rem; margin-bottom: .6rem; background: #07070d; }
.page .found li.miss { color: #3e3c52; }
.page .nav { margin-top: 2.5rem; letter-spacing: .15em; }
.page .nav a { margin-right: 1.2rem; }
body.page-text { background: #000 repeating-linear-gradient(0deg, rgba(255, 255, 255, .025) 0 1px, transparent 1px 3px); }

.bluescreen { min-height: 100svh; width: 100%; background: #0018a8; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; text-align: center; padding: 1rem; }
.bluescreen b { font-size: clamp(1.6rem, 7vw, 3rem); letter-spacing: .2em; }
.bluescreen a { color: #fff; letter-spacing: .15em; }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; } }
