@layer fc.components {
.fc-terminal {
display: flex;
flex-direction: column;
min-inline-size: 0;
block-size: 100%;
background-color: var(--fc-term-bg);
color: var(--fc-term-fg);
border: var(--fc-border-width-thin) solid var(--fc-color-border-default);
border-radius: var(--fc-radius-md);
}
.fc-terminal__output {
flex: 1;
min-block-size: 0;
overflow-y: auto;
overscroll-behavior-block: contain;
padding: var(--fc-space-2) var(--fc-space-3);
font-family: var(--fc-font-family-mono);
font-size: var(--fc-font-size-sm);
line-height: var(--fc-line-height-snug);
font-variant-ligatures: none;
tab-size: 4;
}
.fc-terminal__line {
display: block;
white-space: pre;
min-block-size: 1lh;
}
.fc-term-ansi-black { color: var(--fc-term-ansi-black); }
.fc-term-ansi-red { color: var(--fc-term-ansi-red); }
.fc-term-ansi-green { color: var(--fc-term-ansi-green); }
.fc-term-ansi-yellow { color: var(--fc-term-ansi-yellow); }
.fc-term-ansi-blue { color: var(--fc-term-ansi-blue); }
.fc-term-ansi-magenta { color: var(--fc-term-ansi-magenta); }
.fc-term-ansi-cyan { color: var(--fc-term-ansi-cyan); }
.fc-term-ansi-white { color: var(--fc-term-ansi-white); }
.fc-term-ansi-bright-black { color: var(--fc-term-ansi-bright-black); }
.fc-term-ansi-bright-red { color: var(--fc-term-ansi-bright-red); }
.fc-term-ansi-bright-green { color: var(--fc-term-ansi-bright-green); }
.fc-term-ansi-bright-yellow { color: var(--fc-term-ansi-bright-yellow); }
.fc-term-ansi-bright-blue { color: var(--fc-term-ansi-bright-blue); }
.fc-term-ansi-bright-magenta { color: var(--fc-term-ansi-bright-magenta); }
.fc-term-ansi-bright-cyan { color: var(--fc-term-ansi-bright-cyan); }
.fc-term-ansi-bright-white { color: var(--fc-term-ansi-bright-white); }
.fc-terminal__bold { font-weight: var(--fc-font-weight-bold); }
.fc-terminal__dim { color: var(--fc-term-fg-dim); }
.fc-terminal__italic { font-style: italic; }
.fc-terminal__underline { text-decoration: underline; }
.fc-terminal__strike { text-decoration: line-through; }
.fc-terminal__inverse {
color: var(--fc-term-bg);
background-color: var(--fc-term-fg);
}
.fc-terminal__input-row {
display: flex;
align-items: baseline;
gap: var(--fc-space-2);
padding: var(--fc-space-2) var(--fc-space-3);
border-block-start: var(--fc-border-width-thin) solid var(--fc-color-border-subtle);
min-inline-size: 0;
}
.fc-terminal__prompt {
flex-shrink: 0;
color: var(--fc-term-ansi-green);
white-space: pre;
user-select: none;
}
.fc-terminal__input {
flex: 1;
min-inline-size: 0;
background: transparent;
border: 0;
padding: 0;
color: var(--fc-term-fg);
font: inherit;
}
.fc-terminal__cursor {
display: inline-block;
inline-size: 0.6em;
block-size: 1em;
background-color: var(--fc-term-cursor);
color: var(--fc-term-bg);
vertical-align: text-bottom;
}
.fc-terminal__cursor--blink {
animation: fc-cursor-blink 1.06s step-end infinite;
}
@keyframes fc-cursor-blink {
50% {
opacity: 0;
}
}
@media (prefers-reduced-motion: reduce) {
.fc-terminal__cursor--blink {
animation: none;
}
}
.fc-terminal__status {
display: flex;
align-items: center;
gap: var(--fc-space-3);
padding-block: var(--fc-space-1);
padding-inline: var(--fc-space-3);
background-color: var(--fc-term-bg-raised);
color: var(--fc-term-fg-dim);
border-block-start: var(--fc-border-width-thin) solid var(--fc-color-border-subtle);
font-family: var(--fc-font-family-mono);
font-size: var(--fc-font-size-2xs);
}
.fc-terminal__status-end {
margin-inline-start: auto;
}
.fc-terminal__exit {
font-variant-numeric: tabular-nums;
}
.fc-terminal__exit[data-fc-state="error"] {
color: var(--fc-term-ansi-red);
}
.fc-terminal__exit[data-fc-state="complete"] {
color: var(--fc-term-ansi-green);
}
.fc-terminal__output::selection {
background-color: var(--fc-term-ansi-blue);
color: var(--fc-term-bg);
}
.fc-terminal[data-fc-state="disconnected"] .fc-terminal__input-row {
opacity: 0.6;
}
@media (forced-colors: active) {
.fc-terminal {
background-color: Canvas;
color: CanvasText;
border-color: CanvasText;
}
.fc-term-ansi-red,
.fc-term-ansi-bright-red,
.fc-term-ansi-green,
.fc-term-ansi-bright-green {
color: LinkText;
}
.fc-terminal__cursor {
background-color: CanvasText;
color: Canvas;
}
.fc-terminal__status {
background-color: Canvas;
color: CanvasText;
border-block-start-color: CanvasText;
}
}
}