:root{--ink:#111827;--muted:#6b7280;--rule:#e5e7eb;--surface:#fff;--panel:#f5f6f7;--correct:#02934a;--wrong:#b91c1c;--hint:#b45309;--code-bg:#0f172a;--code-fg:#e2e8f0;--font-heading:"Lato", system-ui, sans-serif;--font-body:"Open Sans", system-ui, sans-serif;--font-code:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--radius:6px;--measure:72ch}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}[hidden]{display:none!important}body{background:var(--surface);color:var(--ink);font-family:var(--font-body);font-variant-ligatures:none;margin:0;font-size:1rem;line-height:1.6}h1,h2,h3,h4{font-family:var(--font-heading);color:var(--ink);margin:0 0 var(--space-3);font-weight:700;line-height:1.25}h1{font-size:1.9rem}h2{font-size:1.3rem}h3{font-size:1.05rem}p{margin:0 0 var(--space-4)}a{color:var(--ink);text-underline-offset:2px;text-decoration:underline}a:hover{text-decoration-thickness:2px}code,pre,kbd,samp{font-family:var(--font-code);font-size:.9em}pre{padding:var(--space-4);background:var(--code-bg);color:var(--code-fg);border-radius:var(--radius);margin:0;overflow:auto}:not(pre)>code{background:var(--panel);border-radius:3px;padding:0 .25em}.muted{color:var(--muted)}button,.button{font:inherit;padding:var(--space-2) var(--space-4);border-radius:var(--radius);border:1px solid var(--ink);background:var(--surface);color:var(--ink);cursor:pointer;font-weight:600}.button{line-height:1.6;text-decoration:none;display:inline-block}button.primary,.button.primary{background:var(--ink);color:var(--surface)}input,textarea{font:inherit;color:var(--ink);padding:var(--space-2) var(--space-3);border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface)}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.app{flex-direction:column;min-height:100vh;display:flex}.app-main{flex:1}.page{max-width:900px;padding:var(--space-6) var(--space-4);margin:0 auto}.site-footer{border-top:1px solid var(--rule);color:var(--muted);padding:var(--space-4);text-align:center;font-size:.82rem}.site-footer p{margin:0}.site-footer a{color:var(--muted)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button.link,.button.link{padding-inline:var(--space-2);background:0 0;border-color:#0000;font-weight:400;text-decoration:underline}.page--narrow{max-width:calc(var(--measure) + 2 * var(--space-4))}.code-inline{font-family:var(--font-code);background:var(--panel);white-space:nowrap;border-radius:3px;padding:0 .3em;font-weight:500}.start__intro{font-size:1.05rem}.consent{border:1px solid var(--rule);border-radius:var(--radius);padding:var(--space-4) var(--space-5);margin:var(--space-5) 0;background:var(--panel)}.consent ul{margin:0 0 var(--space-4);padding-left:1.2em}.consent li{margin-bottom:var(--space-2)}.consent__check{gap:var(--space-3);cursor:pointer;align-items:flex-start;font-weight:600;display:flex}.consent__check input{flex:none;width:1.15rem;height:1.15rem;margin-top:.2rem}.start__actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.start__error{color:var(--wrong)}.resume{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--rule)}.resume>.link{padding-left:0}.resume__form{align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;display:flex}.resume__form .start__error{flex-basis:100%;margin:0}.resume__input{font-family:var(--font-code);text-transform:uppercase;width:10ch}.your-code{text-align:left}.your-code h2:focus{outline:none}.your-code__code{font-family:var(--font-code);letter-spacing:.08em;margin:var(--space-4) 0 var(--space-2);padding:var(--space-3) var(--space-5);border:1px solid var(--ink);border-radius:var(--radius);font-size:clamp(2.4rem,11vw,3.6rem);font-weight:500;display:inline-block}.your-code__note{font-size:1.1rem;font-weight:600}.test-intro{margin-bottom:var(--space-5)}.test-screen h2:focus,.test-summary h2:focus{outline:none}.test-progress{font-family:var(--font-heading);color:var(--muted);margin-bottom:var(--space-3);font-size:.9rem;font-weight:700}.test-mc{margin:0 0 var(--space-5);border:none;min-width:0;padding:0}.test-mc legend{margin-bottom:var(--space-3);padding:0}.test-mc__option{gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--rule);border-radius:var(--radius);margin-bottom:var(--space-2);cursor:pointer;align-items:flex-start;display:flex}.test-mc__option:has(input:checked){border-color:var(--ink);background:var(--panel)}.test-mc__option input{flex:none;margin-top:.35rem}.test-value__code{margin-bottom:var(--space-4);font-size:.9rem}.test-field{gap:var(--space-1);margin-bottom:var(--space-5);flex-direction:column;font-weight:600;display:flex}.test-field input{font-weight:400;font-family:var(--font-code);max-width:100%}.resume__form .test-field{margin-bottom:0}.test-code{gap:var(--space-3);margin-bottom:var(--space-5);flex-direction:column;display:flex}.test-code__actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.test-code .console{min-height:6rem}.test-nav{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.test-nav button:disabled{opacity:.45;cursor:default}.test-review{margin:0 0 var(--space-5);border-top:1px solid var(--rule);padding:0;list-style:none}.test-review li{gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--rule);grid-template-columns:auto 1fr auto;align-items:baseline;display:grid}.test-review .link{white-space:nowrap;padding-left:0}.test-review__prompt{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.test-review__state{font-size:.9rem}.test-review__state--missing{color:var(--hint);font-weight:600}.test-error{color:var(--wrong)}.test-note{margin-top:var(--space-4);font-size:.9rem}.test-summary__score{font-size:1.25rem;font-family:var(--font-heading);font-weight:700}@media (width<=600px){.test-review li{grid-template-columns:auto 1fr}.test-review__prompt{display:none}}.overview__header{margin-bottom:var(--space-5)}.overview__meta{gap:var(--space-1) var(--space-3);flex-wrap:wrap;align-items:baseline;display:flex}.overview__code{margin-left:auto;font-size:.9rem}.path{margin:0 0 var(--space-6);padding:0;list-style:none}.path__unit{gap:var(--space-4);padding-bottom:var(--space-5);grid-template-columns:2.25rem 1fr;display:grid;position:relative}.path__unit:not(:last-child):before{content:"";background:var(--rule);width:2px;position:absolute;top:2.25rem;bottom:0;left:calc(1.125rem - 1px)}.path__marker{border:2px solid var(--ink);background:var(--surface);width:2.25rem;height:2.25rem;font-family:var(--font-heading);border-radius:50%;place-items:center;font-weight:700;display:grid;position:relative}.path__unit--done .path__marker{background:var(--correct);border-color:var(--correct);color:#fff}.path__unit--locked .path__marker{border-color:var(--rule);color:var(--muted)}.path__title{margin:.35rem 0 var(--space-1);font-size:1.1rem}.path__unit--locked .path__title{color:var(--muted)}.path__lectures{color:var(--muted);margin-bottom:var(--space-1);font-size:.9rem}.path__status{margin:0;font-size:.95rem}.path__unit--locked .path__status{color:var(--muted)}.path__done{font-weight:600}.tick{color:var(--correct);font-weight:700}.post-entry{border-top:1px solid var(--rule);padding-top:var(--space-5)}.unit__back{margin-bottom:var(--space-3);font-size:.9rem}.unit__back a:before{content:"← "}.unit__action{align-items:center;gap:var(--space-4);margin:var(--space-5) 0 var(--space-6);flex-wrap:wrap;display:flex}.unit h2{margin-top:var(--space-6)}.exercise-list{border-top:1px solid var(--rule);counter-reset:ex;margin:0;padding:0;list-style:none}.exercise-list__item{justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--rule);counter-increment:ex;display:flex}.exercise-list__item a:before{content:counter(ex) ". "}.exercise-list__status{color:var(--muted);white-space:nowrap;font-size:.9rem}.exercise-list__item--done .exercise-list__status{color:var(--ink);font-weight:600}.lecture{margin-top:var(--space-5)}.lecture__title{font-size:1.1rem}.lecture__group-title{color:var(--muted);margin:var(--space-4) 0 var(--space-2);font-size:.95rem}.slide{border-bottom:1px solid var(--rule)}.slide summary{cursor:pointer;padding:var(--space-2) 0;font-weight:600}.slide__body{padding:var(--space-2) 0 var(--space-4);overflow-x:auto}.md{max-width:var(--measure)}.md>:last-child{margin-bottom:0}.md h3,.md h4,.md h5{margin-top:var(--space-4)}.md h4{font-size:1rem}.md h5{font-size:.95rem}.md ol,.md ul{margin:0 0 var(--space-4);padding-left:1.6em}.md li,.md li>p{margin-bottom:var(--space-2)}.md li>:last-child{margin-bottom:0}.md-code{margin:0 0 var(--space-4);white-space:pre;font-size:.85rem;line-height:1.5}.md-math{font-style:italic}.md-math--block{text-align:center}.md-figure{margin:0 0 var(--space-4)}.md img{border:1px solid var(--rule);border-radius:var(--radius);max-width:100%;height:auto;display:block}.md-table-wrap{margin:0 0 var(--space-4);overflow-x:auto}.md-table{border-collapse:collapse;font-size:.9rem}.md-table th,.md-table td{padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--rule)}.md-table th{border-bottom-color:var(--ink);font-weight:600}
