:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1e222b;--text:#e8eaf0;--muted:#9aa3b2;--accent:#6ea8fe;--good:#3fb27f;--warn:#d9a13b;--risk:#e0565b;--border:#2a2f3a;--radius:10px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.55}main{max-width:960px;margin:0 auto;padding:24px 20px 80px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.site-header{display:flex;align-items:center;gap:30px;padding:16px 40px;border-bottom:1px solid var(--border);background:var(--panel)}.site-header .logo{display:inline-flex;align-items:center;gap:11px;font-weight:700;color:var(--text);font-size:1.05rem;letter-spacing:-.01em}.site-header .logo:hover{text-decoration:none}.site-header nav{display:flex;gap:22px;font-size:.9rem}.site-footer{border-top:1px solid var(--border);background:var(--panel);color:var(--muted);text-align:center;padding:20px 40px;font-size:.85rem}h1{font-size:1.5rem;margin:8px 0 16px}h2{font-size:1.15rem;margin:24px 0 8px}.vl-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin:12px 0}.vl-card-title{margin:0 0 8px;font-size:1rem}.vl-badge{display:inline-block;padding:1px 9px;border-radius:999px;font-size:.75rem;border:1px solid var(--border);background:var(--panel-2);color:var(--muted);margin-right:6px}.vl-badge-good{color:var(--good);border-color:var(--good)}.vl-badge-warn{color:var(--warn);border-color:var(--warn)}.vl-badge-risk{color:var(--risk);border-color:var(--risk)}.vl-mastery{display:inline-flex;align-items:center;gap:8px}.vl-mastery-track{display:inline-block;width:120px;height:8px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);overflow:hidden}.vl-mastery-fill{display:block;height:100%;background:var(--accent)}.vl-mastery-label{font-size:.8rem;color:var(--muted)}.vl-evidence{font-size:.82rem;color:var(--muted)}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:var(--panel-2);border-radius:6px}code{padding:1px 5px}pre{padding:12px;overflow-x:auto;border:1px solid var(--border)}table{width:100%;border-collapse:collapse;font-size:.9rem}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}.button,button{background:var(--accent);border:none;color:#0b0d12;font-weight:600;border-radius:8px;padding:8px 14px;cursor:pointer;font-size:.9rem}button.secondary{background:var(--panel-2);color:var(--text);border:1px solid var(--border)}button.danger{background:var(--risk);color:#fff}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 10px;font-size:.9rem}.muted{color:var(--muted)}.row,.spread{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.quiz-option{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:8px;margin:8px 0;cursor:pointer;background:var(--panel-2)}.quiz-option.selected{border-color:var(--accent)}.quiz-option.correct{border-color:var(--good)}.quiz-option.incorrect{border-color:var(--risk)}.steps li{margin:6px 0}.vl-navlink{color:var(--muted);transition:color .15s ease}.vl-navlink:hover{color:var(--text);text-decoration:none}.vl-primary{transition:background .15s ease}.vl-primary:hover{background:#8fbcff}.vl-ghost{transition:border-color .15s ease}.vl-ghost:hover{border-color:var(--muted)}@keyframes vlpulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}@keyframes vlgrow{0%{width:0}}@keyframes vlfloat{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.vl-node{transform-box:fill-box;transform-origin:center;transition:filter .2s ease;cursor:pointer}.vl-node:hover{filter:brightness(1.3)}.vl-node.vl-n1{animation:vlfloat 4s ease-in-out infinite}.vl-node.vl-n2{animation:vlfloat 5s ease-in-out .4s infinite}.vl-node.vl-n3{animation:vlfloat 4.6s ease-in-out .8s infinite}.vl-node.vl-n4{animation:vlfloat 5.2s ease-in-out .2s infinite}.vl-node.vl-n5{animation:vlfloat 4.3s ease-in-out .6s infinite}.vl-node.vl-n6{animation:vlfloat 5.5s ease-in-out 1s infinite}.vl-reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}.vl-reveal.vl-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.vl-reveal{opacity:1!important;transform:none!important;transition:none}.vl-node{animation:none!important}}