
:root{--bg:#f7f6f2;--surface:#fff;--text:#1d1c1a;--muted:#6b6862;--line:#e4e1d8;--accent:#2952e3;--accent-soft:#e8edfd;--ok:#16794a;--ok-soft:#e3f4ea;--bad:#b42318;--bad-soft:#fdecea;--code:#f1efe9}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121212;--surface:#1b1b1d;--text:#ecebe8;--muted:#a19e97;--line:#2e2e31;--accent:#7d9bff;--accent-soft:#1f2747;--ok:#4cc38a;--ok-soft:#14301f;--bad:#ff7a6e;--bad-soft:#3a1714;--code:#232326}}
:root[data-theme=dark]{--bg:#121212;--surface:#1b1b1d;--text:#ecebe8;--muted:#a19e97;--line:#2e2e31;--accent:#7d9bff;--accent-soft:#1f2747;--ok:#4cc38a;--ok-soft:#14301f;--bad:#ff7a6e;--bad-soft:#3a1714;--code:#232326}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:17px/1.7 'Inter',system-ui,-apple-system,sans-serif}
a{color:var(--accent)}
.top{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top .in{max-width:860px;margin:auto;padding:10px 16px;display:flex;gap:12px;align-items:center}
.brand{font-weight:700;text-decoration:none;color:var(--text);letter-spacing:-.01em}
.brand span{color:var(--accent)}
.top .sp{flex:1}
.btn{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;padding:7px 12px;font:inherit;font-size:14px;cursor:pointer;text-decoration:none}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.done{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}
main{max-width:860px;margin:auto;padding:24px 16px 80px}
h1{font-size:clamp(28px,6vw,40px);line-height:1.15;letter-spacing:-.02em;margin:.2em 0 .4em}
h2{font-size:24px;line-height:1.3;margin:2em 0 .6em;letter-spacing:-.01em}
h3{font-size:21px;margin:2em 0 .5em;padding-top:.6em;border-top:1px solid var(--line)}
h4{font-size:18px;margin:1.5em 0 .4em}
.muted{color:var(--muted)}.small{font-size:14px}
.hero{padding:16px 0 8px}
.bar{height:8px;background:var(--line);border-radius:99px;overflow:hidden}.bar i{display:block;height:100%;background:var(--accent);width:0;transition:width .4s}
.phase{margin-top:36px}.phase-h{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.phase-h b{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}
.cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));margin-top:12px}
.card{display:block;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;text-decoration:none;color:var(--text)}
.card:hover{border-color:var(--accent)}
.card h3{border:0;margin:0 0 4px;padding:0;font-size:18px}
.list{list-style:none;padding:0;margin:16px 0;border:1px solid var(--line);border-radius:16px;background:var(--surface);overflow:hidden}
.list li+li{border-top:1px solid var(--line)}
.list a{display:flex;gap:12px;padding:12px 16px;text-decoration:none;color:var(--text);align-items:flex-start}
.list .num{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:13px;background:var(--code);color:var(--muted)}
.list li.ok .num{background:var(--ok);color:#fff}
.list .t{flex:1}.list .o{display:block;font-size:13px;color:var(--muted)}
.crumb{font-size:14px;color:var(--muted)}.crumb a{color:var(--muted)}
.lesson p,.lesson li{overflow-wrap:anywhere}
.lesson code{background:var(--code);padding:.1em .35em;border-radius:5px;font-size:.88em}
.hl{position:relative}
.hl{background:var(--code);border-radius:12px;margin:16px 0;overflow:auto;font-size:14px;line-height:1.55}
.hl pre{margin:0;padding:38px 16px 14px}.hl code{background:none;padding:0}
.copy{position:absolute;top:8px;right:8px;font-size:12px;padding:4px 8px;opacity:.85}
table{border-collapse:collapse;width:100%;font-size:15px;display:block;overflow-x:auto}
th,td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}th{background:var(--code)}
details{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 16px;margin:16px 0}
summary{cursor:pointer;font-weight:600;color:var(--accent)}
blockquote{margin:16px 0;padding:8px 16px;border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:0 10px 10px 0}
.quiz{margin-top:40px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px}
.quiz h3{border:0;margin-top:0;padding:0}
.q{margin:18px 0}.q p{font-weight:600;margin:0 0 8px}
.opt{display:block;width:100%;text-align:left;margin:6px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);font:inherit;font-size:15px;cursor:pointer}
.opt.right{background:var(--ok-soft);border-color:var(--ok)}.opt.wrong{background:var(--bad-soft);border-color:var(--bad)}
.why{font-size:15px;color:var(--muted);margin-top:6px}
.score{font-weight:700}
.nav{display:flex;gap:10px;justify-content:space-between;margin-top:32px;flex-wrap:wrap}
.nav a{flex:1;min-width:140px}
.hl .c,.hl .c1,.hl .cm{color:#8a8578;font-style:italic}.hl .k,.hl .kd,.hl .kn,.hl .kr,.hl .kc{color:#b4235a}.hl .s,.hl .s1,.hl .s2,.hl .sb,.hl .sa,.hl .se,.hl .dl{color:#1a7f4b}.hl .m,.hl .mi,.hl .mf,.hl .mh{color:#a85d00}.hl .nf,.hl .fm{color:#2952e3}.hl .nt{color:#b4235a}.hl .na{color:#a85d00}.hl .o,.hl .p{color:var(--text)}.hl .nb,.hl .bp{color:#6f42c1}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .hl .k,:root:not([data-theme=light]) .hl .kd,:root:not([data-theme=light]) .hl .nt{color:#ff8fb1}:root:not([data-theme=light]) .hl .s,:root:not([data-theme=light]) .hl .s1,:root:not([data-theme=light]) .hl .s2,:root:not([data-theme=light]) .hl .sb{color:#7ee2a8}:root:not([data-theme=light]) .hl .nf,:root:not([data-theme=light]) .hl .fm{color:#8fb0ff}:root:not([data-theme=light]) .hl .m,:root:not([data-theme=light]) .hl .mi,:root:not([data-theme=light]) .hl .na{color:#ffc36b}:root:not([data-theme=light]) .hl .nb{color:#c9a7ff}}
:root[data-theme=dark] .hl .k,:root[data-theme=dark] .hl .kd,:root[data-theme=dark] .hl .nt{color:#ff8fb1}:root[data-theme=dark] .hl .s,:root[data-theme=dark] .hl .s1,:root[data-theme=dark] .hl .s2,:root[data-theme=dark] .hl .sb{color:#7ee2a8}:root[data-theme=dark] .hl .nf,:root[data-theme=dark] .hl .fm{color:#8fb0ff}:root[data-theme=dark] .hl .m,:root[data-theme=dark] .hl .mi,:root[data-theme=dark] .hl .na{color:#ffc36b}:root[data-theme=dark] .hl .nb{color:#c9a7ff}
