/* KAMRADEK/OS — Terminal-Innenleben: Ausgabe, Prompt-Zeile, Farbklassen, Block-Cursor.
   Fenster-Chrome liegt in windows.css, CRT-Effekte in crt.css. */

.term {
  padding: 8px 12px 10px;
  cursor: text;
}

/* ---- Ausgabe ---- */

.term-out > div {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  min-height: 1.35em;
}

/* Farbklassen (Kontrakt: ok | err | warn | dim | amber | art) */
.t-ok    { color: var(--phos-bright); }
.t-err   { color: var(--red); }
.t-warn  { color: var(--amber); }
.t-amber { color: var(--amber); }
.t-dim   { color: var(--phos-dim); }
.t-invis { visibility: hidden; } /* hält Breite, unsichtbar — z. B. Lücken in ASCII-Art */

/* ASCII-Art: nicht umbrechen, enge Zeilen — breite Art scrollt im .win-body horizontal */
.t-art {
  white-space: pre;
  overflow-wrap: normal;
  line-height: 1.12;
  color: var(--phos);
}

/* ASCII-Art kompakter: hebt die 1.35em-Mindesthöhe pro Ausgabezeile auf,
   damit mehrzeilige Art (robotalk, sl) nicht vertikal auseinandergezogen wird */
.term-out > div.t-art {
  min-height: 0;
  line-height: 1.05;
}

/* Verzeichnisse in ls-Ausgaben */
.t-dir { color: var(--phos-bright); }

/* Links in vertrauenswürdigen printHTML-Ausgaben */
.term-out a {
  color: var(--amber);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.term-out a:hover { background: var(--amber); color: var(--bg); text-decoration: none; }

/* ---- Prompt-Zeile ---- */

.term-line {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-top: 2px;
  overflow: hidden; /* clippt den Block-Cursor bei überlangen Eingaben */
}

.term-prompt {
  flex: none;
  white-space: pre;
  color: var(--phos-bright);
}

.term-in {
  flex: 1 1 auto;
  min-width: 0;
  padding: 0;
  border: none;
  outline: none;
  background: transparent;
  font: inherit;
  color: var(--phos);
  caret-color: transparent; /* der Block-Cursor übernimmt */
}

/* Fokus signalisiert der Block-Cursor selbst — kein zusätzlicher Rahmen im Terminal */
.term-in:focus-visible { outline: none; }

/* ---- Block-Cursor ---- */

.term-cursor {
  position: absolute;
  left: 0;
  top: 6%;
  height: 88%;
  width: 0.6em;
  background: var(--phos);
  mix-blend-mode: difference; /* invertiert das Zeichen unter dem Block */
  pointer-events: none;
  visibility: hidden;
}

.term-line.is-focus .term-cursor {
  visibility: visible;
  animation: term-blink 1.06s steps(1) infinite;
}

@keyframes term-blink {
  0%, 55%  { opacity: 1; }
  56%, 100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .term-line.is-focus .term-cursor { animation: none; }
}

/* Unsichtbare Mess-Sonde für die Zeichenbreite */
.term-measure {
  position: absolute;
  visibility: hidden;
  white-space: pre;
}

/* ---- Mobil ---- */

@media (max-width: 900px) {
  .term { padding: 6px 8px 8px; }
}
