:root{--ink: #1f2937;--muted: #6b7280;--line: #d1d5db;--bg: #f3f4f6;--accent: #2563eb;--amber: #f59e0b;--bad: #b91c1c;font-family:system-ui,sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,select,input,textarea{font:inherit}button,.button{padding:4px 10px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;display:inline-block}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.topnav{display:flex;gap:16px;align-items:center;padding:8px 16px;background:#fff;border-bottom:1px solid var(--line)}.topnav nav{display:flex;gap:4px}.topnav nav button.active{background:var(--accent);color:#fff;border-color:var(--accent)}main{padding:16px}.page{background:#fff;border:1px solid var(--line);border-radius:6px;padding:16px}.page.narrow{max-width:640px}.page label{display:block;margin:10px 0}.page label input:not([type=checkbox]),.page label select{display:block;width:100%;padding:4px 6px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grid{border-collapse:collapse;width:100%}.grid th,.grid td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left}.error{color:var(--bad)}.warn{color:#92400e}.hint{color:var(--muted);font-size:13px}.num{display:inline-flex;gap:4px;align-items:center;margin:2px 6px 2px 0}.num input{width:64px}.builder{display:grid;grid-template-columns:230px 1fr 260px;gap:12px}.topbar{grid-column:1 / -1;display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px}.topbar input.name{width:200px}.topbar input.qr{width:360px}.panel{background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px;overflow:auto;max-height:calc(100vh - 170px)}.panel h3{margin:8px 0 4px;font-size:13px;text-transform:uppercase;color:var(--muted)}.palette button{margin:2px}.field{padding:3px 4px;border-radius:3px;cursor:grab;font-size:13px}.field:hover{background:var(--bg)}.field code{color:var(--muted);font-size:11px}.stage{display:flex;flex-direction:column;gap:8px;min-width:0}.canvas-wrap{background:#e5e7eb;border:1px solid var(--line);border-radius:6px;padding:24px;overflow:auto;display:flex;justify-content:center;align-items:flex-start;min-height:320px}.label{position:relative;background:#fff;box-shadow:0 1px 4px #00000040;flex:none}.label .render,.label .render svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.label .overlay{position:absolute;top:0;right:0;bottom:0;left:0}.previewbar{background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px}.issues{margin:6px 0 0;padding-left:18px;font-size:13px}.issues .emptyField{color:#92400e}.issues .clipped,.issues .qrTooDense,.issues .qrTooLong,.issues .missingImage{color:var(--bad)}.props label{display:block;margin:6px 0;font-size:13px}.props textarea{width:100%}.status{grid-column:1 / -1;padding:8px;border-radius:6px}.status.ok{background:#ecfdf5}.status.error{background:#fef2f2}.thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.thumb{width:180px;background:#fff;box-shadow:0 1px 3px #0003}.thumb svg{width:100%;height:auto;display:block}.parts{max-height:220px;overflow:auto;border:1px solid var(--line);padding:6px}
