:root{--bg: #0e0e0e;--bg-panel: #161616;--bg-input: #0a0a0a;--border: #2a2a2a;--border-q: #1f1f1f;--text: #efe7d6;--text-dim: #9a9a9a;--text-mut: #8a8a8a;--accent: #e8442e;--accent-hi: #ff5a40;--good: #7ec55b;--bad: #ff6b4f;--info: #5b9eff}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;font-family:ui-sans-serif,-apple-system,system-ui,Inter,sans-serif;-webkit-font-smoothing:antialiased}body{display:flex;flex-direction:column;background:var(--bg);color:var(--text)}.toolbar{display:flex;align-items:center;gap:24px;padding:10px 18px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.toolbar h1{font-size:14px;font-weight:600;margin:0;letter-spacing:.2px;color:var(--text)}.toolbar h1.brand{display:flex;align-items:center;gap:6px}.toolbar h1.brand .logo{display:block;width:28px;height:28px;border-radius:6px;flex-shrink:0}.toolbar h1.brand .brand-text{display:inline-flex;align-items:center;height:28px;line-height:1;transform:translateY(-2px)}.bbox-controls label{font-family:ui-monospace,Menlo,monospace;font-size:11px;letter-spacing:.4px;color:var(--text-dim);text-transform:uppercase;display:flex;align-items:center;gap:6px}.bbox-controls input{width:64px;padding:4px 8px;background:var(--bg-input);border:1px solid var(--border);color:var(--text);border-radius:2px;font-family:ui-monospace,Menlo,monospace;font-size:12px;text-align:right;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.bbox-controls input::-webkit-outer-spin-button,.bbox-controls input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bbox-controls input:focus{outline:none;border-color:var(--accent)}.history{display:flex;gap:8px}.track-config{display:flex;align-items:center;gap:12px}.actions{margin-left:auto;display:flex;gap:8px}.toolbar button{padding:6px 14px;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:2px;font-family:ui-monospace,Menlo,monospace;font-size:11px;letter-spacing:.4px;text-transform:uppercase;cursor:pointer}.toolbar button:hover:not(:disabled){border-color:var(--text-dim)}.toolbar button[aria-pressed=true]{background:var(--text);border-color:var(--text);color:var(--bg)}.toolbar button:disabled{color:var(--text-mut);border-color:var(--border-q);cursor:not-allowed;opacity:.5}.toolbar button.primary{background:var(--accent);border-color:var(--accent);color:#0a0a0a;font-weight:600}.toolbar button.primary:hover:not(:disabled){background:var(--accent-hi);border-color:var(--accent-hi)}.toolbar button.primary:disabled{background:transparent;border-color:var(--border-q);color:var(--text-mut);font-weight:400}.toolbar button.icon{padding:0;width:28px;height:28px;font-size:16px;line-height:1;text-transform:none;letter-spacing:0;display:inline-flex;align-items:center;justify-content:center}.toolbar button.icon-info{color:var(--info);font-weight:700}.toolbar button.icon-info:hover:not(:disabled){border-color:var(--info)}main{flex:1;display:flex;overflow:hidden}.canvas-wrap{flex:1;min-width:0;position:relative;display:flex}#designer-canvas{flex:1;min-width:0;background:radial-gradient(circle,rgba(60,60,60,.18) 1px,transparent 1.5px) 0 0 / 20px 20px,var(--bg);display:block}.status{flex:0 0 240px;padding:14px 16px;background:var(--bg-panel);border-left:1px solid var(--border);font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--text-dim);overflow-y:auto;letter-spacing:.2px}@media (min-width: 1500px){.status{flex:0 0 300px;padding:18px 22px}}@media (min-width: 1900px){.status{flex:0 0 360px}}.status>div{margin-bottom:4px;display:flex;justify-content:space-between;align-items:baseline}.status>#inventory-container{display:block}.status .label{color:var(--text-mut);text-transform:uppercase;letter-spacing:.6px;font-size:10px}.status .value{color:var(--text);font-weight:500}.status .value.closure-ok{color:var(--good)}.status .value.closure-warn{color:#e6c34c}.status .value.closure-bad{color:var(--bad);font-weight:700}.status .stat-slot{cursor:pointer;padding:2px 6px;margin-left:-6px;margin-right:-6px;border-radius:3px;transition:background-color 80ms ease}.status .stat-slot:hover{background:#ff2bd6}.status .stat-slot:hover .label,.status .stat-slot:hover .value{color:#fff}.floating-zoom{position:absolute;bottom:18px;right:18px;z-index:5;display:inline-flex;align-items:stretch;background:var(--bg-panel);border:1px solid var(--border);border-radius:3px;box-shadow:0 2px 8px #0006;overflow:hidden}.floating-zoom button{background:transparent;border:none;color:var(--text-dim);font-family:ui-monospace,Menlo,monospace;font-size:12px;cursor:pointer;padding:0;letter-spacing:.4px}.floating-zoom button:hover{color:var(--text);background:#ffffff0a}.floating-zoom button.icon{width:30px;height:30px;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.floating-zoom button.zoom-readout{min-width:56px;border-left:1px solid var(--border);border-right:1px solid var(--border);text-align:center;font-size:11px;text-transform:uppercase}.floating-zoom button.pan-toggle{border-right:1px solid var(--border);font-size:14px}.floating-zoom button.pan-toggle[aria-pressed=true]{background:var(--text);color:var(--bg)}.value-row{display:inline-flex;align-items:baseline;gap:10px}.reset-link{color:var(--bad);opacity:.7;text-decoration:none;cursor:pointer;font-size:10px;letter-spacing:.5px;text-transform:uppercase;transition:opacity .1s ease;display:inline-flex;align-items:baseline;gap:4px}.reset-link:hover{opacity:1;text-decoration:underline}.reset-link .reset-icon{font-size:11px;line-height:1}dialog.modal-help{max-width:480px;padding:24px 26px 18px}.help-list{list-style:none;margin:0 0 18px;padding:0;font-family:ui-monospace,Menlo,monospace;color:var(--text-mut)}.help-list li{display:grid;grid-template-columns:1fr auto;gap:16px;padding:7px 0;border-bottom:1px dotted var(--border-q);align-items:baseline}.help-list li:last-child{border-bottom:none}.help-list .effect{color:var(--text);font-family:ui-sans-serif,-apple-system,system-ui,sans-serif;font-size:12px;line-height:1.4}.help-list .gesture{color:var(--text-mut);font-size:11px;text-align:right}.help-list kbd{background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:2px;padding:2px 6px;font-family:ui-monospace,Menlo,monospace;font-size:10px}.inventory-section{margin-top:14px}.inventory-section:first-child{margin-top:8px}.inventory-section-title{font-size:9px;letter-spacing:.6px;text-transform:uppercase;color:var(--text-mut);margin-bottom:4px}.inventory-header{font-size:10px;letter-spacing:.6px;text-transform:uppercase;color:var(--text-mut);margin:18px 0 6px;display:flex;justify-content:space-between;align-items:baseline}table.inventory{width:100%;border-collapse:collapse;font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--text)}table.inventory th{text-align:right;padding:4px;font-weight:400;color:var(--text-mut);border-bottom:1px solid var(--border-q);text-transform:uppercase;font-size:9px;letter-spacing:.6px}table.inventory th.piece{text-align:left}table.inventory td{text-align:right;padding:2px 4px;vertical-align:middle}table.inventory td.piece{text-align:left;color:var(--text-dim)}table.inventory td.used{color:var(--text)}table.inventory tr.over td.used{color:var(--bad);font-weight:700}table.inventory td.remaining.ok{color:var(--good)}table.inventory td.remaining.over{color:var(--bad);font-weight:700}table.inventory td.available{color:var(--text-mut);padding:1px 0}table.inventory tr.empty td.used,table.inventory tr.empty td.remaining{color:var(--border)}table.inventory tr.empty td.piece{color:var(--text-mut)}.avail-input{width:100%;max-width:48px;padding:2px 4px;background:transparent;border:1px solid transparent;border-radius:2px;color:var(--text-mut);font-family:ui-monospace,Menlo,monospace;font-size:11px;text-align:right;-moz-appearance:textfield}.avail-input::-webkit-outer-spin-button,.avail-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.avail-input:hover{border-color:var(--border-q);background:var(--bg-input);color:var(--text)}.avail-input:focus{outline:none;border-color:var(--accent);background:var(--bg-input);color:var(--text)}dialog.modal{border:1px solid var(--border);background:var(--bg-panel);color:var(--text);border-radius:4px;padding:22px 24px 18px;max-width:360px;font-family:inherit;box-shadow:0 18px 60px #0009}dialog.modal::backdrop{background:#0009;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}dialog.modal h2{margin:0 0 10px;font-size:15px;font-weight:600;letter-spacing:.2px}dialog.modal p{margin:0 0 18px;color:var(--text-dim);font-size:12px;line-height:1.5}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.modal-actions button{padding:6px 14px;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:2px;font-family:ui-monospace,Menlo,monospace;font-size:11px;letter-spacing:.4px;text-transform:uppercase;cursor:pointer}.modal-actions button:hover{border-color:var(--text-dim)}.modal-actions button.primary{background:var(--accent);border-color:var(--accent);color:#0a0a0a;font-weight:600}.modal-actions button.primary:hover{background:var(--accent-hi);border-color:var(--accent-hi)}.inventory-header a{color:var(--text-mut);text-decoration:none;cursor:pointer;font-size:9px;letter-spacing:.4px}.inventory-header a:hover{color:var(--accent)}
