.lab-intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.lab-intro h1{font-size:28px;margin:5px 0}.lab-intro p{color:var(--muted)}.lab-source,.lab-editor,.lab-extend,.lab-sharing{margin-bottom:20px;min-width:0}.lab-source summary,.lab-extend summary{font-weight:650;cursor:pointer;padding:6px 0}.lab-source-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:32px;margin-top:20px}.lab-source form,.lab-extend form{display:grid;gap:16px}.lab-topic{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:end;margin:10px 0}.lab-editor-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.6fr);gap:20px;padding:20px}.lab-tools{display:flex;gap:8px;flex-wrap:wrap;padding:0 20px 14px}.lab-tools [aria-pressed=true]{background:var(--green);color:var(--style-surface);border-color:var(--green)}.lab-status-row{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--style-soft);padding:12px 20px;font-size:13px}.lab-status-row p{margin:0}.lab-history{display:flex;gap:6px;flex-shrink:0}.lab-history .btn{font-size:12px;padding:7px 10px}.lab-map{height:560px;position:relative;background:var(--style-surface);overflow:hidden}.lab-map .graph-canvas{height:100%;aspect-ratio:auto;min-height:0}.lab-map .network-svg{width:100%;height:100%;max-height:none;min-height:0;touch-action:none}.lab-map-controls{position:absolute;bottom:12px;right:12px;display:flex;gap:6px}.lab-map-controls button{min-width:42px;min-height:42px;padding:8px;background:var(--style-surface)}.lab-map[data-tool=add-node] .network-svg{cursor:crosshair}.lab-map[data-tool^=delete] .graph-node,.lab-map[data-tool=add-edge] .graph-node{cursor:pointer}.lab-map .graph-edge-hit{stroke:transparent;stroke-width:18;pointer-events:stroke;fill:none}.lab-map[data-tool=delete-edge] .graph-edge-hit{cursor:pointer}.lab-map .graph-node.lab-simulated .node-ring{stroke-dasharray:4 3}.lab-map .graph-node.lab-origin-node .node-ring{stroke:var(--style-amber);stroke-width:5}.lab-editor-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:12px 20px;color:var(--muted);font-size:12px}.lab-rename{display:flex;gap:16px;align-items:end;padding:12px 20px;border-top:1px solid var(--line)}.lab-rename .field{flex:1}.lab-error{color:var(--style-danger)}.lab-sharing .notice{margin-top:18px}.lab-editor:fullscreen{display:flex;flex-direction:column;background:var(--style-surface);border-radius:0;width:100%;height:100%;overflow:auto}.lab-editor:fullscreen .lab-map{flex:1;min-height:150px}.lab-editor:fullscreen .lab-rename{display:none}
@media(max-width:760px){.lab-intro{align-items:start;flex-direction:column;gap:8px}.lab-intro h1{font-size:23px}.lab-source-grid{grid-template-columns:1fr;gap:24px}.lab-topic{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.lab-topic>.field:first-child,.lab-topic>strong{grid-column:1/-1}.lab-editor-heading{padding:14px;grid-template-columns:1fr;gap:12px}.lab-tools{padding:0 12px 12px;gap:6px}.lab-tools .btn{font-size:12px;min-height:42px;padding:8px 10px}.lab-status-row{padding:10px 12px;flex-direction:column;align-items:start;gap:8px}.lab-history{flex-wrap:wrap}.lab-map{height:54svh;min-height:320px}.lab-editor-footer{padding:12px}.lab-rename{padding:12px;flex-wrap:wrap}.lab-source input,.lab-source select,.lab-extend input,.lab-editor input,.lab-editor select{min-width:0;font-size:16px;min-height:44px}.lab-source .checkbox-line input{min-height:22px;width:22px}.lab-sharing .form-actions{display:flex;flex-wrap:wrap;gap:10px}.lab-sharing .form-actions>.btn{flex:1 1 170px}.lab-editor:fullscreen .lab-editor-heading{grid-template-columns:1fr 1fr;padding:8px}.lab-editor:fullscreen .lab-status-row{padding:6px 10px}.lab-editor:fullscreen .lab-map{height:auto;min-height:0}.lab-editor:fullscreen .lab-editor-footer{font-size:11px}}

.lab-map .network-svg{user-select:none;-webkit-user-select:none}.lab-map .node-name{display:block;pointer-events:none}
.lab-identity{flex-wrap:wrap}.lab-identity .field{flex:1 1 220px;min-width:0}.lab-identity>.btn{flex-shrink:0}
