/* === RETRO UI: люминофорный CRT-терминал ===
   Принципы: 0 картинок, 0 веб-шрифтов, 0 шейдеров.
   Все эффекты отключаемы: lowpower / reduced-motion / forced-colors / print. */

:root{
  --bg:#040704; --bg2:#0a120a;
  --ink:#4bff81;          /* основной текст: контраст ~15:1 */
  --ink-dim:#37d06b;      /* приглушённый: ~7:1 (WCAG AA/AAA) */
  --ink-faint:#2aa856;    /* только декоративные линии */
  --line:#1d5c33; --line-hot:#2eff62;
  --warn:#ffd23e; --err:#ff5c5c; --focus:#ffe066;
  --glow:0 0 6px rgba(75,255,129,.40);
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
}
html{color-scheme:dark}
body{
  background:var(--bg);
  color:var(--ink-dim);
  font-family:var(--mono);
  font-size:1rem;              /* уважаем пользовательский zoom */
  letter-spacing:.02em;
}

/* --- CRT-оверлей: ОДИН fixed-слой, дешёвый repeating-gradient --- */
body::after{
  content:""; position:fixed; inset:0; pointer-events:none;
  z-index:2147480000; opacity:.45;
  background:
    repeating-linear-gradient(to bottom, rgba(0,0,0,.22) 0 1px, transparent 1px 3px),
    radial-gradient(ellipse at center, transparent 62%, rgba(0,0,0,.30) 100%);
}

/* --- Свечение: только на заголовках и кнопках (не на каждом узле) --- */
h1,h2,h3{color:var(--ink); text-shadow:var(--glow); letter-spacing:.06em; text-transform:uppercase}
button,.btn,input[type=submit]{
  background:transparent; border:1px solid var(--line-hot); color:var(--ink);
  text-shadow:var(--glow); font-family:var(--mono); letter-spacing:.05em;
  padding:.55em 1.1em; cursor:pointer;
}
button:hover,.btn:hover{background:rgba(46,255,98,.12)}
button:active,.btn:active{transform:translateY(1px)}
input,select,textarea{
  background:#03140a; border:1px solid var(--line); color:var(--ink);
  font-family:var(--mono); caret-color:var(--ink); padding:.4em .6em;
}
::selection{background:var(--line-hot); color:#03140a}
*{scrollbar-color:var(--line-hot) var(--bg)}

/* --- ФОКУС ДЛЯ КЛАВИАТУРЫ: всегда видим, 3px --- */
:focus-visible{outline:3px solid var(--focus); outline-offset:2px}

/* --- Сенсорные цели >=44px на грубых указателях --- */
@media (pointer:coarse){
  button,.btn,label,input[type=checkbox]{min-height:44px; min-width:44px}
}

/* --- МИГАНИЕ: только 1 Гц и только для курсора boot (фотобезопасно) --- */
@keyframes retro-blink{50%{opacity:0}}
.retro-blink{animation:retro-blink 1s steps(1) infinite}

/* --- BOOT-ОВЕРЛЕЙ --- */
#funtech-boot{
  position:fixed; inset:0; z-index:2147483000; overflow:auto;
  background:#020402; color:var(--ink-dim); font-family:var(--mono);
  padding:6vh 6vw;
}
#funtech-boot .b-title{
  font-size:clamp(24px,6vw,64px); color:var(--ink);
  text-shadow:var(--glow); letter-spacing:.08em; margin:1.2em 0;
}
#funtech-boot .b-line{white-space:pre-wrap; margin:.15em 0}
#funtech-boot .b-ok{color:var(--ink)}
#funtech-boot .b-enter{
  display:inline-block; border:1px solid var(--line-hot);
  padding:.6em 1.2em; margin-top:2em; color:var(--ink);
}
#funtech-boot .b-cursor{
  display:inline-block; width:.6em; height:1em; background:var(--ink);
  vertical-align:-.12em; animation:retro-blink 1s steps(1) infinite;
}
.visually-hidden{
  position:absolute!important; width:1px; height:1px; margin:-1px;
  clip:rect(0 0 0 0); clip-path:inset(50%); overflow:hidden; white-space:nowrap;
}

/* --- СЛАБЫЕ УСТРОЙСТВА: класс lowpower глушит всё тяжёлое --- */
html.lowpower body::after{display:none}
html.lowpower *{text-shadow:none!important; box-shadow:none!important; animation:none!important; transition:none!important}

/* --- PREFERS-REDUCED-MOTION: ни одной анимации --- */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important; transition:none!important}
  body::after{display:none}
}

/* --- ПРИНУДИТЕЛЬНЫЙ КОНТРАСТ WINDOWS --- */
@media (forced-colors:active){
  body::after{display:none}
  *{text-shadow:none!important; box-shadow:none!important}
  button,.btn{border:1px solid ButtonText}
  :focus-visible{outline:3px solid Highlight}
}

/* --- ПЕЧАТЬ: чистый чёрным по белому --- */
@media print{
  body::after{display:none}
  *{text-shadow:none!important; box-shadow:none!important; color:#000!important; background:#fff!important}
}