:root{--bg: #0f1419;--bg-elev: #171e26;--bg-side: #12181f;--line: #2a3542;--text: #e7edf4;--muted: #8b9aab;--accent: #3d9cf0;--accent-2: #5ee0a0;--warn: #f0b429;--danger: #f07178;--info: #7ab8ff;--code-bg: #0b1016;--shadow: 0 12px 40px rgba(0, 0, 0, .35);--radius: 12px;--side-w: 280px;--top-h: 56px;font-family:IBM Plex Sans,Noto Sans SC,sans-serif}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%;background:var(--bg);color:var(--text)}a{color:var(--accent);text-decoration:none}button,input{font-family:inherit}.shell{display:grid;grid-template-columns:var(--side-w) 1fr;grid-template-rows:var(--top-h) 1fr;min-height:100vh}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:16px;padding:0 20px;border-bottom:1px solid var(--line);background:#0c1116}.brand{color:var(--text);font-weight:700;letter-spacing:.02em;white-space:nowrap}.brand span{color:var(--accent-2)}.search-form{flex:1;display:flex;max-width:520px}.search-form input{flex:1;height:36px;border:1px solid var(--line);border-right:0;border-radius:8px 0 0 8px;background:var(--bg-elev);color:var(--text);padding:0 12px}.search-form button,.btn{height:36px;border:1px solid var(--line);background:var(--bg-elev);color:var(--text);border-radius:8px;padding:0 14px;cursor:pointer}.search-form button{border-radius:0 8px 8px 0}.btn-primary{background:var(--accent);border-color:var(--accent);color:#061018;font-weight:600}.btn-ghost{background:transparent}.top-links{margin-left:auto;display:flex;gap:14px;font-size:14px}.sidebar{border-right:1px solid var(--line);background:var(--bg-side);overflow:auto;padding:12px 10px 32px}.side-section{margin-bottom:8px}.side-mod{width:100%;text-align:left;background:transparent;border:0;color:var(--text);font-weight:600;font-size:13px;padding:8px 10px;cursor:pointer;border-radius:8px}.side-mod:hover,.side-link.router-link-active{background:#1d2732}.side-link{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px 6px 18px;color:var(--muted);font-size:13px;border-radius:8px}.side-link .dot{width:7px;height:7px;border-radius:50%;background:#3a4654;flex-shrink:0}.side-link.done .dot{background:var(--accent-2)}.main{overflow:auto;padding:28px 36px 64px}.wrap{max-width:860px}h1,h2,h3{line-height:1.25}h1{margin:0 0 8px;font-size:30px}.muted{color:var(--muted)}.hero{background:linear-gradient(135deg,#15202b,#1a2c22);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:var(--shadow)}.progress-bar{height:8px;background:#243040;border-radius:99px;overflow:hidden;margin:16px 0 8px}.progress-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.card h3{margin:0 0 6px;font-size:16px}.meta{font-size:12px;color:var(--muted)}.lesson h2{margin-top:28px;font-size:20px}.lesson p,.lesson li{line-height:1.7}.pre-wrap{position:relative;margin:14px 0}pre{margin:0;padding:14px 16px;background:var(--code-bg);border:1px solid var(--line);border-radius:10px;overflow:auto;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:13px;line-height:1.55}.copy-btn{position:absolute;top:8px;right:8px;height:28px;font-size:12px}.callout{border-radius:10px;padding:12px 14px;margin:14px 0;border:1px solid var(--line);line-height:1.6}.callout.info{background:#132033;border-color:#2b4d73}.callout.warn{background:#2a2414;border-color:#6a5420}.callout.danger{background:#2a1618;border-color:#6a3038}table{width:100%;border-collapse:collapse;margin:12px 0 18px;font-size:14px}th,td{border:1px solid var(--line);padding:8px 10px;text-align:left}th{background:#1a2430}.quiz-q{margin:0 0 18px;padding-bottom:16px;border-bottom:1px solid var(--line)}.opt{display:block;margin:8px 0;padding:8px 10px;border-radius:8px;border:1px solid var(--line);cursor:pointer}.opt.correct{border-color:var(--accent-2);background:#143326}.opt.wrong{border-color:var(--danger);background:#33181c}.explain{margin-top:8px;color:var(--muted);font-size:14px}.lab{margin-bottom:16px}.toast{color:var(--accent-2);font-size:14px;margin-left:10px}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:none}.grid{grid-template-columns:1fr}.main{padding:18px 16px 48px}}
