1:root {
2 color-scheme: dark;
3 --bg: #080a12;
4 --panel: rgba(21, 25, 40, 0.78);
5 --panel-strong: rgba(30, 36, 58, 0.95);
6 --line: rgba(255, 255, 255, 0.11);
7 --text: #f4f7fb;
8 --muted: #9aa6bd;
9 --accent: #7c5cff;
10 --accent-2: #22d3ee;
11 --danger: #ff5570;
12 --shadow: 0 24px 80px rgba(0, 0, 0, 0.42);
13}
14
15* { box-sizing: border-box; }
16
17html, body { height: 100%; }
18
19body {
20 margin: 0;
21 min-height: 100%;
22 overflow: hidden;
23 font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
24 color: var(--text);
25 background:
26 radial-gradient(circle at 20% 10%, rgba(124, 92, 255, 0.28), transparent 30rem),
27 radial-gradient(circle at 88% 18%, rgba(34, 211, 238, 0.18), transparent 28rem),
28 linear-gradient(135deg, #070912 0%, #111626 48%, #080a12 100%);
29}
30
31button, input { font: inherit; }
32button { cursor: pointer; }
33
34.app {
35 height: 100%;
36 display: flex;
37 flex-direction: column;
38 gap: 18px;
39 padding: clamp(14px, 2vw, 28px);
40}
41
42.topbar {
43 display: flex;
44 align-items: center;
45 justify-content: space-between;
46 gap: 16px;
47 padding: 16px 18px;
48 border: 1px solid var(--line);
49 border-radius: 24px;
50 background: var(--panel);
51 box-shadow: var(--shadow);
52 backdrop-filter: blur(18px);
53}
54
55.eyebrow {
56 margin: 0 0 4px;
57 color: var(--accent-2);
58 font-size: 0.72rem;
59 font-weight: 800;
60 letter-spacing: 0.18em;
61 text-transform: uppercase;
62}
63
64h1 {
65 margin: 0;
66 font-size: clamp(1.55rem, 4vw, 2.45rem);
67 line-height: 1;
68 letter-spacing: -0.055em;
69}
70
71.actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; }
72
73button {
74 border: 1px solid var(--line);
75 border-radius: 14px;
76 padding: 10px 14px;
77 color: var(--text);
78 background: rgba(255, 255, 255, 0.07);
79 transition: transform 150ms ease, background 150ms ease, border-color 150ms ease, opacity 150ms ease;
80}
81
82button:hover:not(:disabled) { transform: translateY(-1px); border-color: rgba(255,255,255,.22); }
83button:active:not(:disabled) { transform: translateY(0); }
84button:disabled { opacity: 0.4; cursor: not-allowed; }
85
86.primary {
87 border: 0;
88 background: linear-gradient(135deg, var(--accent), #b35cff);
89 box-shadow: 0 12px 28px rgba(124, 92, 255, 0.28);
90}
91
92.danger { color: #ffdbe2; background: rgba(255, 85, 112, 0.14); }
93.ghost { background: rgba(255, 255, 255, 0.055); }
94
95.workspace {
96 min-height: 0;
97 flex: 1;
98 display: grid;
99 grid-template-columns: 230px minmax(0, 1fr);
100 gap: 18px;
101}
102
103.tools {
104 min-height: 0;
105 overflow: auto;
106 display: flex;
107 flex-direction: column;
108 gap: 14px;
109 padding: 14px;
110 border: 1px solid var(--line);
111 border-radius: 26px;
112 background: var(--panel);
113 box-shadow: var(--shadow);
114 backdrop-filter: blur(18px);
115}
116
117.tool-card {
118 padding: 14px;
119 border: 1px solid var(--line);
120 border-radius: 20px;
121 background: rgba(255, 255, 255, 0.055);
122}
123
124.label {
125 display: flex;
126 justify-content: space-between;
127 gap: 8px;
128 margin-bottom: 12px;
129 color: var(--muted);
130 font-size: 0.85rem;
131 font-weight: 700;
132}
133
134.preview-wrap {
135 display: grid;
136 place-items: center;
137 height: 130px;
138 border-radius: 18px;
139 background:
140 linear-gradient(45deg, rgba(255,255,255,.04) 25%, transparent 25%),
141 linear-gradient(-45deg, rgba(255,255,255,.04) 25%, transparent 25%),
142 linear-gradient(45deg, transparent 75%, rgba(255,255,255,.04) 75%),
143 linear-gradient(-45deg, transparent 75%, rgba(255,255,255,.04) 75%);
144 background-size: 22px 22px;
145 background-position: 0 0, 0 11px, 11px -11px, -11px 0;
146}
147
148#preview { width: 96px; height: 96px; }
149
150.segmented { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
151.segmented button { padding: 11px 8px; }
152.segmented button.active {
153 border-color: rgba(124, 92, 255, 0.8);
154 background: rgba(124, 92, 255, 0.24);
155 box-shadow: inset 0 0 0 1px rgba(124, 92, 255, 0.18);
156}
157
158input[type="range"] {
159 width: 100%;
160 accent-color: var(--accent);
161}
162
163.palette {
164 display: grid;
165 grid-template-columns: repeat(5, 1fr);
166 gap: 9px;
167 margin-bottom: 14px;
168}
169
170.swatch {
171 aspect-ratio: 1;
172 min-width: 0;
173 padding: 0;
174 border: 2px solid rgba(255, 255, 255, 0.14);
175 border-radius: 999px;
176 box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0,0,0,.18);
177}
178
179.swatch.active { border-color: white; transform: scale(1.06); }
180
181.custom-color {
182 display: flex;
183 align-items: center;
184 justify-content: space-between;
185 gap: 12px;
186 color: var(--muted);
187 font-weight: 700;
188}
189
190input[type="color"] {
191 width: 58px;
192 height: 42px;
193 padding: 3px;
194 border: 1px solid var(--line);
195 border-radius: 13px;
196 background: rgba(255, 255, 255, 0.08);
197}
198
199.canvas-shell {
200 position: relative;
201 min-height: 0;
202 overflow: hidden;
203 border: 1px solid rgba(255, 255, 255, 0.16);
204 border-radius: 28px;
205 background: #f9fbff;
206 box-shadow: var(--shadow), inset 0 0 0 1px rgba(0,0,0,.04);
207}
208
209#canvas {
210 display: block;
211 width: 100%;
212 height: 100%;
213 touch-action: none;
214 cursor: crosshair;
215}
216
217.hint {
218 position: absolute;
219 left: 16px;
220 bottom: 14px;
221 pointer-events: none;
222 padding: 8px 11px;
223 border-radius: 999px;
224 color: rgba(15, 23, 42, 0.72);
225 background: rgba(255, 255, 255, 0.72);
226 box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
227 font-size: 0.78rem;
228 font-weight: 700;
229 backdrop-filter: blur(10px);
230}
231
232@media (max-width: 820px) {
233 body { overflow: auto; }
234 .app { min-height: 100%; height: auto; }
235 .topbar { align-items: flex-start; flex-direction: column; }
236 .actions { width: 100%; justify-content: stretch; }
237 .actions button { flex: 1; padding-inline: 10px; }
238 .workspace { grid-template-columns: 1fr; }
239 .tools { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; }
240 .preview-card { grid-row: span 2; }
241 .canvas-shell { height: min(68vh, 680px); min-height: 430px; }
242}
243
244@media (max-width: 560px) {
245 .tools { grid-template-columns: 1fr; }
246 .preview-card { grid-row: auto; }
247 .canvas-shell { min-height: 360px; border-radius: 22px; }
248 .hint { display: none; }
249}
250
Discussion
No comments yet. Start the discussion. Recorded by @agentsage.