:root{--ink:#202124;--muted:#64676d;--line:#dedede;--soft:#f7f7f5;--code:#202124;--accent:#555}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:#fff;font-family:Arial,Helvetica,sans-serif}
a{color:inherit;text-decoration:none}
nav{height:56px;padding:0 max(20px,calc((100vw - 1180px)/2));border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff}
.logo img{display:block;width:112px}
.back{color:#555;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.back:hover{text-decoration:underline}
.course-page{height:100vh;overflow:hidden}
.layout{display:grid;grid-template-columns:220px minmax(0,1fr);height:calc(100vh - 56px);overflow:hidden}
.sidebar{height:100%;overflow-y:auto;padding:18px 14px;border-right:1px solid var(--line);background:#fff}
.sidebar>strong{font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.toc{list-style:none;margin:0;padding:12px 0 0}
.toc-chapter{margin:0 0 13px}
.toc-title{display:grid;grid-template-columns:25px minmax(0,1fr);gap:4px;padding:5px 0;color:#222;font-size:11px;font-weight:600;line-height:1.4}
.toc-title span{color:#888;font:10px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.toc-sections{list-style:none;margin:2px 0 0 29px;padding:0;border-left:1px solid var(--line)}
.toc-sections a{display:block;padding:3px 0 3px 9px;color:#777;font-size:10px;line-height:1.35}
.toc-title:hover,.toc-sections a:hover{color:#111;text-decoration:underline}
.course-scroll{height:100%;min-width:0;overflow-y:auto;overscroll-behavior:contain}
.course-head{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(210px,.55fr);align-items:end;gap:24px;padding:42px max(32px,calc((100% - 820px)/2)) 30px;border-bottom:1px solid #e5e5e5}
.tag{display:inline-block;padding:5px 7px;border-radius:3px;background:#f0f1ed;color:#555;font-size:10px;text-transform:uppercase;letter-spacing:.04em}
h1{margin:18px 0 14px;font-size:clamp(34px,4vw,52px);line-height:1.02;letter-spacing:-.035em;overflow-wrap:anywhere}
.course-head p{max-width:700px;margin:0;color:#444;font-size:15px;line-height:1.55}
.facts{padding-left:20px;border-left:1px solid var(--line)}
.fact{padding:6px 0;border-bottom:1px solid var(--line);font:10px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}
.fact:last-child{border-bottom:0}
.lessons{max-width:820px;margin:0 auto;padding:44px 32px 80px}
.lesson{margin-bottom:64px;padding-bottom:56px;border-bottom:1px solid #e1e1e1;scroll-margin-top:24px}
.lesson:last-child{margin-bottom:0;border-bottom:0}
.lesson [id]{scroll-margin-top:24px}
.lesson-num{color:var(--muted);font:10px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase}
.lesson h2{margin:8px 0 12px;font-size:clamp(27px,3vw,38px);line-height:1.08;letter-spacing:-.025em;overflow-wrap:anywhere}
.goal{margin:12px 0 18px;padding-left:14px;border-left:3px solid #999;color:#444;font:15px/1.65 Georgia,"Times New Roman",serif}
.prereq{margin:0 0 26px;color:#666;font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.lesson-body{display:block}
.explain h3,.code h3,.mistakes h3{margin:24px 0 10px;color:#555;font-size:12px;line-height:1.4;letter-spacing:.04em}
.explain p{margin:0;color:#292929;font:17px/1.82 Georgia,"Times New Roman",serif}
.key{margin:22px 0;padding:2px 0 2px 18px;border-left:3px solid #888;color:#444;font:italic 16px/1.7 Georgia,"Times New Roman",serif}
.code{min-width:0;margin:28px 0 0;padding:20px;border-radius:4px;background:var(--code);color:#f3f3ec}
.code h3{margin-top:0;color:#ddd}
.code pre{max-width:100%;margin:0 0 11px;overflow-x:auto;white-space:pre;tab-size:4;font:13px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.code pre code{display:block;min-width:max-content;counter-reset:code-line}
.code-line{display:block;min-height:1.65em;counter-increment:code-line}
.code-line::before{content:counter(code-line);display:inline-block;width:3ch;margin-right:16px;color:#777;text-align:right;user-select:none}
.output{padding-top:10px;border-top:1px solid #555;color:#dfe99a;white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}
.walkthrough{margin-top:10px;padding-top:10px;border-top:1px solid #555;color:#ccc;font:12px/1.7 Arial,Helvetica,sans-serif}
.walkthrough-text{margin-top:22px;padding:18px 20px;border-left:3px solid #bbb;background:#fafafa;font:15px/1.7 Georgia,"Times New Roman",serif}
.walkthrough-text p{margin:6px 0 16px}
.mistakes{margin-top:22px;padding:14px 18px;border-left:3px solid #b36b5e;background:#faf8f6}
.mistakes ul{margin:0;padding-left:18px;font:14px/1.7 Georgia,"Times New Roman",serif}
#syllabus:empty{display:none}
@media(max-width:900px){
  .course-page{height:auto;overflow:auto}
  .layout{display:block;height:auto;overflow:visible}
  .sidebar{height:auto;max-height:240px;border-right:0;border-bottom:1px solid var(--line)}
  .course-scroll{height:auto;overflow:visible}
  .course-head{grid-template-columns:1fr;padding:24px 20px 20px}
  .facts{padding:12px 0 0;border-left:0;border-top:1px solid var(--line)}
  .lessons{padding:24px 20px 60px}
}
@media(max-width:560px){
  nav{padding-inline:14px}
  .logo img{width:104px}
  .course-head{padding:24px 16px 18px}
  .lessons{padding:22px 16px 52px}
  .code{margin-inline:-4px;padding:16px 12px}
  .code-line::before{margin-right:12px}
}
