.bg-canvas{object-fit:cover;width:100vw;height:100vh;display:block;position:fixed;inset:0}.landing{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.landing-inner{pointer-events:auto;text-align:center;-webkit-backdrop-filter:blur(2px);border:var(--border);background:#0a0e148c;flex-direction:column;align-items:center;gap:20px;padding:40px 52px;display:flex}.wordmark{letter-spacing:-.02em;align-items:baseline;gap:0;line-height:1;display:flex}.wordmark-dither{font-family:var(--mono);color:var(--ink);letter-spacing:-.04em;text-shadow:0 0 40px #7ec8e366,0 0 80px #7ec8e326;font-size:clamp(48px,8vw,96px);font-weight:700}.wordmark-lab{font-family:var(--mono);color:var(--accent);letter-spacing:.15em;opacity:.85;margin-left:8px;font-size:clamp(24px,4vw,48px);font-weight:400}.tagline{letter-spacing:.2em;text-transform:lowercase;color:var(--ink-dim);font-size:11px;font-weight:400}.open-btn{letter-spacing:.15em;text-transform:lowercase;color:var(--accent);border:var(--border);border-color:var(--accent);background:#7ec8e30f;align-items:center;gap:6px;margin-top:16px;padding:12px 28px;font-size:12px;transition:background .2s,color .2s,border-color .2s,box-shadow .2s;display:inline-flex;position:relative;overflow:hidden}.open-btn:after{content:"";opacity:0;background:#7ec8e314;transition:opacity .2s;position:absolute;inset:0}.open-btn:hover{color:#fff;background:#7ec8e31f;border-color:#7ec8e3e6;box-shadow:0 0 24px #7ec8e333,inset 0 0 12px #7ec8e30a}.open-btn:active{background:#7ec8e333}.open-btn-bracket{opacity:.5;font-weight:400}.corner-label{letter-spacing:.12em;text-transform:uppercase;color:#4a7a9b99;pointer-events:none;white-space:nowrap;font-size:10px;position:absolute}.corner-tl{top:24px;left:28px}.corner-br{bottom:24px;right:28px}.param-row{align-items:center;gap:8px;min-height:24px;padding:3px 0;display:flex}.param-label{letter-spacing:.08em;width:80px;color:var(--ink-dim);text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-size:10px;overflow:hidden}.param-range{flex:1;align-items:center;gap:6px;display:flex}.param-range input[type=range]{appearance:none;cursor:pointer;background:#c8e8ff26;outline:none;flex:1;height:2px}.param-range input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:10px;height:10px}.param-value{color:var(--ink-dim);text-align:right;flex-shrink:0;width:28px;font-size:10px}select{border:var(--border);color:var(--ink);font-family:var(--mono);cursor:pointer;letter-spacing:.05em;background:#c8e8ff0f;flex:1;padding:2px 4px;font-size:10px}.param-toggle{letter-spacing:.1em;padding:2px 8px;font-size:10px;transition:background .15s,color .15s;border:var(--border)!important}.param-toggle.on{color:var(--accent);background:#7ec8e326;border-color:var(--accent)!important}.param-toggle.off{color:var(--ink-dim)}.editor{background:#0a0e14f5;display:flex;position:absolute;inset:0;overflow:hidden}.sidebar-header{border-bottom:var(--border);flex-shrink:0;align-items:center;gap:8px;padding:10px 12px;display:flex}.back-btn{letter-spacing:.08em;color:var(--ink-dim);padding:3px 0;font-size:10px;transition:color .15s}.back-btn:hover{color:var(--ink)}.sidebar-title{letter-spacing:.25em;color:var(--ink-dim);text-align:center;flex:1;font-size:10px}.undo-redo{gap:2px;display:flex}.icon-btn{color:var(--ink-dim);padding:2px 4px;font-size:14px;line-height:1;transition:color .15s}.icon-btn:hover:not(:disabled){color:var(--accent)}.icon-btn:disabled{opacity:.2;cursor:default}.editor-sidebar{border-right:var(--border);background:#0a0e14fa;flex-direction:column;flex-shrink:0;width:240px;display:flex;overflow:hidden}.sidebar-section{border-bottom:var(--border);padding:14px 16px 10px}.sidebar-label{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:8px;font-size:9px}.sidebar-label-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.sidebar-label-row .sidebar-label{margin-bottom:0}.clear-btn{letter-spacing:.12em;color:var(--ink-dim);opacity:.5;text-transform:uppercase;padding:0;font-size:9px;transition:opacity .15s,color .15s}.clear-btn:hover{opacity:1;color:#ff6b6b}.effect-list{flex-direction:column;gap:4px;display:flex}.add-effect-btn{text-align:left;letter-spacing:.05em;color:var(--ink);border:var(--border);padding:5px 8px;font-size:11px;transition:background .15s,color .15s}.add-effect-btn:hover{color:var(--accent);background:#7ec8e31a;border-color:#7ec8e34d}.stack-section{border-bottom:none;flex:1;overflow-y:auto}.stack-section::-webkit-scrollbar{width:4px}.stack-section::-webkit-scrollbar-track{background:0 0}.stack-section::-webkit-scrollbar-thumb{background:#c8e8ff1a}.stack-empty{color:var(--ink-dim);opacity:.5;padding:4px 0;font-size:10px}.stack-entry{border:var(--border);margin-bottom:10px;padding:6px 8px}.stack-entry.disabled{opacity:.4}.stack-entry[draggable]{cursor:grab}.stack-entry.drag-over{border-color:var(--accent);background:#7ec8e30d}.drag-handle{color:var(--ink-dim);opacity:.3;cursor:grab;-webkit-user-select:none;user-select:none;font-size:12px;line-height:1}.reseed-btn{color:var(--ink-dim);opacity:.5;padding:0;font-size:11px;line-height:1;transition:opacity .15s,color .15s}.reseed-btn:hover{opacity:1;color:var(--accent)}.stack-entry-header{align-items:center;gap:6px;margin-bottom:6px;display:flex}.toggle-btn{color:var(--accent);padding:0;font-size:10px;line-height:1}.stack-entry-label{letter-spacing:.05em;flex:1;font-size:11px}.remove-btn{color:var(--ink-dim);opacity:.6;padding:0;font-size:9px;transition:opacity .15s}.remove-btn:hover{opacity:1;color:#ff6b6b}.stack-params{padding-left:4px}.sidebar-footer{border-top:var(--border);align-items:center;gap:10px;padding:12px 16px;display:flex}.export-btn{letter-spacing:.1em;border:var(--border);border-color:var(--accent);color:var(--accent);background:#7ec8e30f;padding:7px 14px;font-size:11px;transition:background .15s}.export-btn:hover:not(:disabled){background:#7ec8e326}.export-btn:disabled{opacity:.3;cursor:default}.rendering-badge{letter-spacing:.15em;color:var(--ink-dim);font-size:9px;animation:1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}.editor-viewport{flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.dropzone{flex:1;justify-content:center;align-items:center;display:flex}.dropzone-inner{color:var(--ink-dim);border:1px dashed #c8e8ff26;flex-direction:column;align-items:center;gap:10px;padding:48px 64px;display:flex}.dropzone-icon{opacity:.3;font-size:32px}.dropzone-text{letter-spacing:.1em;font-size:11px}.dropzone-pick{letter-spacing:.1em;color:var(--accent);cursor:pointer;border-bottom:1px solid;padding-bottom:1px;font-size:11px}.canvas-wrap{flex:1;justify-content:center;align-items:center;display:flex;overflow:auto}.canvas-wrap.zoom-fit .preview-canvas{object-fit:contain;max-width:100%;max-height:100%;image-rendering:pixelated}.canvas-wrap.zoom-1to1 .preview-canvas{image-rendering:pixelated}.viewport-toolbar{border-top:var(--border);background:#0a0e14cc;align-items:center;gap:12px;padding:8px 12px;display:flex}.zoom-btn{letter-spacing:.1em;border:var(--border);color:var(--ink-dim);padding:3px 8px;font-size:10px;transition:color .15s,border-color .15s}.zoom-btn.active{color:var(--accent);border-color:var(--accent)}.img-info{color:var(--ink-dim);opacity:.6;flex:1;font-size:10px}.swap-btn{letter-spacing:.08em;color:var(--ink-dim);cursor:pointer;border:var(--border);padding:3px 8px;font-size:10px;transition:color .15s,border-color .15s}.swap-btn:hover{color:var(--accent);border-color:#7ec8e34d}.app-root{width:100vw;height:100vh;position:relative;overflow:hidden}.glitch-overlay{pointer-events:none;z-index:10;animation:.7s step-end forwards glitch-in;position:absolute;inset:0}@keyframes glitch-in{0%{background:0 0}10%{background:repeating-linear-gradient(0deg,#7ec8e326 0,#0000 2px 6px)}20%{clip-path:inset(0 0 70%);background:#0a0e14b3}30%{clip-path:inset(30% 0 40%);background:#0a0e14b3}40%{clip-path:inset(0);background:#0a0e14e6}55%{background:repeating-linear-gradient(0deg,#0a0e14f2 0 3px,#0000 3px 8px)}70%{background:#0a0e14f7}85%{background:#0a0e1499}to{background:0 0}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0e14;--ink:#c8e8ff;--ink-dim:#4a7a9b;--accent:#7ec8e3;--accent2:#a78bfa;--mono:"IBM Plex Mono", "Space Mono", monospace;--border:1px solid #c8e8ff1f}html,body{background:var(--bg);width:100%;height:100%;color:var(--ink);font-family:var(--mono);-webkit-font-smoothing:antialiased;font-size:13px;overflow:hidden}#app{width:100%;height:100%}button{font-family:var(--mono);cursor:pointer;color:inherit;background:0 0;border:none}
