@font-face {
  font-family: 'VT323';
  src: url('/fonts/VT323-Regular.ttf') format('truetype');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
.kt-terminal {
  --kt-text: 24px;
  --kt-row: 30px;
  --kt-green: #d4ff96;
  --kt-muted: #cbe2b0;
  position: fixed;
  inset: 0;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  overflow: clip;
  background: #030603;
  color: #eaf9d0;
  font: var(--kt-text)/var(--kt-row) 'VT323', ui-monospace, monospace;
  -webkit-font-smoothing: antialiased;
  color-scheme: dark;
  isolation: isolate;
  border: 6px solid #0b110d;
  border-radius: 64px / 48px;
  text-shadow: 0 0 0.5px #d8ff8fcc, 0 0 4px #b7ff6659, 0 0 14px #87bc3138;
}
.kt-filter { position: absolute; pointer-events: none; }
.kt-cell-probe { position: absolute; top: 0; left: 0; visibility: hidden; white-space: pre; font: inherit; }
.kt-raster {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  min-width: 0;
  background: radial-gradient(ellipse at 50% 45%, #28391455, transparent 78%), #060903;
  filter: var(--kt-curvature, none);
}
/* Screen-fixed glass layers stay outside the scrolling text and never catch input. */
.kt-raster::before, .kt-raster::after, .kt-terminal::before, .kt-terminal::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 10;
  border-radius: inherit;
  pointer-events: none;
}
.kt-raster::before {
  z-index: 9;
  background-image: linear-gradient(180deg, #00000024 0 49%, #b4f06b0c 51% 100%);
  background-size: 100% 300%;
  background-repeat: no-repeat;
  animation: kt-scan-sweep 36s cubic-bezier(.42, 0, .58, 1) -9s infinite alternate;
}
@keyframes kt-scan-sweep {
  from { background-position: 0 20%; }
  to { background-position: 0 80%; }
}
.kt-raster::after {
  background-image:
    repeating-linear-gradient(0deg, #00000024 0 1px, transparent 1px 3px),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.35' numOctaves='2' stitchTiles='stitch' seed='7'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.08' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: kt-grain 0.8s steps(1, end) infinite;
}
@keyframes kt-grain {
  0%, 100% { background-position: 0 0, 0 0; }
  25% { background-position: 0 0, 37px 17px; }
  50% { background-position: 0 0, -21px 51px; }
  75% { background-position: 0 0, 61px -13px; }
}
.kt-terminal::before {
  background:
    radial-gradient(ellipse at 19% -18%, #e4ffbb1c, transparent 62%),
    linear-gradient(125deg, #e4ffbb07, transparent 48%);
}
.kt-terminal::after {
  z-index: 11;
  background:
    radial-gradient(ellipse at 50% 48%, transparent 53%, #00000048 84%, #000000b3 100%);
  box-shadow: inset 0 0 8px 3px #000e, inset 0 0 38px #000a,
    inset 1px 2px 1px #e4ffbb30, inset -1px -1px 1px #a0b78b14;
}
.kt-terminal, .kt-terminal * { box-sizing: border-box; }
.kt-terminal ::selection { background: #285735; color: #e0ffe5; }
.kt-titlebar {
  flex: none;
  min-height: calc(2 * var(--kt-row));
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto 16ch;
  align-items: center;
  gap: 0 calc(2 * var(--kt-cell, 1ch));
  padding: 0 calc(4 * var(--kt-cell, 1ch));
  border-bottom: 1px solid #24402b;
  background: #0a120c;
}
.kt-titlebar h1 { margin: 0; font: inherit; color: var(--kt-green); white-space: nowrap; letter-spacing: normal; text-transform: none; }
.kt-titlebar nav { display: flex; flex-wrap: wrap; gap: 0 var(--kt-cell, 1ch); }
.kt-playback { display: flex; align-items: center; justify-content: flex-end; gap: var(--kt-cell, 1ch); }
.kt-playback .kt-interrupt { color: #e5bd7b; }
.kt-terminal button { font: inherit; letter-spacing: normal; text-transform: none; cursor: pointer; border: 0; border-radius: 0; background: transparent; color: var(--kt-green); -webkit-tap-highlight-color: #d4ff9633; }
.kt-titlebar button { min-width: 44px; min-height: 44px; padding: 0 var(--kt-cell, 1ch); }
.kt-titlebar h1 button { padding-inline: 0; }
.kt-titlebar .kt-playback button { padding-inline: 0; }
.kt-titlebar .kt-help { color: var(--kt-muted); }
.kt-terminal button:hover:not(:disabled) { color: #e0ffe5; background: #162b1b; }
.kt-terminal button:disabled { cursor: default; color: var(--kt-muted); }
.kt-terminal :focus-visible { outline: 2px solid var(--kt-green); outline-offset: -2px; }
.kt-transcript { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: var(--kt-row) calc(4 * var(--kt-cell, 1ch)); scrollbar-color: #365940 #050905; scroll-behavior: auto; overflow-anchor: none; }
.kt-output-log, .kt-command { width: 100%; }
.kt-response { display: flow-root; }
.kt-output { margin: 0 0 var(--kt-row); font: inherit; white-space: pre-wrap; overflow-wrap: anywhere; tab-size: 4; }
.kt-streaming::after { content: ''; display: inline-block; width: var(--kt-cell, 1ch); height: 1em; vertical-align: -0.15em; background: var(--kt-green); }
.kt-echo { color: var(--kt-green); margin-top: 0; }
.kt-rule { display: block; white-space: pre; user-select: none; }
.kt-muted { color: var(--kt-muted); }
.kt-heading { color: var(--kt-green); }
.kt-wordmark { color: var(--kt-green); white-space: pre; }
.kt-wordmark-art { display: flex; width: max-content; font-size: var(--kt-wordmark-size, 12px); line-height: 1; padding-block: 0.5em; }
.kt-wordmark-caption { display: block; margin-top: 0.5em; color: var(--kt-muted); }
.kt-wordmark-art.kt-wireframe-logo { display: block; width: min(100%, 800px); padding: 0; line-height: 1; }
.kt-wireframe-logo canvas { display: block; width: 100%; height: auto; image-rendering: pixelated; }
.kt-logo-fallback { display: flex; padding-block: 0.5em; }
.kt-logo-fallback .kt-infinity { animation: none; color: inherit; background: none; }
.kt-infinity {
  color: transparent;
  background: radial-gradient(ellipse at center, #f7ffe9 0 12%, #e8ffc3 22%, var(--kt-green) 52%);
  background-size: 200% 200%;
  background-position: 50% 50%;
  background-clip: text;
  animation: kt-infinity-trace 3.2s linear both;
}
@keyframes kt-infinity-trace {
  0%, 100% { background-position: 50% 50%; color: var(--kt-green); }
  10% { background-position: 50% 50%; color: transparent; }
  20% { background-position: 0% 0%; }
  30% { background-position: 0% 50%; }
  40% { background-position: 0% 100%; }
  50% { background-position: 50% 50%; }
  60% { background-position: 100% 0%; }
  70% { background-position: 100% 50%; }
  80% { background-position: 100% 100%; }
  90% { background-position: 50% 50%; color: transparent; }
}
.kt-suggestions { display: flex; align-items: center; flex-wrap: wrap; gap: 0 var(--kt-cell, 1ch); margin-bottom: 0; white-space: normal; color: var(--kt-muted); }
.kt-suggestions button { min-height: calc(2 * var(--kt-row)); padding: 0; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.kt-suggestions:not(.kt-suggestions-current) button { color: var(--kt-muted); }
.kt-suggestions button:hover { background: transparent; text-decoration: underline; }
.kt-review { color: #e5bd7b; }
.kt-command { display: flex; align-items: center; gap: var(--kt-cell, 1ch); min-height: calc(2 * var(--kt-row)); padding-left: var(--kt-cell, 1ch); background: #0a140d; box-shadow: inset 2px 0 #365940; }
.kt-command label { flex: none; color: var(--kt-green); }
.kt-prompt-context { color: var(--kt-muted); }
.kt-command textarea { width: 0; flex: 1; min-width: 0; min-height: calc(2 * var(--kt-row)); max-height: calc(5 * var(--kt-row)); field-sizing: content; resize: none; border: 0; border-radius: 0; padding: calc(var(--kt-row) / 2) 0; font: inherit; background: transparent; color: inherit; caret-color: var(--kt-green); caret-shape: block; }
.kt-command:focus-within label { color: #e0ffe5; }
.kt-command:focus-within { background: #101e14; box-shadow: inset 2px 0 var(--kt-green); }
.kt-command textarea:focus-visible { outline: none; }
.kt-command textarea::placeholder { color: var(--kt-muted); opacity: 1; }
.kt-command button { min-height: 44px; padding: 0 var(--kt-cell, 1ch); }
.kt-terminal [hidden] { display: none; }
.kt-sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; clip-path: inset(50%); overflow: hidden; white-space: nowrap; }
@media (max-width: 1000px) {
  .kt-titlebar { grid-template-columns: minmax(0, 1fr) auto auto; grid-template-rows: 44px auto; }
  .kt-titlebar nav { grid-row: 2; grid-column: 1 / 3; }
  .kt-titlebar .kt-help { grid-row: 2; grid-column: 3; align-self: start; }
  .kt-playback { grid-row: 1; grid-column: 2 / 4; }
}
@media (max-width: 640px) {
  .kt-terminal { border-width: 4px; border-radius: 32px / 28px; text-shadow: 0 0 0.5px #d8ff8f99, 0 0 4px #b7ff663d, 0 0 10px #87bc3126; }
  .kt-raster::before { opacity: 0.65; }
  .kt-raster::after, .kt-terminal::before { opacity: 0.6; }
  .kt-terminal::after { opacity: 0.75; }
  .kt-titlebar { grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: repeat(2, 44px); padding: 0 calc(2 * var(--kt-cell, 1ch)); gap: 0; }
  .kt-titlebar nav { grid-column: 1 / -1; flex-wrap: nowrap; justify-content: space-between; gap: 0; }
  .kt-titlebar .kt-help { grid-row: 1; grid-column: 2; }
  .kt-titlebar .kt-playback { display: none; }
  .kt-titlebar button { padding-inline: 0; }
  .kt-transcript { padding-inline: calc(2 * var(--kt-cell, 1ch)); }
  .kt-prompt-context { display: none; }
}
.kt-terminal[data-effects="off"] { border-radius: 0; text-shadow: none; }
.kt-terminal[data-effects="off"] .kt-raster { filter: none; background: #060903; }
.kt-terminal[data-effects="off"] .kt-raster::before,
.kt-terminal[data-effects="off"] .kt-raster::after,
.kt-terminal[data-effects="off"]::before,
.kt-terminal[data-effects="off"]::after { display: none; }
@media (prefers-contrast: more), (forced-colors: active) {
  .kt-infinity { animation: none; background: none; color: inherit; }
  .kt-terminal { text-shadow: none; }
  .kt-raster::before, .kt-raster::after, .kt-terminal::before, .kt-terminal::after { display: none; }
  .kt-raster { filter: none; }
}
.kt-terminal[data-animation="off"] .kt-raster::before { animation-play-state: paused; opacity: 0; }
.kt-terminal[data-animation="off"] .kt-raster::after { animation-play-state: paused; }
.kt-terminal[data-animation="off"] .kt-infinity { animation: none; color: inherit; background: none; }
@media (prefers-reduced-motion: reduce) {
  .kt-infinity { animation: none; color: inherit; background: none; }
  .kt-raster::before { animation: none; display: none; }
  .kt-raster::after { animation: none; }
}
@media (max-height: 450px) {
  .kt-titlebar { min-height: 44px; }
  .kt-transcript { padding-top: var(--kt-row); }
}
