/* ===========================================================================
   aula.css — material das aulas (estende o design system de disciplinas.css)
   Prof. Me. Luiz Ricardo Mantovani da Silva
   =========================================================================== */
:root{
  --ok:#10b981; --warn:#f59e0b; --bad:#ef4444; --info:#0ea5e9;
  --code-bg:#0f172a; --code-ink:#e2e8f0;
}

/* ---- progresso de leitura ---- */
.readbar{position:fixed;top:0;left:0;height:3px;width:0;z-index:60;
  background:linear-gradient(90deg,#60a5fa,#a78bfa);transition:width .1s}

/* ---- hero da aula ---- */
.hero .weekbadge{display:inline-block;background:rgba(255,255,255,.16);
  border:1px solid rgba(255,255,255,.28);color:#fff;font-weight:700;
  padding:.3rem .8rem;border-radius:999px;font-size:.8rem;margin-bottom:14px}
.hero .meta{display:flex;flex-wrap:wrap;gap:18px;margin-top:22px;font-size:.9rem;color:#dbeafe}
.hero .meta b{color:#fff}

/* ---- barra de navegação entre aulas ---- */
.lessonnav{display:flex;justify-content:space-between;gap:12px;margin:30px 0 0}
.lessonnav a{flex:1;background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:14px 18px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);
  transition:.2s;display:flex;flex-direction:column;gap:2px}
.lessonnav a:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--blue)}
.lessonnav a.next{text-align:right;align-items:flex-end}
.lessonnav a.disabled{opacity:.4;pointer-events:none}
.lessonnav small{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.5px}
.lessonnav span{font-weight:700;font-size:.95rem}

/* ---- índice lateral (objetivos) ---- */
.goals{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-top:6px}
.goal{display:flex;gap:12px;align-items:flex-start;background:#f8faff;border:1px solid var(--line);
  border-radius:12px;padding:14px}
.goal .gi{flex-shrink:0;width:30px;height:30px;border-radius:9px;
  background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.85rem}
.goal p{font-size:.9rem;margin:0;color:var(--body)}

/* ---- blocos de conteúdo ---- */
.lesson h3{font-family:var(--serif);color:var(--ink);font-size:1.3rem;margin:26px 0 10px}
.lesson h4{color:var(--ink);font-size:1.02rem;margin:18px 0 8px}
.lesson p{margin-bottom:12px}
.lesson ul,.lesson ol{margin:0 0 14px 22px}
.lesson li{margin-bottom:7px}
.lesson strong{color:var(--ink)}
.lesson .lead-in{font-size:1.05rem;color:var(--body)}

/* destaque/callouts */
.callout{border-radius:12px;padding:16px 18px;margin:16px 0;font-size:.95rem;
  display:flex;gap:12px;align-items:flex-start;border:1px solid}
.callout .ci{font-size:1.2rem;line-height:1.2}
.callout.tip{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}
.callout.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
.callout.info{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}
.callout.key{background:#faf5ff;border-color:#e9d5ff;color:#6b21a8}
.callout b{color:inherit}

/* definição */
.defbox{border-left:4px solid var(--blue);background:#f8faff;border-radius:0 12px 12px 0;
  padding:14px 18px;margin:16px 0}
.defbox .term{font-weight:800;color:var(--ink)}

/* código */
.code{background:var(--code-bg);color:var(--code-ink);border-radius:12px;padding:16px 18px;
  white-space:pre-wrap;
  margin:14px 0;overflow:auto;font-family:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;
  font-size:.86rem;line-height:1.6;position:relative}
.code .cm{color:#64748b}.code .kw{color:#c4b5fd}.code .st{color:#86efac}
.code .nm{color:#fca5a5}.code .fn{color:#93c5fd}
.code .copy{position:absolute;top:8px;right:8px;background:rgba(255,255,255,.1);color:#cbd5e1;
  border:none;border-radius:7px;padding:.3rem .6rem;font-size:.72rem;cursor:pointer;font-family:var(--sans)}
.code .copy:hover{background:rgba(255,255,255,.2)}

/* tabela genérica */
.tbl{width:100%;border-collapse:collapse;font-size:.92rem;margin:14px 0;
  border:1px solid var(--line);border-radius:12px;overflow:hidden}
.tbl th,.tbl td{padding:10px 13px;text-align:left;border-bottom:1px solid var(--line)}
.tbl thead th{background:#f1f5f9;color:var(--ink);font-weight:700;font-size:.82rem}
.tbl tbody tr:nth-child(even){background:#fafbff}
.tbl td code{background:#eef2ff;padding:.1rem .4rem;border-radius:5px;font-size:.85rem}

/* diagrama de fases / fluxo */
.flow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0}
.flow .step{background:linear-gradient(135deg,#eff6ff,#faf5ff);border:1px solid var(--line);
  border-radius:10px;padding:10px 14px;font-weight:600;color:var(--ink);font-size:.88rem;text-align:center}
.flow .arr{color:var(--purple);font-weight:800}

/* analogia */
.analogy{background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:14px;padding:18px 20px;
  margin:16px 0;color:#78350f}
.analogy .at{font-weight:800;display:flex;gap:8px;align-items:center;margin-bottom:6px}

/* flashcards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:16px 0}
.flip{perspective:1000px;height:150px;cursor:pointer}
.flip-in{position:relative;width:100%;height:100%;transition:transform .5s;transform-style:preserve-3d}
.flip.on .flip-in{transform:rotateY(180deg)}
.flip-f,.flip-b{position:absolute;inset:0;backface-visibility:hidden;border-radius:14px;
  display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;
  box-shadow:var(--shadow)}
.flip-f{background:#fff;border:1px solid var(--line);font-weight:700;color:var(--ink)}
.flip-b{background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;
  transform:rotateY(180deg);font-size:.9rem;line-height:1.5}
.flip .hint{position:absolute;bottom:8px;right:12px;font-size:.68rem;color:var(--muted);font-weight:600}

/* atividade em grupo */
.group{background:linear-gradient(135deg,#0f766e,#0e7490);color:#fff;border-radius:20px;
  padding:30px;margin:24px 0;box-shadow:var(--shadow-lg)}
.group .eyebrow{color:#99f6e4}
.group h2.sec,.group h3{color:#fff}
.group .gmeta{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}
.group .gtag{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);
  padding:.3rem .75rem;border-radius:999px;font-size:.8rem;font-weight:600}
.group ol{margin:14px 0 0 20px}.group ol li{margin-bottom:8px;color:#ccfbf1}
.group .roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:16px}
.group .role{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);
  border-radius:12px;padding:14px}
.group .role b{display:block;margin-bottom:4px}
.group .role span{font-size:.85rem;color:#ccfbf1}
.group .deliver{margin-top:16px;background:rgba(0,0,0,.18);border-radius:12px;padding:14px 16px;font-size:.92rem}

/* check de objetivos / takeaways */
.takeaways{background:#faf5ff;border:1px solid #e9d5ff;border-radius:16px;padding:24px 26px;margin:22px 0}
.takeaways h3{margin-top:0;color:#6b21a8}
.takeaways li{margin-bottom:8px}
.takeaways li::marker{content:"✓ ";color:var(--ok);font-weight:800}

/* ===========================================================================
   SIMULADORES
   =========================================================================== */
.sim{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);
  padding:24px;margin:22px 0;overflow:hidden}
.sim .simhead{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.sim .simicon{width:38px;height:38px;border-radius:11px;flex-shrink:0;
  background:linear-gradient(135deg,#0ea5e9,#6366f1);color:#fff;display:flex;
  align-items:center;justify-content:center;font-size:1.1rem}
.sim h3{margin:0;font-family:var(--serif);color:var(--ink);font-size:1.25rem}
.sim .simsub{color:var(--muted);font-size:.9rem;margin:2px 0 16px}
.sim .ctrls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.sim label{font-size:.8rem;font-weight:600;color:var(--ink);display:flex;flex-direction:column;gap:4px}
.sim input[type=text],.sim input[type=number],.sim select,.sim textarea{
  font-family:inherit;font-size:.9rem;padding:.5rem .7rem;border:1.5px solid var(--line);
  border-radius:9px;background:#fff;color:var(--ink)}
.sim input:focus,.sim select:focus,.sim textarea:focus{outline:none;border-color:var(--blue)}
.sim textarea{font-family:ui-monospace,Menlo,Consolas,monospace;width:100%;resize:vertical}
.sim .btn{background:linear-gradient(135deg,#3b82f6,#7c3aed);color:#fff;border:none;
  padding:.55rem 1.1rem;border-radius:10px;font-weight:700;font-family:inherit;cursor:pointer;
  font-size:.88rem;transition:.15s}
.sim .btn:hover{transform:translateY(-2px)}
.sim .btn.ghost{background:#eef2ff;color:var(--blue)}
.sim .btn.sm{padding:.35rem .7rem;font-size:.8rem}
.sim .chiprow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.sim .schip{background:#eef2ff;border:1px solid var(--line);border-radius:999px;
  padding:.3rem .8rem;font-size:.82rem;font-weight:600;color:var(--blue);cursor:pointer}
.sim .schip.on{background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;border-color:transparent}
.sim .simout{margin-top:8px}
.sim .metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:14px}
.sim .metric{background:#f8faff;border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center}
.sim .metric b{display:block;font-size:1.5rem;font-family:var(--serif);color:var(--ink)}
.sim .metric span{font-size:.72rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.sim .hintline{font-size:.84rem;color:var(--muted);margin-top:10px}

/* gantt */
.gantt{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:6px;min-height:46px}
.gantt .gseg{display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;
  font-size:.82rem;border-right:2px solid #fff;transition:width .3s;position:relative;min-width:24px}
.gantt .gseg.idle{background:#cbd5e1;color:#475569}
.gaxis{display:flex;margin-top:2px;font-size:.7rem;color:var(--muted)}
.gaxis span{flex:1;text-align:right;border-right:1px dashed transparent}

/* frames de memória (page replacement) */
.frames{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.fcol{display:flex;flex-direction:column;gap:3px;align-items:center}
.fcol .ref{font-weight:800;color:var(--ink);font-size:.85rem;margin-bottom:2px}
.fcell{width:34px;height:30px;border:1px solid var(--line);border-radius:6px;display:flex;
  align-items:center;justify-content:center;font-size:.8rem;font-weight:700;background:#fff}
.fcell.hit{background:#dcfce7;border-color:#86efac;color:#166534}
.fcell.fault{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.fcol .fl{font-size:.66rem;font-weight:700}
.fcol .fl.F{color:var(--bad)}.fcol .fl.H{color:var(--ok)}

/* disco */
.diskwrap{position:relative;margin-top:10px}
.simsvg{width:100%;height:auto;display:block}

/* lexer / tokens */
.tokens{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.tok{border-radius:7px;padding:.25rem .55rem;font-size:.8rem;font-weight:700;
  font-family:ui-monospace,monospace;border:1px solid}
.tok small{display:block;font-size:.6rem;font-weight:600;opacity:.8;text-transform:uppercase}
.tok.NUM{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.tok.ID{background:#dbeafe;border-color:#93c5fd;color:#1e40af}
.tok.KW{background:#f3e8ff;border-color:#d8b4fe;color:#6b21a8}
.tok.OP{background:#fef3c7;border-color:#fcd34d;color:#92400e}
.tok.PUNCT{background:#e2e8f0;border-color:#cbd5e1;color:#334155}
.tok.STR{background:#dcfce7;border-color:#86efac;color:#166534}
.tok.ERR{background:#1e293b;border-color:#475569;color:#fca5a5}

/* lista de aulas no hub */
.llist{display:grid;gap:10px}
.lrow{display:flex;align-items:center;gap:16px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:14px 18px;text-decoration:none;color:var(--ink);transition:.18s}
.lrow:hover{transform:translateX(4px);box-shadow:var(--shadow-lg);border-color:var(--blue)}
.lrow .num{flex-shrink:0;width:38px;height:38px;border-radius:10px;
  background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;display:flex;
  align-items:center;justify-content:center;font-weight:800}
.lrow-main{flex:1;display:flex;flex-direction:column;gap:3px}
.lrow-main b{font-size:1rem}
.lrow-sum{font-size:.86rem;color:var(--muted);font-weight:400}
.ltags{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.ltag{font-size:.7rem;font-weight:600;background:#e0f2fe;color:#0369a1;padding:.15rem .5rem;border-radius:999px}
.ltag.grp{background:#ccfbf1;color:#0f766e}
.lrow .uhours{flex-shrink:0;font-size:.76rem;font-weight:600;color:var(--muted);background:#eef2ff;padding:.25rem .6rem;border-radius:999px}
.lrow-go{flex-shrink:0;color:var(--blue);font-weight:800;font-size:1.2rem}

/* árvore AST (mini-compilador) */
.asttree{font-family:ui-monospace,monospace;margin:8px 0}
.asttree ul{list-style:none;padding-left:22px;margin:0;position:relative}
.asttree>ul{padding-left:0}
.asttree li{position:relative;padding:4px 0 4px 4px}
.asttree li::before,.asttree li::after{content:"";position:absolute;pointer-events:none}
/* galhos: tronco vertical + cotovelo horizontal ligando o pai ao filho */
.asttree ul ul>li::before{left:-14px;top:0;height:100%;border-left:2px solid #a5b4fc}
.asttree ul ul>li:last-child::before{height:19px}          /* no ultimo filho o tronco para no centro do no */
.asttree ul ul>li::after{left:-14px;top:19px;width:14px;border-top:2px solid #a5b4fc}
.asttree>ul>li::before,.asttree>ul>li::after{display:none} /* a raiz nao tem galho */
.asttree .nodeop{display:inline-block;background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;
  border-radius:7px;padding:.1rem .5rem;font-weight:700}
.asttree .nodeleaf{display:inline-block;background:#eef2ff;color:var(--ink);border:1px solid var(--line);
  border-radius:7px;padding:.1rem .5rem;font-weight:700}

/* responsivo */
@media(max-width:760px){
  .lessonnav{flex-direction:column}
  .sim{padding:18px}
  .group{padding:22px}
  .lrow{flex-wrap:wrap}
  .lrow .uhours,.lrow-go{display:none}
}

/* ===========================================================================
   WIDGETS INTERATIVOS (ix) — embutíveis em qualquer card
   =========================================================================== */
/* revelar (pergunta → resposta) — só CSS via <details class="reveal"> */
.reveal{border:1px dashed var(--blue);background:#f8faff;border-radius:12px;padding:0;margin:14px 0;overflow:hidden}
.reveal>summary{list-style:none;cursor:pointer;padding:13px 16px;font-weight:700;color:var(--ink);display:flex;gap:10px;align-items:center}
.reveal>summary::-webkit-details-marker{display:none}
.reveal>summary::before{content:"🤔";font-size:1.1rem}
.reveal[open]>summary::before{content:"💡"}
.reveal>summary::after{content:"revelar ▾";margin-left:auto;font-size:.78rem;color:var(--blue);font-weight:600}
.reveal[open]>summary::after{content:"ocultar ▴"}
.reveal .reveal-body{padding:0 16px 16px;color:var(--body);font-size:.95rem;line-height:1.6}

/* passo-a-passo */
.stepper{border:1px solid var(--line);border-radius:14px;background:var(--card);margin:16px 0;overflow:hidden}
.stepper .sx-head{display:flex;align-items:center;gap:12px;padding:12px 16px;background:linear-gradient(135deg,#eff6ff,#faf5ff);border-bottom:1px solid var(--line)}
.stepper .sx-head b{color:var(--ink);font-size:.9rem}
.stepper .sx-dots{display:flex;gap:5px;margin-left:auto}
.stepper .sx-dot{width:8px;height:8px;border-radius:50%;background:#cbd5e1;transition:.2s}
.stepper .sx-dot.on{background:linear-gradient(135deg,var(--blue),var(--purple));transform:scale(1.3)}
.stepper .stp{display:none;padding:16px 18px;animation:fade .3s}
.stepper .stp.on{display:block}
.stepper .stp .sx-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;color:var(--purple);font-weight:700;margin-bottom:6px}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.stepper .sx-nav{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-top:1px solid var(--line);background:#fafbff}
.stepper .sx-nav button{background:linear-gradient(135deg,#3b82f6,#7c3aed);color:#fff;border:none;border-radius:9px;padding:.45rem 1rem;font-weight:700;font-family:inherit;cursor:pointer;font-size:.85rem}
.stepper .sx-nav button:disabled{opacity:.4;cursor:default}
.stepper .sx-nav .sx-count{font-size:.8rem;color:var(--muted);font-weight:600}

/* verifique você mesmo (MCQ inline) */
.check{border:1px solid #e9d5ff;background:#faf5ff;border-radius:14px;padding:16px 18px;margin:16px 0}
.check .cq{font-weight:700;color:var(--ink);margin-bottom:12px}
.check .cq::before{content:"✅ Verifique você mesmo · ";color:var(--purple);font-weight:800;font-size:.82rem}
.check .copt{display:block;width:100%;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:10px;
  padding:11px 14px;margin-bottom:8px;cursor:pointer;font-family:inherit;font-size:.93rem;color:var(--ink);transition:.15s}
.check .copt:hover:not(:disabled){border-color:var(--purple)}
.check .copt.ok{border-color:#34d399;background:#dcfce7}
.check .copt.no{border-color:#f87171;background:#fee2e2}
.check .copt:disabled{cursor:default}
.check .cfb{display:none;margin-top:6px;padding:12px 14px;border-radius:10px;font-size:.9rem;background:#eef2ff;border:1px solid var(--line)}
.check .cfb.show{display:block}

/* "experimente" — caixinha de destaque p/ exemplo interativo */
.tryit{border-left:4px solid var(--purple);background:linear-gradient(135deg,#faf5ff,#eff6ff);
  border-radius:0 12px 12px 0;padding:14px 18px;margin:14px 0}
.tryit .tt{font-weight:800;color:var(--purple);font-size:.82rem;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}

/* ---- simuladores novos: ciclo de vida do processo, syscall e boot ---- */
.sim .pltree{margin:6px 0 4px}
.sim .pltree ul{list-style:none;margin:0;padding-left:22px}
.sim .pltree>ul{padding-left:0}
.sim .pltree li{position:relative;padding:4px 0}
.sim .pltree ul ul li::before{content:"";position:absolute;left:-13px;top:0;bottom:50%;
  border-left:2px solid var(--line);border-bottom:2px solid var(--line);width:11px;border-radius:0 0 0 6px}
.sim .pltree ul ul li:not(:last-child)::after{content:"";position:absolute;left:-13px;top:50%;bottom:0;
  border-left:2px solid var(--line)}
.sim .plnode{display:inline-flex;align-items:center;gap:9px;cursor:pointer;
  background:#fff;border:2px solid var(--line);border-radius:10px;padding:6px 11px;font-size:.87rem;
  transition:.18s}
.sim .plnode:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.08)}
.sim .plnode.plsel{box-shadow:0 0 0 3px rgba(59,130,246,.28)}
.sim .plprog{color:var(--muted);font-size:.8rem}
.sim .plst{color:#fff;font-size:.68rem;font-weight:700;padding:.13rem .48rem;border-radius:999px;
  text-transform:uppercase;letter-spacing:.3px}

.sim .sclanes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 14px}
.sim .sclane{border:2px solid var(--line);border-radius:12px;padding:12px 10px;text-align:center;
  background:#f8fafc;transition:.2s;opacity:.55}
.sim .sclane.on{opacity:1;border-color:#c7d2fe;background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.07)}
.sim .sclabel{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;
  color:var(--muted);margin-bottom:9px}
.sim .scdot{width:15px;height:15px;border-radius:50%;margin:0 auto;background:#cbd5e1;transition:.2s}

.sim .bootline{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 14px}
.sim .bstage{display:flex;align-items:center;gap:8px;cursor:pointer;flex:1 1 150px;
  border:2px solid var(--line);border-radius:11px;padding:9px 11px;background:#f8fafc;
  font-size:.84rem;transition:.18s}
.sim .bstage:hover{transform:translateY(-1px)}
.sim .bstage.done{background:#ecfdf5;border-color:#a7f3d0}
.sim .bstage.on{background:#fff;border-color:#93c5fd;box-shadow:0 4px 14px rgba(0,0,0,.08)}
.sim .bnum{flex-shrink:0;width:23px;height:23px;border-radius:7px;display:flex;align-items:center;
  justify-content:center;font-weight:800;font-size:.76rem;background:#e2e8f0;color:var(--ink)}
.sim .bstage.on .bnum{background:linear-gradient(135deg,#3b82f6,#7c3aed);color:#fff}
.sim .bstage.done .bnum{background:#10b981;color:#fff}
.sim .bname{font-weight:600;line-height:1.25}
@media(max-width:560px){
  .sim .sclanes{grid-template-columns:1fr}
  .sim .bstage{flex:1 1 100%}
}

/* ---- simuladores de Redes: crimpagem, equipamentos, requisição web, roteamento ---- */
.sim .crimpPonta{border:2px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;
  background:#f8fafc;transition:.18s;cursor:pointer}
.sim .crimpPonta.on{background:#fff;border-color:#93c5fd;box-shadow:0 4px 14px rgba(0,0,0,.07)}
.sim .crimpLabel{font-size:.8rem;font-weight:700;color:var(--muted);margin-bottom:9px;
  text-transform:uppercase;letter-spacing:.4px}
.sim .rj45{display:flex;gap:5px;align-items:flex-end}
.sim .pino{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;
  padding:5px 2px;border-radius:7px;transition:.15s}
.sim .pino:hover{background:#e0e7ff}
.sim .fio{display:block;width:100%;height:34px;border:1px solid #cbd5e1;border-radius:4px}
.sim .fio.vazio{background:repeating-linear-gradient(45deg,#f1f5f9 0 4px,#e2e8f0 4px 8px)}
.sim .pinon{font-size:.68rem;font-weight:700;color:var(--muted)}
.sim .crimpPal{display:flex;flex-wrap:wrap;gap:6px;width:100%;margin-bottom:8px}
.sim .corbtn{display:flex;align-items:center;gap:6px;border:2px solid var(--line);background:#fff;
  border-radius:9px;padding:5px 9px;cursor:pointer;font-size:.74rem;font-weight:600;transition:.15s}
.sim .corbtn:hover{transform:translateY(-1px)}
.sim .corbtn.on{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.2)}
.sim .corbtn .fio{width:16px;height:16px;border-radius:3px}

.sim .netTopo{display:flex;flex-direction:column;align-items:center;gap:14px;margin:6px 0 14px}
.sim .netCentro{display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:88px;height:66px;border-radius:14px;font-size:1.6rem;
  background:linear-gradient(135deg,#3b82f6,#7c3aed);color:#fff}
.sim .netCentro span{font-size:.6rem;font-weight:800;letter-spacing:.6px}
.sim .netPcs{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;width:100%}
.sim .netPc{border:2px solid var(--line);border-radius:11px;padding:9px 7px;text-align:center;
  background:#f8fafc;font-size:.74rem;transition:.2s}
.sim .netPc b{display:block;font-size:.86rem;color:var(--ink)}
.sim .netPc span{display:block;color:var(--muted);font-size:.68rem}
.sim .netPc .ipzin{font-family:ui-monospace,monospace}
.sim .netPc.orig{border-color:#3b82f6;background:#eff6ff}
.sim .netPc.recv{border-color:#10b981;background:#ecfdf5}
.sim .netTag{display:inline-block;margin-top:4px;font-size:.62rem;font-weight:800;text-transform:uppercase;
  background:#3b82f6;color:#fff!important;padding:.1rem .4rem;border-radius:999px}
.sim .netTag.ok{background:#10b981}

.sim .webLanes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 14px}
.sim .webLane{border:2px solid var(--line);border-radius:12px;padding:12px 10px;text-align:center;
  background:#f8fafc;opacity:.55;transition:.2s}
.sim .webLane.on{opacity:1;border-color:#bfdbfe;background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.07)}

.sim .rotSvg{display:block;width:100%;max-width:620px;margin:0 auto 8px;aspect-ratio:100/48;
  background:#f8fafc;border:1px solid var(--line);border-radius:12px}
.sim .rotN{fill:#fff;stroke:#3b82f6;stroke-width:1}
.sim .rotL{font-size:3px;font-weight:800;fill:#1e293b;text-anchor:middle}
.sim .rotW{font-size:2.4px;fill:#64748b;text-anchor:middle;font-weight:700}
.sim .rotInf{color:#cbd5e1;font-weight:800}
.sim .schip.off{background:#fee2e2;color:#b91c1c;text-decoration:line-through}
.sim .tbl small{color:var(--muted);font-weight:400}
@media(max-width:560px){
  .sim .netPcs{grid-template-columns:repeat(2,1fr)}
  .sim .webLanes{grid-template-columns:1fr}
  .sim .fio{height:26px}
}

/* ---- simuladores de Compiladores: derivação, LL(1) e pilha de ativação ---- */
.sim .derivPar{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px}
.sim .derivCol{flex:1 1 260px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff}
.sim .derivCol h4{margin:0 0 8px;font-size:.9rem;color:var(--ink)}
.sim .derivCol .hintline{margin-top:8px}

.sim .llrow{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:6px 0 12px}
.sim .llbox{border:1px solid var(--line);border-radius:12px;padding:11px 13px;background:#f8fafc}
.sim .llstack{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.sim .lltok{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;font-weight:700;
  background:#e2e8f0;color:#334155;padding:.25rem .5rem;border-radius:6px}
.sim .lltok.nt{background:#ede9fe;color:#6d28d9}
.sim .lltok.cur{background:#3b82f6;color:#fff}

.sim .pilhaBox{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#f8fafc;margin-bottom:10px}
.sim .quadro{border:2px solid var(--line);border-radius:10px;padding:9px 12px;margin-top:8px;background:#fff;
  transition:.2s}
.sim .quadro.topo{border-color:#3b82f6;box-shadow:0 4px 14px rgba(59,130,246,.15)}
.sim .quadroT{font-weight:800;color:var(--ink);font-size:.92rem;margin-bottom:5px}
.sim .quadroL{display:flex;flex-direction:column;gap:2px;font-size:.8rem;color:var(--body)}
.sim .quadroL b{color:var(--muted);font-weight:600}
@media(max-width:560px){ .sim .llrow{grid-template-columns:1fr} }

/* ---- .pipe — esteira de compilação (diagrama front-end/back-end) ---- */
.pipe{margin:18px 0}
.pipe-io{background:#f1f5f9;border:1px solid var(--line);border-radius:12px;padding:11px 16px;
  text-align:center;font-weight:700;color:var(--ink);max-width:360px;margin:0 auto}
.pipe-io small{display:block;font-weight:500;color:var(--muted);font-size:.82rem;margin-top:1px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.pipe-v{display:block;text-align:center;color:var(--muted);font-weight:800;line-height:1.1;margin:7px 0}
.pipe-cols{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:stretch}
.pipe-group{border:1px dashed #cbd5e1;border-radius:14px;padding:12px 12px 14px}
.pipe-gt{font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:var(--muted);margin-bottom:10px}
.pipe-box{border-radius:12px;padding:11px 14px;text-align:center;color:#fff;font-weight:700;font-size:.95rem}
.pipe-box small{display:block;font-weight:500;opacity:.88;font-size:.8rem;margin-top:1px}
.pipe-box.fe{background:linear-gradient(135deg,#5b21b6,#7c3aed)}
.pipe-box.be{background:linear-gradient(135deg,#0f766e,#0d9488)}
.pipe-cross{align-self:center;color:var(--purple);font-weight:800;font-size:1.15rem;text-align:center}
.pipe-cross .pv{display:none}
@media(max-width:720px){
  .pipe-cols{grid-template-columns:1fr}
  .pipe-cross{margin:2px 0}
  .pipe-cross .ph{display:none}
  .pipe-cross .pv{display:inline}
}

/* ---- simulador "fases" — a esteira de compilação passo a passo ---- */
.sim .fsnote{font-size:.88rem;color:var(--body);margin:6px 0 10px;line-height:1.6}
.sim .fslist{margin:6px 0 12px 20px;font-size:.88rem;color:var(--body)}
.sim .fslist li{margin:5px 0;line-height:1.55}
.sim .fs2col{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
.sim .fs2col h4{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--muted);margin:0 0 4px;font-weight:800}
.sim .schip.barrado{opacity:.38;text-decoration:line-through}
.sim .hintline{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 10px}
.sim .hintline .btn.sm{font-size:.72rem;padding:.28rem .6rem}
.sim .fsnote code,.sim .fslist code,.sim .tbl code{background:#eef2ff;border:1px solid var(--line);
  border-radius:5px;padding:.05rem .3rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85em}
.asttree .nodeop small,.asttree .nodeleaf small{font-size:.7em;opacity:.75;font-weight:600}
@media(max-width:640px){ .sim .fs2col{grid-template-columns:1fr} }

/* ---- mini laboratório de redes (data-sim="redelab") ---- */
.sim .rlcanvas{border:1px solid var(--line);border-radius:14px;background:
  linear-gradient(#fff,#fff) padding-box,
  repeating-linear-gradient(0deg,#eef2f7 0 1px,transparent 1px 22px),
  repeating-linear-gradient(90deg,#eef2f7 0 1px,transparent 1px 22px);
  background-color:#fff;margin:10px 0;overflow:auto}
.sim .rlcabo{stroke:#94a3b8;stroke-width:2.5}
.sim .rlno{cursor:grab}
.sim .rlno rect{fill:#eef2ff;stroke:#c7d2fe;stroke-width:1.5}
.sim .rlno.on rect{fill:#e0e7ff;stroke:var(--purple);stroke-width:2.5}
.sim .rlno.ligando rect{stroke:#f59e0b;stroke-width:2.5;stroke-dasharray:5 3}
.sim .rlno text{text-anchor:middle;pointer-events:none}
.sim .rlno .rlic{font-size:14px}
.sim .rlno .rlnome{font-size:12px;font-weight:800;fill:var(--ink)}
.sim .rlno .rlip{font-size:9.5px;fill:var(--muted);font-family:ui-monospace,Menlo,Consolas,monospace}
.sim .rlbox{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#f8fafc}
.sim .rlbox h4{font-size:.95rem;color:var(--ink);margin:0 0 8px}
.sim .rlbox h4 small{font-weight:600;color:var(--muted);text-transform:uppercase;font-size:.66rem;letter-spacing:.05em}
.sim .rlconf{margin:8px 0}
.sim .rlping{align-items:flex-end;margin-top:12px}
.sim .rlpassos{margin:10px 0 0 20px;font-size:.86rem;line-height:1.6}
.sim .rlpassos li{margin:5px 0;padding-left:4px}
.sim .rlpassos li::marker{font-weight:800;color:var(--muted)}
.sim .rlpassos .pdecisao{color:#6d28d9;font-weight:600}
.sim .rlpassos .pl2{color:#0f766e}
.sim .rlpassos .pl3{color:#1d4ed8;font-weight:600}
.sim .rlpassos .pok{color:#166534;font-weight:700}
.sim .rlpassos .pl4{color:#b45309;font-weight:600}
.sim .rlpassos .pl7{color:#6d28d9;font-weight:600}
.sim .rlpassos .pnat{color:#7c3aed;font-weight:600}
@media(max-width:640px){ .sim .rlping{align-items:stretch} }
.sim .btn.on{background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;border-color:transparent}

/* ---- ACL: lista de regras ordenada ---- */
.sim .aclreg{align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--line);
  border-radius:10px;margin:5px 0;background:#fff;flex-wrap:wrap}
.sim .aclreg.casou{border-color:var(--purple);box-shadow:0 0 0 2px rgba(124,58,237,.15);background:#faf5ff}
.sim .aclreg.dimm{background:#f8fafc;color:var(--muted);font-size:.85rem;border-style:dashed}
.sim .aclnum{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;
  border-radius:6px;background:#eef2ff;color:var(--ink);font-weight:800;font-size:.75rem}
.sim .aclreg label{margin:0}
/* ---- TCP: duas colunas de quem fala ---- */
.sim .tcpwrap{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 2px}
.sim .tcplado{text-align:center;padding:6px;border-radius:9px;background:#eef2ff;
  font-size:.85rem;color:var(--ink)}
.sim .rlpassos .perr{color:#b91c1c;font-weight:600}
.sim .rlpassos code{background:#0f172a;color:#e2e8f0;border-radius:5px;padding:.08rem .35rem;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82em}
@media(max-width:640px){ .sim .tcpwrap{grid-template-columns:1fr} }

/* ---- COM SO × SEM SO: dois mundos lado a lado ---- */
.sim .duo{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:6px 0 10px}
.sim .duocol{border:2px solid var(--line);border-radius:12px;padding:12px;background:#fff}
.sim .duocol h4{margin:0 0 8px;font-size:.95rem;display:flex;align-items:center;gap:6px}
.sim .duocol.bare h4{color:#b91c1c}
.sim .duocol.oss h4{color:#1d4ed8}
.sim .duocode{background:#0f172a;color:#e2e8f0;border-radius:8px;padding:10px;font-size:.76rem;
  line-height:1.55;overflow-x:auto;white-space:pre;margin:0 0 10px;min-height:38px;
  font-family:ui-monospace,Menlo,Consolas,monospace}
.sim .dsteps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.sim .dsteps li{border-left:3px solid var(--line);padding:4px 9px;font-size:.85rem;opacity:.6}
.sim .dsteps li.on{opacity:1;border-left-color:#8b5cf6;background:#f5f3ff;border-radius:0 8px 8px 0}
.sim .schip.perigo{background:#fef2f2;border-color:#fca5a5;color:#b91c1c}
.sim .schip.perigo.on{background:linear-gradient(135deg,#ef4444,#b91c1c);color:#fff;border-color:transparent}
.sim .cpuwrap{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:4px}
.sim .cpuwrap small,.sim .tlrow small{color:var(--muted)}
.sim .cpubar{display:flex;height:28px;border-radius:8px;overflow:hidden;border:1px solid var(--line);margin-top:4px}
.sim .cpubar i{font-style:normal;color:#fff;font-size:.72rem;display:flex;align-items:center;
  justify-content:center;white-space:nowrap;overflow:hidden}
.sim .tlrow{margin-top:8px}
.sim .tl{display:flex;gap:3px;margin-top:4px}
.sim .tlseg{flex:1;padding:5px 2px;border-radius:6px;text-align:center;font-size:.72rem;color:#fff;
  background:#3b82f6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sim .tlseg.b{background:#10b981}
.sim .tlseg.x{background:#ef4444}
.sim .tlseg.w{background:#f59e0b}
@media(max-width:760px){ .sim .duo,.sim .cpuwrap{grid-template-columns:1fr} }

/* ---- TRÊS FAMÍLIAS: pistas de latência ---- */
.sim .fmlane{border:2px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:10px;background:#fff}
.sim .fmtop{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;justify-content:space-between}
.sim .fmtop b{font-size:.92rem}
.sim .fmstats{font-size:.8rem;color:var(--body)}
.sim .fmtags{font-size:.74rem;color:var(--muted);margin-top:2px}
.sim .fmstrip{position:relative;display:flex;align-items:flex-end;gap:2px;height:58px;margin-top:8px;
  background:#f8fafc;border-radius:8px;padding:0 4px}
.sim .fmbar{flex:1;max-width:9px;border-radius:2px 2px 0 0;min-height:2px}
.sim .fmline{position:absolute;left:0;right:0;border-top:2px dashed #ef4444;pointer-events:none}
.sim .fmempty{font-size:.8rem;color:var(--muted);margin:auto}

/* ===========================================================================
   LABORATÓRIO DE REDES v2 (redelab.js) — meios, topologia física × lógica
   =========================================================================== */
.sim .rlbar{align-items:flex-end;gap:12px;padding:12px;background:#f8fafc;
  border:1px solid var(--line);border-radius:14px}
.sim .rlbar select{max-width:230px}
.sim .rlchk{flex-direction:row;align-items:center;gap:6px;font-size:.78rem;
  color:var(--body);font-weight:600;cursor:pointer;padding-bottom:.5rem}
.sim .rlchk input{margin:0;cursor:pointer}
.sim .rlabas{margin:14px 0 8px}
.sim .rlcanvas.rlplano{background:#fff;padding:14px;height:auto;min-height:120px;overflow:auto}

/* ---- enlaces no croqui ---- */
.sim .rlink{cursor:pointer}
.sim .rlink .rlhit{stroke:transparent;stroke-width:14}
.sim .rlink:hover .rlhit{stroke:rgba(99,102,241,.16)}
.sim .rlink.on .rlhit{stroke:rgba(99,102,241,.3)}
.sim .rlrot{fill:#fff;stroke:var(--line);stroke-width:1}
.sim .rlink.on .rlrot{stroke:var(--purple);stroke-width:1.6}
.sim .rlink.down .rlrot{fill:#fef2f2;stroke:#fca5a5}
.sim .rlrott{font-size:8.5px;font-weight:700;text-anchor:middle;pointer-events:none;
  font-family:ui-monospace,Menlo,Consolas,monospace}

/* ---- legenda dos meios ---- */
.sim .rlleg{display:flex;flex-wrap:wrap;gap:6px 16px;margin:8px 2px 4px;font-size:.76rem;color:var(--body)}
.sim .rllegi{display:inline-flex;align-items:center;gap:6px}
.sim .rllegi i{width:20px;height:4px;border-radius:2px;display:inline-block}
.sim .rllegi small{color:var(--muted)}
.sim .rllegi.down{color:#b91c1c;font-weight:700}
.sim .rllegi.down i{background:#ef4444}

/* ---- painel de interfaces e enlaces ---- */
.sim .rlif{align-items:flex-end;gap:8px;margin-bottom:6px}
.sim .rlifn{font-size:.78rem;font-weight:700;color:var(--ink);min-width:118px;
  font-family:ui-monospace,Menlo,Consolas,monospace;padding-bottom:.55rem}
.sim .rlifn small{display:block;font-weight:600;color:var(--muted);font-size:.66rem;
  font-family:var(--sans,inherit);letter-spacing:.02em}
.sim .rlvlans{gap:8px}
.sim .rlenl{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px}
.sim .rlenli{background:#fff;border:1.5px solid var(--line);border-radius:10px;padding:.4rem .7rem;
  font-size:.8rem;font-weight:600;color:var(--ink);cursor:pointer;text-align:left;font-family:inherit;
  display:flex;flex-direction:column;gap:2px;transition:.15s}
.sim .rlenli:hover{border-color:var(--purple);transform:translateY(-1px)}
.sim .rlenli span{font-size:.7rem;color:var(--muted);font-weight:600;
  font-family:ui-monospace,Menlo,Consolas,monospace}
.sim .rlenli.down{border-color:#fca5a5;background:#fef2f2}
.sim .rlenli.down span{color:#b91c1c}
.sim .rlboxlink{background:#fffbeb;border-color:#fde68a}

/* ---- régua de aproveitamento do alcance ---- */
.sim .rlregua{margin:10px 0 4px}
.sim .rlrbar{display:flex;height:14px;border-radius:7px;overflow:hidden;background:#e2e8f0;
  border:1px solid var(--line)}
.sim .rlrbar i{display:block;transition:width .2s}
.sim .rlrbar u{display:block;background:repeating-linear-gradient(45deg,#dc2626 0 5px,#7f1d1d 5px 10px)}
.sim .rlregua small{display:block;margin-top:4px;font-size:.75rem;color:var(--muted)}

/* ---- redelab: bancada (zonas, console, pacote no fio, tabelas) ---- */
.sim .rlzona{display:flex;gap:14px;align-items:flex-start;margin-top:4px}
.sim .rlesq{flex:1;min-width:0}
.sim .rlzona .rlconf{width:330px;flex-shrink:0;margin:0;max-height:600px;overflow:auto}
@media(max-width:960px){
  .sim .rlzona{flex-direction:column}
  .sim .rlzona .rlconf{width:100%;max-height:none}
}
.sim .rlamb{background:#f1f5f9;border:1px dashed #cbd5e1;border-radius:12px;padding:10px 12px;margin-top:8px;align-items:flex-end}
.sim .rlconsole{margin-top:16px;border:1px solid var(--line);border-radius:14px;background:#f8fafc;padding:12px 14px}
.sim .rlchead{font-size:.86rem;color:var(--muted);margin:0 0 8px}
.sim .rlctabs{margin-bottom:10px}
.sim .rlb{display:inline-block;font-style:normal;font-size:.62rem;font-weight:800;color:#fff;
  border-radius:5px;padding:.05rem .3rem;margin-right:6px;vertical-align:1px;letter-spacing:.3px}
.sim .rlmini{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 8px}
.sim .rlmini i{font-style:normal;font-size:.68rem;font-weight:700;padding:.18rem .5rem;border-radius:7px;
  background:#e2e8f0;color:#94a3b8;border:1px solid transparent}
.sim .rltrace{background:#0f172a;color:#e2e8f0;border-radius:10px;padding:12px 14px;margin:10px 0;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;line-height:1.7;overflow-x:auto}
.sim .rlpacwrap{display:flex;gap:14px;align-items:flex-start}
@media(max-width:700px){
  .sim .rlpacwrap{flex-direction:column;align-items:stretch}
  .sim .rlcam{justify-content:center}
  .sim .rldir{width:100%}
  .sim .rlfita{min-width:420px}
  .sim .rlpac .tbl,.sim .rltabelas .tbl{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
}
.sim .rlcam{flex-shrink:0;display:flex;gap:4px}
.sim .rlcamcol{display:flex;flex-direction:column;gap:3px}
.sim .rlcamhead{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;
  color:var(--muted);text-align:center;padding-bottom:2px}
.sim .rlcamcell{height:26px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;
  font-size:.64rem;font-weight:700;border-radius:6px;padding:0 9px;background:#e2e8f0;color:#64748b;
  white-space:nowrap;transition:background .15s}
.sim .rldir{flex:1;min-width:0}
.sim .rlfitawrap{overflow-x:auto;margin-bottom:10px}
.sim .rlfita{display:flex;border-radius:10px;overflow:hidden;min-width:480px}
.sim .rlfseg{border:none;cursor:pointer;padding:.5rem .55rem;font-size:.72rem;font-weight:700;color:#fff;
  text-align:center;flex:1 1 auto;opacity:.82;transition:opacity .15s}
.sim .rlfseg:hover{opacity:1}
.sim .rlfseg.on{opacity:1;box-shadow:inset 0 0 0 3px rgba(255,255,255,.55)}
.sim .rlfseg small{display:block;font-weight:600;opacity:.85;font-size:.6rem}
.sim .rlcampos td code{background:#0f172a;color:#e2e8f0;border-radius:5px;padding:.08rem .35rem;
  font-size:.78rem;white-space:nowrap}
.sim .rlcap{align-items:center;margin-bottom:10px}
.sim .rlcapt{font-size:.76rem;font-weight:700;color:var(--muted)}
.sim .rltabelas h4{font-size:.92rem;color:var(--ink);margin:16px 0 6px}
.sim .rltabelas h4:first-child{margin-top:4px}
.sim .rltabelas h4 code,.sim .rltdev code{background:#0f172a;color:#e2e8f0;border-radius:5px;padding:.08rem .4rem;
  font-size:.74rem;font-weight:600}
.sim .rltdev{font-size:.84rem;margin:10px 0 4px}
.sim .rltabelas table code{background:#f1f5f9;color:#0f172a;border-radius:4px;padding:.05rem .3rem;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.78rem}

/* ---- ficha do meio ---- */
.sim .rlficha{border:1px solid var(--line);border-left:4px solid #94a3b8;border-radius:10px;
  padding:10px 13px;margin:10px 0;background:#fff}
.sim .rlficha.nao{border-left-color:var(--purple);background:#faf5ff}
.sim .rlficha h5{margin:0 0 4px;font-size:.88rem;color:var(--ink)}
.sim .rlficha p{margin:0;font-size:.82rem;color:var(--body);line-height:1.55}
.sim .rlficha small{display:block;margin-top:5px;font-size:.72rem;color:var(--muted);font-style:italic}
.sim .rlfichas{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin-top:14px}

/* ---- tabela comparativa de meios ---- */
.sim .rlmtab{font-size:.8rem}
.sim .rlmtab th,.sim .rlmtab td{padding:7px 9px}
.sim .rlmtab tr.rlnaog{background:#faf5ff}
.sim .rlmeios{overflow-x:auto}

/* ---- topologia LÓGICA: domínios de broadcast ---- */
.sim .rllog{display:flex;flex-direction:column;gap:12px}
.sim .rldom{border:2px dashed #93c5fd;border-radius:14px;padding:12px 14px;background:#f8faff}
.sim .rldom.bus{border-color:#fbbf24;background:#fffbeb}
.sim .rldomtop{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:.86rem;color:var(--ink)}
.sim .rldomtop code{background:#0f172a;color:#e2e8f0;border-radius:5px;padding:.08rem .4rem;font-size:.78rem}
.sim .rldomtop em{color:var(--muted);font-size:.8rem}
.sim .rltag{margin-left:auto;background:#dbeafe;color:#1e40af;border-radius:999px;
  padding:.15rem .6rem;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.sim .rltag.warn{background:#fef3c7;color:#92400e}
.sim .rldommeio{font-size:.75rem;color:var(--muted);margin-top:3px}
.sim .rlbus{height:5px;border-radius:3px;margin:10px 0 2px;
  background:repeating-linear-gradient(90deg,#f59e0b 0 12px,#fcd34d 12px 20px)}
.sim .rlchips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.sim .rlchip{background:#fff;border:1.5px solid var(--line);border-radius:10px;padding:.35rem .6rem;
  font-size:.8rem;display:flex;align-items:center;gap:5px}
.sim .rlchip b{color:var(--ink)}
.sim .rlchip span{color:var(--muted);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.72rem}
.sim .rlchip.rot{border-color:#a5b4fc;background:#eef2ff}
.sim .rlnota{margin-top:12px;line-height:1.6}

/* ---- análise: física × lógica lado a lado ---- */
.sim .rlanal{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.sim .rlcard{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fff}
.sim .rlcard h4{margin:0 0 6px;font-size:.9rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.sim .rlcard .rlbig{display:block;font-family:var(--serif);font-size:1.35rem;color:var(--ink);margin-bottom:6px}
.sim .rlcard p{margin:0;font-size:.84rem;color:var(--body);line-height:1.55}
.sim .rlcard small{display:block;margin-top:8px;font-size:.73rem;color:var(--muted);font-style:italic}

/* ---- diagnóstico ---- */
.sim .rldiag{margin:6px 0 0 18px;padding:0}
.sim .rldiag li{margin:5px 0;font-size:.85rem;line-height:1.5}
.sim .rldiag small{color:inherit;opacity:.8}

/* ---- passos do ping: camada 1 e avisos ---- */
.sim .rlpassos .pl1{color:#92400e}
.sim .rlpassos .paviso{color:#b45309;font-size:.82rem}
.sim .rlpassos .porigem{font-weight:600}

@media(max-width:640px){
  .sim .rlbar{flex-direction:column;align-items:stretch}
  .sim .rlbar select,.sim .rlbar label{max-width:none;width:100%}
  .sim .rlif{align-items:stretch}
  .sim .rlifn{padding-bottom:0}
}

/* ===========================================================================
   CHOMSKY (aula 2 de Compiladores) — dois eixos de escolha, fita legível,
   cabeça de leitura em destaque e registro textual das transições.
   =========================================================================== */
.sim .eixo{align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;
  background:#f8fafc;padding:9px 11px;margin-bottom:10px}
.sim .eixo.eixoM{background:#fbfaff;border-color:#e9e5ff}
.sim .eixorow{flex:1 1 300px;margin-bottom:0}
.sim .eixolbl{display:inline-flex;flex-direction:column;line-height:1.2;
  font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;
  color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:.3rem .6rem;white-space:nowrap}
.sim .eixolbl em{font-style:normal;font-size:.66rem;font-weight:600;letter-spacing:.2px;
  text-transform:none;color:var(--muted)}
.sim .eixolbl.maq{color:#6d28d9;background:#f5f3ff;border-color:#ddd6fe}

/* ---- fita: símbolo legível por padrão; esmaecido só quando já consumido ---- */
.sim .chomfita{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px;align-items:flex-end}
.sim .chomcelw{display:inline-flex;flex-direction:column;align-items:center;gap:1px}
.sim .chomcab{height:15px;line-height:15px;font-size:12px;font-weight:800;color:transparent}
.sim .chomcab.on{color:#1d4ed8}
.sim .chomcab.err{color:#b91c1c}
.sim .chomcab.ac{color:#15803d}
.sim .chomcel{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.95rem;font-weight:800;
  min-width:15px;text-align:center;background:#fff;color:#0f172a;border:2px solid #cbd5e1;
  padding:.2rem .42rem;border-radius:7px;transition:.15s}
.sim .chomcel.lida{background:#f1f5f9;color:#94a3b8;border-color:#e2e8f0;font-weight:600}
.sim .chomcel.risc{background:#fde68a;color:#92400e;border-color:#f59e0b}
.sim .chomcel.cur{background:#1d4ed8;color:#fff;border-color:#1d4ed8;box-shadow:0 0 0 3px rgba(29,78,216,.22)}
.sim .chomcel.cur.err{background:#b91c1c;border-color:#b91c1c;box-shadow:0 0 0 3px rgba(185,28,28,.22)}
.sim .chomcel.cur.ac{background:#15803d;border-color:#15803d;box-shadow:0 0 0 3px rgba(21,128,61,.22)}
.sim .chompos{font-size:9px;line-height:11px;color:#94a3b8;font-weight:600}

/* ---- registro das transições ---- */
.sim .chomlog{position:relative;max-height:170px;overflow-y:auto;margin-top:8px;
  border:1px solid var(--line);border-radius:9px;background:#fff}
.sim .chomlin{display:flex;gap:9px;align-items:baseline;width:100%;text-align:left;
  background:none;border:0;border-bottom:1px solid #f1f5f9;padding:5px 10px;cursor:pointer;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.76rem;color:#334155;transition:.12s}
.sim .chomlin:last-child{border-bottom:0}
.sim .chomlin:hover{background:#f8fafc}
.sim .chomlin i{font-style:normal;color:#94a3b8;min-width:20px;text-align:right;flex:0 0 auto}
.sim .chomlin span{flex:1 1 auto}
.sim .chomlin b{color:#1d4ed8;font-weight:800}
.sim .chomlin em{font-style:normal;color:#64748b;flex:0 0 auto}
.sim .chomlin.on{background:#eff6ff;box-shadow:inset 3px 0 0 #1d4ed8}
.sim .chomlin.err,.sim .chomlin.err b{color:#b91c1c}
.sim .chomlin.ac,.sim .chomlin.ac b{color:#15803d}
@media(max-width:560px){
  .sim .eixo{align-items:flex-start}
  .sim .eixolbl{white-space:normal}
  .sim .chomlin{flex-wrap:wrap;gap:4px}
  .sim .chomlin em{width:100%;padding-left:29px}
}

/* ===========================================================================
   cpulab — Bancada da CPU (aula 02 de SO): ciclo, modos, interrupções.
   Bloco ADITIVO, prefixo .cl* (conferido: sem colisão com o CSS existente).
   =========================================================================== */
.sim .clbar{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:flex-end;justify-content:space-between;
  background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:12px}
.sim .clgrupo{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.sim .clgrupo .btn.on{background:linear-gradient(135deg,#ef4444,#f97316);color:#fff}
.sim .cllabel{font-size:.78rem;font-weight:700;color:var(--muted);align-self:center}
.sim .clcen select{min-width:210px}
.sim .clroteiro{background:#faf5ff;border:1px solid #e9d5ff;border-radius:14px;padding:12px 15px;margin-bottom:14px}
.sim .clrot-t{font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#6b21a8;margin-bottom:4px}
.sim .clrot-b{font-size:.9rem;color:#4c1d95;line-height:1.6}
.sim .clroteiro code{background:#f3e8ff;padding:.05rem .3rem;border-radius:5px;font-size:.85em}

.sim .clzona{display:flex;gap:14px;align-items:flex-start}
.sim .clesq{flex:1;min-width:0}
.sim .clconf{width:330px;flex-shrink:0}
@media(max-width:980px){
  .sim .clzona{flex-direction:column}
  .sim .clconf{width:100%}
}
.sim .clsub{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.6px;
  color:var(--muted);margin:16px 0 7px}
.sim .clesq>div:first-child .metrics{margin-top:4px}

/* ---- o ciclo de instrução ---- */
.sim .clciclo{display:flex;flex-wrap:wrap;align-items:stretch;gap:6px}
.sim .clfase{flex:1 1 120px;border:2px solid var(--line);border-radius:12px;padding:8px 10px;background:#f8fafc;
  opacity:.6;transition:.15s}
.sim .clfase b{display:block;font-size:.78rem;color:var(--ink);letter-spacing:.3px}
.sim .clfase span{display:block;font-size:.68rem;color:var(--muted);margin-top:2px}
.sim .clfase.janela{border-style:dashed;border-color:#93c5fd}
.sim .clfase.hw{flex:1 1 150px;background:#fff7ed;border-color:#fed7aa}
.sim .clfase.on{opacity:1;background:#fff;border-color:#6d28d9;box-shadow:0 4px 14px rgba(109,40,217,.18)}
.sim .clfase.prox{opacity:.9;border-color:#c7d2fe}
.sim .clarr{align-self:center;color:#cbd5e1;font-weight:800}

/* ---- registradores ---- */
.sim .clregs{display:flex;flex-wrap:wrap;gap:7px;margin-top:4px}
.sim .clreg{background:#f8faff;border:1px solid var(--line);border-radius:10px;padding:6px 10px;min-width:74px}
.sim .clreg span{display:block;font-size:.62rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.sim .clreg b{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.86rem;color:var(--ink)}
.sim .clreg.u{background:#eff6ff;border-color:#bfdbfe}.sim .clreg.u b{color:#1d4ed8}
.sim .clreg.k{background:#faf5ff;border-color:#e9d5ff}.sim .clreg.k b{color:#6d28d9}
.sim .clreg.ok{background:#ecfdf5;border-color:#a7f3d0}.sim .clreg.ok b{color:#065f46}
.sim .clreg.off{background:#fef2f2;border-color:#fecaca}.sim .clreg.off b{color:#b91c1c}

/* ---- narração do passo ---- */
.sim .clnarra{margin:12px 0 2px;border:1px solid var(--line);border-left-width:5px;border-radius:12px;
  padding:11px 14px;font-size:.92rem;line-height:1.6;background:#f8fafc;color:var(--ink)}
.sim .clnarra code{background:#eef2ff;padding:.05rem .35rem;border-radius:5px;font-size:.86em}
.sim .clnarra.u{border-left-color:#1d4ed8;background:#eff6ff}
.sim .clnarra.k{border-left-color:#6d28d9;background:#faf5ff}
.sim .clnarra.int{border-left-color:#0284c7;background:#f0f9ff}
.sim .clnarra.exc{border-left-color:#b91c1c;background:#fef2f2}
.sim .clnarra.trap{border-left-color:#c2410c;background:#fff7ed}
.sim .clnarra.hw{border-left-color:#f59e0b;background:#fffbeb}
.sim .clnarra.av{border-left-color:#94a3b8}

/* ---- memória ---- */
.sim .clmem{display:flex;gap:12px;align-items:flex-start}
@media(max-width:720px){.sim .clmem{flex-direction:column}}
.sim .clmemcol{flex:1;min-width:0;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:#fff}
.sim .clmemcol.u{border-color:#bfdbfe}
.sim .clmemcol.k{border-color:#e9d5ff}
.sim .clmemhead{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:8px 11px;font-size:.8rem}
.sim .clmemcol.u .clmemhead{background:#eff6ff;color:#1d4ed8}
.sim .clmemcol.k .clmemhead{background:#faf5ff;color:#6d28d9}
.sim .clmemhead i{font-style:normal;font-size:.68rem;opacity:.85}
.sim .clins-lista{padding:5px}
.sim .clins-lista.clk{max-height:268px;overflow:auto;position:relative}
.sim .clins{display:flex;align-items:baseline;gap:8px;padding:3px 7px;border-radius:8px;border:1px solid transparent}
.sim .clins code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.76rem}
.sim .claddr{color:#94a3b8;flex-shrink:0}
.sim .cltxt{color:#0f172a;font-weight:700;flex-shrink:0;white-space:pre}
.sim .clcom{font-size:.72rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sim .clins.on{background:#fef9c3;border-color:#fde047}
.sim .clins.on .clcom{color:#854d0e}
.sim .clins.inj{background:#fff7ed;border-color:#fed7aa}
.sim .clins.inj.on{background:#fef3c7;border-color:#f59e0b}
.sim .clrot{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:7px 0 2px;
  padding:2px 7px;font-size:.7rem;font-weight:800;letter-spacing:.3px;border-radius:7px;background:#f8fafc}
.sim .clrot i{font-style:normal;font-weight:600;color:#94a3b8;font-family:ui-monospace,Menlo,Consolas,monospace}
.sim .clrot.on{background:#ede9fe}

/* ---- faixa do tempo ---- */
.sim .clfaixa{display:flex;height:30px;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#f1f5f9}
.sim .clseg{display:flex;align-items:center;justify-content:center;font-size:.78rem;min-width:2px;
  color:#fff;overflow:hidden}
.sim .clseg.u{background:#3b82f6}
.sim .clseg.k{background:#7c3aed;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.sim .clesperando{color:#b45309}

/* ---- painel lateral ---- */
.sim .cldev{display:flex;flex-direction:column;gap:7px}
.sim .cldevrow{border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:#fff}
.sim .cldevrow.pend{border-color:#fbbf24;background:#fffbeb}
.sim .cldevid{display:flex;gap:9px;align-items:flex-start}
.sim .cldevic{font-size:1.1rem;line-height:1.2}
.sim .cldevid b{font-size:.84rem;color:var(--ink);display:block}
.sim .cldevid i{font-style:normal;font-size:.68rem;color:var(--muted)}
.sim .cldevac{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:7px}
.sim .clmini{font-size:.68rem;color:var(--muted);font-weight:600;gap:3px}
.sim .clchk{flex-direction:row;align-items:center;gap:5px}
.sim .clchk input{width:15px;height:15px}
.sim .clwait{margin-top:6px;font-size:.72rem;font-weight:700;color:#b45309}
.sim .clacoes{display:flex;flex-wrap:wrap;gap:6px}
.sim .clacoes .btn{font-size:.72rem}
.sim .clacoes .btn.cl-trap{background:#fff7ed;color:#c2410c}
.sim .clacoes .btn.cl-exc{background:#fef2f2;color:#b91c1c}
.sim .clacoes .btn.on{box-shadow:0 0 0 3px rgba(245,158,11,.35)}
.sim .clchaves{display:flex;flex-direction:column;gap:4px}
.sim .clchave{font-size:.8rem}
.sim .cldica{font-size:.7rem;color:var(--muted);margin:0 0 7px 20px;line-height:1.45}

/* ---- console ---- */
.sim .clconsole{margin-top:18px;border:1px solid var(--line);border-radius:14px;background:#f8fafc;padding:12px 14px}
.sim .cltabs{margin-bottom:10px}
.sim .clchead{font-size:.84rem;color:var(--muted);margin:0 0 9px;line-height:1.55}
.sim .clvazio{font-size:.86rem;color:var(--muted);background:#fff;border:1px dashed var(--line);
  border-radius:11px;padding:14px}
.sim .cllog{max-height:250px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:11px;padding:7px}
.sim .cllogline{display:flex;gap:8px;align-items:baseline;padding:3px 6px;border-radius:7px;font-size:.82rem;line-height:1.5}
.sim .cllogline i{font-style:normal;flex-shrink:0}
.sim .cllogline .clc{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.7rem;color:#94a3b8;min-width:28px;text-align:right}
.sim .cllogline .clf{font-size:.6rem;font-weight:800;letter-spacing:.4px;color:#64748b;background:#f1f5f9;
  border-radius:5px;padding:.05rem .3rem;min-width:52px;text-align:center}
.sim .cllogline.u{background:#f8fbff}
.sim .cllogline.k{background:#faf8ff}
.sim .cllogline.int{background:#f0f9ff}.sim .cllogline.int .clf{background:#e0f2fe;color:#0369a1}
.sim .cllogline.exc{background:#fef2f2}.sim .cllogline.exc .clf{background:#fee2e2;color:#b91c1c}
.sim .cllogline.trap{background:#fff7ed}.sim .cllogline.trap .clf{background:#ffedd5;color:#c2410c}
.sim .cllogline.hw{background:#fffbeb}.sim .cllogline.hw .clf{background:#fef3c7;color:#92400e}
.sim .clstack{display:flex;flex-direction:column;gap:6px}
.sim .clframe{background:#fff;border:1px solid var(--line);border-radius:11px;padding:9px 12px}
.sim .clframe.topo{border-color:#c4b5fd;box-shadow:0 3px 12px rgba(109,40,217,.12)}
.sim .clframe b{display:block;font-size:.85rem;color:var(--ink)}
.sim .clframe span{font-size:.76rem;color:var(--muted)}
.sim .clframe code{font-family:ui-monospace,Menlo,Consolas,monospace}
.sim .clbadge{color:#fff;font-size:.66rem;font-weight:800;border-radius:6px;padding:.1rem .4rem}
.sim .clvon td{background:#fef9c3!important}
.sim .clbars{position:relative;margin:12px 0 6px;padding-bottom:4px}
.sim .clbars::after{content:"";position:absolute;top:0;bottom:4px;left:calc(102px + var(--prazo,50%));
  border-left:2px dashed #b91c1c;opacity:.75}
.sim .clbarrow{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.sim .clbarnome{width:94px;flex-shrink:0;font-size:.74rem;font-weight:700;color:var(--ink)}
.sim .clbartrilho{flex:1;background:#e2e8f0;border-radius:7px;height:22px;overflow:hidden}
.sim .clbarfill{height:100%;background:linear-gradient(135deg,#3b82f6,#0ea5e9);color:#fff;font-size:.68rem;
  font-weight:700;display:flex;align-items:center;justify-content:flex-end;padding-right:6px;box-sizing:border-box}
.sim .clbarfill.ruim{background:linear-gradient(135deg,#ef4444,#b91c1c)}
.sim .clbarok{width:74px;flex-shrink:0;font-size:.7rem;font-weight:700;color:var(--muted)}
@media(max-width:560px){
  .sim .clbarnome{width:70px}
  .sim .clbars::after{left:calc(78px + var(--prazo,50%))}
  .sim .clcom{display:none}
}

/* ===========================================================================
   Playground léxico (REG.lexer) — esteira caractere → padrão(AFD) → lexema → token
   =========================================================================== */
.sim .lxbar{display:flex;justify-content:space-between;align-items:center;gap:10px;
  margin:16px 0 8px;flex-wrap:wrap}
.sim .lxbartit{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted)}
.sim .lxstream{display:flex;flex-wrap:wrap;gap:8px}
.sim .lxtok{cursor:pointer;text-align:left;font-family:inherit;border-radius:11px;
  padding:7px 11px 6px;min-width:54px;border:1px solid var(--line);background:#fff;
  display:flex;flex-direction:column;gap:2px;transition:transform .12s,box-shadow .15s}
.sim .lxtok:hover{transform:translateY(-2px)}
.sim .lxtok .lxlex{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;
  font-size:.86rem;line-height:1.15}
.sim .lxtok .lxcat{font-size:.56rem;letter-spacing:.05em;font-weight:800;text-transform:uppercase;opacity:.85}
.sim .lxtok.on{transform:translateY(-2px);box-shadow:0 0 0 2px #4f46e5,0 10px 20px -12px rgba(79,70,229,.5)}
.sim .lxtok.skip{background:#f8fafc;border-style:dashed;border-color:#cbd5e1;color:#94a3b8}

/* paleta única das categorias léxicas (chip, token final e pill da bancada) */
.sim .lxtok.kw,.sim .lxrepr.kw,.sim .lxpill.kw{background:#f3e8ff;border-color:#e2d1fb;color:#6d28d9}
.sim .lxtok.id,.sim .lxrepr.id,.sim .lxpill.id{background:#dbeafe;border-color:#bfdbfe;color:#1d4ed8}
.sim .lxtok.num,.sim .lxrepr.num,.sim .lxpill.num{background:#fce7f3;border-color:#fbcfe8;color:#be185d}
.sim .lxtok.op,.sim .lxrepr.op,.sim .lxpill.op{background:#fef3c7;border-color:#fde68a;color:#b45309}
.sim .lxtok.pt,.sim .lxrepr.pt,.sim .lxpill.pt{background:#eef1f5;border-color:#dde3ea;color:#475569}
.sim .lxtok.str,.sim .lxrepr.str,.sim .lxpill.str{background:#d1fae5;border-color:#a7f3d0;color:#047857}
.sim .lxtok.unk,.sim .lxrepr.unk,.sim .lxpill.unk{background:#fee2e2;border-color:#fecaca;color:#dc2626}
.sim .lxrepr.skip,.sim .lxpill.skip{background:#f1f5f9;border-color:#cbd5e1;color:#64748b}

/* a esteira das 4 estações */
.sim .lxflow{margin-top:14px}
.sim .lxest{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;gap:6px;align-items:stretch}
.sim .lxst{background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 12px 12px;
  display:flex;flex-direction:column;min-width:0}
.sim .lxstag{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;
  color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.sim .lxn{width:17px;height:17px;border-radius:5px;flex:none;color:#fff;font-size:.6rem;font-weight:800;
  background:linear-gradient(135deg,var(--blue),var(--purple));display:grid;place-items:center}
.sim .lxarr{display:grid;place-items:center;color:#94a3b8;font-size:1.05rem;font-weight:700;user-select:none}
.sim .lxnote{font-size:.68rem;color:var(--muted);margin-top:auto;padding-top:8px;line-height:1.5}
.sim .lxnote b{color:var(--ink)}
.sim .lxfita{display:flex;flex-wrap:wrap;gap:3px;margin-top:2px}
.sim .lxch{position:relative;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem;
  font-weight:700;min-width:21px;height:25px;padding:0 3px;display:grid;place-items:center;
  background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#0f172a;cursor:pointer;white-space:pre}
.sim .lxch.lida{background:#f1f5f9;border-color:#eef2f7;color:#94a3b8}
.sim .lxch.cab{background:#eef2ff;border-color:#4f46e5;color:#312e81;box-shadow:0 0 0 2px rgba(79,70,229,.18)}
.sim .lxch.cab::after{content:"▼";position:absolute;top:-13px;left:50%;transform:translateX(-50%);
  font-size:.58rem;color:#4f46e5}
.sim .lxch.bad{background:#fee2e2;border-color:#dc2626;color:#b91c1c}
.sim .lxpad{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.73rem;font-weight:600;
  color:var(--ink);word-break:break-word;line-height:1.45}
.sim .lxer{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.67rem;color:#4338ca;
  margin-top:5px;word-break:break-word;line-height:1.4}
.sim .lxlexbig{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1rem;font-weight:700;
  color:var(--ink);word-break:break-all}
.sim .lxdim{color:#cbd5e1;font-weight:400}
.sim .lxrepr{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem;font-weight:700;
  border:1px solid var(--line);border-radius:8px;padding:5px 8px;word-break:break-word;color:var(--ink)}

/* bancada: o AFD testando caractere a caractere */
.sim .lxbanc{margin-top:12px;border:1px solid var(--line);border-radius:14px;padding:12px 14px 14px;
  background:linear-gradient(180deg,#fbfdff,#f3f6fb)}
.sim .lxbtop{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;
  font-size:.82rem;color:var(--ink)}
.sim .lxctrl{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sim .lxpasso{font-size:.72rem;font-weight:700;color:var(--muted)}
.sim .lxsvgw{overflow-x:auto;margin:6px 0 2px}
.sim .lxsvg{display:block;margin:0 auto;max-width:100%;height:auto}
.sim .lxno{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px;font-weight:700;fill:#475569}
.sim .lxno.on{fill:#312e81}
.sim .lxlbl{font-size:11px;fill:#94a3b8}
.sim .lxlbl.on{fill:#4338ca;font-weight:700}
.sim .lxlbl.bad{fill:#dc2626;font-weight:700}
.sim .lxtag{font-size:9.5px;fill:#94a3b8}
.sim .lxbfoot{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.sim .lxafdnota{font-size:.74rem;color:var(--muted);flex:1;min-width:220px;line-height:1.55}
.sim .lxpill{font-size:.64rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
  border:1px solid var(--line);border-radius:999px;padding:2px 9px;white-space:nowrap}
.sim .lxpill.ok{background:#dcfce7;border-color:#86efac;color:#166534}
.sim .lxpill.bad{background:#fee2e2;border-color:#fecaca;color:#b91c1c}
.sim .lxlog{margin-top:10px;display:flex;flex-direction:column;gap:3px;max-height:158px;overflow-y:auto}
.sim .lxlin{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.73rem;color:#475569;
  background:#fff;border:1px solid var(--line);border-radius:7px;padding:4px 8px;cursor:pointer}
.sim .lxlin.on{border-color:#4f46e5;background:#eef2ff;color:#312e81}
.sim .lxlin.bad{border-color:#fecaca;background:#fee2e2;color:#b91c1c}
.sim .lxlin.tab{font-family:var(--sans);cursor:default}
.sim .lxlin.lxdim{cursor:default;background:#f8fafc}
.sim .lxok{color:#16a34a;font-weight:700}
.sim .lxbad{color:#dc2626;font-weight:700}
.sim .lxvazio{text-align:center;color:var(--muted);font-size:.82rem;padding:20px 10px}
.sim .lxvazio kbd{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.72rem;background:#eef2ff;
  border:1px solid var(--line);border-radius:6px;padding:1px 6px;color:#4338ca}
@media(max-width:820px){
  .sim .lxest{grid-template-columns:1fr}
  .sim .lxarr{height:16px;transform:rotate(90deg)}
  .sim .lxnote{margin-top:8px}
}

/* ===========================================================================
   Tríade padrão × lexema × token (REG.triade) — aula 3 de compiladores
   =========================================================================== */
.sim .trigrid{display:grid;grid-template-columns:1.1fr 1fr;gap:14px;margin-top:14px}
.sim .triz{border:1px solid var(--line);border-radius:14px;padding:14px 16px 16px;background:#fbfcfd}
.sim .trizt{font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;font-weight:800;color:var(--blue);
  margin-bottom:10px;display:flex;flex-wrap:wrap;align-items:baseline;gap:7px}
.sim .trizt span{font-size:.68rem;letter-spacing:.01em;text-transform:none;font-weight:500;color:var(--muted)}
.sim .trizt.tk{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.sim .trinot{display:flex;flex-direction:column;gap:7px}
.sim .trirow{display:flex;align-items:baseline;gap:9px}
.sim .tritag{flex:none;width:62px;font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;
  font-weight:800;color:var(--muted);padding-top:2px}
.sim .trival{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;color:var(--ink);line-height:1.45}
.sim .trival.er{color:#4338ca;font-weight:700}
.sim .trival.dim{font-family:var(--sans);font-size:.72rem;color:var(--muted)}
.sim .trisvgw{overflow-x:auto;margin-top:6px}
.sim .trisvg{display:block;margin:0 auto;max-width:100%;height:auto}
.sim .trino{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;font-weight:700;fill:#475569}
.sim .trino.on{fill:#1e293b}
.sim .trilbl{font-size:11px;fill:#64748b;font-family:ui-monospace,Menlo,Consolas,monospace}

.sim .trifita{display:flex;flex-wrap:wrap;gap:5px;min-height:34px;margin:10px 0 8px}
.sim .trich{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.95rem;font-weight:700;min-width:26px;
  height:32px;padding:0 5px;display:grid;place-items:center;background:#fff;border:1px solid var(--line);
  border-radius:7px;color:#334155;white-space:pre;transition:transform .15s,background .15s}
.sim .trich.on{background:#e7ecff;border-color:var(--blue);color:#1e40af;transform:translateY(-2px)}
.sim .trich.done{background:#dcfce7;border-color:#86efac;color:#166534}
.sim .trich.bad{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}
.sim .trivazio{font-size:.78rem;color:#94a3b8;display:grid;place-items:center;height:32px}
.sim .tristatus{font-size:.78rem;color:#475569;min-height:38px;line-height:1.5}
.sim .tristatus b{color:var(--ink)}
.sim .tristatus.ok b{color:#166534}
.sim .tristatus.bad b{color:#b91c1c}
.sim .triok{color:#16a34a;font-weight:700}
.sim .tritok{min-height:52px}
.sim .tripar{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.1rem;font-weight:700;color:var(--ink)}
.sim .tripar b{color:#4338ca}
.sim .tripar.dim{color:#cbd5e1}
.sim .triatr{font-size:.72rem;color:var(--muted);margin-top:5px}
.sim .triatr b{font-family:ui-monospace,Menlo,Consolas,monospace;color:#334155}
.sim .trikw{font-size:.73rem;color:#be185d;margin-top:9px;background:#fdf2f8;border:1px solid #fbcfe8;
  border-radius:9px;padding:7px 10px;line-height:1.5}
.sim .trikw b{color:#9d174d}

.sim .triextit{font-size:.78rem;color:var(--muted);margin:18px 0 8px}
.sim .triextit b{color:var(--ink)}
.sim .triex{display:flex;flex-wrap:wrap;gap:7px}
.sim .triexb{cursor:pointer;font-family:inherit;border:1px solid var(--line);background:#fff;border-radius:9px;
  padding:6px 11px;color:#334155;display:inline-flex;align-items:center;gap:6px;transition:transform .13s,border-color .13s}
.sim .triexb:hover{transform:translateY(-2px);border-color:var(--blue)}
.sim .triexl{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem;font-weight:700}
.sim .triexm{font-size:.75rem;font-weight:800}
.sim .triexb.ok{background:#f0fdf4;border-color:#86efac}
.sim .triexb.ok .triexm{color:#16a34a}
.sim .triexb.bad{background:#fef2f2;border-color:#fecaca}
.sim .triexb.bad .triexm{color:#dc2626}
.sim .tricol{margin-top:16px}
.sim .tricolt{font-size:.78rem;color:var(--muted);margin-bottom:8px}
.sim .tricolt b{color:var(--ink)}
.sim .tricolr{display:flex;flex-wrap:wrap;gap:6px}
.sim .tricolc{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.78rem;font-weight:700;
  border:1px solid;border-radius:8px;padding:3px 9px}
.sim .tricolc.id{background:#dbeafe;border-color:#bfdbfe;color:#1d4ed8}
.sim .tricolc.num{background:#fce7f3;border-color:#fbcfe8;color:#be185d}
.sim .tricolc.str{background:#d1fae5;border-color:#a7f3d0;color:#047857}
@media(max-width:780px){
  .sim .trigrid{grid-template-columns:1fr}
}
.sim .trich.stop{background:#fef3c7;border-color:#fcd34d;color:#92400e}

/* ===========================================================================
   Expressões regulares ao vivo (REG.expreg) — aula 3 de compiladores
   =========================================================================== */
.sim .schip i{font-style:normal;opacity:.62;font-weight:500;margin-left:5px}
.sim .rexlei{display:flex;flex-wrap:wrap;align-items:baseline;gap:9px;margin:6px 0 14px;
  background:#f8faff;border:1px solid var(--line);border-radius:11px;padding:9px 13px}
.sim .rexlei b{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.95rem;color:#4338ca}
.sim .rexlei.ruim{background:#fef2f2;border-color:#fecaca}
.sim .rexlei.ruim b{color:#b91c1c;font-family:var(--sans);font-size:.85rem;font-weight:600}
.sim .rextag{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted)}
.sim .rexnota{font-size:.7rem;color:var(--muted);flex:1;min-width:200px}
.sim .rexnota b{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.72rem;color:#334155}
.sim .rexpainel{border:1px solid var(--line);border-radius:14px;padding:14px 16px 16px;background:#fbfcfd;margin-top:10px}
.sim .rextit{font-size:.8rem;font-weight:700;color:var(--ink);margin-bottom:10px}
.sim .rextit b{font-family:ui-monospace,Menlo,Consolas,monospace;color:#4338ca}
.sim .rextit.dsf{margin:22px 0 10px;font-size:.86rem}
.sim .rexcads{display:flex;flex-wrap:wrap;gap:7px}
.sim .rexcad{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;font-weight:700;
  background:#eef2ff;border:1px solid #c7d2fe;color:#3730a3;border-radius:8px;padding:4px 10px}
.sim .rexcad.eps{background:#fef3c7;border-color:#fde68a;color:#92400e}
.sim .rexobs{font-size:.73rem;color:var(--muted);margin-top:11px;line-height:1.55}
.sim .rexobs b{color:var(--ink)}
.sim .rexobs code,.sim .rexfalha code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#f1f5f9;
  border:1px solid var(--line);border-radius:5px;padding:0 5px}
.sim .rexobs.rexmot{margin-top:14px;padding-top:11px;border-top:1px dashed var(--line)}
.sim .rexvazio{font-size:.8rem;color:var(--muted);text-align:center;padding:18px 8px}
.sim .rexlinha{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}
.sim .rexlinha label{font-size:.72rem;color:var(--muted);display:flex;align-items:center;gap:7px}
.sim .rexlinha input{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem;padding:.4rem .6rem;
  border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);min-width:190px}
.sim .rexlinha input:focus{outline:none;border-color:var(--blue)}
.sim .rexver{font-size:.72rem;font-weight:800;border-radius:999px;padding:3px 11px;border:1px solid}
.sim .rexver.ok{background:#dcfce7;border-color:#86efac;color:#166534}
.sim .rexver.no{background:#fee2e2;border-color:#fecaca;color:#b91c1c}
.sim .rexfita{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 12px}
.sim .rexch{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.95rem;font-weight:700;min-width:26px;
  height:32px;padding:0 6px;display:grid;place-items:center;border-radius:7px;border:1px solid var(--line);
  background:#fff;color:#334155}
.sim .rexch.no{background:#fee2e2;border-color:#fecaca;color:#b91c1c}
.sim .rexch.eps{background:#fef3c7;border-color:#fde68a;color:#92400e}
.sim .rexch.f0{background:#dbeafe;border-color:#bfdbfe;color:#1d4ed8}
.sim .rexch.f1{background:#f3e8ff;border-color:#e2d1fb;color:#6d28d9}
.sim .rexch.f2{background:#d1fae5;border-color:#a7f3d0;color:#047857}
.sim .rexch.f3{background:#fef3c7;border-color:#fde68a;color:#b45309}
.sim .rexpart{border-top:1px dashed var(--line);padding-top:10px}
.sim .rexpartt{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:7px}
.sim .rexpartl{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:5px}
.sim .rexpartc{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.78rem;font-weight:700;
  border:1px solid;border-radius:7px;padding:2px 8px}
.sim .rexpartc.f0{background:#dbeafe;border-color:#bfdbfe;color:#1d4ed8}
.sim .rexpartc.f1{background:#f3e8ff;border-color:#e2d1fb;color:#6d28d9}
.sim .rexpartc.f2{background:#d1fae5;border-color:#a7f3d0;color:#047857}
.sim .rexpartc.f3{background:#fef3c7;border-color:#fde68a;color:#b45309}
.sim .rexparts{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.78rem;color:#475569}
.sim .rexgrupo{margin-bottom:20px}
.sim .rexgrupo:last-of-type{margin-bottom:0}
.sim .rextab{font-size:.8rem}
.sim .rextab th{font-weight:700}
.sim .rextab td{text-align:center;font-weight:800}
.sim .rextab td.rexcadc{text-align:left;font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;color:#334155}
.sim .rextab td.rexsim{background:#f0fdf4;color:#16a34a}
.sim .rextab td.rexnao{background:#fef2f2;color:#dc2626}
.sim .rexdesl{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;margin-bottom:10px}
.sim .rexdest{font-size:.82rem;font-weight:700;color:var(--ink);margin-bottom:9px}
.sim .rexdest span{font-weight:400;color:var(--muted);font-size:.75rem}
.sim .rexresp{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem;padding:.4rem .6rem;
  border:1px solid var(--line);border-radius:9px;background:#fbfcfd;color:var(--ink);min-width:230px;flex:1}
.sim .rexresp:focus{outline:none;border-color:var(--blue);background:#fff}
.sim .rexfalha{font-size:.73rem;color:#b91c1c;margin-top:4px}

/* --- sim bitmodo (SO-EC aula 02): a fronteira usuário × núcleo --- */
.sim .bmtopo{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:4px}
.sim .bmchip{display:inline-flex;flex-direction:column;gap:1px;border:1px solid;border-radius:11px;padding:5px 12px;line-height:1.25}
.sim .bmchip i{font-style:normal;font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted)}
.sim .bmchip b{font-size:.84rem;font-weight:800}
.sim .bmchip.u{background:#eff6ff;border-color:#bfdbfe}.sim .bmchip.u b{color:#1d4ed8}
.sim .bmchip.k{background:#faf5ff;border-color:#e9d5ff}.sim .bmchip.k b{color:#6d28d9}
.sim .bmdica{font-size:.72rem;color:var(--muted);flex:1;min-width:190px;line-height:1.5}
.sim .bmsec{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);margin:15px 0 7px}
.sim .bmgrade{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:8px}
.sim .bmins{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;cursor:pointer;
  background:#fff;border:1px solid var(--line);border-radius:11px;padding:8px 11px;font:inherit;transition:.14s}
.sim .bmins:hover{border-color:var(--blue);background:#f8fbff}
.sim .bmmn{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.84rem;font-weight:700;color:#334155}
.sim .bmint{font-size:.7rem;color:var(--muted);line-height:1.4}
.sim .bmsel{font-size:.62rem;font-weight:800;letter-spacing:.03em;margin-top:3px}
.sim .bmins.ok{background:#f0fdf4;border-color:#bbf7d0}.sim .bmins.ok .bmsel{color:#15803d}
.sim .bmins.no{background:#fef2f2;border-color:#fecaca}.sim .bmins.no .bmsel{color:#b91c1c}
.sim .bmins.porta{border-style:dashed;border-color:#a7f3d0}
.sim .bmins.fuga{border-style:dashed;border-color:#fed7aa}
.sim .bmins.on{box-shadow:0 0 0 2px rgba(59,130,246,.32);border-color:var(--blue)}
.sim .bmver{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-top:15px;background:#fbfcfd}
.sim .bmver.no{background:#fffbfb;border-color:#fecaca}
.sim .bmver.ok{background:#fbfffc;border-color:#bbf7d0}
.sim .bmvertop{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:9px}
.sim .bmvertop b{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem;color:var(--ink)}
.sim .bmvered{font-size:.7rem;font-weight:800;border-radius:999px;padding:3px 11px;border:1px solid}
.sim .bmvered.ok{background:#dcfce7;border-color:#86efac;color:#166534}
.sim .bmvered.no{background:#fee2e2;border-color:#fecaca;color:#b91c1c}
.sim .bmregra{display:flex;flex-wrap:wrap;align-items:center;gap:7px;background:#fff;border:1px dashed var(--line);
  border-radius:11px;padding:8px 11px;margin-bottom:11px}
.sim .bmregra>b{font-size:.72rem;color:var(--muted)}
.sim .bmrt{font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);width:100%}
.sim .bmrp{font-size:.74rem;font-weight:700;border-radius:8px;padding:2px 9px;border:1px solid}
.sim .bmrp.on{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.sim .bmrp.off{background:#f8fafc;border-color:var(--line);color:#94a3b8;text-decoration:line-through}
.sim .bmrv{font-size:.74rem;font-weight:800;border-radius:8px;padding:2px 10px;border:1px solid}
.sim .bmrv.ok{background:#dcfce7;border-color:#86efac;color:#166534}
.sim .bmrv.no{background:#fee2e2;border-color:#fecaca;color:#b91c1c}
.sim .bmbeat{display:flex;gap:11px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line);
  font-size:.79rem;line-height:1.62;color:#334155}
.sim .bmbeat:first-of-type{border-top:none;padding-top:0}
.sim .bmbt{flex:0 0 98px;font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;font-weight:800;
  color:var(--muted);padding-top:4px}
.sim .bmbeat.ok .bmbt{color:#15803d}
.sim .bmbeat.no .bmbt{color:#b91c1c}
.sim .bmbeat b{color:var(--ink)}
.sim .bmbeat code,.sim .bmnota code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#f1f5f9;
  border:1px solid var(--line);border-radius:5px;padding:0 5px}
.sim .bmnota{font-size:.75rem;color:#475569;line-height:1.65;margin-top:11px;padding-top:10px;border-top:1px dashed var(--line)}
.sim .bmnota b{color:var(--ink)}
.sim .bmlink{border-top:none;padding-top:0;margin-top:2px;margin-bottom:12px}
.sim .bmfoot{display:block;margin-top:8px;font-size:.72rem;color:var(--muted)}
.sim .bmlad{display:flex;gap:14px;flex-wrap:wrap;margin:4px 0 13px}
.sim .bmcol{flex:1;min-width:248px}
.sim .bmcolt{font-size:.72rem;font-weight:800;color:var(--ink);margin-bottom:7px}
.sim .bmniv{border:1px solid var(--line);border-radius:10px;padding:7px 11px;margin-bottom:5px;background:#fff}
.sim .bmniv b{display:block;font-size:.8rem;color:var(--ink)}
.sim .bmniv span{font-size:.7rem;color:var(--muted);line-height:1.45}
.sim .bmniv.u{background:#eff6ff;border-color:#bfdbfe}.sim .bmniv.u b{color:#1d4ed8}
.sim .bmniv.k{background:#faf5ff;border-color:#e9d5ff}.sim .bmniv.k b{color:#6d28d9}
.sim .bmniv.h{background:#fff7ed;border-color:#fed7aa}.sim .bmniv.h b{color:#c2410c}
.sim .bmniv.off{background:#f8fafc;border-style:dashed;opacity:.75}.sim .bmniv.off b{color:#94a3b8}
@media(max-width:700px){.sim .bmbeat{flex-direction:column;gap:2px}.sim .bmbt{flex:none;padding-top:0}}

/* --- sim datapath (revisão SO-EC): o processador por dentro, em portas --- */
.sim .dpwrap{border:1px solid var(--line);border-radius:14px;background:#fff;padding:10px 12px;margin:10px 0;overflow-x:auto}
.sim .dpsvg{display:block;width:100%;min-width:720px;height:auto}
.sim .dpbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px}
.sim .dpsel{font:inherit;font-size:.78rem;padding:.34rem .6rem;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.sim .dpchk{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;color:var(--muted);
  border:1px solid var(--line);border-radius:9px;padding:.3rem .62rem;background:#fff;cursor:pointer}
.sim .dpcols{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}
.sim .dppainel{flex:1;min-width:290px;border:1px solid var(--line);border-radius:14px;background:#fbfcfd;padding:10px 12px}
.sim .dppt{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:8px}
.sim .dpram{display:flex;flex-direction:column;gap:2px}
.sim .dpcel{display:grid;grid-template-columns:26px 78px 34px 1fr 16px;align-items:center;gap:6px;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.72rem;padding:2px 5px;border-radius:6px;background:#fff;border:1px solid #eef2f7}
.sim .dpcel.mar{background:#eff6ff;border-color:#bfdbfe}
.sim .dpcel.pc{box-shadow:inset 3px 0 0 #6d28d9}
.sim .dpend{color:#94a3b8;font-weight:700;text-align:right}
.sim .dpval{color:#1d4ed8;font-weight:700}
.sim .dpdec{color:#64748b}
.sim .dpasm{color:#334155;font-weight:700}
.sim .dpcach{color:#cbd5e1;font-size:.6rem;text-align:center}
.sim .dpcach.on{color:#15803d}
.sim .dpleg{font-size:.68rem;color:var(--muted);margin:8px 0 0;line-height:1.5}
.sim .dplog{max-height:330px;overflow:auto;display:flex;flex-direction:column;gap:3px}
.sim .dplinha{display:flex;gap:8px;align-items:flex-start;font-size:.73rem;line-height:1.5;color:#334155;
  background:#fff;border:1px solid #eef2f7;border-radius:7px;padding:4px 7px}
.sim .dplinha .dpc{flex:0 0 26px;text-align:right;font-family:ui-monospace,Menlo,monospace;font-size:.66rem;color:#94a3b8;font-weight:700;padding-top:1px}
.sim .dplinha code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#f1f5f9;border:1px solid var(--line);border-radius:4px;padding:0 4px}
.sim .dplinha.busca{background:#f8fbff;border-color:#dbeafe}
.sim .dplinha.exec{background:#fbfaff;border-color:#ede9fe}
.sim .dplinha.espera{background:#fff7ed;border-color:#fed7aa;color:#9a3412}
.sim .dplinha.fim{background:#f0fdf4;border-color:#bbf7d0;color:#166534;font-weight:600}
.sim .dplinha.pulo{background:#f8fafc}
.sim .dpvazio{font-size:.75rem;color:var(--muted);padding:14px 4px;text-align:center}
@media(max-width:860px){.sim .dpcols{flex-direction:column}}

/* --- sim equipnet (Redes aula 03): bancada dos equipamentos de rede --- */
.sim .eqpainel{margin-top:6px}
.sim .eqbar{align-items:center;gap:10px;flex-wrap:wrap}
.sim .eqsel{font:inherit;font-size:.78rem;padding:.34rem .6rem;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.sim .eqchk{display:inline-flex;flex-direction:row;align-items:center;gap:6px;font-size:.75rem;
  font-weight:500;color:var(--muted);border:1px solid var(--line);border-radius:9px;padding:.42rem .62rem;
  background:#fff;cursor:pointer}
.sim .eqchk input{margin:0;flex:0 0 auto}
/* topologia */
.sim .eqtopo{display:flex;flex-direction:column;align-items:center;gap:14px;margin:12px 0}
.sim .eqcaixa{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  min-width:132px;padding:10px 16px;border-radius:14px;background:linear-gradient(135deg,#1e3a8a,#4338ca);
  color:#fff;font-size:1.5rem;box-shadow:0 6px 18px rgba(30,58,138,.28)}
.sim .eqcaixa span{font-size:.6rem;font-weight:800;letter-spacing:.7px}
.sim .eqcaixa small{font-size:.58rem;opacity:.8;font-weight:600}
.sim .eqcaixa.ap{background:linear-gradient(135deg,#065f46,#0f766e)}
.sim .eqhosts{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;width:100%}
.sim .eqhosts.dois{grid-template-columns:repeat(2,1fr)}
.sim .eqhost{border:2px solid var(--line);border-radius:11px;padding:8px 6px;text-align:center;background:#fff;
  transition:border-color .18s,background .18s}
.sim .eqhost b{display:block;font-size:.84rem;color:var(--ink)}
.sim .eqmac{display:block;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.56rem;color:#94a3b8;word-break:break-all}
.sim .eqip{display:block;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.64rem;color:var(--muted)}
.sim .eqhost.orig{border-color:#1d4ed8;background:#eff6ff}
.sim .eqhost.proc{border-color:#15803d;background:#f0fdf4}
.sim .eqhost.sin{border-color:#fdba74;background:#fff7ed}
.sim .eqhost.espia{border-color:#b91c1c;background:#fef2f2}
.sim .eqtag{display:inline-block;margin-top:5px;font-size:.56rem;font-weight:800;letter-spacing:.4px;
  text-transform:uppercase;padding:.14rem .42rem;border-radius:999px;background:#eef2f7;color:#475569}
.sim .eqtag.env{background:#dbeafe;color:#1d4ed8}
.sim .eqtag.ok{background:#dcfce7;color:#166534}
.sim .eqtag.desc{background:#ffedd5;color:#9a3412}
.sim .eqtopo.rot{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px}
.sim .eqrede{flex:1;min-width:210px;border:1px dashed var(--line);border-radius:14px;padding:8px;background:#fbfcfd}
.sim .eqrt{font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:6px;text-align:center}
/* fita do meio compartilhado */
.sim .eqfita{border:1px solid var(--line);border-radius:12px;background:#fff;padding:9px 11px;margin:10px 0;overflow-x:auto}
.sim .eqft{font-size:.72rem;font-weight:700;color:var(--ink);margin-bottom:7px}
.sim .eqrow{display:flex;align-items:center;gap:8px;min-width:max-content;margin-bottom:2px}
.sim .eqrot{flex:0 0 74px;font-size:.66rem;color:var(--muted);text-align:right}
.sim .eqcels{display:flex;gap:1px}
.sim .eqc{display:inline-block;width:7px;height:14px;border-radius:2px;background:#f1f5f9;vertical-align:middle}
.sim .eqc.tx{background:#1d4ed8}
.sim .eqc.col{background:#b91c1c}
.sim .eqc.bk{background:#fdba74}
.sim .eqc.esp{background:#cbd5e1}
.sim .eqc.ovh{background:#a78bfa}
.sim .eqleg{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;font-size:.66rem;color:var(--muted)}
.sim .eqleg span{display:inline-flex;align-items:center;gap:4px}
/* switch por dentro */
.sim .eqsw{display:flex;flex-direction:column;align-items:center;gap:12px;margin:12px 0}
.sim .eqswcx{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:150px;padding:10px 18px;
  border-radius:14px;background:linear-gradient(135deg,#312e81,#4338ca);color:#fff;font-size:1.4rem}
.sim .eqswcx span{font-size:.6rem;font-weight:800;letter-spacing:.7px}
.sim .eqswcx small{font-size:.58rem;opacity:.85;font-weight:600}
.sim .eqportas{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;width:100%}
.sim .eqporta{border:2px solid var(--line);border-radius:11px;padding:7px 5px;text-align:center;background:#fff}
.sim .eqporta b{display:block;font-size:.8rem;color:var(--ink)}
.sim .eqpn{display:block;font-size:.56rem;letter-spacing:.4px;text-transform:uppercase;font-weight:800;color:#94a3b8}
.sim .eqvl{display:inline-block;margin-top:4px;font-size:.56rem;font-weight:800;padding:.12rem .4rem;border-radius:999px}
.sim .eqporta.v10 .eqvl{background:#dbeafe;color:#1d4ed8}
.sim .eqporta.v20 .eqvl{background:#f3e8ff;color:#6d28d9}
.sim .eqporta.orig{border-color:#1d4ed8;background:#eff6ff}
.sim .eqporta.hit{border-color:#15803d;background:#f0fdf4}
.sim .eqporta.sin{border-color:#fdba74;background:#fff7ed}
.sim .eqvazio{text-align:center;color:var(--muted);font-size:.74rem}
.sim td.eqvelho{color:#c2410c;font-weight:700}
/* fronteira */
.sim .eqfront{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;margin:12px 0}
.sim .eqno{min-width:118px;border:2px solid var(--line);border-radius:12px;padding:8px 10px;text-align:center;background:#fff}
.sim .eqno b{display:block;font-size:.82rem}
.sim .eqno.cx{background:linear-gradient(135deg,#1e3a8a,#4338ca);color:#fff;border-color:transparent;font-size:1.2rem}
.sim .eqno.cx .eqip{color:#c7d2fe}
.sim .eqno.cx.off{background:#e2e8f0;color:#94a3b8;border:2px dashed #cbd5e1}
.sim .eqno.cx.off .eqip{color:#94a3b8}
.sim .eqlink{flex:0 0 78px;height:3px;background:#e2e8f0;position:relative;border-radius:2px}
.sim .eqlink span{position:absolute;top:9px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:.58rem;color:var(--muted)}
.sim .eqlink.on{background:#1d4ed8}
.sim .eqlink.on span{color:#1d4ed8;font-weight:700}
.sim .eqlink.bloq{background:repeating-linear-gradient(90deg,#b91c1c 0 6px,transparent 6px 12px)}
.sim .eqlink.bloq span{color:#b91c1c;font-weight:700}
.sim td.eqmuda{color:#b91c1c;font-weight:700;font-size:.74rem}
.sim td.eqfixo{color:#15803d;font-weight:700;font-size:.74rem}
/* no ar */
.sim .eqar{display:flex;flex-direction:column;align-items:center;gap:10px;margin:12px 0}
.sim .eqcabo{font-size:.64rem;color:var(--muted);letter-spacing:.1em}
/* qual caixa resolve */
.sim .eqcaso{border:1px solid var(--line);border-left:4px solid #4338ca;border-radius:12px;background:#fbfcfd;padding:11px 14px;margin:12px 0}
.sim .eqct{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:5px}
.sim .eqcaso p{margin:0;font-size:.9rem;line-height:1.55;color:var(--ink)}
.sim .eqops{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:6px 0 10px}
.sim .eqop{font:inherit;font-size:.8rem;text-align:left;line-height:1.4;padding:.62rem .8rem;border:1px solid var(--line);
  border-radius:11px;background:#fff;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}
.sim .eqop:hover{border-color:#4338ca;background:#f8fafc}
.sim .eqop.certa{border-color:#15803d;background:#f0fdf4;font-weight:700;cursor:default}
.sim .eqop.errada{border-color:#b91c1c;background:#fef2f2;cursor:default}
.sim .eqop.off{opacity:.55;cursor:default}
/* aba "dentro do MAC" */
.sim .eqmacinp{font:inherit;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem;letter-spacing:.06em;
  padding:.4rem .7rem;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);width:210px}
.sim .eqmac{margin:14px 0}
.sim .eqmacgrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;
  max-width:460px;margin:0 auto}
.sim .eqmet{grid-column:span 3;font-size:.62rem;letter-spacing:.05em;text-transform:uppercase;font-weight:800;
  text-align:center;padding:5px 4px;border-radius:8px 8px 0 0}
.sim .eqmet small{display:block;font-size:.58rem;letter-spacing:0;text-transform:none;font-weight:600;opacity:.75}
.sim .eqmet.oui{background:#dbeafe;color:#1d4ed8}
.sim .eqmet.ser{background:#f3e8ff;color:#6d28d9}
.sim .eqbyte{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.15rem;font-weight:700;text-align:center;
  padding:.42rem .2rem;border-radius:9px;border:2px solid transparent}
.sim .eqbyte.oui{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}
.sim .eqbyte.ser{background:#faf5ff;color:#6d28d9;border-color:#e9d5ff}
.sim .eqbyte.primeiro{box-shadow:0 3px 0 #1d4ed8}
.sim .eqsep{color:#94a3b8;font-weight:700}
.sim .eqbitwrap{margin-top:14px;border:1px solid var(--line);border-radius:12px;background:#fbfcfd;padding:10px 12px}
.sim .eqbt{font-size:.7rem;color:var(--muted);margin-bottom:8px;text-align:center}
.sim .eqbits{display:flex;gap:4px;justify-content:center;flex-wrap:wrap}
.sim .eqbit{width:52px;text-align:center;border:1px solid var(--line);border-radius:9px;background:#fff;padding:5px 2px}
.sim .eqbit b{display:block;font-family:ui-monospace,Menlo,monospace;font-size:1rem;color:#94a3b8}
.sim .eqbit.um b{color:#1d4ed8}
.sim .eqbit small{display:block;font-size:.55rem;color:#94a3b8}
.sim .eqbit i{display:block;font-style:normal;font-size:.58rem;font-weight:800;letter-spacing:.04em;margin-top:2px}
.sim .eqbit.ul,.sim .eqbit.ig{cursor:pointer;border-width:2px}
.sim .eqbit.ul{border-color:#c2410c}.sim .eqbit.ul i{color:#c2410c}
.sim .eqbit.ig{border-color:#6d28d9}.sim .eqbit.ig i{color:#6d28d9}
.sim .eqbit.ul:hover,.sim .eqbit.ig:hover{background:#f8fafc}
.sim .eqbdica{font-size:.68rem;color:var(--muted);text-align:center;margin:9px 0 0}
@media(max-width:700px){
  .sim .eqbyte{font-size:.95rem;padding:.34rem .42rem}
  .sim .eqbit{width:40px}
  .sim .eqmacinp{width:100%}
  .sim .eqhosts{grid-template-columns:repeat(2,1fr)}
  .sim .eqportas{grid-template-columns:repeat(2,1fr)}
  .sim .eqops{grid-template-columns:1fr}
  .sim .eqtopo.rot{flex-direction:column}
  .sim .eqfront{flex-direction:column}
  .sim .eqlink{flex:0 0 auto;width:3px;height:34px}
  .sim .eqlink span{top:50%;left:12px;transform:translateY(-50%)}
  .sim .eqrot{flex:0 0 62px;font-size:.6rem}
}

/* --- quadro de siglas (redes aula 03): tabela que empilha no celular --- */
.lesson .siglas td:first-child code{font-size:.84rem;font-weight:700}
.lesson .siglas td:first-child small{display:block;color:var(--muted);font-size:.72rem;line-height:1.4;margin-top:3px}
.lesson .siglas td:first-child{width:22%;vertical-align:top}
.lesson .siglas td{vertical-align:top}
@media(max-width:760px){
  .lesson .siglas thead{display:none}
  .lesson .siglas,.lesson .siglas tbody,.lesson .siglas tr,.lesson .siglas td{display:block;width:100%}
  .lesson .siglas tr{border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px;margin:10px 0}
  .lesson .siglas tbody tr:nth-child(even){background:#fff}
  .lesson .siglas td{border:none;padding:5px 0}
  .lesson .siglas td:first-child{width:100%;border-bottom:1px solid var(--line);padding-bottom:7px;margin-bottom:3px}
  .lesson .siglas td:first-child small{display:inline;margin-left:6px}
  .lesson .siglas td[data-r]::before{content:attr(data-r);display:block;font-size:.6rem;letter-spacing:.09em;
    text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:2px}
}

/* --- sim camadas (redes aula 04): bancada das camadas OSI/TCP-IP --- */
.sim .campainel{margin-top:6px}
.sim .cambar{align-items:center;gap:10px;flex-wrap:wrap}
.sim .camsel{font:inherit;font-size:.78rem;padding:.34rem .6rem;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.sim .camchk{display:inline-flex;flex-direction:row;align-items:center;gap:6px;font-size:.75rem;font-weight:500;
  color:var(--muted);border:1px solid var(--line);border-radius:9px;padding:.42rem .62rem;background:#fff;cursor:pointer}
.sim .camchk input{margin:0;flex:0 0 auto}
.sim .camaviso{font-size:.76rem;color:var(--muted);background:#f8fafc;border:1px solid var(--line);
  border-radius:10px;padding:8px 11px;margin:10px 0;line-height:1.5}
/* duas pilhas + a conversa lógica no meio */
.sim .camstacks{display:grid;grid-template-columns:1fr 88px 1fr;gap:5px 6px;align-items:stretch;margin:12px 0 4px}
.sim .camct{font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;font-weight:800;color:var(--muted);
  text-align:center;margin-bottom:3px}
.sim .camcx{border:1px solid var(--line);border-left:4px solid #cbd5e1;border-radius:9px;background:#fff;
  padding:6px 9px;transition:background .18s,box-shadow .18s}
.sim .camcx b{display:block;font-size:.8rem;color:var(--ink)}
.sim .camcx b i{font-style:normal;font-weight:800}
.sim .camcx small{display:block;font-size:.64rem;color:var(--muted)}
.sim .camcx.on{background:#eff6ff;box-shadow:0 0 0 2px #bfdbfe}
.sim .campar{display:flex;align-items:center}
.sim .campar span{flex:1;border-top:2px dashed #e2e8f0}
.sim .campar.on span{border-top-color:#1d4ed8;position:relative}
.sim .campar.on span::after{content:'par';position:absolute;top:-16px;left:50%;transform:translateX(-50%);
  font-size:.56rem;font-weight:800;color:#1d4ed8;letter-spacing:.06em;text-transform:uppercase}
.sim .camfio{margin:2px 0 12px;border-radius:8px;background:#e2e8f0;padding:5px 10px;text-align:center;
  font-size:.66rem;color:#64748b;transition:background .2s,color .2s}
.sim .camfio.on{background:#0369a1;color:#fff;font-weight:700}
/* a PDU do momento */
.sim .campduwrap{border:1px solid var(--line);border-radius:12px;background:#fbfcfd;padding:10px 12px;margin-bottom:6px}
.sim .campdut{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:7px}
.sim .campdu{display:flex;align-items:stretch;gap:2px;flex-wrap:wrap}
.sim .camhdr{color:#fff;font-size:.68rem;font-weight:700;padding:.3rem .5rem;border-radius:5px;
  font-family:ui-monospace,Menlo,Consolas,monospace}
.sim .camdado{background:#e2e8f0;color:#334155;font-size:.72rem;font-weight:700;padding:.3rem 1.4rem;border-radius:5px}
/* preço do cabeçalho */
.sim .camquadro{border:1px solid var(--line);border-radius:12px;background:#fff;padding:11px 13px;margin:12px 0}
.sim .camqt{font-size:.72rem;font-weight:700;color:var(--ink);margin-bottom:8px}
.sim .cambarra{display:flex;height:52px;border-radius:8px;overflow:hidden;border:1px solid var(--line)}
.sim .camseg{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;overflow:hidden;
  border-right:1px solid rgba(255,255,255,.35)}
.sim .camseg i{font-style:normal;font-size:.56rem;font-weight:700;opacity:.92;white-space:nowrap}
.sim .camseg b{font-size:.66rem;font-family:ui-monospace,Menlo,monospace}
.sim .camleg{display:flex;flex-wrap:wrap;gap:11px;margin-top:9px;font-size:.66rem;color:var(--muted)}
.sim .camleg span{display:inline-flex;align-items:center;gap:5px}
.sim .camleg i{width:11px;height:11px;border-radius:3px;display:inline-block}
.sim .camleg b{color:var(--ink);font-family:ui-monospace,Menlo,monospace;font-size:.64rem}
/* cebola: até onde cada caixa abre */
.sim .camonion{margin:12px 0}
.sim .camnv{border:2px solid #cbd5e1;border-radius:12px;padding:9px 10px 10px;margin:0}
.sim .camnv+.camnv,.sim .camnv .camnv{margin-top:7px}
.sim .camnv.fechado{background:repeating-linear-gradient(45deg,#f8fafc 0 6px,#f1f5f9 6px 12px);border-style:dashed}
.sim .camnv.aberto{background:#fff}
.sim .camnvt{font-size:.72rem;font-weight:700;margin-bottom:7px}
.sim .camnvt span{display:block;font-size:.64rem;font-weight:500;color:var(--muted);
  font-family:ui-monospace,Menlo,Consolas,monospace}
.sim .camnucleo{background:#e2e8f0;color:#475569;border-radius:8px;padding:9px;text-align:center;
  font-size:.72rem;font-weight:700}
/* qual camada é o problema */
.sim .camcaso{border:1px solid var(--line);border-left:4px solid #0369a1;border-radius:12px;background:#fbfcfd;
  padding:11px 14px;margin:12px 0}
.sim .camct2{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:5px}
.sim .camcaso p{margin:0;font-size:.9rem;line-height:1.55;color:var(--ink)}
.sim .camops{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin:6px 0 10px}
.sim .camop{font:inherit;font-size:.78rem;padding:.6rem .4rem;border:1px solid var(--line);border-radius:11px;
  background:#fff;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}
.sim .camop:hover{border-color:#0369a1;background:#f8fafc}
.sim .camop.certa{border-color:#15803d;background:#f0fdf4;font-weight:700;cursor:default}
.sim .camop.errada{border-color:#b91c1c;background:#fef2f2;cursor:default}
.sim .camop.off{opacity:.55;cursor:default}
@media(max-width:760px){
  .sim .camstacks{grid-template-columns:1fr 40px 1fr;gap:3px}
  .sim .camcx{padding:5px 6px}
  .sim .camcx b{font-size:.7rem}
  .sim .camcx small{font-size:.56rem}
  .sim .camops{grid-template-columns:repeat(2,1fr)}
  .sim .camseg i{display:none}
}

/* --- sim nucleo (SO-EC aula 03): bancada do núcleo --- */
.sim .nucpainel{margin-top:6px}
.sim .nucbar{align-items:center;gap:10px;flex-wrap:wrap}
.sim .nucsel{font:inherit;font-size:.78rem;padding:.34rem .6rem;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.sim .nucfluxo{display:flex;flex-direction:column;gap:5px;margin:12px 0}
.sim .nucp{display:flex;align-items:flex-start;gap:9px;border:1px solid var(--line);border-left:4px solid #cbd5e1;
  border-radius:9px;background:#fff;padding:8px 11px;font-size:.82rem;line-height:1.5;position:relative}
.sim .nucp .nucn{flex:0 0 20px;height:20px;border-radius:50%;background:#f1f5f9;color:#64748b;font-size:.62rem;
  font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.sim .nucp code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#f1f5f9;border-radius:4px;padding:0 4px;font-size:.78rem}
.sim .nucp.usuário,.sim .nucp.usuario{border-left-color:#1d4ed8;background:#f8fbff}
.sim .nucp.nucleo{border-left-color:#6d28d9;background:#fbf9ff}
.sim .nucp.servidor{border-left-color:#0f766e;background:#f6fdfb}
.sim .nucp.driver{border-left-color:#c2410c;background:#fffaf6}
.sim .nucp.trava{border-left-color:#b45309;background:#fffbeb;border-style:dashed}
.sim .nuctag{position:absolute;right:9px;top:7px;font-size:.55rem;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;color:#b45309;background:#fef3c7;border-radius:999px;padding:.1rem .42rem}
.sim .nuctab tbody tr.nucsel-lin{background:#eff6ff;box-shadow:inset 3px 0 0 #1d4ed8}
.sim .nuctab tbody tr.nucsel-lin td{font-weight:700}
.sim .nuctab small{font-weight:400;color:var(--muted)}
.sim .nuccaso{border:1px solid var(--line);border-left:4px solid #6d28d9;border-radius:12px;background:#fbfcfd;
  padding:11px 14px;margin:12px 0}
.sim .nucct{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--muted);margin-bottom:7px}
.sim .nuccod{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.05rem;font-weight:700;color:var(--ink);
  background:#f1f5f9;border:1px solid var(--line);border-radius:8px;padding:.5rem .8rem;display:inline-block}
.sim .nucops{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:6px 0 10px}
.sim .nucop{font:inherit;font-size:.78rem;padding:.6rem .4rem;border:1px solid var(--line);border-radius:11px;
  background:#fff;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}
.sim .nucop:hover{border-color:#6d28d9;background:#f8fafc}
.sim .nucop.certa{border-color:#15803d;background:#f0fdf4;font-weight:700;cursor:default}
.sim .nucop.errada{border-color:#b91c1c;background:#fef2f2;cursor:default}
.sim .nucop.off{opacity:.55;cursor:default}
@media(max-width:760px){
  .sim .nucops{grid-template-columns:repeat(2,1fr)}
  .sim .nuctag{position:static;align-self:flex-start;margin-top:2px}
  .sim .nucp{flex-wrap:wrap}
}

/* --- sim logica (revisão SO-EC, bloco 0): bancada de lógica digital --- */
.sim .lgpainel{margin-top:2px}
.sim .lgwrap{border:1px solid var(--line);border-radius:14px;background:#fff;padding:10px 12px;margin:10px 0;overflow-x:auto}
.sim .lgsvg{display:block;width:100%;min-width:720px;height:auto}
.sim .lgctl{margin:12px 0 4px}
.sim .lgrow{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;margin:8px 0}
.sim .lglab{font-size:.78rem;font-weight:700;color:var(--muted);min-width:82px;padding-bottom:20px}
.sim .lgval{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;color:var(--muted);padding-bottom:20px}
.sim .lgbitw{display:flex;flex-direction:column;align-items:center;gap:3px}
.sim .lgbit{width:46px;height:46px;border-radius:12px;border:1.5px solid var(--line);background:#f8fafc;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.05rem;font-weight:700;color:#94a3b8;
  cursor:pointer;transition:.12s}
.sim .lgbit:hover{border-color:#1d4ed8}
.sim .lgbit.on{background:#eff6ff;border-color:#1d4ed8;color:#1d4ed8}
.sim .lgbit.ctrl{background:#fff7ed;border-color:#c2410c;color:#c2410c}
.sim .lgbn{font-size:.62rem;font-weight:700;letter-spacing:.04em;color:var(--muted);text-transform:uppercase}
.sim .lgrow .btn{margin-bottom:20px}
.sim .lgtv{border-collapse:collapse;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.86rem;margin:12px 0 4px}
.sim .lgtv th,.sim .lgtv td{border:1px solid var(--line);padding:6px 18px;text-align:center}
.sim .lgtv th{background:#f8fafc;font-family:inherit;font-size:.7rem;font-weight:800;color:var(--muted);
  letter-spacing:.06em;text-transform:uppercase}
.sim .lgtv tr.testada td{background:#eff6ff;color:#1d4ed8;font-weight:700}
.sim .lgtv tr.atual td{box-shadow:inset 0 0 0 2px #1d4ed8}
.sim .lgexpr{font-size:.86rem;color:var(--body);background:#f8fafc;border:1px solid var(--line);
  border-radius:10px;padding:10px 14px;margin:10px 0}
.sim .lgexpr code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#fff;border:1px solid var(--line);
  border-radius:5px;padding:.05rem .34rem;color:#1d4ed8;font-weight:700}
.sim .lgdes{display:flex;gap:10px;align-items:baseline;border-left:4px solid #c2410c;background:#fffbeb;
  border-radius:0 11px 11px 0;padding:12px 16px;margin:12px 0;font-size:.88rem;color:#92400e}
.sim .lgdes b{color:#b45309;white-space:nowrap;font-weight:800}
.sim .lgdes.ok{border-left-color:#15803d;background:#f0fdf4;color:#166534}
.sim .lgdes.ok b{color:#15803d}
.sim .lgrod{margin-top:14px}
@media(max-width:700px){
  .sim .lgbit{width:40px;height:40px;font-size:.95rem}
  .sim .lglab{min-width:0;padding-bottom:0;width:100%}
  .sim .lgval{padding-bottom:0;width:100%}
}
