/* CIN0132 · Matemática Discreta para Computação.
   Identidade visual do Centro de Informática (UFPE), conforme o manual do CIn: vermelho #DB1E2F,
   vermelho escuro #AF0421, preto #231F20 e cinza claro #E0E1E0.
   Fontes servidas pelo site do professor: Manrope (SIL OFL 1.1) e Latin Modern (GUST Font License). */
@font-face{font-family:Manrope;src:url('/~pmmc/assets/fonts/manrope.woff2') format('woff2');font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:'LM Roman';src:url('/~pmmc/assets/fonts/latin-modern/lmroman10-regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'LM Roman';src:url('/~pmmc/assets/fonts/latin-modern/lmroman10-italic.otf') format('opentype');font-weight:400;font-style:italic;font-display:swap}

:root{
 --red:#db1e2f;--red-dark:#af0421;--red-soft:#fce8ea;
 --true:#1f7a3a;--false:#db1e2f;
 --ink:#231f20;--ink-2:#3b3536;--muted:#5d5859;--gray:#e0e1e0;--gray-soft:#f4f4f3;--line:#e2e2e0;--line-soft:#ededeb;
 --surface:#fff;--page:#fff;
 --night:#231f20;--on-night:#f5f3f3;--on-night-muted:#bdb7b8;
 --sans:Manrope,'Segoe UI',system-ui,-apple-system,Roboto,Arial,sans-serif;
 --math:'LM Roman','Latin Modern Roman','CMU Serif',Cambria,Georgia,serif;
 --radius:12px;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:92px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--page);color:var(--ink);font:400 17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
h1,h2,h3,h4,p,figure,dl,dd{margin:0}
a{color:var(--red-dark);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--red)}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--red);outline-offset:3px;border-radius:3px}
img,svg,canvas{max-width:100%}
sub{line-height:0}
code{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',monospace;font-size:.86em;background:var(--gray-soft);border:1px solid var(--line-soft);border-radius:5px;padding:1px 5px;white-space:nowrap}
.wrap{max-width:1200px;margin:0 auto;padding-left:max(32px,env(safe-area-inset-left,0px));padding-right:max(32px,env(safe-area-inset-right,0px))}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:16px;top:-80px;z-index:60;background:var(--red);color:#fff;font-weight:700;padding:10px 16px;border-radius:6px;text-decoration:none}
.skip-link:focus{top:12px;color:#fff}

/* Cabeçalho */
.md-header{position:sticky;top:0;top:env(safe-area-inset-top,0px);z-index:40;background:#fffffff5;border-bottom:1px solid var(--line)}
.md-header::before{content:'';display:block;height:4px;background:var(--red)}
@supports ((-webkit-backdrop-filter:blur(8px)) or (backdrop-filter:blur(8px))){
 .md-header{background:#ffffffdb;-webkit-backdrop-filter:saturate(1.6) blur(12px);backdrop-filter:saturate(1.6) blur(12px)}
}
.md-header-row{display:flex;align-items:center;gap:22px;min-height:70px}
.md-id{display:flex;align-items:center;gap:16px;flex-shrink:0}
.md-cin{display:block;line-height:0}
.md-cin img{display:block;height:36px;width:auto}
.md-id-sep{width:1px;height:34px;background:var(--line)}
.md-brand{display:flex;flex-direction:column;line-height:1.12;color:var(--ink);text-decoration:none}
.md-brand:hover{color:var(--ink)}
.md-brand-name{font-weight:800;font-size:17px;letter-spacing:-.02em}
.md-brand-sub{font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--red-dark);margin-top:3px}
.md-nav{display:flex;gap:2px;margin-left:auto}
.md-nav a{position:relative;color:var(--ink-2);text-decoration:none;font-size:14.5px;font-weight:650;padding:8px 10px;border-radius:8px;white-space:nowrap}
.md-nav a:hover{background:var(--gray-soft);color:var(--ink)}
.md-nav a[aria-current=true]{color:var(--red-dark)}
.md-nav a[aria-current=true]::after{content:'';position:absolute;left:10px;right:10px;bottom:1px;height:3px;border-radius:2px;background:var(--red)}
.md-nav .md-nav-classroom{display:none;color:var(--red-dark)}
.md-cta{display:inline-flex;align-items:center;background:var(--red);color:#fff;text-decoration:none;font-weight:750;font-size:14.5px;padding:10px 18px;border-radius:999px;white-space:nowrap;flex-shrink:0}
.md-cta:hover{background:var(--red-dark);color:#fff}

/* Abertura, com o grafo de disco unitário ao fundo */
.md-hero{position:relative;isolation:isolate;overflow:hidden;background:var(--night);color:var(--on-night);padding-top:72px}
.md-hero-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2;display:block}
.md-hero::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(100deg,#231f20f2 0%,#231f20d1 40%,#231f2073 72%,#231f2040 100%),linear-gradient(0deg,#231f20 0%,#231f2000 26%)}
.md-hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:56px;align-items:start}
.md-kicker{display:flex;align-items:center;gap:12px;font-size:12.5px;font-weight:750;letter-spacing:.16em;text-transform:uppercase;color:var(--on-night)}
.md-kicker::before{content:'';width:34px;height:4px;background:var(--red);flex:0 0 34px}
.md-hero h1{font-weight:800;font-size:clamp(42px,5.2vw,62px);line-height:1;letter-spacing:-.045em;margin-top:22px;text-wrap:balance}
.md-hero h1 span{display:block;color:var(--red)}
.md-lead{font-size:18.5px;line-height:1.7;color:#e6e2e3;max-width:640px;margin-top:24px}
.md-facts{display:flex;flex-wrap:wrap;gap:14px 36px;margin-top:30px;padding-top:22px;border-top:1px solid #ffffff2b;max-width:680px}
.md-facts dt{font-size:11.5px;font-weight:750;letter-spacing:.12em;text-transform:uppercase;color:var(--on-night-muted)}
.md-facts dd{font-size:16.5px;font-weight:700;margin-top:3px;color:#fff}
.md-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.md-button{display:inline-flex;align-items:center;justify-content:center;padding:12px 20px;border-radius:999px;font-weight:750;font-size:15px;text-decoration:none;border:1.5px solid #ffffff66;color:#fff;background:#ffffff0f}
.md-button:hover{border-color:#fff;color:#fff;background:#ffffff21}
.md-button.primary{background:var(--red);border-color:var(--red);color:#fff}
.md-button.primary:hover{background:var(--red-dark);border-color:var(--red-dark)}
.md-hero-side{display:grid;gap:16px;align-content:start}
.md-next{background:var(--surface);color:var(--ink);border-radius:var(--radius);padding:18px 20px;border-left:6px solid var(--red);box-shadow:0 18px 50px #00000059}
.md-next-label{font-size:11.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark)}
.md-next-what{font-size:19px;line-height:1.3;font-weight:800;letter-spacing:-.015em;margin-top:6px}
.md-next-when{font-size:14.5px;line-height:1.5;color:var(--muted);font-weight:650;margin-top:4px}
.md-next a{display:inline-block;margin-top:10px;font-size:14px;font-weight:750}
.md-professor{background:var(--surface);color:var(--ink);border-radius:var(--radius);padding:22px;box-shadow:0 24px 60px #00000066}
.md-professor-head{display:flex;gap:16px;align-items:center}
.md-professor img{width:84px;height:84px;border-radius:50%;object-fit:cover;flex:0 0 84px;border:3px solid var(--red);background:var(--gray)}
.md-professor h2{font-weight:800;font-size:20px;line-height:1.2;letter-spacing:-.02em;margin-top:5px}
.md-professor-role{font-size:14px;line-height:1.55;color:var(--muted);margin-top:14px}
.md-professor-research{font-size:15px;line-height:1.6;margin-top:8px}
.md-professor-contact{font-size:14px;line-height:1.6;margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft)}
.md-professor-contact a{font-weight:700}
.md-professor-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.md-professor-links a{flex:1 1 150px;display:flex;justify-content:center;align-items:center;text-align:center;white-space:nowrap;padding:10px 8px;border-radius:999px;font-weight:750;font-size:14px;text-decoration:none;border:1.5px solid var(--red);color:var(--red-dark)}
.md-professor-links a:first-child{background:var(--red);color:#fff}
.md-professor-links a:hover{background:var(--red-dark);border-color:var(--red-dark);color:#fff}
.md-hero-caption{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-top:60px;padding:16px 0 22px;border-top:1px solid #ffffff21;font-size:13px;line-height:1.55;color:var(--on-night-muted)}
.md-hero-caption a{color:#fff}
.md-graph-stats{font-weight:800;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.md-graph-stats:empty{display:none}

/* Rótulos e seções */
.md-label{display:inline-flex;align-items:center;gap:10px;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark)}
.md-label::before{content:'';width:20px;height:4px;background:var(--red);flex:0 0 20px}
.md-professor .md-label::before{width:14px;flex-basis:14px}
.md-section{padding:88px 0}
.md-section.alt{background:var(--gray-soft);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.md-section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.95fr);gap:14px 56px;align-items:end;margin-bottom:36px}
.md-section-head .md-label{grid-column:1/-1}
.md-section h2{font-weight:800;font-size:clamp(34px,4.2vw,50px);line-height:1.04;letter-spacing:-.04em}
.md-section-lead{color:var(--muted);font-size:16.5px;line-height:1.65}
.md-note{font-size:14.5px;line-height:1.6;color:var(--muted);margin-top:18px}

/* Calendário */
.cal-months{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));gap:20px;align-items:start}
.cal-month{background:var(--surface);border:1px solid var(--line);border-top:5px solid var(--ink);border-radius:var(--radius);padding:16px 20px 6px}
.cal-month h3{font-weight:800;font-size:13px;letter-spacing:.16em;text-transform:uppercase;padding-bottom:12px;border-bottom:1px solid var(--line)}
.cal-list{list-style:none;margin:0;padding:0}
.cal-item{display:grid;grid-template-columns:44px minmax(0,1fr);gap:14px;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.cal-item:last-child{border-bottom:0}
.cal-item time{display:flex;flex-direction:column;align-items:center;line-height:1}
.cal-day{font-weight:800;font-size:24px;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.cal-weekday{font-size:10.5px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:5px}
.cal-text{font-size:15px;line-height:1.5;padding-top:2px}
.tag{display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:999px;margin-right:7px;vertical-align:1px;white-space:nowrap}
.tag-mp{background:var(--red);color:#fff}
.tag-ee{background:var(--ink);color:#fff}
.tag-projeto{background:var(--surface);color:var(--red-dark);box-shadow:inset 0 0 0 1.5px var(--red)}
.tag-final{background:var(--red-dark);color:#fff}
.cal-item.is-feriado .cal-text{color:var(--muted);font-style:italic}
.cal-item.is-past{opacity:.5}
.cal-item.is-next{background:var(--red-soft);margin:0 -20px;padding:12px 20px 12px 15px;border-left:5px solid var(--red);opacity:1}
.cal-badge{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--red-dark);margin-bottom:3px}
.cal-legend{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:20px;font-size:14px;color:var(--muted)}

/* Listas e provas: cartões com gabarito objetivo */
.list-grid,.exam-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.list-card,.exam-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px}
.exam-card{border-top:5px solid var(--red)}
.list-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.list-code{font-weight:800;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--red-dark)}
.list-date{font-size:12.5px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.list-card h3,.exam-card h4{font-weight:800;font-size:18px;line-height:1.28;letter-spacing:-.02em;margin-top:8px}
.list-meta{font-size:13.5px;line-height:1.5;color:var(--muted);margin-top:6px}
.list-foot{margin-top:auto;padding-top:12px}
.list-link{display:inline-block;font-weight:750;font-size:14.5px}
.gab{border-collapse:separate;border-spacing:4px;margin:12px -4px -4px;font-variant-numeric:tabular-nums}
.gab caption{caption-side:top;text-align:left;padding:0 4px 2px;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.gab th{font-size:11px;font-weight:750;color:var(--muted);text-align:center;padding:0;width:30px}
.gab tbody th{text-align:left;width:32px;padding-left:2px;font-size:12.5px;font-weight:800;color:var(--ink)}
.gab td{width:30px;height:28px;padding:0;text-align:center;font-weight:800;font-size:13.5px;line-height:28px;border-radius:6px}
.gab td.v{background:var(--true);color:#fff}
.gab td.f{background:var(--false);color:#fff}
.gab-wait{margin-top:12px;padding:11px 14px;border-radius:8px;background:var(--gray-soft);font-size:13.5px;line-height:1.5;color:var(--muted)}
.exams{margin-top:60px}
.exams-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:10px 32px;margin-bottom:20px}
.exams-head h3{font-weight:800;font-size:28px;line-height:1.1;letter-spacing:-.03em}
.exams-head p{color:var(--muted);font-size:15px;line-height:1.6;max-width:600px}
.exam-card.is-ee{grid-column:span 2;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 28px;align-items:start;border-top-color:var(--ink)}
.exam-card.is-ee .list-code{color:var(--ink)}
.exam-card.is-ee .gab{margin:0 -4px -4px}
.exam-card.is-ee .list-foot{padding-top:14px}
.exam-rules{margin-top:18px;background:var(--gray-soft);border:1px solid var(--line);border-left:6px solid var(--ink);border-radius:var(--radius);padding:18px 22px;display:grid;gap:8px;max-width:980px}
.exam-rules h4{font-weight:800;font-size:17px;letter-spacing:-.01em}
.exam-rules p{font-size:15px;line-height:1.65;color:var(--ink-2)}
.exam-rules-links{display:flex;flex-wrap:wrap;gap:6px 22px;font-weight:750;font-size:14.5px}

/* Projeto */
.project{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:24px;align-items:start}
.project-main,.project-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.project-main{padding:26px 28px}
.project-figure{border-bottom:1px solid var(--line-soft);padding-bottom:20px}
.project-figure svg{display:block;width:100%;max-width:520px;height:auto;font-family:var(--sans)}
.project-figure figcaption{font-size:13.5px;line-height:1.6;color:var(--muted);margin-top:12px}
.project-main h3{font-weight:800;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark);margin-top:24px}
.project-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:10px}
.project-list li{position:relative;padding-left:22px;font-size:15.5px;line-height:1.6}
.project-list li::before{content:'';position:absolute;left:2px;top:.55em;width:9px;height:9px;border-radius:50%;background:var(--red)}
.project-side{display:grid;gap:16px}
.project-box{padding:18px 22px 12px}
.project-box h3{font-weight:800;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark);padding-bottom:10px;border-bottom:1px solid var(--line)}
.project-dates{list-style:none;margin:0;padding:0}
.project-dates li{display:grid;grid-template-columns:104px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:15px;line-height:1.45}
.project-dates li:last-child{border-bottom:0}
.project-dates time{font-weight:800;font-variant-numeric:tabular-nums}
.project-box .md-note{margin:10px 0 6px;font-size:13.5px}
.project-pending{font-size:14.5px;line-height:1.6;margin:10px 0 6px;color:var(--ink-2)}
.project-demo{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:20px;padding:16px 18px;background:var(--red-soft);border-radius:var(--radius)}
.project-demo span{flex:1 1 240px;font-size:14.5px;line-height:1.55;color:#5c1019}
.md-link-button{display:inline-flex;align-items:center;justify-content:center;padding:11px 18px;border-radius:999px;background:var(--red);color:#fff;font-weight:750;font-size:15px;text-decoration:none;white-space:nowrap}
.md-link-button:hover{background:var(--red-dark);color:#fff}

/* Material digital */
.md-ementa{display:grid;gap:16px;margin-bottom:34px}
.md-ementa-text{font-size:16.5px;line-height:1.7;color:var(--ink-2);max-width:960px}
.md-ementa-text strong{color:var(--ink)}
.unit-index{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.unit-index a{display:flex;flex-direction:column;gap:10px;align-items:flex-start;height:100%;padding:14px 16px 13px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-decoration:none}
.unit-index a:hover{border-color:var(--red)}
.unit-index a:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.ui-num{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:8px;background:var(--red);color:#fff;font-weight:800;font-size:15px}
.ui-text{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}
.ui-text strong{font-size:14.5px;font-weight:800;line-height:1.3}
.ui-text span{margin-top:auto;font-size:12.5px;font-weight:650;color:var(--muted)}
.md-credit{font-size:14px;line-height:1.65;color:var(--muted)}
.md-credit strong{color:var(--ink-2)}
.unit{display:grid;grid-template-columns:200px minmax(0,1fr);gap:20px 32px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px;margin-bottom:16px}
.unit-figure{align-self:start}
.unit-figure svg{display:block;width:100%;height:auto;font-family:var(--math)}
.unit-figure figcaption{font-size:12.5px;line-height:1.5;color:var(--muted);margin-top:10px}
.unit-body{min-width:0}
.unit-head{display:flex;gap:14px;align-items:center}
.unit-number{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border-radius:10px;background:var(--red);color:#fff;font-weight:800;font-size:19px}
.unit-kicker{font-size:11.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark)}
.unit-head h3{font-weight:800;font-size:24px;line-height:1.2;letter-spacing:-.025em;margin-top:2px}
.unit-modules{list-style:none;margin:16px 0 0;padding:0;border-top:1px solid var(--line)}
.unit-modules li{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:4px 14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.um-num{font-weight:800;font-size:15px;color:var(--red-dark);font-variant-numeric:tabular-nums}
.um-title{font-weight:700;font-size:15.5px;line-height:1.4}
.um-date{display:block;font-weight:600;font-size:12.5px;color:var(--muted);margin-top:1px}
.um-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.um-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:999px;font-size:13px;font-weight:750;white-space:nowrap;text-decoration:none}
a.um-pill.is-list{background:var(--red);color:#fff}
a.um-pill.is-mp{background:var(--ink);color:#fff}
a.um-pill:hover{background:var(--red-dark);color:#fff}
.um-pill.is-future{background:var(--gray-soft);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}
a.um-pill.is-tool{background:#fff;color:var(--red-dark);box-shadow:inset 0 0 0 1.5px var(--red)}
.unit details{margin-top:14px}
.unit summary{cursor:pointer;font-size:14px;font-weight:750;color:var(--red-dark);width:max-content;max-width:100%}
.unit details p{font-size:15.5px;line-height:1.75;color:var(--ink-2);margin-top:10px}
.unit-materials{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:4px 30px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line-soft)}
.list-card:target,.exam-card:target{outline:3px solid var(--red);outline-offset:2px}

/* Ferramenta de tabela-verdade (unidade 4) */
.tt{grid-column:1/-1;margin-top:8px;padding:22px 24px;border-radius:var(--radius);background:var(--gray-soft);border:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr);gap:14px;min-width:0}
.tt-intro h4{font-weight:800;font-size:22px;letter-spacing:-.02em;margin-top:2px}
.tt-intro p:last-child{font-size:15px;line-height:1.6;color:var(--ink-2);margin-top:6px;max-width:760px}
.tt-form{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.tt-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tt-field{display:grid;gap:6px;min-width:0}
.tt-field label{font-size:13.5px;font-weight:750}
.tt-optional{font-weight:600;color:var(--muted)}
.tt-tag{display:inline-block;padding:1px 7px;border-radius:999px;background:var(--ink);color:#fff;font-size:11.5px;font-weight:800;margin-right:6px;font-family:var(--sans)}
.tt-input{font:500 18px/1.4 var(--math);padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);width:100%;min-width:0}
.tt-input:focus-visible{outline:3px solid var(--red);outline-offset:1px;border-color:var(--red)}
.tt-keys{display:flex;flex-wrap:wrap;gap:6px}
.tt-keys button{font:500 18px/1 var(--math);min-width:42px;height:40px;padding:0 10px;border-radius:9px;border:1.5px solid var(--line);background:#fff;color:var(--ink);cursor:pointer}
.tt-keys button:hover{border-color:var(--red);color:var(--red-dark)}
.tt-keys button:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.tt-keys .tt-key-gap{margin-left:8px}
.tt-help{font-size:13.5px;line-height:1.7;color:var(--muted)}
.tt-help code,.tt-syntax code{white-space:nowrap}
.tt-math{font-family:var(--math);font-size:1.08em;white-space:nowrap}
.tt-syntax summary{cursor:pointer;font-size:13.5px;font-weight:750;color:var(--red-dark);width:fit-content;max-width:100%}
.tt-syntax[open] summary{margin-bottom:10px}
.tt-syntax-grid{margin:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.tt-syntax-grid div{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:9px;background:#fff;border:1px solid var(--line-soft);min-width:0}
.tt-syntax-grid dt{font:400 19px/1 var(--math);width:20px;text-align:center;flex:none}
.tt-syntax-grid dd{margin:0;display:flex;flex-wrap:wrap;gap:4px;font-size:12.5px}
.tt-syntax p{margin-top:10px;font-size:13.5px;line-height:1.65;color:var(--muted);max-width:820px}
.tt-examples{display:grid;gap:12px;padding-top:16px;border-top:1px solid var(--line)}
.tt-examples-title{font-size:14px;font-weight:800}
.tt-ex-group{display:grid;gap:7px}
.tt-ex-group>p{font-size:11.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--red-dark)}
.tt-ex-group>p span{font-weight:650;letter-spacing:.02em;text-transform:none;color:var(--muted)}
.tt-ex-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.tt-ex-grid button{font:inherit;font-size:13.5px;font-weight:700;line-height:1.3;text-align:left;padding:8px 11px;border-radius:9px;border:1.5px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;min-width:0}
.tt-ex-grid button:hover{border-color:var(--red);color:var(--red-dark)}
.tt-ex-grid button[aria-pressed=true]{border-color:var(--red);background:var(--red-soft);color:var(--red-dark)}
.tt-ex-grid button:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.tt-op{font-family:var(--math);font-weight:400;font-size:1.15em;line-height:1}
.tt-check{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:650;cursor:pointer;width:max-content}
.tt-check input{width:17px;height:17px;accent-color:var(--red)}
.tt-result{display:grid;gap:6px}
.tt-reading{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;font-size:13.5px;color:var(--muted)}
.tt-reading:empty{display:none}
.tt-reading-label{font-weight:750}
.tt-reading .tt-tag{margin-right:4px}
.tt-reading .tt-math{font:400 17px/1.5 var(--math);color:var(--ink);white-space:normal;overflow-wrap:anywhere}
.tt-verdict{font-size:15.5px;font-weight:750;line-height:1.5;padding:10px 14px;border-radius:10px;background:#fff;border:1px solid var(--line)}
.tt-verdict:empty{display:none}
.tt-verdict.is-ok{border-left:6px solid var(--true)}
.tt-verdict.is-bad{border-left:6px solid var(--false)}
.tt-verdict.is-mid{border-left:6px solid var(--ink)}
.tt-verdict.is-error{border-left:6px solid var(--false);background:var(--red-soft)}
.tt-error-code{display:inline-block;margin-top:4px;font-size:14px;white-space:pre-wrap;background:#fff}
.tt-error-code mark{background:var(--red);color:#fff;border-radius:3px;padding:0 2px}
.tt-table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--line);background:#fff;max-height:560px;overflow-y:auto}
.tt-table{border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:100%}
.tt-table th,.tt-table td{padding:7px 14px;text-align:center;border-bottom:1px solid var(--line-soft);white-space:nowrap}
.tt-table thead th{position:sticky;top:0;background:#fff;font:400 15.5px/1.3 var(--math);color:var(--ink);border-bottom:2px solid var(--ink);z-index:1}
.tt-table thead th .tt-tag{vertical-align:2px}
.tt-table .tt-row-n{font:700 12px/1 var(--sans);color:var(--muted);width:36px}
.tt-table td{font-weight:800;font-size:14.5px}
.tt-table td.tt-col-var{color:var(--ink-2);background:var(--gray-soft)}
.tt-table td.tt-col-sub{font-weight:650}
.tt-table td.is-v{color:var(--true)}
.tt-table td.is-f{color:var(--false)}
.tt-table td.tt-col-var.is-v,.tt-table td.tt-col-var.is-f{color:var(--ink-2)}
.tt-table .tt-col-final{border-left:2px solid var(--line)}
.tt-table td.tt-col-final{font-size:15.5px}
.tt-table td.tt-col-final.is-v{background:#e7f3ea}
.tt-table td.tt-col-final.is-f{background:var(--red-soft)}
.tt-table tr.is-diff th,.tt-table tr.is-diff td{box-shadow:inset 0 2px 0 var(--false),inset 0 -2px 0 var(--false)}
.tt-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.tt-btn{font:inherit;font-size:14.5px;font-weight:750;padding:9px 15px;border-radius:999px;border:1.5px solid var(--red);background:#fff;color:var(--red-dark);cursor:pointer}
.tt-btn:hover:not(:disabled){background:var(--red-dark);border-color:var(--red-dark);color:#fff}
.tt-btn:disabled{opacity:.45;cursor:default}
.tt-copied{font-size:14px;font-weight:650;color:var(--muted)}
.tt-latex{width:100%;font:13px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;padding:10px;border:1px solid var(--line);border-radius:8px}
.tt-credit{font-size:13px;color:var(--muted)}
.material-group h4{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:2px 0 6px}
.material-group h4 svg{width:15px;height:15px;color:var(--red)}
.material-list{list-style:none;margin:0;padding:0}
.material-list li{padding:9px 0;border-top:1px solid var(--line-soft)}
.material-list>li>a{font-weight:700;font-size:15.5px;line-height:1.45}
.material-meta{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
.material-meta a{color:var(--muted)}
.material-more{font-size:13.5px;color:var(--muted);padding-top:8px;border-top:1px solid var(--line-soft)}

/* Bibliografia */
.bib-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.bib-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px 8px}
.bib-group>h3{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark);padding-bottom:12px;border-bottom:1px solid var(--line)}
.bib-list{list-style:none;margin:0;padding:0}
.bib-item{padding:16px 0 18px;border-bottom:1px solid var(--line-soft)}
.bib-item:last-child{border-bottom:0}
.bib-title{font-weight:800;font-size:17.5px;line-height:1.3;letter-spacing:-.015em}
.bib-author{font-size:15px;margin-top:3px}
.bib-details{font-size:13.5px;color:var(--muted);margin-top:2px}
.bib-library{font-size:14px;line-height:1.55;margin-top:10px;padding:9px 12px;background:var(--red-soft);border-radius:8px;color:#5c1019}
.bib-library strong{font-weight:800}
.bib-links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:14.5px;font-weight:750}

/* Critério de nota */
.grade{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:22px;align-items:stretch}
.grade-formula{background:var(--night);color:var(--on-night);border-radius:var(--radius);border-left:6px solid var(--red);padding:30px 32px;display:flex;flex-direction:column;justify-content:center}
.grade-formula .md-label{color:#fff}
.formula{font-family:var(--math);font-size:clamp(28px,3vw,38px);line-height:1.25;margin-top:14px}
.formula span{white-space:nowrap}
.formula b{font-weight:400;color:var(--red)}
.grade-final{font-size:14.5px;color:var(--on-night-muted);margin-top:16px}
.grade-parts{display:grid;gap:12px}
.grade-part{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px;display:grid;grid-template-columns:84px minmax(0,1fr);gap:16px;align-items:baseline}
.grade-part dt{font-weight:800;font-size:22px;letter-spacing:-.02em;color:var(--red-dark)}
.grade-part dd{font-size:15px;line-height:1.6}
.grade-part dd small{display:block;color:var(--muted);font-size:13.5px;margin-top:2px}

/* Monitoria */
.ta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px}
.ta-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}
.ta-photo{display:block;width:44px;height:44px;flex:0 0 44px;border-radius:50%;object-fit:cover;background:var(--gray);box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--line)}
.ta-name{font-size:15.5px;font-weight:750;line-height:1.35}
.ta-card.is-bolsista{border-color:var(--red);box-shadow:inset 4px 0 0 var(--red)}
.ta-role{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--red-dark);line-height:1.4}
.ta-card a{font-size:14px;font-weight:650}
.ta-extra{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.ta-extra p{background:var(--red-soft);border-radius:var(--radius);padding:16px 20px;font-size:15px;line-height:1.6;color:#4a0f17}

/* Rodapé */
.md-footer{background:var(--night);color:var(--on-night-muted);padding:48px 0 32px;font-size:14.5px;border-top:5px solid var(--red)}
.md-footer a{color:#fff}
.md-footer-top{display:flex;justify-content:space-between;gap:36px;flex-wrap:wrap}
.md-footer-id img{display:block;height:46px;width:auto}
.md-footer-course{margin-top:18px;color:#fff;line-height:1.5}
.md-footer-course strong{display:block;font-weight:800;font-size:18px;letter-spacing:-.01em}
.md-footer-course span{color:var(--on-night-muted)}
.md-footer-links{display:grid;grid-template-columns:repeat(2,auto);gap:10px 36px;align-content:start}
.md-footer-links a{font-weight:650;text-decoration:none}
.md-footer-links a:hover{text-decoration:underline;color:#fff}
.md-footer-bottom{margin-top:30px;padding-top:20px;border-top:1px solid #ffffff21;font-size:13px;line-height:1.7}
.md-footer-bottom p+p{margin-top:8px}

/* Demonstração do Jogo de Voronoi em grafos (voronoi.html) */
.vz-intro{padding:48px 0 30px;background:var(--gray-soft);border-bottom:1px solid var(--line-soft)}
.vz-intro h1{font-weight:800;font-size:clamp(34px,4.6vw,54px);line-height:1.04;letter-spacing:-.04em;margin-top:14px;text-wrap:balance}
.vz-intro .md-section-lead{max-width:800px;margin-top:14px}
.vz-steps{list-style:none;margin:26px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.vz-steps li{display:flex;gap:14px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.vz-step-n{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:50%;background:var(--red);color:#fff;font-weight:800;font-size:16px}
.vz-steps strong{display:block;font-weight:800;font-size:16.5px;line-height:1.3;letter-spacing:-.01em}
.vz-steps p{font-size:14.5px;line-height:1.55;color:var(--ink-2);margin-top:5px}
.vz-intro-note{margin-top:14px;font-size:13.5px;color:var(--muted)}
.vz-arena{padding:30px 0 56px}
.vz-setup{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.vz-setup-step{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;display:grid;gap:12px;align-content:start;min-width:0}
.vz-setup-step h3,.vz-controls h3{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;letter-spacing:-.01em}
.vz-setup-step h3 span,.vz-controls h3 span{display:grid;place-items:center;width:26px;height:26px;flex:0 0 26px;border-radius:50%;background:var(--ink);color:#fff;font-size:13px}
.vz-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--line-soft)}
.vz-controls h3{flex:1 0 100%}
.vz-speed{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:13.5px;font-weight:800}
.vz-speed select{font:inherit;font-size:14.5px;font-weight:600;padding:7px 9px;border:1.5px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}
.vz-speed select:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.vz-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.vz-thumb{font:inherit;display:grid;gap:4px;justify-items:center;padding:8px 6px 7px;border-radius:10px;border:1.5px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;text-align:center}
.vz-thumb svg{display:block;width:100%;max-width:96px;height:auto}
.vz-thumb line{stroke:#c9c5c6;stroke-width:1.2}
.vz-thumb circle{fill:var(--ink)}
.vz-thumb span{font-size:12px;font-weight:750;line-height:1.25}
.vz-thumb:hover{border-color:var(--red)}
.vz-thumb[aria-pressed=true]{border-color:var(--red);background:var(--red-soft);box-shadow:inset 0 0 0 1px var(--red)}
.vz-thumb[aria-pressed=true] circle{fill:var(--red)}
.vz-thumb circle.vz-thumb-disk{fill:none;stroke:#e7a9b0;stroke-width:.6}
.vz-thumb:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.vz-graph-info{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 18px}
.vz-desc{flex:1 1 420px;font-size:14px;line-height:1.55;color:var(--ink-2)}
.vz-desc strong{color:var(--ink)}
.vz-players{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.vz-field{display:grid;gap:5px;align-content:start;min-width:0}
.vz-field label{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:800}
.vz-field select{font:inherit;font-size:15px;padding:9px 10px;border:1.5px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);max-width:100%}
.vz-field select:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.vz-field-a select{border-color:var(--red)}
.vz-field-b select{border-color:var(--ink)}
.vz-dot{width:12px;height:12px;border-radius:50%;flex:none}
.vz-dot.a{background:var(--red)}
.vz-dot.b{background:var(--ink)}
.vz-agent-desc{font-size:13px;line-height:1.5;color:var(--muted)}
.vz-hint{font-size:13px;line-height:1.5;color:var(--muted)}
.vz-hint-swipe{display:none}
.vz-buttons{display:flex;flex-wrap:wrap;gap:8px}
.vz-btn{font:inherit;font-size:14.5px;font-weight:750;padding:10px 16px;border-radius:999px;border:1.5px solid var(--red);background:#fff;color:var(--red-dark);cursor:pointer}
.vz-btn.small{font-size:13.5px;padding:7px 13px}
.vz-btn.primary{background:var(--red);color:#fff}
.vz-btn:hover:not(:disabled){background:var(--red-dark);border-color:var(--red-dark);color:#fff}
.vz-btn:disabled{opacity:.45;cursor:default}
.vz-stage{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:16px;align-items:start;margin-top:16px}
.vz-board-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;min-width:0}
.vz-score{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.vz-team{border-radius:10px;padding:10px 14px;color:#fff;display:grid;gap:1px;min-width:0}
.vz-team-a{background:var(--red)}
.vz-team-b{background:var(--ink)}
.vz-team span{font-size:11.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;opacity:.92}
.vz-team strong{font-size:30px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.vz-team small{font-size:13.5px;font-weight:650;opacity:.92;overflow-wrap:anywhere}
.vz-match{margin-top:10px;font-size:12.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.vz-board-card .vz-status{margin-top:4px;min-height:2.9em}
.vz-board{display:block;width:100%;height:auto;max-height:max(300px,calc(100vh - 290px));max-height:max(300px,calc(100svh - 290px));margin-top:4px;touch-action:manipulation;font-family:var(--sans)}
.vz-board-card .vz-inspect{margin-top:8px;padding:9px 12px;border-radius:8px;background:var(--gray-soft);font-size:14px;line-height:1.55}
.vz-legend{list-style:none;margin:8px 0 0;padding:10px 0 0;border-top:1px solid var(--line-soft);display:flex;flex-wrap:wrap;gap:8px 16px;font-size:13px;color:var(--muted)}
.vz-legend li{display:flex;align-items:center;gap:7px}
.vz-swatch{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;flex:none}
.vz-swatch.a{background:var(--red)}
.vz-swatch.b{background:var(--ink)}
.vz-swatch.tie{background:linear-gradient(90deg,var(--red) 50%,var(--ink) 50%)}
.vz-swatch.none{background:var(--gray)}
.vz-swatch.ring{box-shadow:inset 0 0 0 3px var(--ink)}
.vz-swatch.weight{width:18px;height:18px;background:#fff;box-shadow:inset 0 0 0 1px var(--line);font-size:10.5px;font-weight:800;color:var(--muted)}
.vz-edge{stroke:#bdb8b9;stroke-width:2}
.vz-disks circle{fill:var(--red);fill-opacity:.05;stroke:var(--red);stroke-opacity:.32;stroke-width:1.2}
.vz-half{fill:var(--gray);transition:fill .35s ease}
.vz-node.own-a .vz-half{fill:var(--red)}
.vz-node.own-b .vz-half{fill:var(--ink)}
.vz-node.own-tie .vz-l{fill:var(--red)}
.vz-node.own-tie .vz-r{fill:var(--ink)}
.vz-rim{fill:none;stroke:#fff;stroke-width:2.5}
.vz-ring{fill:none;stroke-width:3.5;stroke:transparent}
.vz-node.is-center-a .vz-ring{stroke:var(--red)}
.vz-node.is-center-b .vz-ring{stroke:var(--ink)}
.vz-node.is-new .vz-ring{animation:vz-pop .5s ease-out}
@keyframes vz-pop{from{stroke-width:10;opacity:.3}to{stroke-width:3.5;opacity:1}}
.vz-label{fill:var(--ink);font-weight:800;font-size:14px;text-anchor:middle;pointer-events:none}
.vz-node.own-a .vz-label,.vz-node.own-b .vz-label,.vz-node.own-tie .vz-label{fill:#fff}
.vz-weight circle{fill:#fff;stroke:#d6d4d4;stroke-width:1}
.vz-weight text{fill:var(--ink-2);font-size:11px;font-weight:800;text-anchor:middle;pointer-events:none}
.vz-board.is-narrow .vz-label{font-size:15px}
.vz-board.is-narrow .vz-weight text{font-size:12px}
.vz-node{cursor:help}
.vz-node.is-choosable{cursor:pointer}
.vz-node.is-choosable .vz-rim{stroke:var(--red);stroke-width:3;stroke-dasharray:4 3}
.vz-node.is-choosable:hover .vz-half{fill:#f3b9bf}
.vz-node:focus{outline:none}
.vz-node:focus-visible .vz-rim{stroke:var(--ink);stroke-width:4;stroke-dasharray:none}
.vz-side{display:grid;gap:12px;min-width:0}
.vz-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:grid;gap:8px;min-width:0}
.vz-box h3{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark)}
.vz-now{border-left:5px solid var(--red)}
.vz-status{font-size:15.5px;font-weight:750;line-height:1.45}
.vz-explica{display:grid;gap:8px;font-size:14.5px;line-height:1.6;color:var(--ink-2)}
.vz-now-actions{display:none}
.vz-stage.is-stacked .vz-now-actions{display:flex;flex-wrap:wrap;gap:8px}
.vz-board-card .vz-now{margin-top:12px;padding:12px 12px 12px 14px}
.vz-now-actions .vz-btn{padding:7px 11px}
.vz-box-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.vz-link{font:inherit;font-size:13px;font-weight:750;color:var(--red-dark);background:none;border:0;padding:4px 0;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.vz-link:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.vz-back{display:none}
.vz-stage.is-stacked .vz-back{display:inline-block}
.vz-explica strong{color:var(--ink);font-weight:800}
.vz-explica:empty{display:none}
.vz-inspect{font-size:14px;line-height:1.6;color:var(--ink-2)}
.vz-results p{font-size:14px;color:var(--muted)}
.vz-results table{width:100%;border-collapse:collapse;font-size:14.5px;font-variant-numeric:tabular-nums}
.vz-results th,.vz-results td{padding:7px 4px;border-bottom:1px solid var(--line-soft);text-align:right}
.vz-results th:first-child{text-align:left;font-weight:700}
.vz-results small{font-weight:600;color:var(--muted)}
.vz-results thead th{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.vz-results .vz-total th,.vz-results .vz-total td{font-weight:800;border-bottom:0}
.vz-log{list-style:none;margin:0;padding:0;max-height:230px;overflow:auto;font-size:13.5px;line-height:1.45}
.vz-log li{border-bottom:1px solid var(--line-soft)}
.vz-log-item{display:block;width:100%;margin:0;padding:6px 8px;border:0;border-radius:6px;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}
.vz-log-item:hover{background:var(--gray-soft)}
.vz-log-item[aria-current=step]{background:var(--red-soft);box-shadow:inset 3px 0 0 var(--red)}
.vz-log-item.is-future{opacity:.5}
.vz-log-item:focus-visible{outline:3px solid var(--red);outline-offset:-3px}
.vz-review{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:8px;padding:9px 12px;border-radius:8px;background:var(--red-soft);border:1px solid #f3c9ce;font-size:13.5px;line-height:1.5;color:#4a0f17}
.vz-review p{flex:1 1 260px}
.vz-log .t-a{color:var(--red-dark);font-weight:800}
.vz-log .t-b{color:var(--ink);font-weight:800}
.vz-tourney-cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 16px;margin-top:22px;padding:16px;border:1px dashed var(--line);border-radius:var(--radius)}
.vz-tourney-cta p{font-size:15px;font-weight:650;color:var(--ink-2)}
.vz-torneio h2{margin-bottom:12px}
.vz-torneio-lead{margin-bottom:16px;max-width:820px}
.vz-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.vz-tournament{width:100%;border-collapse:collapse;font-size:14.5px;font-variant-numeric:tabular-nums;min-width:720px}
.vz-tournament caption{caption-side:bottom;text-align:left;padding:12px 16px;font-size:13px;color:var(--muted)}
.vz-tournament th,.vz-tournament td{padding:10px 12px;border-bottom:1px solid var(--line-soft);text-align:center;white-space:nowrap}
.vz-tournament thead th{font-size:12px;font-weight:800;letter-spacing:.06em;color:var(--muted);background:var(--gray-soft)}
.vz-tournament tbody th{text-align:left;font-weight:800}
.vz-tournament .vz-win{color:var(--true);font-weight:800}
.vz-tournament .vz-loss{color:var(--false)}
.vz-tournament .vz-self{color:var(--muted)}
.vz-tournament .vz-sum{font-weight:800}
.vz-strategies{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,470px),1fr));gap:16px}
.vz-strategy{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;display:flex;flex-direction:column;gap:10px;min-width:0}
.vz-strategy h3{font-weight:800;font-size:19px;letter-spacing:-.02em}
.vz-strategy p{font-size:15px;line-height:1.6;color:var(--ink-2)}
.vz-strategy pre{margin:4px 0 0;overflow-x:auto;background:var(--night);color:#f1eeee;border-radius:10px;padding:14px 16px;font:500 13px/1.65 ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}
.vz-strategy pre code{background:none;border:0;border-radius:0;padding:0;font:inherit;color:inherit;white-space:pre}
.vz-strategy pre b{color:#ff8f99;font-weight:700}
.vz-strategy-actions{margin-top:auto;padding-top:4px}
.vz-strategy-note{background:var(--red-soft);border-color:#f3c9ce}
.vz-groups{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:12px}
.vz-groups>li{background:var(--surface);border:1px solid var(--line);border-top:5px solid var(--red);border-radius:var(--radius);padding:14px 16px}
.vz-groups h3{font-weight:800;font-size:16px;letter-spacing:-.01em}
.vz-groups ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:3px;font-size:14px;line-height:1.45;color:var(--ink-2)}
@media(min-width:1061px){
 .vz-side{position:sticky;top:84px;max-height:calc(100vh - 96px);overflow-y:auto;scrollbar-width:thin;padding:2px 4px 2px 2px;margin:-2px -4px -2px -2px}
}
@media(max-width:1060px){
 .vz-stage{grid-template-columns:minmax(0,1fr)}
 .vz-side{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
}
@media(max-width:860px){
 .vz-steps{grid-template-columns:minmax(0,1fr)}
 .vz-setup{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:700px){
 .vz-thumbs{grid-auto-flow:column;grid-auto-columns:104px;grid-template-columns:none;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}
 .vz-hint-swipe{display:block;margin-top:-4px}
 .vz-controls .vz-buttons{display:contents}
 .vz-players{grid-template-columns:minmax(0,1fr)}
 .vz-board-card{padding:12px}
 .vz-team strong{font-size:26px}
 .vz-team span{font-size:10.5px;letter-spacing:.06em}
}
@media(prefers-reduced-motion:reduce){.vz-half{transition:none}.vz-node.is-new .vz-ring{animation:none}}

/* Laboratórios da Unidade 5 (grafos.html e arvores.html) */
.lab-intro{padding:44px 0 26px;background:var(--gray-soft);border-bottom:1px solid var(--line-soft)}
.lab-intro h1{font-weight:800;font-size:clamp(34px,4.6vw,54px);line-height:1.04;letter-spacing:-.04em;margin-top:14px;text-wrap:balance}
.lab-intro .md-section-lead{max-width:860px;margin-top:14px}
.lab-chapters{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.lab-chapters li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:0}
.lab-chapters li:hover{border-color:var(--red)}
.lab-chapters a{display:block;height:100%;padding:12px 14px;border-radius:var(--radius);color:inherit;text-decoration:none}
.lab-chapters a:hover strong{color:var(--red-dark)}
.lab-chapters a:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.lab-chapters.is-6{grid-template-columns:repeat(3,minmax(0,1fr))}
.lab-chapters b{display:block;font-size:12px;font-weight:800;letter-spacing:.1em;color:var(--red-dark)}
.lab-chapters strong{display:block;font-size:15.5px;font-weight:800;line-height:1.3;margin-top:2px}
.lab-chapters span{display:block;font-size:13.5px;line-height:1.5;color:var(--muted);margin-top:3px}
.lab-app{padding:22px 0 56px}
.lab-tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line);margin-bottom:16px;scrollbar-width:none}
.lab-tabs::-webkit-scrollbar{display:none}
.lab-tab{font:inherit;display:inline-flex;align-items:baseline;gap:8px;white-space:nowrap;padding:10px 12px 9px;border:0;border-bottom:3px solid transparent;background:none;color:var(--ink-2);font-size:15px;font-weight:750;cursor:pointer}
.lab-tab span{font-size:12px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}
.lab-tab:hover{color:var(--ink)}
.lab-tab[aria-selected=true]{color:var(--red-dark);border-bottom-color:var(--red)}
.lab-tab[aria-selected=true] span{color:var(--red)}
.lab-tab:focus-visible{outline:3px solid var(--red);outline-offset:-3px}
.lab-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:16px;align-items:start}
.lab-main,.lab-side{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}
.lab-guide{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--red);border-radius:var(--radius);padding:14px 16px;min-width:0}
.lab-guide-inner{display:grid;gap:8px;min-width:0}
.lab-guide-inner.is-free{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px}
.lab-guide:has(.is-free){border-left-color:var(--ink)}
.lab-guide-free{font-size:14.5px;line-height:1.5;color:var(--ink-2);flex:1 1 260px}
.lab-guide-progress{display:flex;gap:4px}
.lab-guide-progress span{flex:1;height:4px;border-radius:2px;background:var(--line)}
.lab-guide-progress span.is-current{background:var(--red)}
.lab-guide-progress span.is-done{background:var(--true)}
.lab-guide-step{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--red-dark)}
.lab-guide-title{font-size:18px;font-weight:800;letter-spacing:-.01em;line-height:1.3}
.lab-guide-goal{font-size:15px;line-height:1.55;color:var(--ink-2)}
.lab-guide-goal strong{color:var(--ink)}
.lab-guide-hint{font-size:14px;line-height:1.55;color:var(--muted)}
.lab-guide-done{font-size:14.5px;font-weight:700;line-height:1.5;color:#185c2c;background:#e7f3ea;border-radius:8px;padding:8px 12px}
.lab-guide-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.lab-guide details summary{cursor:pointer;font-size:13.5px;font-weight:750;color:var(--red-dark);width:fit-content;max-width:100%}
.lab-guide details p{margin-top:6px;font-size:14px;line-height:1.6;color:var(--ink-2)}
.lab-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.lab-seg{display:inline-flex;flex-wrap:wrap;border:1.5px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;max-width:100%}
.lab-seg button{font:inherit;font-size:14px;font-weight:750;padding:8px 13px;border:0;background:none;color:var(--ink-2);cursor:pointer}
.lab-seg button+button{border-left:1.5px solid var(--line)}
.lab-seg button[aria-pressed=true]{background:var(--ink);color:#fff}
.lab-seg button:focus-visible{outline:3px solid var(--red);outline-offset:-3px}
.lab-check{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:700;cursor:pointer}
.lab-check input{width:17px;height:17px;accent-color:var(--red)}
.lab-select{font:inherit;font-size:14px;padding:6px 9px;border:1.5px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);max-width:100%}
.lab-select:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.lab-board-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
.lab-board-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}
.lab-field-inline{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:800;min-width:0;max-width:100%}
.lab-field-inline .lab-select{min-width:0;flex:1 1 auto;text-overflow:ellipsis}
.lab-history{display:flex;flex-wrap:wrap;gap:6px}
.lab-board{display:block;width:100%;height:clamp(300px,54vh,470px);touch-action:none;user-select:none;-webkit-user-select:none;font-family:var(--sans);border-radius:8px;background-color:#fbfbfa;background-image:linear-gradient(#efeeed 1px,transparent 1px),linear-gradient(90deg,#efeeed 1px,transparent 1px);background-size:32px 32px}
.lab-board:focus{outline:none}
.lab-board-wrap{position:relative;min-width:0}
.lab-pop{position:absolute;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;padding:4px;border-radius:20px;background:var(--ink);box-shadow:0 6px 18px rgba(35,31,32,.22);transform:translate(-50%,calc(-100% - 12px));max-width:calc(100% - 8px);width:max-content}
.lab-pop>*{flex:none}
.lab-pop.is-below{transform:translate(-50%,12px)}
.lab-pop::after{content:"";position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-top-color:var(--ink);border-bottom:0}
.lab-pop.is-below::after{bottom:auto;top:-6px;border:6px solid transparent;border-bottom-color:var(--ink);border-top:0}
.lab-pop button{font:inherit;font-size:13px;font-weight:800;min-width:32px;height:32px;padding:0 11px;border-radius:999px;border:0;background:#fff;color:var(--ink);cursor:pointer;white-space:nowrap}
.lab-pop button:hover{background:var(--red-soft);color:var(--red-dark)}
.lab-pop button:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.lab-pop .lab-pop-x{background:transparent;color:#fff;min-width:28px;padding:0 6px}
.lab-pop .lab-pop-x:hover{background:#4d4748;color:#fff}
.lab-pop-peso{color:#fff;font-weight:800;font-size:14px;min-width:3.4ch;text-align:center;font-variant-numeric:tabular-nums}
.lab-pop-sep{width:1px;height:20px;background:#5d5859}
.lab-edge{stroke:#a39e9f;stroke-width:2.5;fill:none}
.lab-edge.is-sel{stroke:var(--ink);stroke-width:4.5}
.lab-edge.is-cycle{stroke:var(--red);stroke-width:4}
.lab-edge.is-tree{stroke:var(--red);stroke-width:4.5}
.lab-edge.is-exam{stroke:var(--ink);stroke-width:3.5;stroke-dasharray:7 5}
.lab-edge.is-cross{stroke:#c47a00;stroke-width:3.5}
.lab-edge-hit{stroke:transparent;stroke-width:20;fill:none;cursor:pointer}
.lab-weight{cursor:pointer}
.lab-weight rect{fill:#fff;stroke:#cfcccc}
.lab-weight text{font-size:12px;font-weight:800;fill:var(--ink-2);text-anchor:middle;pointer-events:none}
.lab-weight.is-sel rect{stroke:var(--ink);stroke-width:2}
.lab-node{cursor:pointer}
.lab-node circle{fill:#fff;stroke:var(--ink);stroke-width:2}
.lab-node>text{font-size:14px;font-weight:800;fill:var(--ink);text-anchor:middle;pointer-events:none}
.lab-node.is-sel>circle{fill:#ece9ea;stroke:var(--ink);stroke-width:4}
.lab-node.is-pend>circle{stroke:var(--ink);stroke-width:3.5;stroke-dasharray:4 3}
.lab-node.is-touch>circle{stroke:#c47a00;stroke-width:3.5}
.lab-node.is-start>circle{stroke:var(--red);stroke-width:3.5}
.lab-node.st-mark>circle{fill:#d9d6d6;stroke:#7d7778;stroke-width:2.5}
.lab-node.st-done>circle{fill:#4d4748;stroke:var(--ink)}
.lab-node.st-done>text{fill:#fff}
.lab-node.st-cur>circle{fill:var(--red);stroke:var(--red-dark);stroke-width:3}
.lab-node.st-cur>text{fill:#fff}
.lab-node.is-start.st-mark>circle,.lab-node.is-start.st-done>circle,.lab-node.is-start.in-walk>circle{stroke:var(--red);stroke-width:3.5}
.lab-node:focus{outline:none}
.lab-node:focus-visible>circle{stroke:var(--red);stroke-width:4.5}
.lab-badge circle{fill:#fff;stroke:var(--ink);stroke-width:1.2}
.lab-badge text{font-size:11px;font-weight:800;fill:var(--ink);text-anchor:middle;pointer-events:none}
.lab-empty{font-size:15px;font-weight:700;fill:var(--muted);text-anchor:middle}
.lab-status{font-size:15px;font-weight:700;line-height:1.5;min-height:1.5em}
.lab-status:empty{display:none}
.lab-stepbar-slot{position:sticky;top:var(--lab-topo,84px);z-index:6;height:0;margin-bottom:-12px;min-width:0}
.lab-stepbar{position:absolute;left:0;right:0;top:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:8px 10px 8px 14px;border:1px solid var(--line);border-left:5px solid var(--red);border-radius:0 0 10px 10px;background:var(--surface);box-shadow:0 6px 18px rgba(35,31,32,.14);min-width:0;transition:opacity .18s ease,transform .18s ease,visibility 0s}
.lab-stepbar::before{content:'';position:absolute;left:-6px;right:-6px;bottom:calc(100% + 1px);height:10px;background:var(--page)}
.lab-stepbar.is-recolhida{opacity:0;transform:translateY(-6px);visibility:hidden;pointer-events:none;transition:opacity .18s ease,transform .18s ease,visibility 0s linear .18s}
.lab-stepbar-text{flex:1 1 300px;min-width:0;font-size:14px;line-height:1.45;color:var(--ink-2)}
.lab-stepbar-text strong{color:var(--ink);font-weight:800}
.lab-stepbar-n{display:inline-block;margin-right:8px;font-size:11.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--red-dark)}
.lab-stepbar-check{display:inline-grid;place-items:center;width:22px;height:22px;margin-right:8px;border-radius:50%;background:var(--true);color:#fff;font-size:13px;font-weight:800;vertical-align:-3px}
.lab-stepbar-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;flex:none}
.lab-stepbar-more{flex:1 1 100%;display:grid;gap:4px;padding-top:6px;border-top:1px solid var(--line-soft);font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.lab-stepbar-goal-m{display:none}
.lab-stepbar.is-done{background:#e7f3ea;border-color:#c9e3d1;border-left-color:var(--true)}
.lab-stepbar.is-done .lab-stepbar-text,.lab-stepbar.is-done .lab-stepbar-text strong{color:#185c2c}
.lab-stepbar.is-done .lab-stepbar-text{font-weight:700}
.lab-stepbar.is-new{animation:stepbar-feito 1.1s ease}
.lab-stepbar.is-new .lab-stepbar-check{animation:stepbar-check .7s ease}
@keyframes stepbar-feito{0%{box-shadow:0 0 0 0 rgba(31,122,58,.55)}35%{box-shadow:0 0 0 10px rgba(31,122,58,.18)}100%{box-shadow:0 6px 18px rgba(35,31,32,.1)}}
@keyframes stepbar-check{0%{transform:scale(.2)}60%{transform:scale(1.35)}100%{transform:none}}
.lab-mode-hint{font-size:13.5px;line-height:1.5;color:var(--muted)}
.lab-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
.lab-box h3,.lab-more summary{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark)}
.lab-more{display:block}
.lab-more summary{cursor:pointer;width:fit-content;max-width:100%}
.lab-more[open] summary{margin-bottom:10px}
.lab-hint{font-size:13.5px;line-height:1.55;color:var(--muted)}
.lab-facts{margin:0;display:grid;gap:6px}
.lab-facts div{display:flex;justify-content:space-between;align-items:baseline;gap:6px 14px;font-size:14px;line-height:1.45;padding-bottom:6px;border-bottom:1px solid var(--line-soft)}
.lab-facts div:last-child{border-bottom:0;padding-bottom:0}
.lab-facts dt{color:var(--muted);font-weight:650;flex:0 1 auto}
.lab-facts dd{margin:0;font-weight:750;text-align:right;min-width:0;overflow-wrap:anywhere}
.lab-facts .lab-ok{color:#185c2c}
.lab-facts .lab-no{color:var(--red-dark)}
.lab-facts .lab-muted{color:var(--muted);font-weight:650}
.lab-table-wrap{overflow-x:auto;min-width:0}
.lab-table{border-collapse:collapse;font-size:13.5px;width:100%;font-variant-numeric:tabular-nums}
.lab-table th,.lab-table td{padding:5px 8px;border-bottom:1px solid var(--line-soft);text-align:center;white-space:nowrap}
.lab-table thead th{font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.lab-table th:first-child,.lab-table td:first-child{text-align:left}
.lab-table tbody th{font-weight:800}
.lab-table td:last-child{white-space:normal}
.lab-matrix td,.lab-matrix th{text-align:center!important;width:30px}
.lab-matrix td{color:#c9c5c6;font-weight:700}
.lab-matrix td.is-on{color:var(--red-dark);background:var(--red-soft);font-weight:800}
.lab-matrix td.is-novo{animation:mat-novo 1.6s ease}
.lab-matrix td.is-saiu{animation:mat-saiu 1.6s ease}
@keyframes mat-novo{0%,40%{background:var(--red);color:#fff;box-shadow:inset 0 0 0 2px var(--red-dark)}100%{background:var(--red-soft);color:var(--red-dark)}}
@keyframes mat-saiu{0%,40%{background:#fde0e3;color:var(--red-dark);text-decoration:line-through;box-shadow:inset 0 0 0 2px var(--red)}100%{background:transparent;color:#c9c5c6}}
@media(prefers-reduced-motion:reduce){.lab-matrix td.is-novo,.lab-matrix td.is-saiu{animation-duration:.01s}}
.lab-chips{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.lab-chip{display:inline-flex;align-items:center;gap:2px;padding:3px 10px;border-radius:999px;background:var(--gray-soft);border:1px solid var(--line);font-size:14px;font-weight:800}
.lab-chip.is-red{background:var(--red);border-color:var(--red);color:#fff}
.lab-chip.is-off{opacity:.6;text-decoration:line-through;border-style:dashed}
.lab-chip-main,.lab-chip-x{font:inherit;border:0;background:none;padding:0;color:inherit;cursor:pointer}
.lab-chip-x{margin-left:6px;font-size:16px;line-height:1;color:var(--muted)}
.lab-chip-x:hover{color:var(--red-dark)}
.lab-sel-title{font-size:16px;font-weight:800}
.lab-sel-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.lab-weight-edit{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:750}
.lab-weight-edit strong{min-width:2ch;text-align:center;font-size:16px;font-variant-numeric:tabular-nums}
.lab-rel{font:400 16px/1.6 var(--math);color:var(--ink);overflow-wrap:anywhere}
.lab-steps{list-style:none;margin:0;padding:0;max-height:260px;overflow:auto;font-size:13.5px;line-height:1.45}
.lab-steps li{border-bottom:1px solid var(--line-soft)}
.lab-legend{list-style:none;margin:0;padding:8px 0 0;border-top:1px solid var(--line-soft);display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--muted)}
.lab-legend li{display:flex;align-items:center;gap:7px}
.lab-swatch{display:inline-block;width:15px;height:15px;border-radius:50%;flex:none;border:2px solid var(--ink);background:#fff}
.lab-swatch.is-mark{background:#d9d6d6;border-color:#7d7778}
.lab-swatch.is-cur{background:var(--red);border-color:var(--red-dark)}
.lab-swatch.is-done{background:#4d4748;border-color:var(--ink)}
.lab-swatch.is-tree{border-radius:2px;height:5px;border:0;background:var(--red)}
.def-tabs{margin-bottom:14px}
.def-panel{display:grid;gap:14px;min-width:0}
.def-intro{font-size:15.5px;line-height:1.6;color:var(--ink-2);max-width:860px}
.def-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px}
.def-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 14px 16px;display:grid;gap:8px;align-content:start;min-width:0}
.def-card h3{font-size:16.5px;font-weight:800;letter-spacing:-.01em;line-height:1.3}
.def-card p,.def-passos{font-size:14.5px;line-height:1.6;color:var(--ink-2)}
.def-passos{margin:0;padding-left:20px;display:grid;gap:4px}
.def-passos li::marker{font-weight:800;color:var(--red-dark)}
.def-passos ol{margin:4px 0 0;padding-left:20px;display:grid;gap:3px}
.def-anim{display:grid;gap:6px;min-width:0}
.def-anim .vz-btn{justify-self:start;margin:0 0 10px 10px}
.def-fig{margin:0;display:grid;gap:5px;min-width:0}
.def-fig [data-fig]{border:1px solid var(--line-soft);border-radius:8px;background-color:#fbfbfa;background-image:linear-gradient(#f1f0ef 1px,transparent 1px),linear-gradient(90deg,#f1f0ef 1px,transparent 1px);background-size:20px 20px;min-height:40px}
.def-fig figcaption{font-size:13px;line-height:1.45;color:var(--muted)}
.def-svg{display:block;width:100%;height:auto;font-family:var(--sans)}
.def-svg .e{stroke:#a39e9f;stroke-width:2.2;fill:none;stroke-linecap:round}
.def-svg .e.r{stroke:var(--red);stroke-width:3.2}
.def-svg .e.k{stroke:var(--ink);stroke-width:3.2}
.def-svg .e.p{stroke:#e9a3aa;stroke-width:2.8}
.def-svg .e.c{stroke:#c47a00;stroke-width:2.8;stroke-dasharray:5 4}
.def-svg .e.x{stroke:#d3d0d0;stroke-width:2;stroke-dasharray:4 4}
.def-svg .e.g{stroke:#cfcccc;stroke-width:1.5;stroke-dasharray:3 3}
.def-svg .v>circle{fill:#fff;stroke:var(--ink);stroke-width:1.8}
.def-svg .v>text{font-size:10.5px;font-weight:800;fill:var(--ink);text-anchor:middle}
.def-svg .v.r>circle{fill:var(--red);stroke:var(--red-dark)}
.def-svg .v.r>text,.def-svg .v.d>text{fill:#fff}
.def-svg .v.m>circle{fill:#d9d6d6;stroke:#7d7778}
.def-svg .v.d>circle{fill:#4d4748;stroke:var(--ink)}
.def-svg .v.s>circle{fill:var(--red-soft);stroke:var(--red)}
.def-svg .v.o>circle{fill:#ffefd2}
.def-svg .v.k>circle{stroke-width:3.4}
.def-svg .v.i>circle{stroke:var(--red);stroke-width:3}
.def-svg .v.x>circle{fill:#f3f2f2;stroke:#bdb8b9;stroke-dasharray:3 3}
.def-svg .v.x>text,.def-svg .v.g>text{fill:#a8a3a4}
.def-svg .v.c>circle{stroke:#c47a00;stroke-width:2.6}
.def-svg .v.g>circle{fill:#fff;stroke:#bdb8b9;stroke-dasharray:3 3}
.def-svg .v>circle.anel{fill:none;stroke:var(--red);stroke-width:1.8;stroke-dasharray:none}
.def-svg .v>circle.anel.h{stroke-dasharray:3 2.5}
.def-svg .bd circle{fill:#fff;stroke:var(--ink);stroke-width:1}
.def-svg .bd text{font-size:8px;font-weight:800;fill:var(--ink);text-anchor:middle}
.def-svg .bd.r circle{fill:var(--red);stroke:var(--red)}
.def-svg .bd.r text{fill:#fff}
.def-svg .pl rect{fill:var(--red);stroke:#fff;stroke-width:1}
.def-svg .pl text{font-size:7.5px;font-weight:800;fill:#fff;text-anchor:middle}
.def-svg .ps rect{fill:#fff;stroke:#cfcccc}
.def-svg .ps text{font-size:8.5px;font-weight:800;fill:var(--ink-2);text-anchor:middle}
.def-svg .t{font-size:9px;font-weight:650;fill:var(--muted)}
.def-svg .t.b{fill:var(--ink);font-weight:800}
.def-svg .t.r{fill:var(--red-dark);font-weight:800}
.def-svg .t.c{fill:#a35f00;font-weight:800}
.def-svg .n{stroke:#a8a3a4;stroke-width:1;stroke-dasharray:4 3}
.def-svg .n.b{stroke:var(--ink);stroke-width:2;stroke-dasharray:none}
.def-svg .nt{font-size:8px;font-weight:800;fill:#5d5859}
.def-svg .nt.b{fill:var(--red-dark)}
.def-svg .div{stroke:var(--line);stroke-width:1}
.def-svg .seta{stroke:var(--red);stroke-width:1.8;fill:none}
.def-svg .medida{stroke:var(--red);stroke-width:1.5}
.def-svg .zona{fill:none;stroke:#bdb8b9;stroke-width:1.2;stroke-dasharray:4 3}
.def-svg .cz{fill:#c47a00;stroke:#fff;stroke-width:1}
.def-svg .bx rect{fill:#fff;stroke:var(--ink);stroke-width:1.2}
.def-svg .bx text{font-size:9px;font-weight:800;fill:var(--ink);text-anchor:middle}
.def-svg .bx.m rect{fill:#d9d6d6;stroke:#7d7778}
.def-svg .bx.r rect{fill:var(--red);stroke:var(--red-dark)}
.def-svg .bx.r text{fill:#fff}
.def-svg .bx.s rect{fill:var(--red-soft);stroke:var(--red)}
.def-svg .bx.s text{fill:var(--red-dark)}
.def-svg .bx.z rect{fill:#fff;stroke:#dcd9d9}
.def-svg .bx.z text{fill:#b3aeaf;font-weight:700}
.def-svg .bx.h rect{fill:var(--ink);stroke:var(--ink)}
.def-svg .bx.h text{fill:#fff}
.def-svg .ptr{fill:var(--ink)}
.def-svg .lk{stroke:var(--ink);stroke-width:1.2;fill:none}
.def-svg .nul{font:700 8px ui-monospace,SFMono-Regular,Consolas,monospace;fill:var(--muted)}
.lab-board-caption{font-size:13.5px;line-height:1.5;color:var(--muted);flex:1 1 260px;min-width:0}
.lab-levels line{stroke:#a8a3a4;stroke-width:1.5;stroke-dasharray:7 5}
.lab-levels text{font-size:12px;font-weight:800;fill:#5d5859}
.lab-levels .is-on line{stroke:var(--ink);stroke-width:3;stroke-dasharray:none}
.lab-levels .is-on text{fill:var(--red-dark);font-size:13px}
.lab-node.is-level>circle{stroke:var(--red);stroke-width:4}
.lab-node .lab-level-ring{fill:none!important;stroke:var(--red)!important;stroke-width:2.5!important;stroke-dasharray:none!important}
.lab-edge.is-sub{stroke:#e9a3aa;stroke-width:3}
.lab-edge.is-ghost{stroke:#d4d1d1;stroke-width:1.5;stroke-dasharray:4 4}
.lab-node.is-root>circle{stroke-width:3.5}
.lab-node.in-sub>circle{fill:var(--red-soft);stroke:var(--red)}
.lab-node.is-anc>circle{stroke:var(--red);stroke-width:3}
.lab-node.is-sib>circle{stroke:var(--red);stroke-width:2.5;stroke-dasharray:5 3}
[data-lab-arvores] .lab-node.is-sel>circle{fill:var(--red);stroke:var(--red-dark);stroke-width:3}
[data-lab-arvores] .lab-node.is-sel>text{fill:#fff}
.lab-node .lab-hit{fill:transparent!important;stroke:none!important}
.lab-node.is-ghost .lab-ghost-dot{fill:#fff;stroke:#bdb8b9;stroke-width:1.5;stroke-dasharray:4 3}
.lab-node.is-ghost text{font-size:18px;font-weight:700;fill:var(--muted)}
.lab-node.is-ghost:hover .lab-ghost-dot,.lab-node.is-ghost:focus-visible .lab-ghost-dot{stroke:var(--red);fill:var(--red-soft)}
.lab-node.is-danger:hover>circle{fill:var(--red-soft);stroke:var(--red)}
.lab-badge.is-bad circle{fill:var(--red);stroke:var(--red)}
.lab-badge.is-bad text{fill:#fff}
.lab-swatch.is-sel-sw{background:var(--red);border-color:var(--red-dark)}
.lab-swatch.is-sub-sw{background:var(--red-soft);border-color:var(--red)}
.lab-swatch.is-sib-sw{border:2px dashed var(--red)}
.lab-swatch.is-root-sw{border-width:3.5px}
.lab-swatch.is-ghost-sw{border:2px dashed #bdb8b9}
.lab-swatch.is-touch-sw{border-color:#c47a00;border-width:3px}
.lab-swatch.is-bad-sw{background:var(--red);border-color:var(--red)}
.lab-bst-input{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.lab-toolbar.is-bst{flex-direction:column;align-items:stretch;gap:8px}
.lab-toolrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;min-width:0}
.lab-toolrow.is-sub{padding-top:8px;border-top:1px solid var(--line-soft)}
.lab-keybar{display:inline-flex;align-items:stretch;max-width:100%;border:1.5px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.lab-keybar label{display:flex;align-items:center;padding:0 10px 0 12px;font-size:13.5px;font-weight:800;color:var(--muted)}
.lab-keybar .lab-number{width:78px;border:0;border-left:1.5px solid var(--line);border-radius:0;padding:8px 10px}
.lab-keybar button{font:inherit;font-size:14px;font-weight:750;padding:8px 14px;border:0;border-left:1.5px solid var(--line);background:none;color:var(--red-dark);cursor:pointer}
.lab-keybar button:hover{background:var(--red-soft)}
.lab-keybar button.is-main{background:var(--red);color:#fff}
.lab-keybar button.is-main:hover{background:var(--red-dark)}
.lab-keybar button:focus-visible,.lab-keybar .lab-number:focus-visible{outline:3px solid var(--red);outline-offset:-3px}
.lab-toolgroup{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.lab-toolgroup>span{font-size:13.5px;font-weight:800;color:var(--ink-2)}
.lab-pop button:disabled{opacity:.42;cursor:default;background:#fff;color:var(--ink)}
.lab-node.is-lca>circle{fill:var(--red-soft);stroke:var(--red);stroke-width:4}
.lab-node .lab-lca-ring{fill:none!important;stroke:var(--red)!important;stroke-width:2.5!important;stroke-dasharray:4 3!important}
.lab-node.is-out>circle{fill:#fde0e3;stroke:var(--red);stroke-width:3.5;stroke-dasharray:5 3}
.lab-node.is-succ>circle{fill:var(--red-soft);stroke:var(--red);stroke-width:3}
.lab-node.is-new>circle{fill:var(--red);stroke:var(--red-dark);stroke-width:3}
.lab-node.is-new>text{fill:#fff}
.lab-cmp rect{fill:var(--ink)}
.lab-cmp text{fill:#fff;font-size:13px;font-weight:800;text-anchor:middle;font-variant-numeric:tabular-nums}
.lab-vaga circle{fill:#fff;stroke:var(--red);stroke-width:2;stroke-dasharray:5 4}
.lab-vaga text{fill:var(--red-dark);font-size:14px;font-weight:800;text-anchor:middle}
.lab-voa circle{fill:var(--red);stroke:var(--red-dark);stroke-width:2.5}
.lab-voa text{fill:#fff;font-size:14px;font-weight:800;text-anchor:middle}
.lab-oplist li.is-now{color:var(--ink);font-weight:750}
.lab-oplist li.is-now::marker{color:var(--red)}
.lab-swatch.is-lca-sw{background:var(--red-soft);border-color:var(--red);border-width:3px;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--red)}
.lab-levels text{paint-order:stroke;stroke:#fbfbfa;stroke-width:4px;stroke-linejoin:round}
[data-aba-atual=percursos] .lab-board{height:clamp(240px,calc(100vh - 340px),400px)}
[data-aba-atual=busca] .lab-board{height:clamp(240px,calc(100vh - 362px),420px)}
[data-aba-atual=tipos] .lab-board{height:clamp(260px,calc(100vh - 335px),440px)}
.def-casos{display:grid;gap:6px;min-width:0}
.def-casos-nav{display:flex;align-items:center;gap:6px;padding:0 0 2px}
.def-casos-nav span{flex:1 1 auto;min-width:0;text-align:center;font-size:12.5px;font-weight:800;line-height:1.3;color:var(--ink-2)}
.def-casos-nav .vz-btn{flex:none;padding:5px 9px;font-size:12.5px}
.def-casos .def-anim .vz-btn{margin:0 0 6px 8px}
.def-card.is-largo{grid-template-columns:minmax(0,min(46%,400px)) minmax(0,1fr);column-gap:20px;align-items:start}
.def-card.is-largo>h3{grid-column:1/-1}
.def-card.is-largo>.def-fig{grid-column:1;grid-row:2/span 6}
.def-card.is-largo>:not(h3):not(.def-fig){grid-column:2}
.lab-number{font:inherit;font-size:15px;font-weight:700;width:86px;padding:7px 10px;border:1.5px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}
.lab-number:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.lab-oplist{margin:0;padding-left:20px;display:grid;gap:4px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.lab-code-name{font-size:14.5px;font-weight:800;line-height:1.4}
.lab-code{margin:0;overflow:auto;max-height:min(420px,42vh);background:var(--night);color:#f1eeee;border-radius:10px;padding:10px 0;font:500 12.5px/1.65 ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}
.lab-code code{display:block;background:none;border:0;border-radius:0;padding:0;color:inherit;font:inherit;white-space:pre}
.lab-code .ln{display:block;min-height:1.65em;padding:0 14px;white-space:pre}
.lab-code .ln.is-on{background:#5c1c24;box-shadow:inset 4px 0 0 var(--red)}
.lab-code b{color:#ff8f99;font-weight:700}
.lab-code .lab-code-comment{color:#aaa2a3}
.lab-code-tabs{display:flex;flex-wrap:wrap;gap:6px}
.lab-code-tabs button{font:inherit;font-size:13px;font-weight:750;padding:5px 11px;border-radius:999px;border:1.5px solid var(--line);background:#fff;color:var(--ink-2);cursor:pointer}
.lab-code-tabs button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:#fff}
.lab-ds-labels{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.lab-ds{display:flex;align-items:center;gap:6px;min-height:54px;padding:8px;border:1.5px dashed #bdb8b9;border-radius:10px;background:#fbfbfa;overflow-x:auto}
.lab-ds[data-vazia]::after{content:attr(data-vazia);font-size:13px;color:var(--muted)}
.lab-ds[data-tipo=fila]{border-left:4px solid var(--ink);border-radius:0 10px 10px 0}
.lab-ds[data-tipo=pilha]{flex-direction:row-reverse;justify-content:flex-start;border-right:4px solid var(--ink);border-radius:10px 0 0 10px}
.lab-ds-item{display:grid;place-items:center;min-width:42px;max-width:90px;height:36px;padding:0 12px;border-radius:8px;background:#d9d6d6;border:1.5px solid #7d7778;font-weight:800;font-size:15px;flex:none;overflow:hidden;transition:transform .26s ease,opacity .26s ease,max-width .26s ease,min-width .26s ease,padding .26s ease}
.lab-ds-item.is-next{background:var(--red-soft);border-color:var(--red);color:var(--red-dark)}
.lab-ds-item.is-dup{outline:2.5px dashed var(--ink);outline-offset:2px}
.lab-ds-item.is-in{opacity:0;transform:translateX(28px)}
.lab-ds-item.is-out{opacity:0;transform:translateX(-28px);min-width:0;max-width:0;padding:0;border-width:0}
.lab-ds[data-tipo=pilha] .lab-ds-item.is-in,.lab-ds[data-tipo=pilha] .lab-ds-item.is-out{transform:translateX(-28px)}
.lab-adj{display:grid;gap:6px;min-width:0}
.lab-adj-row{display:flex;align-items:center;gap:5px;overflow-x:auto;padding-bottom:2px}
.lab-adj-head{display:grid;place-items:center;flex:none;min-width:30px;height:28px;padding:0 6px;border-radius:6px;background:var(--ink);color:#fff;font-weight:800;font-size:14px}
.lab-adj-node{display:inline-flex;flex:none;align-items:stretch;height:28px;border:1.5px solid var(--ink);border-radius:6px;overflow:hidden;background:#fff}
.lab-adj-node b{display:grid;place-items:center;min-width:26px;padding:0 6px;font-weight:800;font-size:14px}
.lab-adj-node i{position:relative;width:16px;border-left:1.5px solid var(--ink);background:var(--gray-soft)}
.lab-adj-node i::after{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--ink)}
.lab-adj-arrow{flex:none;color:var(--muted);font-weight:800}
.lab-adj-cell{display:inline-flex;align-items:center;gap:5px;flex:none;max-width:120px;overflow:hidden}
.lab-terra{display:block;flex:none;margin-left:-6px;stroke:var(--ink);stroke-width:1.7;fill:none;overflow:visible}
.lab-adj-cell.is-saindo{animation:adj-sai 1.4s ease forwards}
.lab-adj-cell.is-saindo .lab-adj-node{border-color:var(--red);background:var(--red-soft);box-shadow:0 0 0 3px var(--red-soft)}
.lab-adj-cell.is-saindo .lab-adj-node b{color:var(--red-dark);text-decoration:line-through}
.lab-adj-cell.is-entrando .lab-adj-node{animation:adj-entra 1.4s ease}
@keyframes adj-sai{0%,55%{max-width:120px;opacity:1}100%{max-width:0;opacity:0}}
@keyframes adj-entra{0%,35%{background:var(--red);border-color:var(--red-dark);color:#fff}100%{background:#fff}}
@media(prefers-reduced-motion:reduce){.lab-adj-cell.is-saindo,.lab-adj-cell.is-entrando .lab-adj-node{animation-duration:.01s}}
.lab-adj-grau{flex:none;margin-left:auto;padding-left:10px;font-size:12.5px;font-weight:700;color:var(--muted);white-space:nowrap}
.lab-adj-row.is-cur .lab-adj-head{background:var(--red)}
.lab-adj-node.is-exam{border-color:var(--red);box-shadow:0 0 0 3px var(--red-soft)}
.lab-adj-node.is-exam i{border-left-color:var(--red)}
.lab-edge.is-walk{stroke:var(--red);stroke-width:4.5}
.lab-walk-n rect{fill:var(--red);stroke:#fff;stroke-width:1.5}
.lab-walk-n text{font-size:11px;font-weight:800;fill:#fff;text-anchor:middle;pointer-events:none}
.lab-edge.is-removed{stroke:#cfcccc;stroke-dasharray:5 5}
.lab-node.is-removed>circle{fill:#f3f2f2;stroke:#bdb8b9;stroke-dasharray:4 3}
.lab-node.is-removed>text{fill:#a8a3a4}
.lab-edge.is-cut{stroke:#c47a00;stroke-width:4.5}
.lab-node.is-cut>circle{stroke:#c47a00;stroke-width:4}
.lab-edge.is-gone{stroke:#d8d5d5;stroke-dasharray:3 6}
.lab-swatch.is-sel{background:#ece9ea;border-color:var(--ink);border-width:3px}
.lab-swatch.is-cycle{border-radius:2px;height:5px;border:0;background:var(--red)}
.lab-swatch.is-cut{border-color:#c47a00;border-width:3px}
.lab-swatch.is-removed{border-style:dashed;border-color:#bdb8b9}
.lab-levels-pick{display:flex;flex-wrap:wrap;gap:6px}
.lab-levels-pick button{font:inherit;font-size:13.5px;font-weight:800;min-width:38px;padding:5px 10px;border-radius:999px;border:1.5px solid var(--line);background:#fff;color:var(--ink);cursor:pointer}
.lab-levels-pick button[aria-pressed=true]{background:var(--red);border-color:var(--red);color:#fff}
.lab-walk-table td,.lab-walk-table th{text-align:center}
.lab-edge-halo{stroke:var(--ink);stroke-width:11;fill:none;stroke-linecap:round;opacity:.18}
.lab-node.in-walk>circle{fill:var(--red-soft);stroke:var(--red);stroke-width:2.5}
.lab-node.comp-1>circle{fill:#ffefd2}
.lab-node.comp-2>circle{fill:#e4e1e1}
.lab-node.comp-3>circle{fill:#fde0e3}
.lab-swatch.is-start-sw{border-color:var(--red);border-width:3.5px}
.lab-swatch.is-walk{border-radius:2px;height:5px;border:0;background:var(--red)}
.lab-swatch.is-exam{border-radius:0;height:0;border:0;border-top:3px dashed var(--ink);background:none}
.lab-swatch.is-gone{border-radius:0;height:0;border:0;border-top:3px dashed #c9c5c6;background:none}
.lab-swatch.is-cross{border-radius:2px;height:5px;border:0;background:#c47a00}
.lab-swatch.is-comp-sw{background:#ffefd2}
.lab-swatch.is-ring-sw{box-shadow:0 0 0 2px #fff,0 0 0 4.5px var(--red)}
.lab-swatch.is-badge-sw{display:inline-grid;place-items:center;width:18px;height:18px;border-width:1.2px;font-size:10.5px;font-weight:800;color:var(--ink);line-height:1}
.lab-adj-node small{font-size:11px;font-weight:700;color:var(--muted);margin-left:3px}
.lab-ds-wrap{display:grid;gap:6px;padding-top:8px;border-top:1px solid var(--line-soft);min-width:0}
.lab-ds-title{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--red-dark)}
.lab-levels [data-nivel]{cursor:pointer}
.lab-levels [data-nivel]:hover text,.lab-levels [data-nivel]:focus-visible text{fill:var(--red-dark);text-decoration:underline}
.lab-levels [data-nivel]:focus{outline:none}
.lab-facts dd .lab-levels-pick{justify-content:flex-end}
.lab-run{display:contents}
[data-aba-atual=algoritmos] .lab-board-top{justify-content:flex-start}
[data-aba-atual=algoritmos] .lab-board-top .lab-field-inline{margin-left:auto}
[data-aba-atual=algoritmos] .lab-board{height:clamp(240px,38vh,400px)}
.lab-ds-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 12px}
.lab-ds-order{font-size:14px;line-height:1.45;color:var(--muted);min-width:0;overflow-wrap:anywhere}
.lab-ds-order b{color:var(--ink);font-weight:800}
.lab-panel-actions{display:flex;flex-wrap:wrap;gap:6px 8px}
.lab-check-list{list-style:none;margin:0;padding:0;display:grid;gap:5px;font-size:14px;line-height:1.45}
.lab-check-list li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:4px;align-items:baseline}
.lab-check-list b{font-weight:800}
.lab-check-list .is-yes::before{content:"✓";color:#185c2c;font-weight:800}
.lab-check-list .is-no::before{content:"✗";color:var(--red-dark);font-weight:800}
.lab-check-list .is-off{color:var(--muted)}
.lab-check-list .is-off::before{content:"–";color:var(--muted)}
.lab-check-list span{color:var(--muted)}
.lab-walk-seq{font-size:16px;font-weight:800;line-height:1.5;overflow-wrap:anywhere}
.lab-big{font-size:15px;font-weight:800}
.unit-labs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:10px;margin-top:14px}
.unit-lab{display:grid;gap:3px;padding:14px 16px;border-radius:var(--radius);background:var(--night);color:#fff;text-decoration:none;min-width:0}
.unit-lab:hover{background:var(--red-dark)}
.unit-lab:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.ul-kicker{font-size:11.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#ff8f99}
.unit-lab:hover .ul-kicker{color:#fff}
.unit-lab strong{font-size:18px;font-weight:800;letter-spacing:-.01em}
.unit-lab span:last-child{font-size:14px;line-height:1.5;color:var(--on-night-muted)}
.unit-lab:hover span:last-child{color:#fff}
/* Rodada 5: ponteiros nas animações, menu que some sozinho, menor ancestral comum, campo da chave e etapas */
.lab-pop{transition:opacity .3s ease}
.lab-pop.is-dormindo{opacity:0;pointer-events:none}
.lab-ptr rect{fill:var(--red);stroke:#fff;stroke-width:1.5}
.lab-tag rect{fill:var(--ink);stroke:#fff;stroke-width:1.5}
.lab-ptr text,.lab-tag text{fill:#fff;font:800 11.5px ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;text-anchor:middle;pointer-events:none}
.lab-node.is-fantasma>circle{fill:#f3f2f2;stroke:#a8a3a4;stroke-dasharray:4 3}
.lab-node.is-fantasma>text{fill:#8f898a}
.lab-edge.is-velho{stroke:#cfcccc;stroke-width:2;stroke-dasharray:5 5}
.lab-node .lab-uv-ring{fill:none!important;stroke:var(--ink)!important;stroke-width:2.5!important;stroke-dasharray:none!important}
.lab-node.is-candidato>circle{animation:lab-convite 1.6s ease-in-out infinite}
@keyframes lab-convite{0%,100%{stroke:var(--ink);stroke-width:2}50%{stroke:var(--red);stroke-width:4.5}}
.lab-board-caption.is-aviso{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:6px 8px 6px 12px;border-radius:10px;background:var(--red-soft);color:var(--red-dark);font-weight:700}
.lab-board-caption.is-aviso strong{font-weight:800}
.vz-btn.is-chama{animation:lab-chama 1.5s ease-out infinite}
.lab-stepbar .vz-btn.is-chama{animation-iteration-count:6}
@keyframes lab-chama{0%{box-shadow:0 0 0 0 rgba(219,30,47,.55)}70%{box-shadow:0 0 0 10px rgba(219,30,47,0)}100%{box-shadow:0 0 0 0 rgba(219,30,47,0)}}
.lab-keybar label{color:var(--ink)}
.lab-keybar .lab-number{width:96px;background:#fff;box-shadow:inset 0 0 0 2px #e9a3aa}
.lab-keybar .lab-number::placeholder{color:#a8a3a4;font-weight:650}
.lab-keybar .lab-number.is-chama{animation:lab-chama-campo 1.6s ease-in-out infinite}
@keyframes lab-chama-campo{0%,100%{background:#fff;box-shadow:inset 0 0 0 2px #e9a3aa}50%{background:var(--red-soft);box-shadow:inset 0 0 0 3px var(--red)}}
.lab-swatch.is-ptr-sw{position:relative;width:13px;height:4px;margin-right:6px;border:0;border-radius:2px;background:var(--red)}
.lab-swatch.is-ptr-sw::after{content:"";position:absolute;right:-6px;top:-4px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:7px solid var(--red)}
.lab-swatch.is-tag-sw{width:22px;height:14px;border-radius:7px;background:var(--ink);border-color:var(--ink)}
.lab-swatch.is-fantasma-sw{background:#f3f2f2;border:2px dashed #a8a3a4}
.lab-swatch.is-uv-sw{box-shadow:0 0 0 2px #fff,0 0 0 4.5px var(--ink)}
.lab-swatch.is-cand-sw{border-color:var(--red);border-width:3px}
.lab-swatch.is-danger-sw{background:var(--red-soft);border-color:var(--red)}
.def-anim-acoes{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 10px 10px;min-width:0}
.def-anim .def-anim-acoes .vz-btn{margin:0}
.def-anim-nota{flex:1 1 180px;min-width:0;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.def-anim-nota b{color:var(--red-dark);font-weight:800}
.def-code{margin:0;overflow-x:auto;background:var(--night);color:#f1eeee;border-radius:8px;padding:8px 12px;font:500 12px/1.6 ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}
.def-code code{display:block;background:none;border:0;border-radius:0;padding:0;color:inherit;font:inherit;white-space:pre}
.lab-guide-foot{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px}
.lab-guide-defs{font-size:13.5px;font-weight:750}
@media(prefers-reduced-motion:reduce){.vz-btn.is-chama,.lab-keybar .lab-number.is-chama,.lab-node.is-candidato>circle{animation:none}}
/* Rodada 6: grafos especiais (partes do bipartido, o K₅ e o K₃,₃ escondidos) e os seletores de tamanho */
.lab-node.part-1>circle{fill:#fde0e3;stroke:var(--red)}
.lab-node.part-2>circle{fill:#4d4748;stroke:var(--ink)}
.lab-node.part-2>text{fill:#fff}
.lab-node.is-kura>circle{fill:var(--red);stroke:var(--red-dark)}
.lab-node.is-kura>text{fill:#fff}
.lab-node.is-subdiv>circle{fill:#fff;stroke:var(--red);stroke-width:2.5;stroke-dasharray:4 3}
.lab-swatch.is-part1-sw{background:#fde0e3;border-color:var(--red)}
.lab-swatch.is-part2-sw{background:#4d4748;border-color:var(--ink)}
.lab-swatch.is-kura-sw{background:var(--red);border-color:var(--red-dark)}
.lab-swatch.is-subdiv-sw{border:2px dashed var(--red);background:#fff}
.lab-steppers{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 16px}
.lab-stepper{display:inline-flex;align-items:center;gap:5px;font-size:13.5px;font-weight:800;color:var(--ink-2)}
.lab-stepper-nome{margin-right:2px}
.lab-stepper button{font:inherit;font-size:16px;line-height:1;width:30px;height:30px;border-radius:999px;border:1.5px solid var(--line);background:#fff;color:var(--ink);cursor:pointer}
.lab-stepper button:hover:not(:disabled){border-color:var(--red);color:var(--red-dark)}
.lab-stepper button:disabled{opacity:.4;cursor:default}
.lab-stepper button:focus-visible{outline:3px solid var(--red);outline-offset:1px}
.lab-stepper b{min-width:1.4em;text-align:center;font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums}
.lab-hint+.lab-hint{margin-top:8px}
/* Rodada 7: as casas dos ponteiros do pai na inserção e a instrução de Tipos em destaque */
.lab-node>rect.lab-reg{fill:#fff;stroke:var(--ink);stroke-width:2}
.lab-node.st-cur>rect.lab-reg{fill:var(--red);stroke:var(--red-dark);stroke-width:3}
.lab-node.st-mark>rect.lab-reg{fill:#d9d6d6;stroke:#7d7778;stroke-width:2.5}
.lab-slot rect{fill:#fff;stroke:var(--ink);stroke-width:1.5}
.lab-node .lab-slot circle{fill:var(--ink);stroke:none}
.lab-slot line{stroke:var(--ink);stroke-width:1.6;stroke-linecap:round}
.lab-slot.is-vaga rect{stroke:var(--red);stroke-width:2;stroke-dasharray:3 2}
.lab-slot.is-novo rect{fill:var(--red-soft);stroke:var(--red-dark);stroke-width:2}
.lab-node .lab-slot.is-novo circle{fill:var(--red-dark)}
.lab-board-caption.is-instrucao{display:flex;flex-direction:column;gap:3px;padding:8px 12px;border-radius:10px;background:var(--red-soft);border-left:4px solid var(--red);color:var(--ink);font-size:14px;line-height:1.45;font-weight:600}
.lab-board-caption.is-instrucao strong{color:var(--red-dark);font-weight:800}
/* Rodada 8: o teorema de Kuratowski, à vista logo acima do desenho, no capítulo 5 do laboratório de grafos */
.lab-board-caption.is-teorema{flex:1 1 100%;padding:8px 12px;border-radius:10px;background:var(--red-soft);border-left:4px solid var(--red);color:var(--ink);font-size:13.5px;line-height:1.5;font-weight:600}
.lab-board-caption.is-teorema strong{color:var(--red-dark);font-weight:800}
@media(min-width:701px){.lab-board-card.com-teorema .lab-board{height:clamp(260px,calc(100vh - 372px),470px)}}

@media(min-width:1061px){
 .lab-side{position:sticky;top:var(--lab-topo,84px);max-height:calc(100vh - var(--lab-topo,84px) - 12px);overflow-y:auto;scrollbar-width:thin;padding:2px 4px 2px 2px;margin:-2px -4px -2px -2px}
}
@media(max-width:1060px){
 .lab-grid{grid-template-columns:minmax(0,1fr)}
 .lab-chapters,.lab-chapters.is-6{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
 .lab-chapters,.lab-chapters.is-6{grid-template-columns:minmax(0,1fr)}
 .lab-board{height:clamp(300px,62vh,440px)}
 [data-aba-atual=algoritmos] .lab-board{height:clamp(240px,40vh,360px)}
 [data-aba-atual=algoritmos] [data-palco]>.lab-board-wrap{order:1}
 [data-aba-atual=algoritmos] [data-palco]>.lab-status{order:2}
 [data-aba-atual=algoritmos] [data-palco]>.lab-ds-wrap{order:3}
 [data-aba-atual=algoritmos] [data-palco]>.lab-board-top{order:4}
 [data-aba-atual=algoritmos] [data-palco]>.lab-mode-hint{order:6}
 [data-aba-atual=algoritmos] [data-palco]>.lab-legend{order:7}
 .lab-pop button{height:36px;min-width:36px}
 .lab-stepbar{padding:7px 8px 7px 11px;gap:6px 10px}
 .lab-stepbar-text{flex-basis:170px;font-size:13.5px}
 .lab-stepbar-goal{display:none}
 .lab-stepbar-goal-m{display:block}
 [data-aba-atual=algoritmos] .lab-run>.vz-btn{order:-1}
 [data-aba-atual=percursos] .lab-main>.lab-board-card{order:1}
 [data-aba-atual=percursos] .lab-main>.lab-toolbar{order:2}
 [data-aba-atual=percursos] .lab-main>.lab-box{order:3}
 .lab-keybar{width:100%;flex-wrap:wrap}
 .lab-keybar label{flex:0 0 auto}
 .lab-keybar .lab-number{flex:1 1 55%;width:auto;min-width:0}
 .lab-keybar button{flex:1 1 30%;padding:8px 11px;border-top:1.5px solid var(--line)}
 .lab-keybar button.is-main{border-left:0}
 .lab-seg button{padding:8px 11px;font-size:13.5px}
}

/* Responsivo */
@media(max-width:1120px){
 .md-nav a{padding:8px 7px;font-size:14px}
 .md-nav a[aria-current=true]::after{left:7px;right:7px}
 .md-hero-grid{grid-template-columns:minmax(0,1fr) 340px;gap:40px}
}
@media(max-width:980px){
 .md-header-row{flex-wrap:wrap;gap:0 16px;padding-top:10px}
 .md-cta{margin-left:auto}
 .md-nav{order:3;width:100%;margin:6px 0 0;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}
 .md-nav::-webkit-scrollbar{display:none}
 .md-nav a:first-child{padding-left:0}
 .md-nav a:first-child[aria-current=true]::after{left:0}
 html{scroll-padding-top:132px}
 .md-hero::before{background:linear-gradient(180deg,#231f20d9 0%,#231f2094 50%,#231f20d9 100%)}
 .md-hero-grid{grid-template-columns:minmax(0,1fr)}
 .md-hero-side{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));max-width:820px}
 .md-section-head,.md-ementa,.grade,.project{grid-template-columns:minmax(0,1fr)}
 .unit-index{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}
 .unit-index a{flex-direction:row;align-items:center;gap:12px}
 .tt-syntax-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .bib-columns{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:700px){
 body{font-size:16px}
 .wrap{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
 .md-id{gap:12px}
 .md-cin img{height:30px}
 .md-id-sep{height:28px}
 .md-brand-name{font-size:15.5px}
 .md-hero{padding-top:44px}
 .md-hero h1{font-size:clamp(34px,10vw,56px)}
 .md-lead{font-size:16.5px}
 .md-facts{gap:10px 24px}
 .md-hero-caption{margin-top:44px}
 .md-section{padding:60px 0}
 .exams-head h3{font-size:24px}
 .project-main{padding:20px}
 .unit{grid-template-columns:minmax(0,1fr);padding:20px}
 .unit-figure{max-width:240px}
 .unit-head h3{font-size:21px}
 .unit-modules li{grid-template-columns:38px minmax(0,1fr)}
 .um-links{grid-column:2;justify-content:flex-start}
 .tt{padding:18px 16px}
 .tt-fields{grid-template-columns:minmax(0,1fr)}
 .tt-ex-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .tt-syntax-grid{grid-template-columns:minmax(0,1fr)}
 .ta-extra{grid-template-columns:minmax(0,1fr)}
 .grade-part{grid-template-columns:64px minmax(0,1fr)}
 .md-footer-links{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:900px){
 .list-grid,.exam-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
 .list-grid,.exam-grid{grid-template-columns:minmax(0,1fr)}
 .exam-card.is-ee{grid-column:auto;display:flex}
}
@media(max-width:520px){
 .md-brand-sub,.md-cta{display:none}
 .md-nav .md-nav-classroom{display:inline-block}
 .md-actions .md-button{flex:1 1 100%}
 .cal-months{grid-template-columns:minmax(0,1fr)}
 .project-dates li{grid-template-columns:minmax(0,1fr);gap:2px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{
 .md-header,.md-hero-canvas,.md-hero-caption,.md-actions,.md-next{display:none!important}
 body{background:#fff}
 .md-hero{background:#fff;color:#000;padding:0 0 20px}
 .md-hero::before{display:none}
 .md-lead,.md-facts dt{color:#333}
 .md-facts dd,.md-kicker{color:#000}
 .md-professor{box-shadow:none;border:1px solid #ccc}
 .unit,.cal-month,.bib-item,.list-card,.exam-card{break-inside:avoid}
 .tt-form,.tt-actions,.tt-credit{display:none}
 .gab td{-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .md-footer{background:#fff;color:#333;border-top:2px solid #000}.md-footer a{color:#000}
}
