:root{--bg:#ffffff;--bg-1:#f7f7fb;--surface:#ffffff;--surface-1:#f3f4f6;--border:#e4e6ef;--fg:#1a1a1a;--fg-muted:#6b7280;--accent:#2563eb;--accent-2:#7c3aed;--accent-hover:#1d4ed8;--badge-bg:#e8f0fe;--font-sans:"Inter","Segoe UI",system-ui,sans-serif;--font-mono:"JetBrains Mono","Fira Code","Consolas",monospace;--radius:6px;--sidebar-w:260px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:20px;scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);line-height:1.6;min-height:100vh;display:flex}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}.layout-sidebar{position:fixed;top:0;left:0;width:var(--sidebar-w);height:100vh;background:var(--bg-1);border-right:1px solid var(--border);overflow-y:auto;z-index:10}.layout-main{margin-left:var(--sidebar-w);flex:1 1;min-width:0;padding:2rem 2.5rem}.sidebar-brand{padding:1.1rem 1.2rem .9rem;border-bottom:1px solid var(--border)}.sidebar-brand a{font-size:.85rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fg)}.sidebar-brand a:hover{color:var(--accent);text-decoration:none}.sidebar-section{padding:.6rem 0}.sidebar-section-label{font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);padding:.5rem 1.2rem .3rem}.sidebar-link{display:block;padding:.3rem 1.2rem;font-size:.825rem;color:var(--fg-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:2px solid transparent;transition:color .15s,border-color .15s}.sidebar-link:hover{color:var(--fg);border-left-color:var(--accent);text-decoration:none}.sidebar-link.active{color:var(--accent);border-left-color:var(--accent)}.sidebar-divider{border:none;border-top:1px solid var(--border);margin:.3rem 0}.page-title{font-size:1.5rem;font-weight:700;margin-bottom:.3rem;color:var(--fg)}.page-subtitle{font-size:.85rem;color:var(--fg-muted);margin-bottom:2rem}.section-heading{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:.8rem}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:2.5rem}.course-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.2rem;transition:border-color .15s}.course-card:hover{border-color:var(--accent)}.course-card-header{display:flex;align-items:center;gap:.7rem;margin-bottom:.8rem}.course-badge{background:var(--badge-bg);color:var(--accent);font-size:.7rem;font-weight:700;padding:.2rem .5rem;border-radius:4px;white-space:nowrap;border:1px solid var(--accent);flex-shrink:0}.course-title{font-size:.9rem;font-weight:600;color:var(--fg);line-height:1.3}.course-links{display:flex;gap:.4rem;flex-wrap:wrap}.pill-link{font-size:.72rem;padding:.2rem .6rem;background:var(--surface-1);border:1px solid var(--border);border-radius:20px;color:var(--fg-muted);transition:background .15s,color .15s,border-color .15s}.pill-link:hover{background:var(--accent);color:var(--bg);border-color:var(--accent);text-decoration:none}.doc-group{margin-bottom:1.5rem}.doc-group-label{font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-2);margin-bottom:.4rem}.doc-list{list-style:none;display:flex;flex-direction:column;gap:.1rem}.doc-list li a{font-size:.85rem;color:var(--fg-muted)}.doc-list li a:hover{color:var(--fg)}.tab-bar{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border);padding-bottom:.6rem}.tab-btn{font-size:.82rem;padding:.3rem .8rem;border-radius:var(--radius);color:var(--fg-muted);border:1px solid transparent;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--fg);text-decoration:none}.tab-btn.active{color:var(--accent);border-color:var(--accent)}.pdf-frame{width:100%;height:calc(100vh - 160px);border:none;border-radius:var(--radius);background:var(--surface)}.prose{max-width:860px;color:var(--fg)}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--fg);line-height:1.3;margin-top:1.8em;margin-bottom:.5em;font-weight:700}.prose h1{font-size:1.6rem}.prose h2{font-size:1.3rem;color:var(--accent)}.prose h3{font-size:1.1rem;color:var(--accent-2)}.prose h4{font-size:.95rem}.prose p{margin-bottom:.9em}.prose ol,.prose ul{margin-bottom:.9em;padding-left:1.5em}.prose li{margin-bottom:.25em}.prose strong{color:var(--fg);font-weight:700}.prose em{font-style:italic}.prose code{font-family:var(--font-mono);font-size:.85em;background:var(--surface-1);color:var(--accent-2);padding:.1em .4em;border-radius:3px}.prose code,.prose pre{border:1px solid var(--border)}.prose pre{background:var(--surface);border-radius:var(--radius);padding:1rem;overflow-x:auto;margin-bottom:1em}.prose pre code{background:none;border:none;padding:0;font-size:.82rem;color:var(--fg)}.prose blockquote{border-left:3px solid var(--accent);padding-left:1rem;margin:1em 0;color:var(--fg-muted);font-style:italic}.prose table{width:100%;border-collapse:collapse;margin-bottom:1.2em;font-size:.85rem;overflow-x:auto;display:block}.prose thead{background:var(--surface-1)}.prose th{padding:.5rem .75rem;text-align:left;color:var(--accent);font-weight:600;white-space:nowrap}.prose td,.prose th{border:1px solid var(--border)}.prose td{padding:.45rem .75rem;color:var(--fg-muted);vertical-align:top}.prose tr:nth-child(2n) td{background:var(--surface)}.prose hr{border:none;border-top:1px solid var(--border);margin:2em 0}.prose .katex{font-size:1em}.prose .katex-display{margin:1.2em 0;overflow-x:auto}.anim-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));grid-gap:1.2rem;gap:1.2rem;margin-top:.5rem}.anim-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.anim-card:hover{border-color:var(--accent)}.anim-card-title{padding:.7rem 1rem .5rem;font-size:.82rem;font-weight:600;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.anim-video-wrap{position:relative;width:100%;aspect-ratio:16/9;background:var(--surface-1);overflow:hidden}.anim-card-meta{padding:.5rem 1rem .8rem;display:flex;gap:.4rem}.back-link{display:inline-block;font-size:.8rem;color:var(--fg-muted);margin-bottom:1.2rem}.back-link:hover{color:var(--fg)}.not-found{color:var(--fg-muted);font-size:.9rem;margin-top:2rem}.anim-placeholder{opacity:.85}.anim-placeholder .anim-video-wrap{display:flex;align-items:center;justify-content:center;border:1px dashed var(--border);background:repeating-linear-gradient(45deg,var(--surface-1),var(--surface-1) 10px,var(--bg-1) 10px,var(--bg-1) 20px)}.anim-placeholder .anim-card-title{color:var(--fg-muted);font-weight:600}.anim-placeholder-label{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);border:1px solid var(--border);background:var(--surface);border-radius:20px;padding:.25rem .7rem}.sidebar-footer{margin-top:auto;padding:.9rem 1.2rem;border-top:1px solid var(--border)}.role-toggle{display:flex;border:1px solid var(--border);border-radius:999px;overflow:hidden}.role-toggle button{flex:1 1;padding:.35rem 0;font-size:.72rem;font-weight:600;background:transparent;border:none;color:var(--fg-muted);cursor:pointer}.role-toggle button.active{background:var(--accent);color:#fff}.count-badge{margin-left:.4rem;font-size:.65rem;background:var(--badge-bg);color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:.05rem .35rem;font-weight:700;vertical-align:middle}.course-title-link{color:inherit;text-decoration:none}.course-title-link:hover{color:var(--accent)}.layout-sidebar{display:flex;flex-direction:column}