:root{--bg:#0d1117;--panel:#161b22;--panel-2:#1c2230;--border:#2a3441;--text:#e6edf3;--muted:#8995a3;--accent:#58a6ff;--green:#3fb950;--yellow:#d29922;--red:#f85149;--radius:10px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.6 -apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.site-header{border-bottom:1px solid var(--border);background:var(--panel);z-index:10;justify-content:space-between;align-items:center;padding:14px 24px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent), #a371f7);color:#fff;border-radius:8px;place-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:grid}.brand-name{font-weight:700}.main-nav{gap:16px;display:flex}.main-nav a{color:var(--muted);text-decoration:none}.main-nav a:hover{color:var(--text)}.site-main{max-width:980px;margin:0 auto;padding:28px 24px 60px}.site-footer{border-top:1px solid var(--border);text-align:center;color:var(--muted);padding:18px 24px;font-size:14px}.site-footer p{margin:2px 0}.course-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.course-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:18px;text-decoration:none;transition:transform .12s,border-color .12s;display:block}.course-card:hover{border-color:var(--accent);transform:translateY(-2px)}.course-card h2{margin:8px 0 6px;font-size:18px}.course-card .theme{color:var(--accent);margin-bottom:4px;font-size:13px;display:inline-block}.tag{border:1px solid var(--border);color:var(--muted);border-radius:20px;margin:2px 4px 2px 0;padding:2px 10px;font-size:12px;display:inline-block}.tag.green{color:var(--green);border-color:#2ea04344}.tag.yellow{color:var(--yellow);border-color:#d2992244}.tag.blue{color:var(--accent);border-color:#58a6ff44}.hero{padding:12px 0 28px}.hero h1{margin:0 0 8px;font-size:30px}.hero .lede{color:var(--muted);max-width:720px;margin:0;font-size:17px}.page-head h1{margin:4px 0;font-size:28px}.page-head .sub{color:var(--muted);margin:0 0 16px}.meta-line{color:var(--muted);margin:4px 0;font-size:14px}.module{margin:26px 0}.module h2{border-bottom:1px solid var(--border);padding-bottom:8px;font-size:20px}.lesson-row{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin:8px 0;padding:12px 14px;text-decoration:none;display:flex}.lesson-row:hover{border-color:var(--accent)}.lesson-row .num{color:var(--muted);min-width:42px;font-size:13px}.lesson-row .lt{flex:1}.lesson-row .lt .t{font-weight:600}.lesson-row .lt .d{color:var(--muted);font-size:13px}.lesson-row .meta{color:var(--muted);white-space:nowrap;font-size:12px}.lesson-row .xp{color:var(--yellow);font-weight:700}article.lesson-body{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:24px 28px}article.lesson-body h1{margin-top:4px;font-size:26px}article.lesson-body h2{border-bottom:1px solid var(--border);margin-top:28px;padding-bottom:6px;font-size:21px}article.lesson-body h3{font-size:18px}article.lesson-body blockquote{border-left:3px solid var(--accent);background:var(--panel-2);border-radius:0 8px 8px 0;margin:14px 0;padding:10px 14px}article.lesson-body blockquote:first-child{font-size:15px}article.lesson-body code{background:var(--panel-2);border-radius:5px;padding:2px 6px;font-size:14px}article.lesson-body pre{border:1px solid var(--border);background:#010409;border-radius:8px;padding:14px;overflow-x:auto}article.lesson-body pre code{background:0 0;padding:0}article.lesson-body table{border-collapse:collapse;width:100%;margin:14px 0}article.lesson-body th,article.lesson-body td{border:1px solid var(--border);text-align:left;padding:8px 12px}article.lesson-body th{background:var(--panel-2)}article.lesson-body ul,article.lesson-body ol{padding-left:22px}.objectives{background:var(--panel-2);border:1px dashed var(--border);border-radius:8px;margin:12px 0;padding:12px 16px;font-size:14px}.objectives ul{margin:6px 0 0;padding-left:20px}.quiz-box{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-top:28px;padding:20px}.quiz-box h2{margin-top:0;font-size:20px}.q-item{border-top:1px solid var(--border);padding:14px 0}.q-prompt{margin-bottom:10px;font-weight:600}.opt{border:1px solid var(--border);cursor:pointer;border-radius:8px;margin:6px 0;padding:8px 12px;display:block}.opt:hover{border-color:var(--accent)}.opt.correct{border-color:var(--green);background:#2ea04322}.opt.wrong{border-color:var(--red);background:#f8514922}.opt input{margin-right:8px}.q-feedback{margin-top:8px;font-size:14px;display:none}.q-feedback.ok{color:var(--green);display:block}.q-feedback.bad{color:var(--red);display:block}.q-feedback .explain{color:var(--muted)}.quiz-result{text-align:center;padding:10px;font-size:18px;font-weight:700;display:none}.quiz-actions{margin-top:14px}.btn{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:9px 18px;font-size:15px;font-weight:600}.btn:hover{filter:brightness(1.1)}.flashcard{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;place-items:center;min-height:120px;padding:26px;display:grid}.flashcard .back{color:var(--accent);display:none}.flashcard.flipped .back{display:block}.flashcard.flipped .front{display:none}.flash-nav{justify-content:center;align-items:center;gap:10px;margin-top:16px;display:flex}.progress-bar{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;height:10px;margin:8px 0 16px;overflow:hidden}.progress-bar>div{background:linear-gradient(90deg, var(--green), var(--accent));width:0;height:100%;transition:width .3s}.gtile{background:var(--panel);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin:12px 0;padding:16px;display:flex}.gtile b{color:var(--yellow)}.badge-row{flex-wrap:wrap;gap:10px;margin:10px 0;display:flex}.badge{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);border-radius:24px;padding:5px 14px;font-size:13px}.badge.earned{border-color:var(--green);color:var(--green)}a.back-link{color:var(--muted);font-size:14px;text-decoration:none}a.back-link:hover{color:var(--text)}@media (width<=640px){.site-header{flex-direction:column;gap:8px}.lesson-row{flex-direction:column;align-items:flex-start}}
