@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-display:block;src:url(/fonts/ibm-plex-sans-cyrillic-ext.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-display:block;src:url(/fonts/ibm-plex-sans-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-display:block;src:url(/fonts/ibm-plex-sans-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/ibm-plex-mono-400-cyrillic-ext.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/ibm-plex-mono-400-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/ibm-plex-mono-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#fff;--surface:#f4f6f9;--surface-sunken:#e9ecf1;--fg:#16181d;--fg-muted:#575e6c;--line:#d5d9e0;--line-strong:#7b8290;--accent:#2a55bd;--accent-quiet:#eaeffb;--accent-on:#fff;--state-correct-ink:#10693c;--state-correct-wash:color-mix(in srgb, var(--state-correct-ink) 9%, transparent);--state-partial-ink:#8a5200;--state-partial-wash:color-mix(in srgb, var(--state-partial-ink) 10%, transparent);--state-incorrect-ink:#b3261e;--state-incorrect-wash:color-mix(in srgb, var(--state-incorrect-ink) 8%, transparent);--state-help-ink:#0b6180;--state-help-wash:color-mix(in srgb, var(--state-help-ink) 9%, transparent);--state-disputed-ink:#64409f;--state-disputed-wash:color-mix(in srgb, var(--state-disputed-ink) 9%, transparent);--state-failed-ink:#4c5361;--state-failed-wash:color-mix(in srgb, var(--state-failed-ink) 8%, transparent);--series-1:#2a55bd;--series-2:#b3261e;--series-3:#10693c;--series-4:#64409f;--series-5:#8a5200;--series-6:#0b6180}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#14161a;--surface:#1c1f26;--surface-sunken:#23272f;--fg:#e8eaef;--fg-muted:#a2a9b7;--line:#2f343e;--line-strong:#737b8b;--accent:#8fb2ff;--accent-quiet:#1b2231;--accent-on:#101420;--state-correct-ink:#63cf95;--state-correct-wash:color-mix(in srgb, var(--state-correct-ink) 14%, transparent);--state-partial-ink:#e0b25e;--state-partial-wash:color-mix(in srgb, var(--state-partial-ink) 14%, transparent);--state-incorrect-ink:#f49b96;--state-incorrect-wash:color-mix(in srgb, var(--state-incorrect-ink) 13%, transparent);--state-help-ink:#5cc7d4;--state-help-wash:color-mix(in srgb, var(--state-help-ink) 13%, transparent);--state-disputed-ink:#bda6f5;--state-disputed-wash:color-mix(in srgb, var(--state-disputed-ink) 14%, transparent);--state-failed-ink:#a7aebd;--state-failed-wash:color-mix(in srgb, var(--state-failed-ink) 12%, transparent);--series-1:#8fb2ff;--series-2:#f49b96;--series-3:#63cf95;--series-4:#bda6f5;--series-5:#e0b25e;--series-6:#5cc7d4}}:root{--rail-correct:var(--state-correct-ink);--rail-partial:linear-gradient(180deg, var(--state-partial-ink) 0 50%, color-mix(in srgb, var(--state-partial-ink) 30%, transparent) 50% 100%);--rail-incorrect:repeating-linear-gradient(180deg, var(--state-incorrect-ink) 0 7px, color-mix(in srgb, var(--state-incorrect-ink) 35%, transparent) 7px 12px);--rail-help:repeating-linear-gradient(135deg, var(--state-help-ink) 0 3px, transparent 3px 6px);--rail-disputed:repeating-linear-gradient(180deg, var(--state-disputed-ink) 0 3px, transparent 3px 7px);--rail-failed:repeating-linear-gradient(180deg, var(--state-failed-ink) 0 10px, transparent 10px 16px);--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-xs:.8125rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--leading-tight:1.25;--leading-normal:1.55;--leading-prose:1.7;--measure-narrow:24rem;--measure-prose:36rem;--measure:44rem;--measure-wide:64rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-pill:999px;--rail-width:4px;--border-width:1px;--control-height:2.6rem}
*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);margin:0}main{max-width:var(--measure);padding:var(--space-6) var(--space-4) var(--space-7);margin:0 auto}.appHeader{background:var(--surface);border-bottom:var(--border-width) solid var(--line)}.adminSection main,.appHeader.wide>div{max-width:var(--measure-wide)}.appHeader>div{max-width:var(--measure);padding:var(--space-3) var(--space-4);align-items:baseline;gap:var(--space-3);flex-wrap:wrap;margin:0 auto;display:flex}.appHeader .appName{color:var(--fg);font-weight:var(--weight-semibold);text-decoration:none}.appHeader .openCourse{color:var(--fg-muted);text-decoration:none}.appHeader .openCourse:before{content:"·";margin-right:var(--space-3);color:var(--line-strong)}.appHeader nav{align-items:baseline;gap:var(--space-4);margin-left:auto;display:flex}.appHeader nav a{font-size:var(--text-sm)}.appHeader form{margin:0}.appHeader button{padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}h1{font-size:var(--text-2xl);line-height:var(--leading-tight);margin:0 0 var(--space-5);font-weight:var(--weight-semibold)}h2{font-size:var(--text-xl);line-height:var(--leading-tight);margin:var(--space-6) 0 var(--space-3);font-weight:var(--weight-semibold)}a{color:var(--accent)}label{margin-bottom:var(--space-4);display:block}label span{margin-bottom:var(--space-1);color:var(--fg-muted);font-size:var(--text-sm);display:block}input[type=text],input[type=password],input[type=number],select,textarea{width:100%;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:var(--text-base);line-height:var(--leading-normal);color:var(--fg);background:var(--bg);border:var(--border-width) solid var(--line-strong);border-radius:var(--radius)}input[type=text],input[type=password],input[type=number],select{min-height:var(--control-height)}input[type=number]{width:8rem}textarea{resize:vertical}:where(input,select,textarea,button,a):focus-visible{outline:2px solid var(--accent);outline-offset:2px}input[type=file]{width:100%;font-family:inherit;font-size:var(--text-sm);color:var(--fg-muted);padding:var(--space-2) var(--space-3);min-height:var(--control-height);background:var(--bg);border:var(--border-width) dashed var(--line-strong);border-radius:var(--radius)}input[type=file]::file-selector-button{font-family:inherit;font-size:var(--text-sm);margin-right:var(--space-3);padding:var(--space-1) var(--space-3);color:var(--fg);background:var(--surface);border:var(--border-width) solid var(--line-strong);border-radius:var(--radius-sm);cursor:pointer}input[type=checkbox],input[type=radio]{width:1.05em;height:1.05em;accent-color:var(--accent)}button{font-family:inherit;font-size:var(--text-base);min-height:var(--control-height);padding:var(--space-2) var(--space-4);border-radius:var(--radius);cursor:pointer;color:var(--accent-on);background:var(--accent);border:var(--border-width) solid transparent}button:disabled{opacity:.6;cursor:default}button.secondary{color:var(--fg);border-color:var(--line-strong);background:0 0}a.button{font-family:inherit;font-size:var(--text-base);min-height:var(--control-height);padding:var(--space-2) var(--space-4);border-radius:var(--radius);color:var(--accent-on);background:var(--accent);border:var(--border-width) solid transparent;align-items:center;text-decoration:none;display:inline-flex}.actions{gap:var(--space-3);min-height:var(--control-height);flex-wrap:wrap;align-items:center;display:flex}label.inline{gap:var(--space-1);margin-right:var(--space-4);align-items:baseline;display:inline-flex}label.inline span{color:var(--fg);font-size:var(--text-base);margin:0;display:inline}.error{color:var(--state-incorrect-ink);margin:0 0 var(--space-4)}.ok{color:var(--state-correct-ink)}.muted{color:var(--fg-muted)}main.signIn{max-width:var(--measure-narrow);padding-top:var(--space-7)}main.signIn h1{margin-bottom:var(--space-2)}main.signIn .lead{color:var(--fg-muted);margin:0 0 var(--space-6)}main.signIn form{background:var(--surface);border:var(--border-width) solid var(--line);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-5) var(--space-4)}main.signIn button{justify-content:center;width:100%}ul.cards,ol.lessons{padding-left:var(--space-5);margin:0 0 var(--space-5)}ul.cards{padding-left:0;list-style:none}ul.cards>li,ol.lessons>li{padding:var(--space-3) 0;border-bottom:var(--border-width) solid var(--line)}ul.cards>li:last-child,ol.lessons>li:last-child{border-bottom:none}ol.lessons li.locked{color:var(--fg-muted)}ol.lessons li.locked::marker{color:var(--fg-muted)}.theory{max-width:var(--measure-prose);line-height:var(--leading-prose)}.theory>*{margin:0}.theory>*+*{margin-top:var(--space-4)}.theory h1,.theory h2,.theory h3,.theory h4,.theory h5,.theory h6{line-height:var(--leading-tight);font-weight:var(--weight-semibold)}.theory h1{font-size:var(--text-xl)}.theory h2{font-size:var(--text-lg)}.theory h3{font-size:var(--text-base)}.theory h4,.theory h5,.theory h6{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--fg-muted)}.theory>h1,.theory>h2,.theory>h3{margin-top:var(--space-6)}.theory>h4,.theory>h5,.theory>h6{margin-top:var(--space-5)}.theory>h1:not(:first-child),.theory>h2:not(:first-child){border-top:var(--border-width) solid var(--line);padding-top:var(--space-5)}.theory ul,.theory ol{padding-left:var(--space-5)}.theory li+li{margin-top:var(--space-2)}.theory img{border-radius:var(--radius);max-width:100%;height:auto}.theory a{text-underline-offset:.15em}.theory table{border-collapse:collapse;margin:var(--space-4) 0}.theory th,.theory td{border:var(--border-width) solid var(--line);padding:var(--space-1) var(--space-3);text-align:left}.theory code{font-family:var(--font-mono);background:var(--surface-sunken);border-radius:var(--radius-sm);padding:.1em .3em}.theory pre{font-family:var(--font-mono);background:var(--surface-sunken);padding:var(--space-3);border-radius:var(--radius);overflow-x:auto}.state-correct{--ink:var(--state-correct-ink);--wash:var(--state-correct-wash);--rail:var(--rail-correct)}.state-partial{--ink:var(--state-partial-ink);--wash:var(--state-partial-wash);--rail:var(--rail-partial)}.state-incorrect{--ink:var(--state-incorrect-ink);--wash:var(--state-incorrect-wash);--rail:var(--rail-incorrect)}.state-help{--ink:var(--state-help-ink);--wash:var(--state-help-wash);--rail:var(--rail-help)}.state-disputed{--ink:var(--state-disputed-ink);--wash:var(--state-disputed-wash);--rail:var(--rail-disputed)}.state-failed{--ink:var(--state-failed-ink);--wash:var(--state-failed-wash);--rail:var(--rail-failed)}.verdict{padding-left:var(--space-4);position:relative}.verdict:before{content:"";width:var(--rail-width);border-radius:var(--radius-pill);background:var(--rail,var(--line-strong));position:absolute;top:0;bottom:0;left:0}.verdict{margin:var(--space-4) 0 var(--space-2);color:var(--ink,var(--fg));font-weight:var(--weight-semibold)}.verdict .detail{color:var(--fg);font-weight:var(--weight-normal);display:block}ol.progress{gap:var(--space-1);margin:0 0 var(--space-3);padding:0;list-style:none;display:flex}ol.progress .segment{height:var(--space-2);border-radius:var(--radius-pill);background:var(--line);flex:1}ol.progress .segment[class*=state-]{background:var(--rail,var(--line-strong))}ol.progress .segment.current{background:var(--accent)}.prompt{font-size:var(--text-lg);line-height:var(--leading-normal);margin:var(--space-5) 0}.given{padding:var(--space-2) var(--space-3);border:var(--border-width) dashed var(--line-strong);border-radius:var(--radius)}.given.inline{padding:var(--space-1) var(--space-2);display:inline-block}ul.choices{padding:0;list-style:none}ul.choices label{gap:var(--space-2);margin-bottom:var(--space-1);align-items:baseline;display:flex}ul.choices label span{color:var(--fg);font-size:var(--text-base);margin:0}.wordOrder .built{min-height:calc(var(--leading-normal) * 2em);padding:var(--space-2) var(--space-3);border:var(--border-width) solid var(--line-strong);border-radius:var(--radius);background:var(--bg)}.wordOrder .fragments{gap:var(--space-2);flex-wrap:wrap;display:flex}.wordOrder .fragments .used{visibility:hidden}input.gap{width:8rem;padding:var(--space-1) var(--space-2);font-family:inherit;font-size:var(--text-base);color:var(--fg);background:var(--bg);border:var(--border-width) solid var(--line-strong);border-radius:var(--radius)}.result{margin-top:var(--space-5)}.feedback{white-space:pre-wrap}.corrected{border-left:var(--rail-width) solid var(--state-correct-ink);padding-left:var(--space-3)}.errors{--ink:var(--state-incorrect-ink);--rail:var(--rail-incorrect)}.errors ul{padding:0;list-style:none}.errors li{border-left:var(--rail-width) solid var(--ink);padding:var(--space-1) 0 var(--space-1) var(--space-3);margin-bottom:var(--space-3)}.errors .errorType{font-weight:var(--weight-semibold)}.errors .span{font-family:var(--font-mono);font-size:var(--text-sm);background:var(--state-incorrect-wash);border-radius:var(--radius-sm);padding:.1em .35em}ol.exercises{margin:0;padding:0;list-style:none}ol.exercises>li{background:var(--surface);border:var(--border-width) solid var(--line);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-4) var(--space-2);margin-bottom:var(--space-5)}ol.exercises>li>p:first-child{margin:calc(-1 * var(--space-2)) calc(-1 * var(--space-4)) var(--space-4);padding:var(--space-1) var(--space-4) var(--space-3);border-bottom:var(--border-width) solid var(--line);font-size:var(--text-sm)}ol.exercises input[type=text],ol.exercises input[type=number],ol.exercises select,ol.exercises textarea{background:var(--bg)}ul.choiceRows{margin:0 0 var(--space-3);padding:0;list-style:none}ul.choiceRows>li{gap:var(--space-3);margin-bottom:var(--space-2);padding:var(--space-2);background:var(--bg);border:var(--border-width) solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:center;display:flex}ul.choiceRows input[type=text]{flex:12rem;width:auto;min-width:0}ul.choiceRows button{min-height:auto;padding:var(--space-1) var(--space-3)}.madeBy{padding:0 var(--space-2);border:var(--border-width) solid var(--line-strong);border-radius:var(--radius-pill);font-size:var(--text-xs);color:var(--fg-muted);background:var(--surface);display:inline-block}pre.streaming{white-space:pre-wrap;background:var(--surface-sunken);border:var(--border-width) dashed var(--line-strong);border-left-width:var(--rail-width);max-height:24rem;padding:var(--space-3);border-radius:var(--radius);font-family:inherit;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--fg-muted);overflow-y:auto}.review .score{font-size:var(--text-xl);font-weight:var(--weight-semibold);margin:var(--space-2) 0 var(--space-1)}.review ol.exercises>li[class*=state-]{border-color:var(--ink,var(--line));background:var(--wash,transparent)}.review ol.exercises>li.state-correct{background:0 0;border-style:dashed}.review ul.choices li{padding:var(--space-1) var(--space-2);border-radius:var(--radius);border:var(--border-width) solid transparent}.review ul.choices li[class*=state-]{border-color:var(--ink,var(--line));background:var(--wash,transparent)}.review ul.choices li.state-incorrect{text-decoration:line-through}.stateName{color:var(--ink,var(--fg));font-weight:var(--weight-medium)}.disputeForm{margin:var(--space-3) 0}.disputeForm textarea{max-width:var(--measure)}ul.variants{margin:0 0 var(--space-4);padding:0;list-style:none}ul.variants li{padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2);background:var(--surface);border:var(--border-width) solid var(--line);border-radius:var(--radius)}.decision{border-top:var(--border-width) solid var(--line);margin-top:var(--space-6);padding-top:var(--space-5)}ol.progressLessons{margin:0 0 var(--space-5);padding:0;list-style:none}ol.progressLessons li{margin-bottom:var(--space-5)}ol.progressLessons p{margin:0 0 var(--space-1)}.viewingStudent{border-left:var(--rail-width) solid var(--accent);padding:var(--space-1) 0 var(--space-1) var(--space-3);font-weight:var(--weight-semibold)}ul.attempts{padding:0;list-style:none}ul.attempts li{margin-bottom:var(--space-2)}table.histogram{border-collapse:collapse;width:100%;max-width:var(--measure)}table.histogram th,table.histogram td{text-align:left;padding:var(--space-1) var(--space-2)}table.histogram thead th{color:var(--fg-muted);font-weight:var(--weight-medium);font-size:var(--text-sm)}table.histogram tbody th{font-weight:var(--weight-medium);white-space:nowrap;padding-right:var(--space-4)}table.histogram td{width:100%}table.histogram .bar{vertical-align:baseline;min-width:2px;height:.8em;margin-right:var(--space-2);border-radius:var(--radius-sm);background:var(--accent-quiet);border:var(--border-width) solid var(--accent);display:inline-block}table.histogram .value{color:var(--fg-muted);white-space:nowrap}.chartFrame{margin:0 0 var(--space-4);overflow-x:auto}svg.chart{width:100%;min-width:30rem;max-width:var(--measure);height:auto;display:block}svg.chart .grid line{stroke:var(--line);stroke-width:1px}svg.chart .grid text,svg.chart .axis{fill:var(--fg-muted);font-size:var(--text-xs)}svg.chart .series .line{stroke-width:2px}svg.chart .series .seriesLabel{font-size:var(--text-xs);font-weight:var(--weight-semibold);stroke:none}svg.chart .s1{stroke:var(--series-1);fill:var(--series-1)}svg.chart .s2{stroke:var(--series-2);fill:var(--series-2)}svg.chart .s3{stroke:var(--series-3);fill:var(--series-3)}svg.chart .s4{stroke:var(--series-4);fill:var(--series-4)}svg.chart .s5{stroke:var(--series-5);fill:var(--series-5)}svg.chart .s6{stroke:var(--series-6);fill:var(--series-6)}.spanPickers{gap:var(--space-4);flex-wrap:wrap;align-items:baseline;display:flex}table.spanTable td{text-align:right;width:auto}table.spanTable caption{text-align:left;padding-bottom:var(--space-1)}.healthBanner{background:var(--surface);border:var(--border-width) solid var(--line);border-left:var(--rail-width) solid var(--line-strong);border-radius:var(--radius);padding:var(--space-3) var(--space-4);margin:0 0 var(--space-5)}.healthBanner p{margin:0 0 var(--space-1)}.healthBanner p:last-child{margin-bottom:0}.healthBanner.healthy{border-left-color:var(--state-correct-ink)}.healthBanner.unhealthy{border-left-color:var(--state-incorrect-ink)}.healthBanner.stale{border-left-color:var(--state-incorrect-ink);border-left-style:dashed}.healthBanner.never{border-left-style:dotted}.healthBanner .bannerHealthy{color:var(--state-correct-ink);font-weight:var(--weight-semibold)}.healthBanner .bannerUnhealthy,.healthBanner .bannerStale{color:var(--state-incorrect-ink);font-weight:var(--weight-semibold)}.healthBanner .bannerNever{color:var(--fg-muted)}@media (max-width:40rem){main{padding:var(--space-5) var(--space-4) var(--space-6)}.appHeader>div{padding:var(--space-3) var(--space-4);row-gap:var(--space-2)}.appHeader nav{width:100%;margin-left:0}.theory table,table.histogram{max-width:100%;display:block;overflow-x:auto}.theory{max-width:100%}svg.chart{min-width:22rem}}
