/* ============ TTY ============ */
#tty{position:fixed;inset:0;z-index:100;background:var(--t-bg);color:var(--t-fg);
  font-family:var(--tty);font-size:clamp(15px,12px + .6vw,21px);cursor:text;--pad:clamp(18px,4vw,56px)}
#ttyInner{position:absolute;inset:0;padding:var(--pad);display:flex;flex-direction:column;
  text-shadow:0 0 6px rgba(65,255,139,.28);animation:tFlick 5s infinite}
@keyframes tFlick{0%,100%{opacity:1}93%{opacity:1}94%{opacity:.86}95%{opacity:1}97%{opacity:.93}98%{opacity:1}}
#ttyScroll{flex:1;min-height:0;overflow-y:auto;scrollbar-width:none}
#ttyScroll::-webkit-scrollbar{display:none}
#ttyOut .line{white-space:pre-wrap;word-break:break-word;line-height:1.35;min-height:1.2em}
.t-pre{white-space:pre;overflow-x:auto;line-height:1.18;margin:.3em 0}
/* ASCII art: VT323 has no block/box glyphs, so every cell is a fixed-width box in a
   system mono stack. Spaces and glyphs can no longer come from fonts with different advances. */
#ttyOut .t-art{font-family:ui-monospace,'Cascadia Mono','SF Mono',Menlo,Consolas,'DejaVu Sans Mono','Liberation Mono','Courier New',monospace;
  font-size:min(30px,calc((100vw - 2 * var(--pad)) / 31.6));line-height:1;color:#63ffab;margin:.5em 0;
  text-shadow:0 0 10px rgba(65,255,139,.35);text-align:left}
.art-row{white-space:pre;height:1em}
.art-row i{display:inline-block;width:.6em;height:1em;font-style:normal;text-align:center;overflow:visible}
.neo{display:flex;flex-wrap:wrap;gap:.4em 1.8em;align-items:flex-start;margin:.35em 0}
#ttyOut .neo .t-art{font-size:clamp(15px,2.4vw,26px);margin:0}
.neo-info{white-space:pre;line-height:1.18;font:inherit;margin:0}
.sw{display:inline-block;width:1.5em;height:.8em;vertical-align:-.05em}
.t-click{cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.t-click:hover{color:var(--t-bright)}
.t-dim{color:var(--t-dim)} .t-bright{color:var(--t-bright)} .t-err{color:var(--t-err)}
.t-amb{color:var(--t-amb)} .t-prompt{color:#2fc46f}
#ttyOut .t-link{color:var(--t-fg);text-decoration:underline;text-underline-offset:3px}
#ttyOut .t-link:hover{color:var(--t-bright)}
#ttyLine{margin-top:.35em;white-space:pre-wrap;word-break:break-all}
#typed{white-space:pre-wrap}
.t-cursor{display:inline-block;width:.62em;height:1.02em;background:var(--t-fg);vertical-align:-.16em;
  box-shadow:0 0 8px rgba(65,255,139,.5);animation:blink 1.06s steps(1) infinite}
.t-cursor.solid{animation:none;opacity:1}
.scanlines{position:absolute;inset:0;pointer-events:none;z-index:5;
  background:repeating-linear-gradient(to bottom,transparent 0 2px,rgba(2,10,4,.32) 2px 3px)}
.vignette{position:absolute;inset:0;pointer-events:none;z-index:6;
  background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%)}
.beam{position:absolute;left:0;right:0;height:90px;top:-120px;pointer-events:none;z-index:4;
  background:linear-gradient(to bottom,transparent,rgba(65,255,139,.05),transparent);animation:beamMove 8s linear infinite}
#ttyInput{position:fixed;bottom:0;left:50%;width:2px;height:2px;opacity:0;border:0;
  background:transparent;color:transparent;caret-color:transparent;font-size:16px;z-index:-1}
