:root{--bg:#15171a;--panel:#1f2226;--panel-2:#272b30;--line:#343940;--text:#e6e8eb;--muted:#9aa1ab;--accent:#4da3ff;--ok:#4cc38a;--warn:#ff6b5b;--note:#f0b44c;color:var(--text);background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button,select,input{font:inherit;color:inherit}button{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 10px}button:hover{background:#2e3339;border-color:#4a5058}button.active{background:var(--accent);border-color:var(--accent);color:#fff}button.primary{color:#fff;background:#2b6cb0;border-color:#2b6cb0}button.primary:hover{background:#3182ce}button.danger:hover{border-color:var(--warn);color:var(--warn)}button.icon{width:26px;height:26px;padding:0;font-size:16px;line-height:1}select,input[type=text]{border:1px solid var(--line);background:#121417;border-radius:5px;padding:4px 6px}input[type=color]{border:1px solid var(--line);background:0 0;border-radius:4px;width:44px;height:24px;padding:0}.app{flex-direction:column;height:100%;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:16px;padding:8px 14px;display:flex}.brand{letter-spacing:.02em;font-weight:700}.tabs{gap:4px;display:flex}.tabs button{padding:6px 14px}.tools{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.seg{display:flex}.seg button{border-radius:0;margin-left:-1px}.seg button:first-child{border-radius:6px 0 0 6px}.seg button:last-child{border-radius:0 6px 6px 0}label.inline{color:var(--muted);align-items:center;gap:6px;display:flex}.main{flex:1;grid-template-columns:280px 1fr 310px;min-height:0;display:grid}.main.single{justify-content:center;align-items:center;display:flex}.panel{background:var(--panel);min-height:0;overflow-y:auto}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line)}.viewport{min-width:0;min-height:0;position:relative}.viewport canvas{display:block}.section{border-bottom:1px solid var(--line)}.section>summary{cursor:pointer;-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:10px 14px;font-size:11px;font-weight:600}.section-body{flex-direction:column;gap:6px;padding:0 14px 14px;display:flex}.field{justify-content:space-between;align-items:center;gap:8px;display:flex}.field>span{color:var(--muted);flex:1}.field select{max-width:160px}.num{align-items:center;gap:4px;display:flex}.num input{text-align:right;width:76px}.num em,.slider em{color:var(--muted);min-width:18px;font-size:11px;font-style:normal}.slider input{flex:1.3;min-width:0}.slider em{text-align:right;min-width:38px}.check{cursor:pointer;align-items:center;gap:8px;display:flex}.hint{color:var(--muted);margin:6px 0 0;font-size:12px}.hint.pad{padding:14px}.muted{color:var(--muted);margin:0}.warn{color:var(--warn);margin:0}.note{color:var(--note);margin:0;font-size:12px}.buttons{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.badge{background:var(--line);color:var(--text);border-radius:10px;margin-left:4px;padding:1px 7px;font-size:11px;display:inline-block}.badge.ok{background:var(--ok);color:#0b2a1c}.badge.warn{background:var(--warn);color:#fff}.list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.list li{cursor:pointer;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}.list li:hover,.list li.hover{background:var(--panel-2)}.list li.active{background:#23415f}.list li.group{border-left:3px solid #ffb347;font-weight:600}.list li.indent{padding-left:22px;font-size:.95em}.list li.picked{outline:1px solid #7fd1ff}.list li.stashed{opacity:.5;cursor:grab;font-style:italic}.pieces li{justify-content:flex-start}.piece-info{flex-direction:column;flex:1;min-width:0;display:flex}.piece-info small{color:var(--muted)}.inspector{flex-direction:column;gap:6px;display:flex}.inspector h3{margin:0;font-size:15px}.dims{grid-template-columns:auto 1fr;gap:3px 10px;margin:8px 0 0;font-size:12px;display:grid}.dims dt{color:var(--muted)}.dims dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.empty-hint{border:1px solid var(--line);pointer-events:none;text-align:center;background:#141619d9;border-radius:8px;padding:14px 18px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.empty-hint.static{position:static;transform:none}.viewport-legend{color:var(--muted);pointer-events:none;background:#141619b3;border-radius:4px;padding:3px 8px;font-size:11px;position:absolute;bottom:8px;left:10px}.explode-bar{border:1px solid var(--line);background:#1f2226eb;border-radius:8px;width:min(420px,80%);padding:8px 12px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--accent);pointer-events:none;background:#23415f;border-radius:8px;padding:8px 16px;animation:2.5s forwards fade;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@keyframes fade{0%,80%{opacity:1}to{opacity:0}}.modal-backdrop{z-index:10;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;width:min(1000px,94vw);max-height:90vh;padding:18px 22px;overflow:auto}.modal header{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal h2{margin:0}.modal p{color:var(--muted);line-height:1.5}.sheet table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.sheet th,.sheet td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:6px 8px}.sheet th{color:var(--muted);font-size:12px;font-weight:600}.sheet td small{color:var(--muted);display:block}@media print{body *{visibility:hidden}.sheet,.sheet *{visibility:visible}.modal-backdrop{background:0 0;position:static}.sheet{color:#000;background:#fff;border:none;width:100%;max-height:none;position:absolute;inset:0}.sheet p,.sheet th,.sheet td small{color:#333}.sheet th,.sheet td{border-color:#bbb}.badge{color:#000;background:0 0;border:1px solid #999}.no-print{display:none!important}}.field.col{flex-direction:column;align-items:stretch}.field textarea{box-sizing:border-box;resize:vertical;width:100%;font:inherit;background:var(--panel-2);color:inherit;border:1px solid var(--line);border-radius:6px;padding:6px}.ellipsis{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.swatch{border:1px solid var(--line);vertical-align:middle;border-radius:3px;width:12px;height:12px;margin-left:4px;display:inline-block}.role-color{white-space:nowrap;margin-right:8px}.colors{margin-top:8px}
