.vsm-body{ display:grid; grid-template-columns:280px 1fr 320px; min-height:0; }
.vsm-sidebar,.vsm-inspector{ min-height:0; overflow:auto; border-right:1px solid rgba(255,255,255,.08); }
.vsm-inspector{ border-right:0; border-left:1px solid rgba(255,255,255,.08); }
.vsm-stage-wrap{ min-height:0; display:flex; align-items:center; justify-content:center; background:linear-gradient(180deg,#090d14,#05070b); padding:16px; }
.vsm-stage{
  position:relative; width:min(100%,1100px); aspect-ratio:16/9; background:#0f141c; border-radius:18px; overflow:hidden;
  border:1px solid rgba(255,255,255,.08); box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);
}
.vsm-stage::before{ content:''; position:absolute; inset:5%; border:1px dashed rgba(255,255,255,.08); pointer-events:none; }
.vsm-source-list,.vsm-layout-list{ display:grid; gap:8px; padding:12px; }
.vsm-item{ padding:10px; border-radius:12px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); cursor:pointer; }
.vsm-item.active{ outline:2px solid rgba(245,158,11,.82); }
.vsm-box{
  position:absolute; border:2px solid rgba(255,255,255,.75); background:rgba(255,255,255,.08); color:#fff; border-radius:14px; overflow:hidden;
  box-shadow:0 10px 30px rgba(0,0,0,.28); user-select:none;
}
.vsm-box.active{ border-color:rgba(245,158,11,.9); box-shadow:0 0 0 2px rgba(245,158,11,.25), 0 10px 30px rgba(0,0,0,.28); }
.vsm-box-label{ position:absolute; left:8px; top:8px; z-index:2; font-size:12px; background:rgba(0,0,0,.45); border-radius:999px; padding:4px 8px; }
.vsm-box-fill{ position:absolute; inset:0; background:linear-gradient(135deg, rgba(255,255,255,.12), rgba(255,255,255,.04)); }
.vsm-handle{ position:absolute; width:14px; height:14px; right:0; bottom:0; cursor:nwse-resize; background:rgba(245,158,11,.95); border-top-left-radius:10px; }
.vsm-grid{ position:absolute; inset:0; background-image:linear-gradient(to right, rgba(255,255,255,.04) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,.04) 1px, transparent 1px); background-size:10% 10%; pointer-events:none; }
.vsm-inspector-inner{ display:grid; gap:10px; padding:12px; }
.vsm-field{ display:grid; gap:6px; }
.vsm-field input,.vsm-field select{ width:100%; background:rgba(255,255,255,.05); color:#fff; border:1px solid rgba(255,255,255,.1); border-radius:10px; padding:8px 10px; }
.vsm-mini{ font-size:12px; opacity:.72; }
