:root{--bg:#f4f6f1;--panel:#fff;--ink:#101827;--muted:#667085;--line:#dfe5dd;--soft:#edf1eb;--mint:#3fb984;--violet:#7458f5;--code:#111827}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,sans-serif}.dark{--bg:#0e1522;--panel:#151f2e;--ink:#eef4ed;--muted:#9ba9b6;--line:#273446;--soft:#1b2838;--code:#08101c}button,a{font:inherit}button{cursor:pointer}[v-cloak]{display:none}
.ambient{position:fixed;border-radius:999px;filter:blur(90px);opacity:.16;pointer-events:none}.ambient-one{width:420px;height:420px;background:#42b883;top:-180px;right:15%}.ambient-two{width:300px;height:300px;background:#7c5cff;left:15%;bottom:-180px}
.topbar{height:72px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(18px);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-weight:800}.brand-mark{display:grid;place-items:center;background:var(--mint);color:#072a1e;width:34px;height:34px;clip-path:polygon(50% 100%,0 0,100% 0);font-size:14px;padding-bottom:9px}.brand-tag{font-size:10px;letter-spacing:.12em;border:1px solid var(--line);border-radius:99px;padding:5px 8px;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:12px}.streak{font-size:12px;font-weight:700;background:var(--panel);padding:9px 12px;border:1px solid var(--line);border-radius:9px}.streak span{color:#f5a623}.icon-button,.avatar{border:1px solid var(--line);background:var(--panel);color:var(--ink);width:36px;height:36px;border-radius:50%}.avatar{background:var(--violet);color:white;border:0;font-size:11px;font-weight:800}
.shell{display:grid;grid-template-columns:230px 1fr;max-width:1480px;margin:0 auto;min-height:calc(100vh - 72px)}.sidebar{padding:30px 22px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:30px}.nav-label,.eyebrow{display:block;font-size:10px;font-weight:800;letter-spacing:.16em;color:var(--muted)}.nav-item{width:100%;display:flex;align-items:center;gap:12px;border:0;background:none;color:var(--muted);padding:11px 13px;border-radius:9px;margin-top:5px;text-align:left;font-weight:600;font-size:13px}.nav-item.active{background:var(--panel);color:var(--ink);box-shadow:0 6px 20px rgba(15,25,20,.06)}.nav-item.active span{color:var(--mint)}.progress-card{text-align:center;border-top:1px solid var(--line);padding-top:28px}.progress-ring{--progress:0deg;width:112px;height:112px;border-radius:50%;margin:auto;background:conic-gradient(var(--mint) var(--progress),var(--line) 0);padding:7px}.progress-ring>div{background:var(--bg);width:100%;height:100%;border-radius:50%;display:grid;place-content:center}.progress-ring strong{font-size:25px}.progress-ring small{font-size:9px;color:var(--muted);text-transform:uppercase;display:block}.progress-card p{font-size:12px;font-weight:700;margin:14px 0 4px}.progress-card>span{font-size:10px;color:var(--muted)}.sidebar-tip{margin-top:auto;border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;gap:10px;background:linear-gradient(145deg,var(--panel),var(--soft))}.tip-icon{color:var(--violet)}.sidebar-tip strong{font-size:11px}.sidebar-tip p{font-size:10px;line-height:1.55;color:var(--muted);margin:4px 0}
.content{padding:52px clamp(28px,5vw,76px) 70px;min-width:0}.hero{display:grid;grid-template-columns:1.15fr .85fr;gap:70px;align-items:center;padding:22px 0 70px}.hero h1,.lesson-heading h1,.practice-header h1{font-size:clamp(40px,5vw,65px);line-height:1.02;letter-spacing:-.055em;margin:17px 0 22px}.hero h1 em{font-style:normal;color:var(--mint)}.hero>div>p,.lesson-heading>p,.practice-header p{max-width:640px;color:var(--muted);line-height:1.75;font-size:15px}.primary-button,.secondary-button{border:0;border-radius:8px;padding:13px 18px;font-weight:750;font-size:12px}.primary-button{background:var(--ink);color:var(--bg);margin-top:18px}.primary-button:hover{transform:translateY(-1px)}.primary-button:disabled{opacity:.45;cursor:not-allowed}.hero-code{background:var(--code);color:#d8e1eb;border-radius:15px;overflow:hidden;box-shadow:0 25px 70px rgba(5,15,25,.22);transform:rotate(1deg)}.window-bar{height:46px;border-bottom:1px solid #263244;display:flex;align-items:center;padding:0 16px;gap:7px;font-size:10px;color:#718096}.window-bar i{width:8px;height:8px;border-radius:50%;background:#ff6b6b}.window-bar i:nth-child(2){background:#ffd166}.window-bar i:nth-child(3){background:#42b883}.window-bar span{margin-left:10px}.hero-code pre{margin:0;padding:32px;font:12px/1.9 'JetBrains Mono';white-space:pre-wrap}.hero-code b{color:#c792ea}.hero-code s{color:#80cbc4;text-decoration:none}.hero-code mark{background:none;color:#f7c873}.code-status{border-top:1px solid #263244;padding:12px 17px;font:9px 'JetBrains Mono';color:#718096}.code-status span{display:inline-block;width:6px;height:6px;border-radius:50%;background:#42b883;margin-right:6px}
.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:22px}.section-heading h2{font-size:27px;margin:8px 0 0;letter-spacing:-.03em}.duration{font-size:11px;color:var(--muted)}.module-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.module-card{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:20px;min-height:300px;transition:.2s;cursor:pointer;display:flex;flex-direction:column}.module-card:hover:not(.locked){transform:translateY(-4px);border-color:var(--mint);box-shadow:0 14px 40px rgba(23,55,42,.09)}.module-card.locked{opacity:.58;cursor:not-allowed}.module-card.done{border-top:3px solid var(--mint)}.module-top,.module-meta{display:flex;justify-content:space-between;align-items:center}.module-number{font:700 11px 'JetBrains Mono';color:var(--muted)}.module-state{font-size:9px;color:var(--mint);font-weight:700}.module-icon{font-size:29px;margin:30px 0 18px}.module-kicker{font-size:9px!important;font-weight:800;color:var(--violet)!important;letter-spacing:.1em;text-transform:uppercase}.module-card h3{font-size:18px;margin:2px 0 9px;letter-spacing:-.025em}.module-card p{font-size:11px;line-height:1.6;color:var(--muted);margin:0}.module-meta{margin-top:auto;padding-top:20px;border-top:1px solid var(--line);font:9px 'JetBrains Mono';color:var(--muted)}.challenge-banner{margin-top:42px;padding:26px 30px;background:var(--ink);color:var(--bg);border-radius:14px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px}.challenge-symbol{font:700 22px 'JetBrains Mono';color:var(--mint);border:1px solid #354150;border-radius:9px;padding:14px}.challenge-banner h3{font-size:17px;margin:5px 0}.challenge-banner p{font-size:11px;color:#97a2b1;margin:0}.secondary-button{background:var(--panel);color:var(--ink);border:1px solid var(--line)}
.back-link{border:0;background:0;color:var(--muted);font-size:11px;padding:0;margin-bottom:35px}.lesson-layout{display:grid;grid-template-columns:minmax(0,760px) 190px;gap:70px}.lesson-heading h1{font-size:50px}.concept-card,.quiz-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:32px;margin-top:36px}.concept-badge{display:inline-block;font-size:9px;font-weight:800;color:#08774e;background:#dff7ec;padding:6px 8px;border-radius:4px}.concept-card h2,.quiz-card h2{font-size:25px;margin:15px 0}.concept-card>p{color:var(--muted);line-height:1.8;font-size:13px}.concept-card pre{background:var(--code);color:#d9e4ee;border-radius:10px;padding:23px;overflow:auto;font:12px/1.8 'JetBrains Mono';white-space:pre-wrap}.insight-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.insight-row>div{border:1px solid var(--line);border-radius:12px;padding:22px}.insight-row span{font:700 10px 'JetBrains Mono';color:var(--mint)}.insight-row h3{font-size:14px}.insight-row p{color:var(--muted);font-size:11px;line-height:1.65}.answer{display:flex;gap:13px;align-items:center;width:100%;text-align:left;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:12px;margin:8px 0;font-size:12px}.answer span{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--line);border-radius:5px;font:700 10px 'JetBrains Mono'}.answer.selected{border-color:var(--violet)}.answer.correct{border-color:var(--mint);background:#e9faf2;color:#133d2d}.answer.wrong{border-color:#ee7777}.quiz-feedback{padding:12px;border-radius:7px;background:#fff0f0;color:#8e3333;font-size:11px;margin-top:12px}.quiz-feedback.success{background:#e9faf2;color:#176441}.lesson-toc{position:sticky;top:110px;height:max-content;border-left:1px solid var(--line);padding-left:22px}.lesson-toc a{display:block;color:var(--muted);font-size:11px;margin:18px 0;cursor:pointer}.lesson-toc a.active{color:var(--ink);font-weight:700}
.practice-header{display:flex;justify-content:space-between;gap:30px;align-items:start}.practice-header h1{font-size:48px}.difficulty{font:700 9px 'JetBrains Mono';color:#6c4cf1;background:#ebe7ff;padding:8px;border-radius:5px}.practice-grid{display:grid;grid-template-columns:340px 1fr;gap:16px;margin-top:36px}.task-panel,.editor-panel,.feedback-card{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}.task-panel{padding:26px}.task-panel h2{margin:0 0 12px;font-size:20px}.task-panel>p{color:var(--muted);font-size:12px;line-height:1.65}.task-panel ul{list-style:none;padding:0}.task-panel li{display:flex;gap:12px;margin:20px 0}.task-panel li>span{font:700 10px 'JetBrains Mono';color:var(--mint);padding-top:3px}.task-panel li strong{font-size:11px}.task-panel li p{font-size:10px;line-height:1.5;color:var(--muted);margin:4px 0}.task-panel code{font-family:'JetBrains Mono';color:var(--violet)}.criteria{background:var(--soft);padding:13px;border-radius:8px}.criteria strong,.criteria span{display:block;font-size:10px}.criteria span{color:var(--muted);margin-top:5px}.editor-panel{background:var(--code)}.editor-bar,.editor-footer{height:48px;color:#8794a5;display:flex;align-items:center;justify-content:space-between;padding:0 17px;border-bottom:1px solid #273244;font:10px 'JetBrains Mono'}.editor-bar button{background:0;border:0;color:#8794a5}.editor-wrap{display:grid;grid-template-columns:45px 1fr;min-height:460px}.line-numbers{white-space:pre;text-align:right;padding:18px 12px;color:#4e5c70;font:12px/1.7 'JetBrains Mono';border-right:1px solid #273244;user-select:none}.editor-wrap textarea{resize:none;width:100%;border:0;outline:0;padding:18px;background:transparent;color:#d7e1eb;font:12px/1.7 'JetBrains Mono';tab-size:2}.editor-footer{height:auto;min-height:64px;border-top:1px solid #273244;border-bottom:0;gap:20px}.editor-footer .primary-button{background:var(--mint);color:#07271c;margin:0;white-space:nowrap}.feedback-card{display:flex;gap:28px;padding:26px;margin-top:16px}.score{width:90px;height:90px;border-radius:50%;border:6px solid var(--mint);display:grid;place-content:center;text-align:center;flex:none}.score strong{font-size:27px}.score span{font-size:9px;color:var(--muted)}.feedback-label{font-size:9px;color:var(--mint);font-weight:800;letter-spacing:.13em}.feedback-copy{flex:1}.feedback-copy h2{margin:5px 0}.feedback-copy>p,.feedback-card.error>p{color:var(--muted);font-size:12px;line-height:1.6}.feedback-columns{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin-top:20px}.feedback-columns strong{font-size:11px}.feedback-columns ul{padding-left:17px;color:var(--muted);font-size:10px;line-height:1.7}.feedback-card.error{display:block;border-color:#e89797}
.modal-backdrop{position:fixed;inset:0;background:rgba(4,9,16,.72);backdrop-filter:blur(7px);z-index:50;display:grid;place-items:center;padding:20px}.login-modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:34px;width:min(420px,100%);box-shadow:0 30px 100px rgba(0,0,0,.3);text-align:center}.login-mark{display:grid;place-items:center;margin:0 auto 20px;width:44px;height:44px;background:var(--mint);color:#073222;font-weight:900;border-radius:11px}.login-modal h2{font-size:25px;margin:8px}.login-modal>p{font-size:11px;color:var(--muted);line-height:1.65}.login-modal label{display:block;text-align:left;font-size:10px;font-weight:700;margin:24px 0 7px}.login-modal input{width:100%;border:1px solid var(--line);border-radius:8px;padding:13px;background:var(--bg);color:var(--ink);outline:0}.login-modal input:focus{border-color:var(--mint)}.login-modal .primary-button{width:100%}.text-button{border:0;background:0;color:var(--muted);font-size:10px;margin-top:15px}.form-error{color:#b33!important}.page-enter{animation:enter .35s ease both}@keyframes enter{from{opacity:0;transform:translateY(7px)}}
@media(max-width:1050px){.module-grid{grid-template-columns:1fr 1fr}.hero{gap:30px}.practice-grid{grid-template-columns:1fr}.lesson-layout{grid-template-columns:1fr}.lesson-toc{display:none}}
@media(max-width:760px){.shell{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--line);padding:12px 18px}.sidebar nav{display:flex;overflow:auto}.nav-label,.progress-card,.sidebar-tip{display:none}.nav-item{white-space:nowrap;width:auto}.content{padding:34px 18px}.hero{grid-template-columns:1fr;padding-bottom:50px}.hero h1{font-size:42px}.module-grid{grid-template-columns:1fr}.challenge-banner{grid-template-columns:auto 1fr}.challenge-banner button{grid-column:1/-1}.practice-header{display:block}.practice-header h1,.lesson-heading h1{font-size:38px}.feedback-card{display:block}.score{margin-bottom:20px}.feedback-columns,.insight-row{grid-template-columns:1fr}.topbar{padding:0 16px}.streak{display:none}.editor-footer{align-items:flex-start;flex-direction:column;padding:14px}}
