.course-viewer{display:flex;flex-direction:column;gap:var(--spacing-4);padding-top:var(--spacing-4);padding-bottom:var(--spacing-6);min-height:calc(100vh - var(--topbar-height) - var(--bottomnav-height))}.course-viewer__mobile-nav{display:flex;flex-direction:column;gap:var(--spacing-3)}.course-viewer__sidebar{display:none}.course-viewer__content{flex:1;min-width:0}.course-viewer__select{width:100%;padding:var(--spacing-2) var(--spacing-3);background-color:var(--color-bg-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--spacing-3) center;padding-right:var(--spacing-8)}.course-viewer__select:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media(min-width:768px){.course-viewer{flex-direction:row;gap:var(--spacing-6);padding-top:var(--spacing-6)}.course-viewer__mobile-nav{display:none}.course-viewer__sidebar{display:flex;flex-direction:column;gap:var(--spacing-3);width:260px;flex-shrink:0}}.prose-course{line-height:1.7;color:var(--color-text-primary);font-size:var(--font-size-base);word-wrap:break-word;overflow-wrap:break-word}.prose-course>:first-child{margin-top:0}.prose-course h1{font-size:var(--font-size-3xl);font-weight:700;margin-top:var(--spacing-8);margin-bottom:var(--spacing-4);color:var(--color-text-primary)}.prose-course h2{font-size:var(--font-size-2xl);font-weight:700;margin-top:var(--spacing-8);margin-bottom:var(--spacing-4);color:var(--color-text-primary);padding-bottom:var(--spacing-2);border-bottom:2px solid var(--color-accent)}.prose-course h3{font-size:var(--font-size-xl);font-weight:600;margin-top:var(--spacing-6);margin-bottom:var(--spacing-3);color:var(--color-text-primary)}.prose-course h4{font-size:var(--font-size-lg);font-weight:600;margin-top:var(--spacing-5);margin-bottom:var(--spacing-2);color:var(--color-text-secondary)}.prose-course h5,.prose-course h6{font-size:var(--font-size-base);font-weight:600;margin-top:var(--spacing-4);margin-bottom:var(--spacing-2);color:var(--color-text-secondary)}.prose-course p{margin-bottom:var(--spacing-4)}.prose-course ul,.prose-course ol{margin-bottom:var(--spacing-4);padding-left:var(--spacing-6)}.prose-course li{margin-bottom:var(--spacing-1)}.prose-course li>ul,.prose-course li>ol{margin-top:var(--spacing-1);margin-bottom:0}.prose-course a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.prose-course a:hover{color:var(--color-accent-light)}.prose-course strong{font-weight:600;color:var(--color-text-primary)}.prose-course blockquote{border-left:3px solid var(--color-accent);padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-4) 0;background:var(--color-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--color-text-secondary)}.prose-course blockquote p:last-child{margin-bottom:0}.prose-course hr{border:none;border-top:1px solid var(--color-border);margin:var(--spacing-8) 0}.prose-course img{max-width:100%;height:auto;border-radius:var(--radius-md);margin:var(--spacing-4) 0}.prose-course code{font-family:var(--font-mono);font-size:.875em;background:var(--color-bg-surface);padding:.15em .4em;border-radius:var(--radius-sm);border:1px solid var(--color-border)}.prose-course pre{margin:var(--spacing-4) 0;padding:var(--spacing-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto;-webkit-overflow-scrolling:touch}.prose-course pre code{background:none;padding:0;border:none;font-size:var(--font-size-sm);line-height:1.6}.prose-course table{width:100%;border-collapse:collapse;margin:var(--spacing-4) 0;font-size:var(--font-size-sm)}.prose-course th,.prose-course td{padding:var(--spacing-2) var(--spacing-3);border:1px solid var(--color-border);text-align:left}.prose-course th{background:var(--color-bg-surface);font-weight:600;color:var(--color-text-primary)}.prose-course tr:nth-child(2n) td{background:var(--color-bg-subtle)}.prose-course .section{margin-bottom:var(--spacing-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.prose-course .section-header{display:flex;align-items:center;padding:var(--spacing-3) var(--spacing-4);background:var(--color-bg-surface);cursor:pointer;font-weight:600;font-size:var(--font-size-lg);color:var(--color-text-primary);-webkit-user-select:none;user-select:none;transition:background-color .15s}.prose-course .section-header:hover{background:var(--color-bg-active)}.prose-course .section-header:before{content:"";display:inline-block;width:.45em;height:.45em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s;margin-right:var(--spacing-3);flex-shrink:0}.prose-course .section.open .section-header:before{transform:rotate(45deg)}.prose-course .section-body{display:none}.prose-course .section.open .section-body{display:block}.prose-course .section-content{padding:var(--spacing-4)}.prose-course .key-point{padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-4) 0;border-left:4px solid var(--color-accent);background:var(--color-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0}.prose-course .key-point p:last-child{margin-bottom:0}.prose-course .warn-box{padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-4) 0;border-left:4px solid var(--color-warning);background:var(--color-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0}.prose-course .warn-box p:last-child{margin-bottom:0}.prose-course .danger-box{padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-4) 0;border-left:4px solid var(--color-error);background:var(--color-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0}.prose-course .danger-box p:last-child{margin-bottom:0}.prose-course .context-box{padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-4) 0;border-left:4px solid var(--color-accent-light);background:var(--color-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0}.prose-course .context-box p:last-child{margin-bottom:0}.prose-course .diagram{margin:var(--spacing-4) 0;padding:var(--spacing-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto;font-family:var(--font-mono);font-size:var(--font-size-sm);white-space:pre;line-height:1.4}.prose-course .diagram-caption{text-align:center;font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--spacing-2);font-style:italic}.prose-course .svg-diagram{margin:var(--spacing-4) 0;text-align:center;overflow-x:auto}.prose-course .svg-diagram svg{max-width:100%;height:auto;display:inline-block}.prose-course .svg-caption{text-align:center;font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--spacing-2);font-style:italic}.prose-course .exercise{margin:var(--spacing-6) 0;padding:var(--spacing-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-surface)}.prose-course .exercise h4{margin-top:0;margin-bottom:var(--spacing-3)}.prose-course .difficulty{font-size:var(--font-size-xs);font-weight:600;padding:.15em .5em;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.05em}.prose-course .difficulty.easy{color:var(--color-success);background:color-mix(in srgb,var(--color-success) 15%,transparent)}.prose-course .difficulty.medium{color:var(--color-warning);background:color-mix(in srgb,var(--color-warning) 15%,transparent)}.prose-course .difficulty.hard{color:var(--color-error);background:color-mix(in srgb,var(--color-error) 15%,transparent)}.prose-course .solution{margin-top:var(--spacing-3)}.prose-course .solution-btn{display:inline-flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-accent);cursor:pointer;font-size:var(--font-size-sm);transition:background-color .15s,border-color .15s}.prose-course .solution-btn:hover{background:var(--color-bg-active);border-color:var(--color-accent)}.prose-course .solution-content{display:none;margin-top:var(--spacing-3);padding:var(--spacing-3) var(--spacing-4);border-left:3px solid var(--color-accent-light);background:var(--color-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0}.prose-course .solution-content.show{display:block}.prose-course .quiz{margin:var(--spacing-6) 0;padding:var(--spacing-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-surface)}.prose-course .quiz h4{margin-top:0;margin-bottom:var(--spacing-3)}.prose-course .quiz-option{padding:var(--spacing-2) var(--spacing-3);margin-bottom:var(--spacing-2);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color .15s,background-color .15s;-webkit-user-select:none;user-select:none}.prose-course .quiz-option:hover{border-color:var(--color-accent);background:var(--color-bg-active)}.prose-course .quiz-option.correct{border-color:var(--color-success);background:color-mix(in srgb,var(--color-success) 12%,transparent)}.prose-course .quiz-option.wrong{border-color:var(--color-error);background:color-mix(in srgb,var(--color-error) 12%,transparent)}.prose-course .quiz-feedback{display:none;margin-top:var(--spacing-3);padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);background:var(--color-bg-subtle)}.prose-course .quiz-feedback.show{display:block}.prose-course .analogy{display:flex;gap:var(--spacing-4);margin:var(--spacing-4) 0;flex-wrap:wrap}.prose-course .analogy-side{flex:1;min-width:200px;padding:var(--spacing-3) var(--spacing-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.prose-course .signal-viz{display:flex;gap:var(--spacing-3);margin:var(--spacing-4) 0;flex-wrap:wrap}.prose-course .signal-box{flex:1;min-width:120px;padding:var(--spacing-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;font-family:var(--font-mono);font-size:var(--font-size-sm)}.prose-course .checklist{list-style:none;padding-left:0;margin:var(--spacing-4) 0}.prose-course .checklist li{position:relative;padding-left:var(--spacing-6);margin-bottom:var(--spacing-2)}.prose-course .checklist li:before{content:"";position:absolute;left:0;top:.35em;width:1em;height:1em;border:2px solid var(--color-border);border-radius:var(--radius-sm)}.prose-course .checklist li.checked:before{background:var(--color-accent);border-color:var(--color-accent)}.prose-course .checklist li.checked:after{content:"";position:absolute;left:.25em;top:.45em;width:.4em;height:.65em;border-right:2px solid var(--color-bg-page);border-bottom:2px solid var(--color-bg-page);transform:rotate(45deg)}.prose-course .flow-line{stroke-dasharray:8 4;animation:flowDots .8s linear infinite}.prose-course .pulse-el{animation:pulse 2s ease-in-out infinite}.prose-course .svg-hover-group{transition:filter .2s}.prose-course .svg-hover-group:hover{filter:brightness(1.3)}@keyframes flowDots{0%{stroke-dashoffset:20}to{stroke-dashoffset:0}}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@media(prefers-reduced-motion:reduce){.prose-course .flow-line,.prose-course .pulse-el{animation:none}}:root{--color-primary: #16213e;--color-primary-light: #1a2a50;--color-accent: #0a9396;--color-accent-light: #94d2bd;--color-success: #2a9d8f;--color-warning: #e9c46a;--color-error: #e76f51;--color-text-primary: #1a1a2e;--color-text-secondary: #495057;--color-text-muted: #868e96;--color-bg-page: #ffffff;--color-bg-subtle: #f8f9fa;--color-bg-surface: #ffffff;--color-bg-active: #f1f3f5;--color-border: #dee2e6;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--line-height-base: 1.5;--spacing-unit: .25rem;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-8: 2rem;--spacing-10: 2.5rem;--spacing-12: 3rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--topbar-height: 56px;--bottomnav-height: 60px;--sidebar-width: 220px}[data-theme=dark]{--color-primary: #1e293b;--color-primary-light: #334155;--color-accent: #0a9396;--color-accent-light: #94d2bd;--color-success: #2a9d8f;--color-warning: #e9c46a;--color-error: #e76f51;--color-text-primary: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-bg-page: #0f172a;--color-bg-subtle: #1e293b;--color-bg-surface: #1e293b;--color-bg-active: #334155;--color-border: #334155}*,*:before,*:after{box-sizing:border-box}*{margin:0}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text-primary);background-color:var(--color-bg-page);-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}button svg,a svg{display:inline-block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}code{font-family:var(--font-mono);font-size:.875em;background:var(--color-bg-subtle);padding:.1em .3em;border-radius:var(--radius-sm)}@media(min-width:1024px){[data-layout=app] .bottom-nav{display:none}[data-layout=app] .sidebar{display:flex;flex-direction:column}[data-layout=app] .main-content{padding-left:calc(var(--sidebar-width) + var(--spacing-4));padding-bottom:var(--spacing-4)}.logout-label{display:inline}}body{transition:background-color .2s ease,color .2s ease}[data-theme=dark] ::-webkit-scrollbar{width:8px}[data-theme=dark] ::-webkit-scrollbar-track{background:var(--color-bg-page)}[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}@keyframes chatSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes chatBlink{50%{opacity:0}}@keyframes chatPulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media(min-width:1024px){.chat-panel{width:400px!important}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}
