* { box-sizing: border-box; }

body {
  --ground: #020503;
  --halo: #06180d;
  --panel: #04120a;
  --phosphor: #34ff6d;
  --bright: #baffce;
  --text: #c4e8cf;
  --dim: #4e8763;
  --faint: #1c4a2e;
  --warn: #ffb454;
  --warn-dim: #8a6430;
  --glow: rgba(52, 255, 109, .45);
  margin: 0;
  background: var(--ground);
  color: var(--text);
  font-family: ui-monospace, "JetBrains Mono", "Cascadia Code", Menlo, Consolas, monospace;
  font-size: 15px;
  line-height: 1.55;
}

body[data-theme="amber"] {
  --ground: #050301;
  --halo: #1a1206;
  --panel: #140e04;
  --phosphor: #ffb000;
  --bright: #ffe0a3;
  --text: #eed9ae;
  --dim: #96793c;
  --faint: #4d3d1a;
  --warn: #ff7a5c;
  --warn-dim: #8a4634;
  --glow: rgba(255, 176, 0, .4);
}

body[data-theme="ice"] {
  --ground: #02040a;
  --halo: #071527;
  --panel: #051020;
  --phosphor: #7cc7ff;
  --bright: #dff1ff;
  --text: #c6def0;
  --dim: #4a7295;
  --faint: #1a3a55;
  --warn: #ffb454;
  --warn-dim: #8a6430;
  --glow: rgba(124, 199, 255, .45);
}

::selection { background: var(--phosphor); color: var(--ground); }

a { color: var(--bright); text-decoration: none; }
a:hover, a:focus-visible { background: var(--phosphor); color: var(--ground); outline: none; }

.sr-only {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

.crt {
  min-height: 100vh;
  background: radial-gradient(ellipse 130% 100% at 50% 0%, var(--halo) 0%, var(--ground) 65%);
}
.crt::after {
  content: "";
  position: fixed; inset: 0; pointer-events: none; z-index: 9;
  background:
    radial-gradient(ellipse 95% 90% at 50% 50%, transparent 60%, rgba(0, 0, 0, .5) 100%),
    repeating-linear-gradient(0deg, rgba(0, 0, 0, .22) 0 1px, transparent 1px 3px);
}
@keyframes flicker { 0%, 100% { opacity: 1; } 50% { opacity: .972; } }
@media (prefers-reduced-motion: no-preference) {
  .crt { animation: flicker .09s steps(2) infinite; }
}

.term {
  max-width: 62rem; margin: 0 auto;
  padding: 1.5rem 1.25rem 7rem;
  min-height: 100vh;
  cursor: text;
}

.titlebar {
  display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  color: var(--dim);
  border-bottom: 1px solid var(--faint);
  padding-bottom: .5rem; margin-bottom: 1.25rem;
}
.titlebar b { color: var(--phosphor); font-weight: 600; }

.glow { text-shadow: 0 0 10px var(--glow); }

#out .ln { white-space: pre-wrap; word-break: break-word; }

.ok { color: var(--phosphor); }
.warn { color: var(--warn); }
.dim { color: var(--dim); }
.bright { color: var(--bright); font-weight: 600; }

.echo { color: var(--bright); font-weight: 600; margin-top: 1.1rem; }
.echo::before, .promptline::before {
  content: "visitor@susurri:~$ ";
  color: var(--dim); font-weight: 400;
}

.logo {
  color: var(--phosphor);
  font-size: clamp(6px, 1.5vw, 12.5px);
  line-height: 1.25;
  margin: .8rem 0; overflow-x: auto;
  text-shadow: 0 0 10px var(--glow);
}

pre { margin: 0; font-family: inherit; overflow-x: auto; }

.tagline {
  color: var(--dim); font-style: italic;
  border-left: 2px solid var(--faint);
  padding-left: 1rem; margin: 1rem 0;
  max-width: 44rem;
}

.para { max-width: 46rem; margin: .6rem 0; }

.steps {
  background: var(--panel); border: 1px solid var(--faint);
  padding: .9rem 1rem; margin: .6rem 0; max-width: 50rem;
}

.btn {
  display: inline-block; border: 1px solid var(--phosphor); color: var(--phosphor);
  padding: .45rem 1.2rem; font-weight: 700; margin: .5rem 0;
}
.btn:hover, .btn:focus-visible { background: var(--phosphor); color: var(--ground); }

.fpr { color: var(--warn); letter-spacing: .08em; }

.warnbox {
  border: 1px dashed var(--warn-dim); color: var(--warn);
  padding: .6rem .9rem; margin: .8rem 0; max-width: 50rem;
}

.promptline { display: flex; align-items: baseline; margin-top: 1.1rem; }
#cmd {
  flex: 1; min-width: 4ch;
  background: transparent; border: none; outline: none;
  color: var(--bright); font: inherit; font-weight: 600;
  caret-color: var(--phosphor);
  padding: 0;
}

.keybar {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 10;
  background: var(--panel);
  border-top: 1px solid var(--faint);
  display: flex; overflow-x: auto;
}
.keybar[hidden] { display: none; }
.keybar button, .keybar a {
  background: none; border: none; cursor: pointer;
  font: inherit; color: var(--text);
  padding: .5rem .9rem; white-space: nowrap;
}
.keybar b {
  color: var(--ground); background: var(--dim);
  padding: 0 .35em; font-weight: 600; margin-right: .5em;
}
.keybar button:hover b, .keybar button:focus-visible b,
.keybar a:hover b, .keybar a:focus-visible b { background: var(--ground); color: var(--phosphor); }
.keybar button:focus-visible, .keybar a:focus-visible {
  outline: 1px solid var(--phosphor); outline-offset: -2px;
}
.keybar a:hover, .keybar a:focus-visible { background: var(--panel); color: var(--text); }

.hint { color: var(--dim); margin-top: 1rem; }
.hint kbd {
  border: 1px solid var(--faint); padding: 0 .4em;
  font: inherit; color: var(--text);
}

.ns .ns-h { color: var(--bright); font-size: 1em; font-weight: 600; margin: 2rem 0 .5rem; }
.ns .ns-h::before { content: "## "; color: var(--dim); font-weight: 400; }
