:root{--bg:#0e1116;--panel:#161b22;--panel-2:#1c222b;--line:#2a323d;--ink:#e6edf3;--muted:#8b949e;--accent:#2f9ee0;--accent-dim:#1b6fa3;--ok:#3fb950;--warn:#d29922;--err:#f85149;--radius:6px;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--sw-support-accent:var(--accent)}*{box-sizing:border-box}html,body,#root{margin:0}body{background:var(--bg);color:var(--ink);font:13px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow-x:hidden}button{font:inherit;color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:5px 10px}button:hover:not(:disabled){background:#232b36;border-color:#3a4552}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent-dim);border-color:var(--accent)}button.primary:hover:not(:disabled){background:var(--accent)}button.danger:hover:not(:disabled){border-color:var(--err);background:#5c1f1c}input,select,textarea{font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);background:#0d1117;width:100%;padding:4px 7px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}input[type=number]{font-family:var(--mono)}.app{grid-template-rows:auto 1fr;height:100vh;display:grid}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:18px;padding:8px 14px;display:flex}.brand{letter-spacing:.5px;white-space:nowrap;font-size:14px;font-weight:700}.brand span{color:var(--accent)}.topbar .name-input{width:200px}.field{white-space:nowrap;align-items:center;gap:6px;display:flex}.field label{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:11px}.topbar .field input,.topbar .field select{width:auto;min-width:62px}.spacer{flex:1}.main{grid-template-columns:290px 1fr 330px;min-height:0;display:grid}.side{background:var(--panel);border-right:1px solid var(--line);min-height:0;overflow-y:auto}.side.right{border-right:none;border-left:1px solid var(--line)}.stage{background:linear-gradient(#ffffff06 1px, transparent 1px) 0 0 / 20px 20px, linear-gradient(90deg, #ffffff06 1px, transparent 1px) 0 0 / 20px 20px, var(--bg);min-width:0;position:relative}.section{border-bottom:1px solid var(--line);padding:10px 12px}.section h2{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0 0 8px;font-size:11px;font-weight:600}.section h2 .count{color:var(--accent)}.row{align-items:center;gap:6px;display:flex}.row+.row{margin-top:6px}.row>.field{min-width:0}.grid2{grid-template-columns:1fr 1fr;align-items:end;gap:6px;display:grid}.grid3{grid-template-columns:1fr 1fr auto;align-items:end;gap:6px;display:grid}.side .field{min-width:0;display:block}.side .field label{margin-bottom:2px;display:block}.side .field input,.side .field select{width:100%;min-width:0}.side .row>.field{flex:1}.lib-filter{margin-bottom:8px}.lib-item{border-radius:var(--radius);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;width:100%;padding:7px 8px;display:block}.lib-item:hover{background:var(--panel-2)}.lib-item.active{border-color:var(--accent);background:#16303f}.lib-item .model{font-weight:600}.lib-item .maker{color:var(--muted);font-size:11px}.lib-item .figs{font-family:var(--mono);color:var(--muted);margin-top:2px;font-size:11px}.badge{text-transform:uppercase;letter-spacing:.5px;vertical-align:middle;border-radius:3px;padding:1px 5px;font-size:9px;display:inline-block}.badge.unverified{color:#e3b341;background:#4a3a10}.badge.verified{color:var(--ok);background:#12341c}.ports{border-collapse:collapse;width:100%;font-size:11px}.ports th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:3px 4px;font-weight:500}.ports td{font-family:var(--mono);padding:3px 4px}.ports tr.over td{color:var(--err)}.ports tr.tight td{color:var(--warn)}.ports .swatch{border-radius:2px;width:9px;height:9px;margin-right:5px;display:inline-block}.meter{background:#0d1117;border-radius:2px;height:4px;margin-top:3px;overflow:hidden}.meter>div{background:var(--accent);height:100%}.meter.tight>div{background:var(--warn)}.meter.over>div{background:var(--err)}.issue{border-bottom:1px solid var(--line);gap:7px;padding:6px 0;font-size:12px;display:flex}.issue:last-child{border-bottom:none}.issue .dot{border-radius:50%;flex:none;width:7px;height:7px;margin-top:5px}.issue.error .dot{background:var(--err)}.issue.warning .dot{background:var(--warn)}.issue.info .dot{background:var(--muted)}.stats{flex-wrap:wrap;gap:16px;display:flex}.stat .k{text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-size:10px}.stat .v{font-family:var(--mono);font-size:13px;font-weight:600}.overlay{border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0e1116d9;gap:6px;padding:5px;display:flex;position:absolute;bottom:10px;left:10px}.hint{color:var(--muted);border-radius:var(--radius);pointer-events:none;background:#0e1116cc;padding:4px 8px;font-size:11px;position:absolute;top:10px;left:10px}.empty{color:var(--muted);padding:6px 0;font-size:12px}.note{color:var(--muted);margin-top:6px;font-size:11px;line-height:1.4}.note.warn{color:var(--warn)}kbd{font-family:var(--mono);background:var(--panel-2);border:1px solid var(--line);border-bottom-width:2px;border-radius:3px;padding:0 4px;font-size:10px}
