
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}:root{--bg:#010403;--green:#39ff7a;--green2:#00d26a;--green3:rgba(57,255,122,.08);--green4:rgba(57,255,122,.14);--line:rgba(57,255,122,.18);--line2:rgba(57,255,122,.09);--text:#d4f7e0;--muted:#8ec9a4;--dim:#5a8f6e;--amber:#ffd166;--red:#ff6b6b;--blue:#64d2ff;--purple:#c792ea;--panel:rgba(2,14,7,.88);--panel2:rgba(4,20,10,.78);--max:1340px;--sidebar:320px;--radius:16px}body{min-height:100vh;font-family:'Courier New',Courier,monospace;font-size:14px;line-height:1.75;color:var(--text);background:#010403;overflow-x:hidden}body::before{content:"";position:fixed;inset:0;background-image:linear-gradient(rgba(57,255,122,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(57,255,122,.03) 1px,transparent 1px);background-size:28px 28px;pointer-events:none;z-index:1}.wrap{position:relative;z-index:2;display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;border-right:1px solid var(--line);background:rgba(1,6,3,.96)}.sb-author{padding:1.4rem 1rem 1rem;border-bottom:1px solid var(--line2)}.sb-avatar{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--green),var(--green2));display:flex;align-items:center;justify-content:center;font-weight:900;color:#010403;margin-bottom:.65rem;box-shadow:0 0 18px rgba(57,255,122,.28)}.sb-name{font-size:.78rem;font-weight:900;color:#eafff0;letter-spacing:.05em;text-transform:uppercase;line-height:1.3}.sb-sub{font-size:.68rem;color:var(--dim);margin-top:.2rem}.sb-label{font-size:.65rem;font-weight:900;color:var(--dim);letter-spacing:.14em;text-transform:uppercase;padding:.9rem 1rem .35rem}.sb-item{display:flex;align-items:center;gap:.5rem;padding:.55rem 1rem;color:var(--muted);font-size:.76rem;font-weight:700;text-decoration:none;border-left:2px solid transparent;transition:all .15s}.sb-item:hover,.sb-subitem:hover{color:#eafff0;background:var(--green3);border-left-color:var(--green)}.sb-main{margin-top:.45rem;color:#eafff0;background:rgba(57,255,122,.045)}.sb-icon{font-size:.9rem;width:26px;text-align:center;flex-shrink:0;color:var(--green)}.sb-badge{font-size:.6rem;font-weight:900;background:var(--green4);border:1px solid var(--line);color:var(--green);border-radius:999px;padding:.12rem .45rem;margin-left:auto}.sb-section{border-top:1px solid var(--line2);padding:.25rem 0}.sb-subitem{display:block;padding:.35rem 1rem .35rem 3.15rem;color:var(--dim);font-size:.7rem;text-decoration:none;border-left:2px solid transparent;line-height:1.35}.quiz-link{color:var(--amber)}.sb-foot{padding:.85rem 1rem;border-top:1px solid var(--line2);font-size:.65rem;color:var(--dim);line-height:1.6}.content{min-width:0}header{position:sticky;top:0;z-index:50;padding:1.1rem 2rem;border-bottom:1px solid var(--line);background:rgba(1,5,3,.96);backdrop-filter:blur(12px)}.hdr-inner{max-width:var(--max);display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.hdr-tag{font-size:.68rem;font-weight:900;color:var(--green);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:.25rem .7rem;background:var(--green3)}.hdr-title{font-size:clamp(1rem,2.5vw,1.3rem);font-weight:900;color:#eafff0;flex:1}.hdr-chips{display:flex;gap:.45rem;flex-wrap:wrap;margin-left:auto}.chip{font-size:.65rem;font-weight:800;padding:.22rem .6rem;border-radius:999px;border:1px solid var(--line2);background:var(--green3);color:var(--muted)}main{padding:1.5rem 2rem 4rem;max-width:var(--max)}section{scroll-margin-top:84px;margin-bottom:2.2rem}.hero{border:1px solid var(--line);border-radius:22px;padding:2rem;background:radial-gradient(circle at top right,rgba(57,255,122,.16),transparent 35%),var(--panel)}h1{font-size:clamp(2rem,5vw,4.3rem);line-height:1.05;color:#eafff0;letter-spacing:-.06em;margin-bottom:1rem}h2{font-size:clamp(1.35rem,3vw,2.2rem);color:#eafff0;line-height:1.15}h3{color:#eafff0;font-size:1.12rem;margin-bottom:.65rem}h4{color:var(--green);font-size:.9rem;margin:.9rem 0 .45rem;text-transform:uppercase;letter-spacing:.08em}.lead{font-size:1rem;color:var(--muted);max-width:980px;margin-bottom:1rem}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem}.span-3{grid-column:span 3}.span-6{grid-column:span 6}.card,.lesson,.quiz,.reference{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2);padding:1rem;box-shadow:0 0 0 1px rgba(57,255,122,.02),0 10px 40px rgba(0,0,0,.22)}.metric{font-size:2rem;color:var(--green);font-weight:900;line-height:1}.warn{margin-top:1rem;padding:.85rem 1.1rem;border-radius:var(--radius);background:rgba(255,209,102,.08);border:1px solid rgba(255,209,102,.3);border-left:3px solid var(--amber);color:#fff5d0}.ok{color:var(--green)}button{background:linear-gradient(135deg,var(--green),var(--green2));border:0;border-radius:999px;color:#010403;font-weight:900;padding:.65rem 1rem;cursor:pointer;margin:.5rem 0}.progress{height:10px;border:1px solid var(--line);border-radius:999px;overflow:hidden;margin:.25rem 0 .7rem;background:rgba(57,255,122,.06)}.progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--green),var(--blue))}.module-title{display:flex;align-items:center;gap:.8rem;padding-bottom:.75rem;border-bottom:1px solid var(--line);margin-bottom:1rem}.num{font-size:.7rem;font-weight:900;color:var(--green);letter-spacing:.1em;text-transform:uppercase;background:var(--green3);border:1px solid var(--line);border-radius:999px;padding:.25rem .65rem;white-space:nowrap}.module-block{border:1px solid rgba(57,255,122,.22);border-radius:24px;padding:1.2rem;background:linear-gradient(180deg,rgba(57,255,122,.055),rgba(4,20,10,.55));box-shadow:0 0 45px rgba(57,255,122,.045)}.module-map{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin:1rem 0 1.2rem}.mini-card{border:1px solid var(--line2);background:rgba(1,6,3,.55);border-radius:14px;padding:.8rem;text-decoration:none;color:var(--muted);display:block}.mini-card strong{display:block;color:var(--green);margin-bottom:.35rem}.mini-card span{font-size:.75rem}.lesson{margin:1rem 0;background:rgba(2,14,7,.84)}.lesson-head{display:flex;align-items:flex-start;gap:.7rem;border-bottom:1px solid var(--line2);padding-bottom:.5rem;margin-bottom:.7rem}.lesson-code{font-size:.65rem;color:#010403;background:var(--green);border-radius:999px;padding:.2rem .5rem;font-weight:900;white-space:nowrap}.objective{color:#ccefd7}.theory{border-left:3px solid var(--blue);background:rgba(100,210,255,.06);padding:.75rem .9rem;border-radius:12px;margin:.8rem 0}.theory ul{padding-left:1.2rem}.theory li{margin:.35rem 0}.concept-flow,.timeline{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:.9rem 0}.concept-flow div,.timeline div{border:1px solid var(--line);border-radius:12px;background:var(--green3);padding:.5rem .7rem;color:#eafff0;font-weight:800}.concept-flow span{color:var(--amber);font-weight:900}.timeline div{min-width:150px}.timeline span{display:block;font-size:.72rem;color:var(--muted);font-weight:400}.cmd{background:#020805;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:14px;padding:1rem;overflow:auto;color:#d7ffe2;margin:.7rem 0;font-size:.82rem;line-height:1.7}.prompt{color:var(--green);font-weight:900}.cmdlet{color:var(--blue);font-weight:900}.comment{color:var(--dim);font-style:italic}.activity{border:1px solid rgba(255,209,102,.26);border-left:4px solid var(--amber);background:rgba(255,209,102,.07);border-radius:14px;padding:.85rem 1rem;margin-top:.9rem}.activity ol{padding-left:1.2rem}.activity li{margin:.35rem 0}.diagram{white-space:pre;overflow:auto;border:1px solid var(--line);border-radius:16px;background:#020805;color:#d7ffe2;padding:1rem;margin:1rem 0;font-weight:700;line-height:1.35}.table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.82rem}.table th,.table td{border:1px solid var(--line2);padding:.6rem;text-align:left;vertical-align:top}.table th{color:var(--green);background:var(--green3)}code{color:var(--amber);background:rgba(255,209,102,.08);border:1px solid rgba(255,209,102,.12);border-radius:6px;padding:.05rem .25rem}.perm{font-size:1.8rem;letter-spacing:.2rem;margin:1rem 0}.perm span{display:inline-block;padding:.2rem .34rem;border-radius:7px;margin:.08rem}.type{background:rgba(255,255,255,.08);color:#fff}.user{background:rgba(57,255,122,.18);color:var(--green)}.group{background:rgba(100,210,255,.16);color:var(--blue)}.other{background:rgba(255,107,107,.16);color:var(--red)}.quiz{margin-top:1.2rem;border-left:4px solid var(--purple)}.question{padding:.8rem;border:1px solid var(--line2);border-radius:12px;margin:.7rem 0;background:rgba(1,6,3,.52)}.question label{display:block;margin:.35rem 0;color:var(--muted);cursor:pointer}.result{font-weight:900;margin-top:.7rem}.footer-note{color:var(--dim);font-size:.8rem;margin-top:1rem}

pre.cmd{position:relative;background:#020805;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:14px;padding:1rem;overflow:auto;color:#d7ffe2;margin:.7rem 0;font-size:.82rem;line-height:1.7;white-space:pre;}
pre.cmd::before{content:'terminal';position:absolute;top:.35rem;right:.7rem;color:var(--dim);font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;}
pre.cmd code{color:#d7ffe2;background:transparent;border:0;padding:0;font-family:'Courier New',Courier,monospace;}
.tok-prompt{color:var(--green);font-weight:900;}
.tok-cmd{color:var(--blue);font-weight:900;}
.tok-opt{color:var(--amber);font-weight:800;}
.tok-path{color:var(--purple);font-weight:800;}
.tok-op{color:var(--green2);font-weight:900;padding:0 .08rem;}
.tok-comment{color:var(--dim);font-style:italic;}
.tok-var{color:var(--amber);font-weight:800;}

.sb-main{cursor:pointer;position:relative;}
.sb-main::after{content:'▸';margin-left:.45rem;color:var(--amber);transition:transform .18s ease;}
.sb-section.open .sb-main::after{transform:rotate(90deg);}
.sb-section .sb-subitem{display:none;}
.sb-section.open .sb-subitem{display:block;}
.sb-section.open{background:rgba(57,255,122,.035);box-shadow:inset 0 0 18px rgba(57,255,122,.035);}

/* ── Saída de comandos ── */
pre.output{position:relative;background:#020e05;border:1px solid rgba(57,255,122,.15);border-left:4px solid var(--muted);border-radius:12px;padding:.75rem 1rem;overflow:auto;color:#7ac49a;margin:.4rem 0 .8rem;font-size:.79rem;line-height:1.6;white-space:pre;}
pre.output::before{content:'saída esperada';position:absolute;top:.3rem;right:.7rem;color:var(--dim);font-size:.58rem;text-transform:uppercase;letter-spacing:.1em;}
pre.output code{color:#7ac49a;background:transparent;border:0;padding:0;font-family:'Courier New',Courier,monospace;}

/* ── Caixas de destaque ── */
.callout{border-radius:12px;padding:.75rem 1rem;margin:.7rem 0;font-size:.87rem;line-height:1.6;}
.callout strong{display:block;margin-bottom:.2rem;font-size:.82rem;letter-spacing:.05em;text-transform:uppercase;}
.callout-tip{background:rgba(57,255,122,.06);border:1px solid rgba(57,255,122,.28);border-left:4px solid var(--green);color:#ccefd7;}
.callout-tip strong{color:var(--green);}
.callout-warn{background:rgba(255,209,102,.06);border:1px solid rgba(255,209,102,.28);border-left:4px solid var(--amber);color:#fff5d0;}
.callout-warn strong{color:var(--amber);}
.callout-danger{background:rgba(255,107,107,.06);border:1px solid rgba(255,107,107,.28);border-left:4px solid var(--red);color:#ffe0e0;}
.callout-danger strong{color:var(--red);}
.callout-info{background:rgba(100,210,255,.06);border:1px solid rgba(100,210,255,.28);border-left:4px solid var(--blue);color:#d0f0ff;}
.callout-info strong{color:var(--blue);}

/* ── Diagramas SVG ── */
.svg-wrap{margin:1rem 0;padding:.8rem;background:#010403;border:1px solid rgba(57,255,122,.2);border-radius:16px;overflow:auto;text-align:center;}
.svg-wrap figcaption{text-align:center;font-size:.72rem;color:var(--dim);margin-top:.45rem;font-style:italic;}

/* ── Glossário ── */
.terms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:.65rem;margin:1rem 0;}
.term{border:1px solid rgba(57,255,122,.16);border-radius:10px;padding:.65rem .85rem;background:rgba(1,6,3,.55);}
.term dt{color:var(--green);font-weight:900;font-size:.85rem;margin-bottom:.2rem;}
.term dd{color:var(--muted);font-size:.77rem;line-height:1.5;margin:0;}

/* ── Referência rápida ── */
.cheat-group{margin:.9rem 0;}
.cheat-group h4{color:var(--amber);margin-bottom:.4rem;}
.cheat-row{display:flex;gap:.5rem;padding:.28rem 0;border-bottom:1px solid rgba(57,255,122,.06);}
.cheat-cmd{font-family:'Courier New',monospace;color:var(--blue);font-size:.78rem;font-weight:700;min-width:230px;flex-shrink:0;}
.cheat-desc{color:var(--muted);font-size:.77rem;}

/* ── Badges de porta e estado ── */
.port-badge{display:inline-block;background:rgba(57,255,122,.1);border:1px solid rgba(57,255,122,.3);color:var(--green);border-radius:5px;padding:.05rem .35rem;font-size:.73rem;font-weight:900;font-family:'Courier New',monospace;}
.st-run{background:rgba(57,255,122,.14);color:var(--green);border-radius:5px;padding:.05rem .35rem;font-size:.72rem;font-weight:800;font-family:'Courier New',monospace;}
.st-sleep{background:rgba(100,210,255,.1);color:var(--blue);border-radius:5px;padding:.05rem .35rem;font-size:.72rem;font-weight:800;font-family:'Courier New',monospace;}
.st-zombie{background:rgba(255,107,107,.1);color:var(--red);border-radius:5px;padding:.05rem .35rem;font-size:.72rem;font-weight:800;font-family:'Courier New',monospace;}
.st-stop{background:rgba(255,209,102,.1);color:var(--amber);border-radius:5px;padding:.05rem .35rem;font-size:.72rem;font-weight:800;font-family:'Courier New',monospace;}

/* ── Tabela de sinais ── */
.sig-table{width:100%;border-collapse:collapse;margin:.8rem 0;font-size:.8rem;}
.sig-table th,.sig-table td{border:1px solid var(--line2);padding:.5rem .7rem;vertical-align:top;}
.sig-table th{color:var(--green);background:var(--green3);}
.sig-num{color:var(--amber);font-weight:900;font-family:'Courier New',monospace;}

/* ── Lab environment ── */
.lab-step{display:flex;gap:.75rem;align-items:flex-start;padding:.7rem 0;border-bottom:1px solid var(--line2);}
.lab-num{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--green),var(--green2));color:#010403;font-weight:900;display:flex;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0;margin-top:.1rem;}
.lab-text{flex:1;color:var(--muted);font-size:.85rem;}
.lab-text strong{color:#eafff0;display:block;margin-bottom:.15rem;}

/* ── SVG diagram text — legibilidade ──
   Atributos de apresentação SVG têm especificidade 0 (abaixo de qualquer
   seletor CSS), portanto estas regras sobrescrevem font-size="7/8/9/10"
   em todos os diagramas sem alterar coordenadas ou layouts.           */
.svg-wrap svg text                    { font-size: 11px; line-height: 1.4; }
.svg-wrap svg text[font-weight="700"] { font-size: 12.5px; }
.svg-wrap svg text[font-weight="900"] { font-size: 14px;   }

/* ── Responsive ── */
@media(max-width:980px){.wrap{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.span-3,.span-6{grid-column:span 12}.module-map{grid-template-columns:1fr}header{position:relative}main{padding:1rem}.hdr-chips{margin-left:0}.terms-grid{grid-template-columns:1fr}.cheat-cmd{min-width:180px}}
