terminal.css RawHistoryFolder
1.vev-terminal {
2 --vev-fg: #d8dee9;
3 --vev-bg: #101218;
4 --vev-cursor: #ff8700;
5 --vev-selection-bg: #394150;
6 --vev-selection-fg: #ffffff;
7 --vev-color-0: #000000;
8 --vev-color-1: #800000;
9 --vev-color-2: #008000;
10 --vev-color-3: #808000;
11 --vev-color-4: #000080;
12 --vev-color-5: #800080;
13 --vev-color-6: #008080;
14 --vev-color-7: #c0c0c0;
15 --vev-color-8: #808080;
16 --vev-color-9: #ff0000;
17 --vev-color-10: #00ff00;
18 --vev-color-11: #ffff00;
19 --vev-color-12: #0000ff;
20 --vev-color-13: #ff00ff;
21 --vev-color-14: #00ffff;
22 --vev-color-15: #ffffff;
23 --vev-font-family: ui-monospace, "Cascadia Mono", "Noto Sans Mono", monospace;
24 --vev-font-size: 14px;
25 --vev-line-height: 1.2;
26 --vev-cell-width: 1ch;
27 --vev-cell-height: calc(var(--vev-font-size) * var(--vev-line-height));
28
29 position: relative;
30 display: inline-block;
31 overflow: hidden;
32 color: var(--vev-fg);
33 background: var(--vev-bg);
34 font-family: var(--vev-font-family);
35 font-size: var(--vev-font-size);
36 line-height: var(--vev-line-height);
37 font-variant-ligatures: none;
38 white-space: pre;
39 user-select: text;
40}
41
42.vev-terminal:focus-within {
43 outline: 2px solid var(--vev-cursor);
44 outline-offset: 2px;
45}
46
47.vev-terminal__viewport {
48 position: relative;
49 display: grid;
50 grid-template-rows: repeat(var(--vev-rows), var(--vev-cell-height));
51}
52
53.vev-terminal__row {
54 contain: strict;
55 display: grid;
56 grid-template-columns: repeat(var(--vev-cols), var(--vev-cell-width));
57 min-width: calc(var(--vev-cols) * var(--vev-cell-width));
58 height: var(--vev-cell-height);
59}
60
61.vev-terminal__cell {
62 overflow: hidden;
63 min-width: 0;
64 color: var(--vev-cell-fg, var(--vev-fg));
65 background: var(--vev-cell-bg, var(--vev-bg));
66 text-decoration-color: var(--vev-cell-underline, currentColor);
67 letter-spacing: var(--vev-letter-spacing, 0);
68}
69
70.vev-terminal__measure {
71 position: absolute;
72 top: 0;
73 left: 0;
74 display: block;
75 width: var(--vev-cell-width);
76 white-space: pre;
77 visibility: hidden;
78 pointer-events: none;
79 user-select: none;
80}
81
82.vev-terminal__cell--bold { font-weight: 700; }
83.vev-terminal__cell--italic { font-style: italic; }
84.vev-terminal__cell--dim { color: color-mix(in srgb, var(--vev-cell-fg, var(--vev-fg)) 50%, var(--vev-cell-bg, var(--vev-bg))); }
85.vev-terminal__cell--strike { text-decoration-line: line-through; }
86.vev-terminal__cell--underline { text-decoration-line: underline; }
87.vev-terminal__cell--strike.vev-terminal__cell--underline { text-decoration-line: line-through underline; }
88.vev-terminal__cell--underline-double { text-decoration-style: double; }
89.vev-terminal__cell--underline-wavy { text-decoration-style: wavy; }
90.vev-terminal__cell--underline-dotted { text-decoration-style: dotted; }
91.vev-terminal__cell--underline-dashed { text-decoration-style: dashed; }
92.vev-terminal__cell--blink { animation: vev-terminal-blink 1s step-end infinite; }
93
94.vev-terminal__cursor {
95 position: absolute;
96 z-index: 2;
97 pointer-events: none;
98 background: var(--vev-cursor);
99 opacity: 0.75;
100}
101
102.vev-terminal__cursor--bar { width: max(1px, calc(var(--vev-cell-width) * 0.12)); }
103.vev-terminal__cursor--underline { height: max(1px, calc(var(--vev-cell-height) * 0.12)); }
104
105.vev-terminal__input { font-size: 16px; }
106
107.vev-terminal__input,
108.vev-terminal__accessible-output {
109 position: absolute;
110 width: 1px;
111 height: 1px;
112 padding: 0;
113 margin: -1px;
114 overflow: hidden;
115 clip-path: inset(50%);
116 white-space: pre;
117 border: 0;
118}
119
120.vev-terminal ::selection {
121 color: var(--vev-selection-fg);
122 background: var(--vev-selection-bg);
123}
124
125.vev-terminal--mouse-capture { user-select: none; }
126
127@keyframes vev-terminal-blink {
128 50% { visibility: hidden; }
129}
130
131@media (prefers-reduced-motion: reduce) {
132 .vev-terminal__cell--blink { animation: none; }
133}