:root{--bg:#0b0b0f;--panel:#16161d;--panel-2:#1e1e28;--line:#2a2a36;--text:#e9e9ef;--muted:#9a9aad;--accent:#ff3b30;--ok:#34c759;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:radial-gradient(1200px 600px at 50% -10%, #1a1a24, var(--bg));color:var(--text);min-height:100vh;margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}.app-header{text-align:center;padding:2rem 1rem .5rem}.app-header h1{letter-spacing:.08em;margin:0;font-size:2.4rem}.app-header p{color:var(--muted);margin:.4rem 0 0}.layout{flex-direction:column;gap:1.2rem;max-width:760px;margin:0 auto;padding:1rem;display:flex}.preview-wrap{border:1px solid var(--line);background:#000;border-radius:14px;flex-direction:column;align-items:center;gap:.6rem;padding:1rem;display:flex;overflow-x:auto}.cycle-toggle{color:var(--muted);align-items:center;gap:.4rem;font-size:.8rem;display:flex}.led-preview{image-rendering:pixelated;max-width:100%}.editor,.connect{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:1rem}.width-row{color:var(--muted);align-items:center;gap:.5rem;margin-bottom:.8rem;display:flex}.tabs{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.tab,.width-btn,.seg,.tool-btn,.conn-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:.4rem .7rem;font-size:.85rem}.tab.active,.width-btn.active,.seg.active{background:var(--accent);border-color:var(--accent);color:#fff}.tab.add{color:var(--muted);border-style:dashed}.controls{flex-direction:column;gap:.8rem;display:flex}.field{flex-direction:column;gap:.3rem;display:flex}.field>span{color:var(--muted);font-size:.8rem}.field.checkbox{flex-direction:row;align-items:center;gap:.5rem}.field input[type=text],.field select{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:.5rem;font-size:1rem}.seg-group{gap:.4rem;display:flex}.draw-grid{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;align-items:flex-start;gap:.8rem;padding:1rem;display:flex}.draw-tools{flex-wrap:wrap;gap:.4rem;display:flex}.draw-canvas{image-rendering:pixelated;cursor:crosshair;touch-action:none;background:#000;border-radius:8px;max-width:100%}.tool-btn.danger,.tool-btn.danger:hover{border-color:var(--accent);color:var(--accent)}.connect-row{flex-wrap:wrap;gap:.5rem;margin-bottom:.6rem;display:flex}.conn-btn.primary{background:var(--ok);border-color:var(--ok);color:#062;font-weight:600}.conn-btn:disabled{opacity:.4;cursor:not-allowed}.status{margin:.3rem 0;font-size:.9rem}.status[data-kind=ok]{color:var(--ok)}.status[data-kind=error]{color:var(--accent)}.status[data-kind=muted]{color:var(--muted)}.status a{color:var(--ok);text-decoration:underline}.progress{background:var(--panel-2);border-radius:3px;height:6px;overflow:hidden}.progress>span{background:var(--ok);width:0;height:100%;transition:width .1s linear;display:block}.app-footer{text-align:center;color:var(--muted);max-width:600px;margin:0 auto;padding:1rem;font-size:.8rem}.library{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:1rem}.library h2{color:var(--muted);margin:0 0 .6rem;font-size:1rem;font-weight:600}.lib-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.lib-name{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:8px;flex:160px;padding:.5rem}.lib-list{flex-direction:column;gap:.4rem;margin-top:.6rem;display:flex}.lib-item{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;align-items:center;gap:.5rem;padding:.4rem .6rem;display:flex}.lib-meta{flex:1;font-size:.85rem}.import-overlay{z-index:50;background:#000000a8;justify-content:center;align-items:center;padding:1rem;display:none;position:fixed;inset:0}.import-overlay.open{display:flex}.import-dialog{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;align-items:center;gap:.8rem;width:100%;max-width:720px;max-height:92vh;padding:1rem;display:flex;overflow-y:auto}.import-crop{cursor:grab;touch-action:none;background:#000;border-radius:8px;max-width:100%}.import-crop:active{cursor:grabbing}.import-preview{image-rendering:pixelated;background:#000;border-radius:6px;max-width:100%}.import-controls{flex-wrap:wrap;align-items:flex-end;gap:.8rem;width:100%;display:flex}.import-controls .field{flex:140px}.import-controls .field.checkbox{flex:none;align-items:center}.import-controls select,.import-controls input[type=number]{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:.4rem}.import-actions{flex:100%;justify-content:flex-end;gap:.5rem;display:flex}
