@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; --hover-color: var(--color-terminal-text); --hover-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 { display: none; .terminal--showing-help &, .terminal--open .terminal__menu:empty ~ & { border-block-end: 1px dashed; display: block; margin-block-end: 0.5lh; padding-block-end: 0.5lh; } 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: 0.5em 1em; 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; } } .terminal__input:is(.input) { --input-border-color: transparent; --input-border-radius: 0.3em; --hover-color: transparent; --input-color: var(--color-terminal-text); --outline-size: 0; --outline-color: transparent; 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); } } .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--showing-output & { display: block; } p { + ul { margin-block-start: 0; } &:has(+ ul) { margin-block-end: 0; } } } }