.lesson{--l-bg:#070809;--l-fg:#f2f3ec;--l-muted:#a9afa9;--l-dim:#7a807b;--l-panel:#0e1012;--l-code:#0b0d0e;--l-border:#ffffff1c;--l-accent:#c8ff63;--l-accent-ink:#0a0b09;--l-add:#c8ff6314;--l-add-bar:#c8ff63;--l-warn:#ffb86b;--l-info:#7cc7ff;--k:#ff7ab2;--s:#c8ff63;--n:#ffb86b;--c:#6c7370;--t:#7cc7ff;--f:#e7d38a;background:var(--l-bg);color:var(--l-fg);min-height:100vh}@media (prefers-color-scheme:light){.lesson{--l-bg:#fbfbf8;--l-fg:#16181a;--l-muted:#4b514d;--l-dim:#6b716d;--l-panel:#fff;--l-code:#f4f5f0;--l-border:#0000001f;--l-accent:#3f7d00;--l-accent-ink:#fff;--l-add:#3f7d0017;--l-add-bar:#3f7d00;--l-warn:#a35a00;--l-info:#0b62a8;--k:#b0006b;--s:#2f6d00;--n:#a35a00;--c:#7a807b;--t:#0b62a8;--f:#7a5b00}}.lesson a{color:inherit}.lesson :focus-visible{outline:2px solid var(--l-accent);outline-offset:2px;border-radius:6px}.lesson .l-wrap{max-width:72rem;margin:0 auto;padding:0 1.25rem}.lesson .l-grid{gap:3rem;display:grid}@media (min-width:1024px){.lesson .l-grid{grid-template-columns:15rem minmax(0,1fr)}}.lesson .l-prose{min-width:0;max-width:46rem}.lesson .l-prose p,.lesson .l-prose li{color:var(--l-muted);font-size:1.02rem;line-height:1.75}.lesson .l-prose p{margin-top:1rem}.lesson .l-prose strong{color:var(--l-fg)}.lesson h1{letter-spacing:-.02em;font-size:clamp(2rem,5vw,3.1rem);font-weight:700;line-height:1.08}.lesson h2{letter-spacing:-.01em;margin-top:4.5rem;scroll-margin-top:1.5rem;font-size:1.6rem;font-weight:700}.lesson h3{margin-top:1.75rem;font-size:1.05rem;font-weight:650}.lesson .kicker{font-family:var(--font-mono,ui-monospace,monospace);letter-spacing:.14em;text-transform:uppercase;color:var(--l-accent);font-size:.72rem}.lesson code.ic{background:var(--l-code);border:1px solid var(--l-border);color:var(--l-fg);border-radius:.35rem;padding:.08rem .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em}.lesson .card{border:1px solid var(--l-border);background:var(--l-panel);border-radius:1rem}.lesson .btn{border:1px solid var(--l-border);border-radius:999px;align-items:center;gap:.5rem;padding:.6rem 1.1rem;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.lesson .btn-primary{background:var(--l-accent);color:var(--l-accent-ink);border-color:#0000}.lesson .cb{border:1px solid var(--l-border);background:var(--l-code);border-radius:.9rem;margin:1.25rem 0;overflow:hidden}.lesson .cb-bar{border-bottom:1px solid var(--l-border);color:var(--l-dim);justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .5rem .45rem .9rem;font-family:ui-monospace,monospace;font-size:.75rem;display:flex}.lesson .cb-tag{color:var(--l-accent)}.lesson .cb pre{margin:0;padding:.7rem 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;line-height:1.6;overflow-x:auto}.lesson .cb .ln{white-space:pre;min-height:1.3em;padding:0 1rem;display:block}.lesson .cb .ln.add{background:var(--l-add);box-shadow:inset 3px 0 0 var(--l-add-bar)}.lesson .cb .ln.add:before{content:"+ ";color:var(--l-add-bar)}.lesson .cb.term .ln:before{content:none}.lesson .copy{font:inherit;color:var(--l-muted);border:1px solid var(--l-border);cursor:pointer;background:0 0;border-radius:.45rem;padding:.2rem .55rem;font-size:.72rem}.lesson .copy:hover{color:var(--l-fg)}.lesson .hljs-keyword,.lesson .hljs-built_in{color:var(--k)}.lesson .hljs-string,.lesson .hljs-template-string{color:var(--s)}.lesson .hljs-number,.lesson .hljs-literal{color:var(--n)}.lesson .hljs-comment{color:var(--c);font-style:italic}.lesson .hljs-type,.lesson .hljs-title.class_{color:var(--t)}.lesson .hljs-title.function_,.lesson .hljs-attr{color:var(--f)}.lesson .co{border:1px solid var(--l-border);border-left:3px solid var(--l-info);background:var(--l-panel);border-radius:.8rem;margin:1.5rem 0;padding:1rem 1.1rem}.lesson .co.warn{border-left-color:var(--l-warn)}.lesson .co.ok{border-left-color:var(--l-accent)}.lesson .co-t{color:var(--l-fg);font-size:.9rem;font-weight:650}.lesson .co p,.lesson .co li{margin-top:.35rem;font-size:.94rem}.lesson .step-meta{gap:.5rem;margin-top:1rem;display:grid}.lesson .goal{color:var(--l-fg);border:1px dashed var(--l-border);border-radius:.7rem;padding:.7rem 1rem;font-size:.95rem}.lesson details{border:1px solid var(--l-border);background:var(--l-panel);border-radius:.8rem;margin:1rem 0}.lesson summary{cursor:pointer;padding:.75rem 1rem;font-size:.92rem;font-weight:600;list-style:none}.lesson summary::-webkit-details-marker{display:none}.lesson summary:before{content:"+";width:1.1rem;color:var(--l-accent);font-family:ui-monospace,monospace;display:inline-block}.lesson details[open]>summary:before{content:"-"}.lesson details>.db{padding:0 1rem 1rem}.lesson .check{border:1px solid var(--l-border);cursor:pointer;border-radius:.8rem;align-items:center;gap:.7rem;margin-top:1.25rem;padding:.8rem 1rem;font-size:.93rem;display:flex}.lesson .check input{width:1.1rem;height:1.1rem;accent-color:var(--l-accent)}.lesson .check.done{border-color:var(--l-accent)}.lesson .toc{font-size:.85rem;position:sticky;top:1.25rem}.lesson .toc a{color:var(--l-muted);border-radius:.45rem;align-items:center;gap:.5rem;padding:.3rem .5rem;text-decoration:none;display:flex}.lesson .toc a:hover{color:var(--l-fg)}.lesson .toc a.on{color:var(--l-fg);background:var(--l-code)}.lesson .toc .dot{border:1.5px solid var(--l-dim);border-radius:99px;flex:none;width:.55rem;height:.55rem}.lesson .toc .dot.done{background:var(--l-accent);border-color:var(--l-accent)}.lesson .bar{background:var(--l-border);border-radius:99px;height:4px;overflow:hidden}.lesson .bar>span{background:var(--l-accent);height:100%;transition:width .3s;display:block}.lesson .mtoc{z-index:10;background:var(--l-bg);border-bottom:1px solid var(--l-border);position:sticky;top:0}@media (min-width:1024px){.lesson .mtoc{display:none}}@media (max-width:1023px){.lesson .dtoc{display:none}}.lesson .demo .ln{opacity:0;transition:opacity .2s}.lesson .demo .ln.show{opacity:1}@media (prefers-reduced-motion:reduce){.lesson .demo .ln{opacity:1}}.lesson table{border-collapse:collapse;width:100%;margin-top:1rem;font-size:.9rem}.lesson th,.lesson td{border-bottom:1px solid var(--l-border);text-align:left;color:var(--l-muted);padding:.5rem .4rem}.lesson th{color:var(--l-fg)}.lesson{--hdr:3.6rem}.lesson .l-header{z-index:20;background:color-mix(in srgb,var(--l-bg)82%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--l-border);position:sticky;top:0}.lesson .toc{top:calc(var(--hdr) + 1.25rem);max-height:calc(100vh - var(--hdr) - 2.5rem);overflow-y:auto}.lesson .mtoc{top:var(--hdr)}.lesson h2,.lesson [id]{scroll-margin-top:calc(var(--hdr) + 1.5rem)}@media (max-width:1023px){.lesson h2,.lesson [id]{scroll-margin-top:calc(var(--hdr) + 5.5rem)}}
