/* ===========================================================================
   vmlab.css — laboratórios com Linux de verdade (vmlab.js).
   A versão escura (vmlab-escuro.css) é GERADA por build/tema-escuro.js.
   =========================================================================== */
.wrap.largo{max-width:1440px}
.vml{font-size:.92rem}
.vml-barra{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:12px 14px;margin-bottom:14px;box-shadow:var(--shadow)}
.vml-ligar,.vml-recomecar,.vml-sortear{background:linear-gradient(135deg,#16a34a,#0d9488);color:#fff;border:none;border-radius:10px;
  padding:10px 18px;font:700 .95rem Inter,sans-serif;cursor:pointer}
.vml-recomecar{background:#f1f5f9;color:#0f172a;border:1px solid var(--line);font-weight:600;padding:8px 14px;font-size:.85rem}
.vml-ligar[disabled],.vml-recomecar[disabled],.vml-sortear[disabled]{opacity:.5;cursor:default}
.vml-prog{flex:0 0 140px;height:8px;background:#e2e8f0;border-radius:99px;overflow:hidden}
.vml-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,#16a34a,#0ea5e9);transition:width .3s}
.vml-status{flex:1 1 260px;color:#334155;font-size:.88rem}
.vml-grade{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:16px;align-items:start}
.vml-semrede .vml-grade{grid-template-columns:minmax(0,1fr) 400px}
@media(max-width:1100px){.vml-grade,.vml-semrede .vml-grade{grid-template-columns:1fr}}

/* ---- topologia ---- */
.vml-topo{background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px 10px 10px;margin-bottom:12px;box-shadow:var(--shadow)}
.vml-svg svg{width:100%;height:auto;display:block;max-height:280px}
.vml-fio{stroke:#64748b;stroke-width:3}
.vml-alvo{stroke:transparent;stroke-width:18;cursor:pointer}
.vml-cabo:hover .vml-fio{stroke:#0ea5e9;stroke-width:4}
.vml-cabo.off .vml-fio{stroke:#ef4444;stroke-dasharray:6 6}
.vml-tesoura{font-size:16px;text-anchor:middle;fill:#ef4444}
.vml-no rect{fill:#f8fafc;stroke:#94a3b8;stroke-width:1.5}
.vml-no.sw rect{fill:#e0f2fe;stroke:#0284c7}
.vml-no.maq{cursor:pointer}
.vml-no.maq.pronta rect{fill:#f0fdf4;stroke:#16a34a}
.vml-no.maq:hover rect{stroke-width:2.5}
.vml-nome{font:700 13px Inter,sans-serif;text-anchor:middle;fill:#0f172a}
.vml-ip{font:600 11px ui-monospace,Menlo,Consolas,monospace;text-anchor:middle;fill:#475569}
.vml-topoleg{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:.8rem;color:#475569;padding:2px 4px 0}
.vml-hubbt{background:#fff7ed;color:#9a3412;border:1px solid #fdba74;border-radius:8px;padding:4px 10px;font:600 .78rem Inter,sans-serif;cursor:pointer}
.vml-tabmac{flex-basis:100%}
.vml-tabmac summary{cursor:pointer;font-weight:600;color:#0369a1}
.vml-tabmac table{border-collapse:collapse;margin-top:6px;font-size:.78rem}
.vml-tabmac th,.vml-tabmac td{border:1px solid var(--line);padding:3px 8px;text-align:left}
.vml-tabmac th{background:#f1f5f9}
.vml-tabmac p{margin:6px 0 0}

/* ---- abas e terminais ---- */
.vml-abas{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.vml-aba,.vml-ladobt{position:relative;background:#f1f5f9;color:#0f172a;border:1px solid var(--line);border-radius:9px;
  padding:7px 13px;font:600 .85rem Inter,sans-serif;cursor:pointer;display:flex;align-items:center;gap:6px}
.vml-aba.on,.vml-ladobt.on{background:#0f172a;color:#fff;border-color:#0f172a}
.vml-ladobt{margin-left:auto}
.vml-led{width:9px;height:9px;border-radius:50%;background:#94a3b8;display:inline-block}
.vml-aba.pronta .vml-led{background:#22c55e}
.vml-aba.erro .vml-led{background:#ef4444}
.vml-nova{display:none;position:absolute;top:-4px;right:-4px;width:10px;height:10px;border-radius:50%;background:#f59e0b}
.vml-aba.tem .vml-nova{display:block}
.vml-terms{position:relative}
.vml-terms.lado{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media(max-width:800px){.vml-terms.lado{grid-template-columns:1fr}}
.vml-term{background:#0f172a;border-radius:12px;padding:8px 10px 10px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.vml-term.oculto{position:absolute;left:-10000px;top:0;width:100%;visibility:hidden}
.vml-tcab{display:flex;justify-content:space-between;color:#e2e8f0;font-size:.8rem;margin:0 2px 6px}
.vml-tinfo{color:#94a3b8}
.vml-tela{background:#000;border-radius:7px;padding:5px;min-height:200px;overflow:hidden}
.vml-off{color:#94a3b8;font:14px ui-monospace,Menlo,Consolas,monospace;padding:14px}

/* ---- captura ---- */
.vml-snif{background:#fff;border:1px solid var(--line);border-radius:14px;margin-top:12px;box-shadow:var(--shadow);overflow:hidden}
.vml-snifcab{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:9px 12px;border-bottom:1px solid var(--line);background:#f8fafc}
.vml-snifn{color:#64748b;font-size:.8rem}
.vml-filtros{display:flex;flex-wrap:wrap;gap:4px;margin-left:auto}
.vml-filtros button,.vml-pausa,.vml-limpa{background:#fff;border:1px solid var(--line);border-radius:7px;padding:3px 9px;font:600 .74rem Inter,sans-serif;color:#334155;cursor:pointer}
.vml-filtros button.on{background:#0f172a;color:#fff;border-color:#0f172a}
.vml-sniftab{max-height:300px;overflow:auto}
.vml-sniftab table{width:100%;border-collapse:collapse;font-size:.78rem}
.vml-sniftab th{position:sticky;top:0;background:#f1f5f9;text-align:left;padding:5px 8px;font-size:.72rem;color:#475569;z-index:1}
.vml-sniftab td{padding:4px 8px;border-top:1px solid #eef2f7;vertical-align:top}
.vml-q{cursor:pointer}
.vml-q:hover,.vml-q.aberto{background:#f0f9ff}
.vml-q td:first-child,.vml-q td:nth-child(2){color:#64748b;white-space:nowrap}
.vml-q td:nth-child(3){white-space:nowrap}
.vml-q small{color:#64748b}
.vml-proto{display:inline-block;border-radius:5px;padding:0 6px;font:700 .7rem ui-monospace,Menlo,Consolas,monospace;background:#e2e8f0;color:#334155}
.p-ARP .vml-proto{background:#fef3c7;color:#92400e}
.p-ICMP .vml-proto{background:#dbeafe;color:#1e40af}
.p-TCP .vml-proto,.p-HTTP .vml-proto{background:#ede9fe;color:#5b21b6}
.p-UDP .vml-proto{background:#d1fae5;color:#065f46}
.p-DHCP .vml-proto{background:#ccfbf1;color:#115e59}
.p-DNS .vml-proto{background:#fce7f3;color:#9d174d}
.vml-snifvazio{margin:0;padding:14px;color:#64748b;font-size:.85rem}
.vml-conf{display:block;padding:6px 12px 9px;font-size:.75rem;color:#64748b;border-top:1px solid var(--line)}
.vml-det td{background:#f8fafc;padding:8px 10px 10px}
.vml-camadas{display:flex;flex-wrap:wrap;gap:8px}
.vml-caminho{flex-basis:100%;margin:0 0 2px;font-size:.76rem;color:#475569}
.vml-camada{flex:1 1 200px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 9px}
.vml-camada b,.vml-hex b{font-size:.76rem;color:#0f172a}
.vml-camada dl{display:grid;grid-template-columns:auto 1fr;gap:1px 10px;margin:4px 0 0;font-size:.74rem}
.vml-camada dt{color:#64748b}
.vml-camada dd{margin:0;font-family:ui-monospace,Menlo,Consolas,monospace;word-break:break-all;color:#0f172a}
.vml-hex{flex-basis:100%;font-size:.74rem;color:#64748b}
.vml-hex code{display:block;white-space:pre;font:.72rem ui-monospace,Menlo,Consolas,monospace;color:#334155;margin-top:3px;overflow-x:auto}

/* ---- roteiro e consertar ---- */
.vml-lado{position:sticky;top:72px;max-height:calc(100vh - 86px);overflow:auto;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:12px;box-shadow:var(--shadow)}
@media(max-width:1100px){.vml-lado{position:static;max-height:none}}
.vml-modos{display:flex;gap:6px;margin-bottom:10px}
.vml-modos button{flex:1;background:#f1f5f9;border:1px solid var(--line);border-radius:9px;padding:7px;font:700 .85rem Inter,sans-serif;color:#334155;cursor:pointer}
.vml-modos button.on{background:#0f172a;color:#fff;border-color:#0f172a}
.vml-rcab{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px;margin-bottom:10px}
.vml-rcab b{font-size:.98rem;color:#0f172a}
.vml-rcab span{font-size:.8rem;color:#64748b;font-weight:600}
.vml-rbarra{flex-basis:100%;height:6px;background:#e2e8f0;border-radius:99px;overflow:hidden}
.vml-rbarra i{display:block;height:100%;background:linear-gradient(90deg,#16a34a,#0ea5e9)}
.vml-parabens{background:#f0fdf4;border:1px solid #86efac;border-radius:10px;padding:9px 11px;margin-bottom:10px;font-size:.86rem;color:#14532d}
.vml-passo{border:1px solid var(--line);border-radius:11px;margin-bottom:7px;overflow:hidden}
.vml-passo.atual{border-color:#0ea5e9;box-shadow:0 0 0 2px rgba(14,165,233,.15)}
.vml-passo.feito{border-color:#86efac}
.vml-ptit{width:100%;display:flex;align-items:flex-start;gap:9px;background:#f8fafc;border:none;padding:9px 11px;text-align:left;
  font:600 .87rem Inter,sans-serif;color:#0f172a;cursor:pointer}
.vml-passo.feito .vml-ptit{background:#f0fdf4}
.vml-passo.depois .vml-ptit{color:#64748b}
.vml-ptit small{color:#64748b;font-weight:500}
.vml-pn{flex:0 0 22px;height:22px;border-radius:50%;background:#e2e8f0;color:#334155;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800}
.vml-passo.atual .vml-pn{background:#0ea5e9;color:#fff}
.vml-passo.feito .vml-pn{background:#16a34a;color:#fff}
.vml-pcorpo{padding:4px 12px 11px;font-size:.86rem;line-height:1.55;color:#334155}
.vml-pcorpo p{margin:7px 0}
.vml-pcorpo code,.vml-ctxt code,.vml-sintoma code,.vml-revela code,.vml-dicaon code,.vml-pok code{background:#f1f5f9;border-radius:4px;padding:0 4px;font-size:.82em;color:#0f172a}
.vml-cmds{display:flex;flex-direction:column;gap:5px;margin:9px 0}
.vml-cmd{text-align:left;background:#0f172a;color:#a5f3fc;border:1px solid #1e293b;border-radius:8px;padding:6px 10px;
  font:600 .8rem ui-monospace,Menlo,Consolas,monospace;cursor:pointer;word-break:break-all}
.vml-cmd:hover{background:#1e293b}
.vml-cmd small{color:#94a3b8;font-family:Inter,sans-serif;font-weight:600}
.vml-pmsg{font-size:.8rem;color:#64748b;margin-top:6px}
.vml-pok{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:9px;padding:8px 10px;margin-top:8px;font-size:.84rem;color:#14532d}
.vml-dica{margin-top:7px;font-size:.84rem}
.vml-dica summary{cursor:pointer;color:#b45309;font-weight:600}
.vml-ctxt{font-size:.86rem;color:#334155;margin:0 0 10px}
.vml-cobs{font-size:.76rem;color:#64748b;margin:6px 0 0}
.vml-sintoma{background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:9px 11px;font-size:.87rem;color:#7f1d1d;margin-bottom:8px}
.vml-dicaon{background:#fffbeb;border:1px solid #fde68a;border-radius:9px;padding:7px 10px;font-size:.84rem;color:#78350f;margin-bottom:6px}
.vml-revela{background:#eff6ff;border:1px solid #bfdbfe;border-radius:9px;padding:7px 10px;font-size:.84rem;color:#1e3a8a;margin-bottom:6px}
.vml-cbts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.vml-maisdica,.vml-revelar{background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 11px;font:600 .8rem Inter,sans-serif;color:#334155;cursor:pointer}
.vml-erro{color:#b91c1c}
.vml-prox{margin-top:8px;background:#0ea5e9;color:#fff;border:none;border-radius:8px;padding:7px 14px;font:700 .84rem Inter,sans-serif;cursor:pointer}
