/* 实验公共样式：所有实验模块共用的面板、工具栏、统计、日志等结构。各实验的专属样式在 assets/css/labs/<id>.css */
.lab-host{position:relative}
.lab-loading{padding:48px;text-align:center;color:var(--faint);font-size:12px;letter-spacing:.14em}
.lab{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:420px}
.lab.stack{grid-template-columns:1fr}
.lab-controls{padding:20px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:18px;background:var(--panel-2)}
.lab.stack .lab-controls{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;flex-wrap:wrap;align-items:flex-end}
.lab-controls h5{margin:0;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;color:var(--faint);font-weight:500;text-transform:uppercase}
.lab-actions{display:flex;flex-wrap:wrap;gap:8px}
.lab-actions .btn-sm svg{width:14px;height:14px}
.lab-stage{position:relative;padding:20px;min-width:0;display:flex;flex-direction:column;gap:16px}
.lab-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}
.lab-stat{padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel)}
.lab-stat b{display:block;font-family:var(--f-mono);font-size:20px;color:var(--text);line-height:1.3;transition:color .3s}
.lab-stat span{font-size:11px;color:var(--muted)}
.lab-stat.ok b{color:var(--ok)}.lab-stat.warn b{color:var(--warn)}.lab-stat.danger b{color:var(--danger)}.lab-stat.accent b{color:var(--accent)}
.lab-log{height:150px;overflow:auto;border-radius:10px;border:1px solid var(--line);background:var(--code-bg);padding:10px 12px;font-family:var(--f-mono);font-size:11.5px;line-height:1.75;color:var(--muted)}
.lab-log div{animation:logIn .3s var(--ease)}
.lab-log .ok{color:var(--ok)}.lab-log .warn{color:var(--warn)}.lab-log .danger{color:var(--danger)}.lab-log .info{color:var(--c-cloud)}.lab-log .accent{color:var(--accent)}
@keyframes logIn{from{opacity:0;transform:translateX(-6px)}}
.lab-note{font-size:12.5px;line-height:1.8;color:var(--muted);padding:12px 14px;border-radius:10px;border:1px dashed var(--line-2)}
.lab-note b{color:var(--text)}
.lab-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:11.5px;color:var(--muted)}
.lab-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.lab-canvas{width:100%;height:260px;display:block;border-radius:10px;border:1px solid var(--line);background:var(--code-bg)}
@media (max-width:860px){
  .lab{grid-template-columns:1fr}
  .lab-controls{border-right:0;border-bottom:1px solid var(--line)}
}
