1:root {
2 --bg: #121217;
3 --panel: #1a1a21;
4 --panel-2: #23232c;
5 --border: #2d2d38;
6 --text: #e8e8ee;
7 --text-dim: #9a9aa8;
8 --accent: #6c8cff;
9 --pass: #4ade80;
10 --fail: #f87171;
11}
12
13* {
14 box-sizing: border-box;
15}
16
17body {
18 margin: 0;
19 background: var(--bg);
20 color: var(--text);
21 font: 14px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif;
22 min-height: 100vh;
23}
24
25.app {
26 display: flex;
27 flex-direction: column;
28 height: 100vh;
29}
30
31.topbar {
32 display: flex;
33 align-items: center;
34 gap: 16px;
35 flex-wrap: wrap;
36 padding: 10px 16px;
37 background: var(--panel);
38 border-bottom: 1px solid var(--border);
39}
40
41h1 {
42 margin: 0;
43 font-size: 16px;
44}
45
46.tag {
47 color: var(--text-dim);
48 font-weight: normal;
49 font-size: 13px;
50}
51
52.toolbar {
53 display: flex;
54 gap: 12px;
55 flex-wrap: wrap;
56}
57
58.group {
59 display: flex;
60 align-items: center;
61 gap: 4px;
62 background: var(--panel-2);
63 padding: 4px;
64 border-radius: 8px;
65}
66
67button {
68 background: transparent;
69 border: none;
70 color: var(--text);
71 padding: 6px 10px;
72 border-radius: 6px;
73 cursor: pointer;
74 font: inherit;
75}
76
77button:hover:not(:disabled) {
78 background: rgba(255, 255, 255, 0.08);
79}
80
81button.active {
82 background: var(--accent);
83 color: #10101a;
84}
85
86button:disabled {
87 opacity: 0.4;
88 cursor: default;
89}
90
91.zoom-label {
92 min-width: 38px;
93 text-align: center;
94 color: var(--text-dim);
95 font-variant-numeric: tabular-nums;
96}
97
98.workspace {
99 flex: 1;
100 display: flex;
101 gap: 16px;
102 padding: 16px;
103 overflow: hidden;
104}
105
106.canvas-wrap {
107 flex: 1;
108 overflow: auto;
109 display: grid;
110 place-items: center;
111 background: #0d0d11;
112 border: 1px solid var(--border);
113 border-radius: 10px;
114}
115
116#canvas {
117 image-rendering: pixelated;
118 touch-action: none;
119 cursor: crosshair;
120 box-shadow: 0 0 0 1px var(--border);
121}
122
123.sidebar {
124 width: 232px;
125 overflow-y: auto;
126 display: flex;
127 flex-direction: column;
128 gap: 16px;
129}
130
131.sidebar section {
132 background: var(--panel);
133 border: 1px solid var(--border);
134 border-radius: 10px;
135 padding: 12px;
136}
137
138.sidebar h2 {
139 margin: 0 0 10px;
140 font-size: 12px;
141 text-transform: uppercase;
142 letter-spacing: 0.08em;
143 color: var(--text-dim);
144}
145
146.current-color {
147 display: flex;
148 align-items: center;
149 gap: 10px;
150 margin-bottom: 10px;
151}
152
153#current-swatch {
154 width: 36px;
155 height: 36px;
156 border-radius: 8px;
157 border: 1px solid var(--border);
158 background: #ff004d;
159}
160
161.custom {
162 display: flex;
163 align-items: center;
164 gap: 8px;
165 color: var(--text-dim);
166 cursor: pointer;
167}
168
169input[type="color"] {
170 width: 36px;
171 height: 28px;
172 padding: 2px;
173 border: 1px solid var(--border);
174 border-radius: 6px;
175 background: var(--panel-2);
176 cursor: pointer;
177}
178
179.palette {
180 display: grid;
181 grid-template-columns: repeat(8, 1fr);
182 gap: 6px;
183}
184
185.swatch {
186 aspect-ratio: 1;
187 padding: 0;
188 border: 1px solid rgba(255, 255, 255, 0.15);
189 border-radius: 6px;
190 cursor: pointer;
191}
192
193.swatch.active {
194 outline: 2px solid var(--accent);
195 outline-offset: 2px;
196}
197
198.shortcuts ul {
199 margin: 0;
200 padding: 0;
201 list-style: none;
202 color: var(--text-dim);
203}
204
205.shortcuts li {
206 margin: 6px 0;
207}
208
209kbd {
210 background: var(--panel-2);
211 border: 1px solid var(--border);
212 border-bottom-width: 2px;
213 border-radius: 4px;
214 padding: 1px 5px;
215 font-size: 11px;
216 font-family: inherit;
217}
218
219.status {
220 padding: 6px 16px;
221 background: var(--panel);
222 border-top: 1px solid var(--border);
223 color: var(--text-dim);
224 font-variant-numeric: tabular-nums;
225}
226
227
228
229.tests {
230 max-width: 680px;
231 margin: 40px auto;
232 padding: 0 16px;
233}
234
235#summary {
236 font-size: 16px;
237}
238
239#summary.pass {
240 color: var(--pass);
241}
242
243#summary.fail {
244 color: var(--fail);
245}
246
247#results {
248 list-style: none;
249 padding: 0;
250}
251
252#results li {
253 margin: 4px 0;
254 padding: 6px 10px;
255 background: var(--panel);
256 border-left: 3px solid;
257 border-radius: 0 6px 6px 0;
258}
259
260#results li.pass {
261 border-color: var(--pass);
262}
263
264#results li.fail {
265 border-color: var(--fail);
266 color: var(--fail);
267}
268
Discussion
No comments yet. Start the discussion. Recorded by @patrick-toulme.