:root{--bg: #0d0f12;--panel: #14171c;--panel-2: #1b1f26;--border: #262b34;--text: #e3e6eb;--muted: #8a93a3;--accent: #b5d334;--accent-dim: #6b8e23;--error: #ff7a7a;--radius: 6px;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px;line-height:1.4;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}.app{display:grid;grid-template-columns:360px 1fr;height:100vh}.sidebar{overflow-y:auto;scrollbar-color:var(--border) var(--panel);background:var(--panel);border-right:1px solid var(--border)}.sidebar section{padding:12px 16px;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:8px;padding:12px 16px;font-weight:600;letter-spacing:.02em;border-bottom:1px solid var(--border)}.brand img{width:20px;height:20px}h3{margin:0 0 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.row{display:flex;gap:8px}.generator{flex:1;font-size:14px;font-weight:500}.usage{margin:8px 0 0;color:var(--muted)}.params{display:flex;flex-direction:column;gap:12px}.field{display:flex;flex-direction:column;gap:4px}.field-name{font-family:var(--mono);font-size:12px;color:var(--accent)}.field-help{overflow:hidden;font-size:11px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis}input[type=text],input[type=number],select,button,.button{height:28px;padding:0 8px;font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);outline:none}input[type=text],input[type=number]{font-family:var(--mono);font-size:12px}input:focus,select:focus{border-color:var(--accent-dim)}button,.button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none}button:hover:not(:disabled),.button:hover{border-color:var(--accent-dim)}button:disabled{opacity:.4;cursor:default}input[type=range]{flex:1;min-width:0;accent-color:var(--accent)}input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:var(--accent)}.number{display:flex;align-items:center;gap:8px}.number input[type=number]{width:84px}.number output{width:40px;font-family:var(--mono);font-size:12px;text-align:right;color:var(--muted)}.toggle{display:flex;align-items:center;gap:8px;color:var(--muted)}.size{display:flex;flex-direction:column;gap:6px}.presets{display:flex;gap:4px}.presets button{flex:1;height:24px;padding:0;font-size:11px}.presets button.active{color:var(--bg);background:var(--accent);border-color:var(--accent)}.colors{display:flex;flex-direction:column;gap:6px}.color-row{display:flex;gap:6px}.color-row input[type=text]{flex:1;min-width:0}input[type=color]{width:36px;height:28px;padding:2px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}button.icon{width:28px;padding:0;font-size:16px}button.add{align-self:flex-start}.output{display:flex;flex-direction:column;gap:10px}.preview{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:repeating-conic-gradient(#20242b 0% 25%,#171a20 0% 50%) 50% / 16px 16px}.preview img{width:100%;height:100%;object-fit:contain}.preview.pixelated img{image-rendering:pixelated}.badge{position:absolute;top:6px;right:6px;padding:2px 6px;font-size:11px;color:var(--bg);background:var(--accent);border-radius:4px}.error{margin:0;padding:8px;font-family:var(--mono);font-size:12px;color:var(--error);white-space:pre-wrap;background:#2a1517;border:1px solid #5a2a2e;border-radius:var(--radius)}.command{display:flex;gap:6px;align-items:flex-start}.command code{flex:1;min-width:0;padding:6px 8px;font-family:var(--mono);font-size:11px;word-break:break-all;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);-webkit-user-select:all;user-select:all}.stage{position:relative;min-width:0}.viewer{position:absolute;inset:0}.viewer canvas{display:block}.fatal{display:grid;place-items:center;height:100vh;color:var(--muted)}@media(max-width:760px){.app{grid-template-columns:1fr;grid-template-rows:50vh auto;height:auto}.sidebar{order:2;border-right:none}.stage{order:1;height:50vh}}.viewer-error{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;height:100%;padding:24px;color:var(--muted);text-align:center}.viewer-error small{font-family:var(--mono);font-size:11px;opacity:.7}.gradient-editor{display:flex;flex-direction:column;gap:4px;touch-action:none}.gradient-strip{position:relative;margin:0 8px}.gradient-bar{height:28px;cursor:copy;border:1px solid var(--border);border-radius:4px;background:var(--gradient),repeating-conic-gradient(#3a3f48 0% 25%,#22262d 0% 50%) 0 0 / 10px 10px}.gradient-track{position:relative;height:23px;cursor:copy}.stop{--house: polygon(50% 0, 100% 40%, 100% 100%, 0 100%, 0 40%);position:absolute;top:0;width:16px;height:21px;padding:0;cursor:grab;background:var(--muted);border:none;border-radius:0;clip-path:var(--house);transform:translate(-50%);transition:opacity .12s}.stop:hover:not(:disabled){background:var(--text)}.stop:focus-visible{background:var(--text)}.stop.selected{z-index:1;background:var(--accent)}.stop.removing{opacity:.3}.stop.invalid{background:var(--error)}.stop:active{cursor:grabbing}.stop-swatch{position:absolute;inset:4px 2px 2px;clip-path:var(--house);background:linear-gradient(var(--stop),var(--stop)),repeating-conic-gradient(#3a3f48 0% 25%,#22262d 0% 50%) 0 0 / 6px 6px}.field-help.wrap{white-space:normal}.gradient-ends{display:flex;justify-content:space-between;margin-top:-2px;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.stop-fields{display:flex;flex-direction:column;gap:6px;margin-top:4px;padding:8px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.stop-row{display:flex;gap:6px;align-items:center}.stop-row input[type=text]{flex:1;min-width:0}.stop-row output{width:40px;font-family:var(--mono);font-size:12px;text-align:right;color:var(--muted)}.stop-label{width:56px;font-size:11px;color:var(--muted)}input.stop-pos{width:64px}input.invalid{border-color:var(--error)}.gradient-actions{display:flex;gap:6px;align-items:center;margin-top:2px}.gradient-actions button{height:24px;font-size:11px}.gradient-count{margin-left:auto;font-size:11px;color:var(--muted)}
