@layer components { .terminal { --row-gap: 0.2lh; background-color: var(--color-terminal-bg); color: var(--color-terminal-text); font-family: var(--font-mono); font-size: var(--text-normal); inset: auto 0 0 0; padding: var(--block-space) calc(var(--tray-size) + calc(var(--inline-space) * 3)); position: fixed; z-index: var(--z-terminal); @media (prefers-color-scheme: dark) { border-block-start: 1px solid var(--color-ink-lighter); } } .terminal__button { --btn-background: var(--color-terminal-bg); --btn-color: var(--color-terminal-text); --btn-border-radius: 0; --btn-border-color: var(--color-terminal-text); --btn-padding: 0.1em 0.7em; --btn-border-size: 1px; font-family: var(--font-mono); font-size: var(--text-x-small); white-space: nowrap; &:where(:not(:active)):focus-visible { outline: 2px solid var(--color-terminal-text); } } .terminal__command { --btn-background: transparent; --btn-color: var(--color-terminal-text); font-weight: normal; transition: unset; } .terminal__container { max-block-size: calc(100vh - var(--btn-size) - var(--block-space)); overflow: auto; } .terminal__help { background: var(--color-terminal-bg); border-radius: 1em; display: none; inline-size: auto; inset: 50% auto auto 50%; max-inline-size: 90vw; padding: calc(var(--block-space) * 1.5) var(--block-space-double); position: fixed; transform: translate(-50%, -50%); .terminal--showing-help &, .terminal--open .terminal__menu:empty ~ & { display: block; } h2 { border-block-end: 1px dashed; font-size: var(--text-normal); font-weight: normal; margin-block: 0 0.5lh; padding-block-end: 0.5lh; } h3 { font-size: var(--text-small); margin-block: 0; text-transform: uppercase; } dl { display: grid; grid-template-columns: min-content 1fr; gap: var(--inline-space); font-size: var(--text-small); margin: 0; } dt { grid-column: 1; margin-inline-start: var(--inline-space-double); white-space: nowrap; } dd { grid-column: 2; white-space: nowrap; } } .terminal__input:is(.input) { --input-border-color: transparent; --input-border-radius: 0.3em; --input-color: var(--color-terminal-text); accent-color: var(--color-terminal-text); caret-color: var(--color-terminal-text); font-family: inherit; &::placeholder { color: var(--color-terminal-text-light); opacity: 0.5; } &:focus::placeholder { opacity: 0.7; } .terminal--confirmation & { color: var(--color-terminal-text-light); } .terminal--error & { accent-color: var(--color-negative); caret-color: var(--color-negative); color: var(--color-negative); } .lexical-editor__content { min-block-size: initial; margin: 0; b, strong, i, em { font-weight: inherit; font-style: inherit; } ul, li { list-style: none; margin: 0; padding: 0; } } } .terminal__label { .terminal--busy:is(:not(.terminal--confirmation)) & { animation: pulse 1s infinite; } } .terminal__menu { display: none; list-style: none; .terminal--open & { display: flex; } .terminal--showing-help & { display: none; } } .terminal__item { &[aria-selected] { --btn-color: var(--color-terminal-bg); background: var(--color-terminal-text); color: var(--color-terminal-bg); outline: 2px solid var(--color-terminal-text); .terminal__command { color: var(--color-terminal-bg); } } @media (any-hover: hover) { &:where(:not(:active):hover) { background: color-mix(in srgb, var(--color-terminal-text) 20%, var(--color-terminal-bg)); } } } .terminal__output { display: none; .terminal--confirmation & { color: var(--color-terminal-text-light); } .terminal--error & { color: var(--color-negative); } .terminal--showing-output & { display: block; } p { + ul { margin-block-start: 0; } &:has(+ ul) { margin-block-end: 0; } } } /* Lexical prompt insertions /* ------------------------------------------------------------------------ */ .terminal { action-text-attachment:not(.node--selected) { --attachment-bg-color: oklch(var(--lch-white) / 15%); --attachment-text-color: var(--color-terminal-text); } } }