@font-face { font-family: "JetBrains Mono"; font-weight: 400; font-display: swap;
  src: url("https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono@2.304/fonts/webfonts/JetBrainsMono-Regular.woff2") format("woff2"); }
@font-face { font-family: "JetBrains Mono"; font-weight: 700; font-display: swap;
  src: url("https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono@2.304/fonts/webfonts/JetBrainsMono-Bold.woff2") format("woff2"); }

:root { --bg: #000; --tela: #101210; --fg: #e9ebe6; --dim: #8a8f86; --glow: 0 0 2px rgba(233,235,230,.55), 0 0 8px rgba(233,235,230,.18); }
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--fg); }
body { min-height: 100vh; display: grid; place-items: center; padding: 16px;
  font: 15px/1.5 "JetBrains Mono", ui-monospace, monospace;
  font-variant-ligatures: none; font-feature-settings: "liga" 0, "calt" 0; }
.term { width: 100%; max-width: 640px; background: var(--tela); border: 1px solid #262a25; border-radius: 10px;
  padding: 20px; text-shadow: var(--glow); box-shadow: inset 0 0 60px rgba(0,0,0,.6); }
.term h1 { font-size: 15px; font-weight: 700; margin: 0 0 4px; }
.term p.sub { color: var(--dim); margin: 0 0 16px; }
.out { white-space: pre; overflow-x: auto; min-height: 12em; margin: 0 0 12px; }
.out .progresso, .out .separador, .out .titulo { color: var(--dim); }
.out .erro, .out .falha { font-weight: 700; }
form { display: flex; gap: 8px; align-items: center; border-top: 1px solid #262a25; padding-top: 12px; }
form label { flex: none; }
input { flex: 1; min-width: 0; background: transparent; border: 0; outline: 0; color: var(--fg); font: inherit;
  text-shadow: var(--glow); caret-color: var(--fg); }
button { background: transparent; color: var(--fg); border: 1px solid var(--fg); font: inherit; padding: 2px 10px; cursor: pointer; text-shadow: var(--glow); }
button:disabled { opacity: .4; cursor: wait; }
footer { color: var(--dim); font-size: 12px; margin-top: 16px; }
footer a { color: inherit; }
.cursor::after { content: "█"; animation: pisca 1s steps(1) infinite; }
@keyframes pisca { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .cursor::after { animation: none; } }
