:root{--bg: #0f1115;--bg2: #161a21;--card: #1b202a;--card2: #202634;--line: #2a3140;--text: #e6e9ef;--muted: #9aa3b2;--accent: #4f8cff;--ok: #34c98e;--okbg: #12271e;--bad: #ff6b6b;--badbg: #2a1717;--warn: #e8b34b;--warnbg: #2a2214;--code: #0c0e13;--mono: "Cascadia Code", "JetBrains Mono", Consolas, monospace}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.55 system-ui,Segoe UI,Roboto,sans-serif}a{color:var(--accent)}h1{font-size:26px;margin:6px 0 4px}h2{font-size:19px;margin:18px 0 8px}.sub{color:var(--muted);margin-bottom:18px}.md p,.md ul,.md ol{margin:8px 0}.md img,.step-cover{max-width:100%;border-radius:10px;display:block;margin:10px 0}.links-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.links-row .btn{text-decoration:none}.md code,.inline-code{background:var(--code);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-family:var(--mono);font-size:13.5px;color:#ffd479}.md pre{background:var(--code);border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow-x:auto}.md pre code{border:0;padding:0;color:#d7dce6;font-size:13px}.screen{padding:22px;max-width:1180px;margin:0 auto}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:14px}.app-header{background:var(--bg2);border-bottom:1px solid var(--line);padding:10px 18px;position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;cursor:pointer}.brand b{font-size:16px}.app-logo{height:26px;width:26px;border-radius:7px;display:block}.app-header .who{color:var(--muted);font-size:13.5px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.link-btn{background:transparent;border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:5px 12px;cursor:pointer;font-size:13px}.link-btn:hover{color:var(--text);border-color:var(--accent)}.courses{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:900px){.courses{grid-template-columns:1fr}}.course-card h3{margin:0 0 4px;font-size:17px}.course-card .tag{display:inline-block;font-size:12px;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:1px 10px;margin-bottom:8px}.track-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line);cursor:pointer}.track-row:first-of-type{border-top:0}.track-row:hover .name{color:var(--accent)}.track-row .name{flex:1}.track-row .soon{color:var(--muted);font-size:13px;cursor:default}.progress{width:120px;height:7px;background:#0b0d12;border-radius:99px;overflow:hidden}.progress i{display:block;height:100%;background:var(--ok)}.pct{font-size:12px;color:var(--muted);width:64px;text-align:right}.player{display:grid;grid-template-columns:280px 1fr;gap:18px}@media(max-width:980px){.player{grid-template-columns:1fr}}.steps-panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;align-self:start}.steps-panel .track-title{font-size:13px;color:var(--muted);padding:4px 8px 10px}.step-item{display:flex;gap:10px;align-items:baseline;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--muted);font-size:14px}.step-item .n{font-family:var(--mono);font-size:12px;opacity:.7}.step-item.done{color:var(--muted)}.step-item.done .icon{color:var(--ok)}.step-item.current{background:#1c2b47;color:#fff}.step-item.current .icon{color:var(--accent)}.icon{width:18px;display:inline-block;text-align:center}.step-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.step-kind{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 10px;white-space:nowrap}.editor{background:var(--code);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:12px 0}.editor .bar{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;border-bottom:1px solid var(--line);background:#12151c}.editor .bar .lang{font-size:12px;font-family:var(--mono);color:var(--muted)}.dots{display:inline-flex;gap:6px;margin-right:10px}.dots i{width:10px;height:10px;border-radius:50%;background:#3a4252}.editor textarea{width:100%;min-height:200px;background:transparent;color:#d7dce6;border:0;outline:none;resize:vertical;padding:12px 14px;font-family:var(--mono);font-size:13.5px;line-height:1.6;tab-size:2}.actions{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.btn{background:var(--accent);border:0;color:#fff;border-radius:9px;padding:9px 16px;font-size:14px;cursor:pointer}.btn.secondary{background:var(--card2);border:1px solid var(--line);color:var(--text)}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--muted)}.btn:hover{filter:brightness(1.1)}.btn:disabled{opacity:.5;cursor:default;filter:none}.tests{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:12px 0}.tests .t{display:flex;gap:10px;padding:9px 14px;border-top:1px solid var(--line);font-size:14px}.tests .t:first-child{border-top:0}.tests .t.pass{background:var(--okbg)}.tests .t.fail{background:var(--badbg)}.tests .t .mark{color:var(--ok)}.tests .t.fail .mark{color:var(--bad)}.tests .t .expr{font-family:var(--mono);font-size:12.5px;color:var(--muted)}.console{background:var(--code);border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-family:var(--mono);font-size:13px;color:var(--muted);white-space:pre-wrap}.feedback{border-radius:10px;padding:12px 16px;margin:12px 0;font-size:14.5px}.feedback.ok{background:var(--okbg);border:1px solid var(--ok)}.feedback.bad{background:var(--badbg);border:1px solid var(--bad)}.feedback.warn{background:var(--warnbg);border:1px solid var(--warn)}.feedback b{display:block;margin-bottom:4px}.hint{background:var(--warnbg);border:1px dashed var(--warn);border-radius:10px;padding:10px 14px;font-size:14px;margin-bottom:12px}.hint b{display:block;margin-bottom:4px}.opt{display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:8px;cursor:pointer}.opt:hover{border-color:var(--accent)}.opt input{margin-top:3px}.opt .of{font-size:13px;color:var(--muted);margin-top:3px;display:none}.opt.checked{border-color:var(--accent)}.opt.reveal-right{border-color:var(--ok);background:var(--okbg)}.opt.reveal-wrong{border-color:var(--bad);background:var(--badbg)}.opt.reveal-right .of,.opt.reveal-wrong .of{display:block}.opt .code{font-family:var(--mono);font-size:13px}.order-list{list-style:none;padding:0;margin:10px 0}.order-list li{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:8px}.order-list .pos{font-family:var(--mono);color:var(--accent);width:22px}.order-list .txt{flex:1}.mv{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:7px;width:34px;height:30px;cursor:pointer;font-size:15px}.order-list li.right{border-color:var(--ok)}.order-list li.wrong{border-color:var(--bad)}.verdict{font-size:12px;border-radius:999px;padding:2px 10px;margin-left:8px;white-space:nowrap}.verdict.good{color:var(--ok);border:1px solid var(--ok)}.verdict.mixed{color:var(--warn);border:1px solid var(--warn)}.verdict.bad{color:var(--bad);border:1px solid var(--bad)}.answer-row{display:flex;gap:10px;align-items:center;margin:12px 0;flex-wrap:wrap}.answer-row input{background:var(--code);border:1px solid var(--line);border-radius:9px;color:var(--text);padding:10px 14px;font-family:var(--mono);font-size:16px;width:160px}.answer-row input.wide{width:min(420px,100%)}.answer-row input:focus,.field input:focus,.field select:focus{outline:none;border-color:var(--accent)}.field{margin-bottom:14px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.field input,.field select{width:100%;background:var(--code);border:1px solid var(--line);border-radius:9px;color:var(--text);padding:10px 12px;font-size:15px}.field select option{background:var(--bg2)}.err{color:var(--bad);font-size:13.5px;margin:8px 0}.pair-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:8px;flex-wrap:wrap}.pair-row .txt{flex:1;min-width:200px}.pair-row select{background:var(--code);border:1px solid var(--line);border-radius:9px;color:var(--text);padding:8px 10px;font-size:14px;max-width:300px}.pair-row.right{border-color:var(--ok)}.pair-row.wrong{border-color:var(--bad)}.note{color:var(--muted);font-size:13.5px}.pill{display:inline-block;background:var(--card2);border:1px solid var(--line);border-radius:999px;padding:2px 12px;font-size:12.5px;color:var(--muted);margin-right:6px}.login-wrap{max-width:480px;margin:30px auto}.login-logo{display:block;margin:0 auto 12px;width:min(320px,90%);border-radius:12px}.login-sub{text-align:center;color:var(--text);font-size:15px;margin-bottom:2px}.login-sub2{text-align:center;color:var(--muted);font-size:13.5px;margin-bottom:16px}.spacer{flex:1}.tabs{display:flex;gap:8px;margin:0 0 16px;flex-wrap:wrap}.tab-btn{background:var(--card);border:1px solid var(--line);color:var(--muted);border-radius:9px;padding:8px 18px;font-size:14px;cursor:pointer}.tab-btn.active{color:#fff;border-color:var(--accent);background:#1c2b47}.admin-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.admin-row-main{display:flex;align-items:baseline;gap:10px;flex:1;min-width:240px}.admin-row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.admin-table{width:100%;border-collapse:collapse;margin-top:10px}.admin-table th{text-align:left;color:var(--muted);font-size:12.5px;font-weight:400;padding:6px 10px;border-bottom:1px solid var(--line)}.admin-table td{padding:7px 10px;border-bottom:1px solid var(--line);font-size:14px}.add-students{margin:12px 0}.add-students textarea,.mono-area{width:100%;background:var(--code);border:1px solid var(--line);border-radius:9px;color:var(--text);padding:10px 12px;font-family:var(--mono);font-size:13.5px;line-height:1.55}.step-line{padding:6px 8px;border-radius:8px;cursor:pointer;border:1px solid transparent}.step-line:hover{border-color:var(--line)}.step-line.open{border-color:var(--accent);background:#1c2b4733}.track-card:hover{border-color:var(--accent)}.step-edit-title{flex:1;min-width:160px}.step-wrap{margin:4px 0 10px}.step-form{border-left:2px solid var(--line);padding:4px 0 4px 14px;margin:8px 0 4px}.mono{font-family:var(--mono)}.edit-row{display:flex;align-items:center;gap:8px;margin:6px 0;flex-wrap:wrap}.edit-row input,.edit-row select{background:var(--code);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:8px 10px;font-size:14px}.edit-row input.grow{flex:1;min-width:180px}.add-step-row{border-top:1px dashed var(--line);padding-top:10px;margin-top:10px}.check-line{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text)}.team-picker{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px}.team-member{display:inline-flex;align-items:center;gap:6px;background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:6px 12px;margin:0 8px 8px 0;font-size:14px;cursor:pointer}.team-member.busy{opacity:.45;cursor:default}.preview{border:1px dashed var(--line);border-radius:10px;padding:14px;margin-top:8px}.unsaved{color:var(--warn)}.modal-overlay{position:fixed;inset:0;background:#0009;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}
