:root{--text:#4b4453;--text-h:#0d0a12;--text-dim:#7a7285;--bg:#faf9fc;--bg-card:#fff;--border:#e8e5ee;--accent:#aa3bff;--accent-strong:#8a1fe0;--accent-bg:#aa3bff17;--accent-border:#aa3bff73;--code-bg:#15121d;--code-text:#e8e6f0;--code-keyword:#c792ea;--code-string:#a5e844;--code-fn:#82aaff;--code-var:#ffcb6b;--ok:#1f9d55;--err:#e5484d;--shadow-sm:0 1px 2px #0000000d, 0 4px 12px -6px #00000014;--shadow-md:0 2px 4px #0000000d, 0 16px 40px -16px #00000038;--sans:system-ui, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;font:16px/1.75 var(--sans);color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#b4adc2;--text-h:#f3f0f8;--text-dim:#8b839b;--bg:#100e15;--bg-card:#191522;--border:#2c2737;--accent:#c084fc;--accent-strong:#d9a6ff;--accent-bg:#c084fc24;--accent-border:#c084fc80;--shadow-sm:0 1px 2px #00000059, 0 6px 16px -8px #00000080;--shadow-md:0 2px 4px #0006, 0 20px 50px -20px #000000b3}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0}::selection{background:#aa3bff47}#root{min-height:100svh}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(720px 420px at 88% -10%,#aa3bff24,#0000 60%),radial-gradient(620px 400px at -10% 22%,#3b82f61f,#0000 60%),radial-gradient(700px 500px at 55% 110%,#f43f5e1a,#0000 60%);position:fixed;inset:0}h1,h2,h3{color:var(--text-h);letter-spacing:-.02em;font-weight:650;line-height:1.3}h1{font-size:34px}h2{font-size:22px}h3{font-size:17px}p{margin:0 0 12px}a{color:var(--accent)}code{font-family:var(--mono);background:var(--accent-bg);border:1px solid var(--accent-border);color:var(--text-h);border-radius:6px;padding:1px 6px;font-size:.86em}.layout{grid-template-columns:272px 1fr;min-height:100svh;display:grid}@media (width<=900px){.layout{grid-template-columns:1fr}}.home{max-width:960px;margin:0 auto;padding:48px 24px 60px}.home-hero{text-align:center;margin-bottom:40px}.home-hero h1{background:linear-gradient(120deg, var(--accent), #ff5e7e);-webkit-text-fill-color:transparent;color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 10px;font-size:40px}.home-hero p{color:var(--text-dim);margin:0;font-size:15px}.course-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px;display:grid}.course-card{border:1px solid var(--border);background:var(--bg-card);box-shadow:var(--shadow-sm);text-align:left;font:inherit;color:var(--text);cursor:pointer;border-radius:18px;align-items:center;gap:15px;padding:20px;transition:transform .2s,box-shadow .2s,border-color .2s;animation:.5s both fadeUp;display:flex}.course-card:hover{box-shadow:var(--shadow-md);border-color:color-mix(in srgb, var(--c,var(--accent)) 55%, transparent);transform:translateY(-3px)}.course-card .cc-logo{width:56px;height:56px;box-shadow:0 6px 16px -6px color-mix(in srgb, var(--c,var(--accent)) 65%, transparent);border-radius:16px;flex:none;place-items:center;font-size:27px;display:grid}.course-card .cc-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.course-card .cc-title{color:var(--text-h);font-size:16px;font-weight:750}.course-card .cc-sub{color:var(--text-dim);font-size:12.5px}.course-card .cc-meta{color:var(--c,var(--accent-strong));margin-top:5px;font-size:11.5px;font-weight:700}.course-card .cc-progress{align-items:center;gap:8px;margin-top:7px;display:flex}.course-card .cc-track{background:var(--border);border-radius:99px;flex:1;height:6px;overflow:hidden}.course-card .cc-fill{background:linear-gradient(90deg, var(--c,var(--accent)), #ff5e7e);border-radius:99px;height:100%;transition:width .3s;display:block}.course-card .cc-pct{font-family:var(--mono);color:var(--text-dim);font-size:11.5px}.course-card .cc-arrow{color:var(--text-dim);opacity:0;transition:opacity .2s,transform .2s;transform:translate(-6px)}.course-card:hover .cc-arrow{opacity:1;transform:translate(0)}.sidebar{border-right:1px solid var(--border);background:color-mix(in srgb, var(--bg-card) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-direction:column;height:100svh;padding:22px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-title{color:var(--text-h);align-items:center;gap:11px;padding:0 8px 16px;font-size:17px;font-weight:800;display:flex}.sidebar-title .logo{background:linear-gradient(135deg,#8a1fe0,#ff5e7e);border-radius:12px;flex:none;place-items:center;width:38px;height:38px;font-size:19px;display:grid;box-shadow:0 6px 16px -6px #8a1fe099}.back-home{border:1px solid var(--border);color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border-radius:10px;align-self:flex-start;align-items:center;gap:6px;margin:0 4px 14px;padding:6px 12px;font-size:12.5px;font-weight:650;transition:background .18s,color .18s,border-color .18s,transform .18s;display:inline-flex}.back-home:hover{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent-strong);transform:translate(-2px)}.chapter-nav{flex:1}.chapter-link{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;align-items:center;gap:11px;margin-bottom:4px;padding:10px 11px;font-size:13.5px;transition:background .18s,border-color .18s,transform .18s,box-shadow .18s;display:flex;position:relative}.chapter-link:hover{background:var(--accent-bg);transform:translate(2px)}.chapter-link.active{background:var(--accent-bg);border-color:var(--accent-border);box-shadow:var(--shadow-sm)}.chapter-link .icon{background:var(--border);border-radius:10px;flex:none;place-items:center;width:34px;height:34px;font-size:17px;transition:transform .2s;display:grid}.chapter-link:hover .icon{transform:scale(1.08)rotate(-6deg)}.chapter-link.active .icon{background:color-mix(in srgb, var(--c,var(--accent)) 22%, transparent)}.chapter-link .txt strong{color:var(--text-h);font-size:13.5px;transition:color .15s;display:block}.chapter-link.active .txt strong{color:var(--c,var(--accent-strong))}.chapter-link .txt .sub{opacity:.65;margin-top:1px;font-size:11.5px;line-height:1.4;display:block}.chapter-link .dot{background:var(--c,var(--accent));width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--c,var(--accent)) 30%, transparent);border-radius:50%;animation:1.6s ease-in-out infinite pulse;position:absolute;right:10px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.progress{border:1px solid var(--border);background:var(--bg-card);box-shadow:var(--shadow-sm);border-radius:14px;margin:14px 8px 0;padding:14px 14px 4px}.progress .head{color:var(--text-h);justify-content:space-between;align-items:baseline;font-size:12.5px;font-weight:700;display:flex}.progress .pct{font-family:var(--mono);color:var(--accent-strong)}.progress .track{background:var(--border);border-radius:99px;height:8px;margin-top:8px;overflow:hidden}.progress .fill{background:linear-gradient(90deg, var(--accent), #ff5e7e);background-size:200% 100%;border-radius:99px;height:100%;transition:width .35s;animation:2.5s linear infinite shine}@keyframes shine{0%{background-position:0 0}to{background-position:200% 0}}.progress .label{color:var(--text-dim);margin-top:8px;font-size:11.5px}.main{width:100%;max-width:880px;margin:0 auto;padding:36px 28px 60px}.hero{border:1px solid var(--border);background:var(--bg-card);box-shadow:var(--shadow-md);border-radius:20px;align-items:center;gap:20px;padding:26px 28px;animation:.5s both fadeUp;display:flex;position:relative;overflow:hidden}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.hero .hero-glow{aspect-ratio:1;filter:blur(70px);opacity:.22;pointer-events:none;border-radius:50%;width:60%;position:absolute;top:-60%;right:-10%}.hero-icon{border:1px solid var(--border);width:74px;height:74px;box-shadow:var(--shadow-sm);border-radius:20px;flex:none;place-items:center;font-size:36px;animation:3.4s ease-in-out infinite float;display:grid}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.hero-body{z-index:1;flex:1;position:relative}.hero-body .tag{letter-spacing:.06em;text-transform:uppercase;background:var(--accent-bg);color:var(--accent-strong);border:1px solid var(--accent-border);border-radius:99px;margin-bottom:10px;padding:3px 11px;font-size:11.5px;font-weight:700;display:inline-block}.hero-body h1{background:linear-gradient(120deg, var(--c,var(--accent)), #ff5e7e);-webkit-text-fill-color:transparent;color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 6px;font-size:36px}.hero-body p{margin:0;font-size:15.5px}.hero .hero-num{font-family:var(--mono);color:var(--border);opacity:.55;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:88px;font-weight:800;line-height:1;position:absolute;bottom:-18px;right:14px}.loading{text-align:center;color:var(--text-dim);padding:48px;animation:1.4s ease-in-out infinite pulse}.section{margin-top:34px;scroll-margin-top:24px;animation:.5s 80ms both fadeUp}.section>h3{align-items:center;gap:10px;margin-bottom:10px;display:flex}.section>h3:after{content:"";background:linear-gradient(90deg, var(--border), transparent);flex:1;height:1px}.demo{margin:16px 0}.api-wrap{display:block}.api-body{min-width:0}.api-toc{z-index:50;border:1px solid var(--border);background:color-mix(in srgb, var(--bg-card) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:168px;max-height:calc(100svh - 48px);box-shadow:var(--shadow-sm);border-radius:16px;padding:14px;position:fixed;top:50%;right:20px;overflow-y:auto;transform:translateY(-50%)}.api-toc .toc-title{letter-spacing:.14em;text-transform:uppercase;color:var(--accent-strong);border-bottom:1px solid var(--border);padding:0 4px 9px;font-size:11px;font-weight:800;display:block}.api-toc .toc-group{margin-top:11px}.api-toc .toc-group-name{letter-spacing:.08em;color:var(--text-dim);padding:0 6px 3px;font-size:10.5px;font-weight:700;display:block}.api-toc .toc-link{font-family:var(--mono);color:var(--text);white-space:nowrap;text-overflow:ellipsis;border-radius:7px;padding:3px 6px;font-size:11.5px;text-decoration:none;transition:background .15s,color .15s,transform .15s;display:block;overflow:hidden}.api-toc .toc-link:hover{background:var(--accent-bg);color:var(--accent-strong);transform:translate(2px)}@media (width<=1080px){.api-toc{width:auto;max-height:none;margin-bottom:8px;position:static;transform:none}.api-toc .toc-group{margin:6px 6px 0 0;display:inline-block}.api-toc .toc-group-name{display:none}.api-toc .toc-link{border:1px solid var(--border);background:var(--bg-card);border-radius:99px;margin:2px;padding:3px 8px;font-size:11px;display:inline-block}}.card{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:16px;padding:18px 20px;transition:box-shadow .2s,border-color .2s}.card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md)}.callout{background:var(--accent-bg);border:1px solid var(--accent-border);border-left:4px solid var(--accent);border-radius:14px;gap:12px;margin:18px 0;padding:14px 16px;font-size:14.5px;display:flex}.callout .icon{flex:none;font-size:18px}.callout strong{color:var(--text-h)}.callout.tip{border-color:#1f9d5566;border-left-color:var(--ok);background:#1f9d551a}.callout.warn{border-color:#e5484d66;border-left-color:var(--err);background:#e5484d1a}.code-block{background:var(--code-bg);box-shadow:var(--shadow-md);border:1px solid #ffffff14;border-radius:14px;margin:16px 0;position:relative;overflow:hidden}.code-block .bar{background:linear-gradient(90deg,#8a1fe059,#ff5e7e47);border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:9px 14px;display:flex}.code-block .bar .name{color:#fffc;font-size:12px;font-family:var(--mono);letter-spacing:.04em}.code-block pre{font-family:var(--mono);color:var(--code-text);margin:0;padding:16px 18px;font-size:13.5px;line-height:1.7;overflow-x:auto}.copy-btn{color:#ffffffd9;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff38;border-radius:7px;padding:4px 11px;font-size:12px;transition:background .15s,transform .15s}.copy-btn:hover{background:#ffffff38;transform:translateY(-1px)}.tok-kw{color:var(--code-keyword)}.tok-fn{color:var(--code-fn)}.tok-str{color:var(--code-string)}.tok-var{color:var(--code-var)}.tok-com{color:#ffffff59;font-style:italic}.tok-tag{color:#f07178}.tok-jsx{color:#ffd580}.playground{border:1px solid var(--border);box-shadow:var(--shadow-md);background:var(--bg-card);border-radius:16px;margin:20px 0;overflow:hidden}.playground .tabs{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg-card) 96%, var(--accent) 4%);align-items:center;gap:4px;padding:9px 12px;display:flex}.playground .tabs .tab{color:var(--text-dim);font:inherit;cursor:default;background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:5px 12px;font-size:13px;font-weight:600;display:inline-flex}.playground .tabs .tab.active{background:var(--accent-bg);color:var(--accent-strong)}.playground .tabs .spacer{flex:1}.playground .tabs .run{background:linear-gradient(120deg, var(--accent), #ff5e7e);color:#fff;font:inherit;cursor:pointer;border:none;border-radius:9px;padding:7px 18px;font-size:13px;font-weight:700;transition:transform .15s,filter .15s,box-shadow .15s;box-shadow:0 6px 16px -6px #aa3bff8c}.playground .tabs .run:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 10px 22px -8px #aa3bffa6}.playground .tabs .run:active{transform:translateY(0)}.playground .editor{grid-template-columns:1fr 1fr;min-height:280px;display:grid}@media (width<=720px){.playground .editor{grid-template-columns:1fr}}.playground textarea{resize:vertical;background:var(--code-bg);width:100%;min-height:280px;color:var(--code-text);font-family:var(--mono);tab-size:2;caret-color:var(--accent);border:none;outline:none;padding:14px 16px;font-size:13px;line-height:1.7}.playground .preview{border-left:1px solid var(--border);background:radial-gradient(360px 220px at 100% 0%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 70%), var(--bg-card);flex-direction:column;gap:12px;padding:18px 20px;display:flex}.playground .preview .p-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);font-size:11px;font-weight:700}.playground .preview .out{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;display:flex}.playground .error{color:#ff8a8d;font-family:var(--mono);white-space:pre-wrap;background:#e5484d1f;border:1px solid #e5484d73;border-radius:10px;padding:10px 12px;font-size:12.5px}.playground .hint{color:var(--text-dim);border-top:1px dashed var(--border);padding:9px 14px;font-size:12.5px}.ts-playground .tabs .ts-status{font:inherit;color:var(--text-dim);background:0 0;border-radius:8px;align-items:center;gap:6px;padding:5px 12px;font-size:12px;font-weight:650;display:inline-flex}.ts-playground .tabs .ts-status.ok{color:var(--ok);background:color-mix(in srgb, var(--ok) 12%, transparent)}.ts-playground .tabs .ts-status.bad{color:var(--err);background:color-mix(in srgb, var(--err) 14%, transparent)}.ts-playground .tabs .run{background:linear-gradient(120deg,#3178c6,#7aa2ff);box-shadow:0 6px 16px -6px #3178c68c}.ts-playground .tabs .run:hover{box-shadow:0 10px 22px -8px #3178c6a6}.ts-playground .preview .out{justify-content:flex-start;align-items:stretch}.ts-playground .preview .ts-diags{flex-direction:column;gap:8px;width:100%;display:flex}.ts-diag{font-family:var(--mono);text-align:left;white-space:pre-wrap;border:1px solid;border-radius:10px;gap:10px;padding:8px 12px;font-size:12px;line-height:1.6;display:flex}.ts-diag.error{color:#ff8a8d;background:#e5484d1a;border-color:#e5484d73}.ts-diag.warning{color:#fbbf24;background:#f59e0b1a;border-color:#f59e0b66}.ts-diag.info{background:color-mix(in srgb, var(--accent) 10%, transparent);border-color:var(--accent-border);color:var(--accent-strong)}.ts-diag .loc{opacity:.6;flex:none;font-weight:700}.ts-more{color:var(--text-dim);text-align:center;padding:2px 0 6px;font-size:12px}.ts-empty{color:var(--text-dim);text-align:center;font-size:13px;font-family:var(--mono);padding:16px 0}.tw-playground .tabs .tw-widths{background:color-mix(in srgb, var(--border) 55%, transparent);border-radius:9px;gap:4px;padding:3px;display:inline-flex}.tw-playground .tabs .tw-widths button{color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;padding:4px 10px;font-size:12px;font-weight:650;transition:background .15s,color .15s}.tw-playground .tabs .tw-widths button.active{background:var(--bg-card);color:var(--text-h);box-shadow:var(--shadow-sm)}.tw-playground .tabs .tw-dark,.tw-playground .tabs .tw-reset{border:1px solid var(--border);color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border-radius:9px;padding:6px 11px;font-size:12px;font-weight:650;transition:background .15s,color .15s,border-color .15s}.tw-playground .tabs .tw-dark:hover,.tw-playground .tabs .tw-reset:hover{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent-strong)}.tw-playground .preview .out.tw-frame{background:radial-gradient(360px 220px at 100% 0%, #38bdf814, transparent 70%), color-mix(in srgb, var(--bg-card) 60%, #0f172a 40%);justify-content:flex-start;align-items:center;min-height:304px;padding:12px}.tw-playground .preview iframe{box-shadow:var(--shadow-md);transition:width .3s;display:block}button.btn{background:linear-gradient(120deg, var(--accent), color-mix(in srgb, var(--accent) 60%, #ff5e7e));color:#fff;font:inherit;cursor:pointer;border:none;border-radius:10px;padding:9px 18px;font-weight:650;transition:transform .15s,filter .15s,box-shadow .15s;box-shadow:0 6px 16px -8px #aa3bff99}button.btn:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 10px 24px -10px #aa3bffb3}button.btn:active{transform:translateY(0)}button.btn:disabled{opacity:.5;cursor:default;transform:none}.badge{background:linear-gradient(120deg, var(--accent-bg), color-mix(in srgb, var(--accent) 18%, transparent));color:var(--accent-strong);border:1px solid var(--accent-border);border-radius:99px;padding:3px 11px;font-size:12px;font-weight:700;display:inline-block}.quiz{margin-top:22px}.quiz .options{flex-direction:column;gap:9px;margin-top:12px;display:flex}.quiz .option{text-align:left;border:1px solid var(--border);background:var(--bg-card);color:var(--text-h);font:inherit;cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:11px 15px;font-size:14px;transition:border-color .15s,background .15s,transform .15s,box-shadow .15s;display:flex;position:relative}.quiz .option:before{content:attr(data-idx);width:24px;height:24px;font-size:12px;font-weight:700;font-family:var(--mono);background:var(--border);color:var(--text-dim);border-radius:7px;flex:none;place-items:center;transition:background .15s,color .15s;display:grid}.quiz .option:hover:not(:disabled){border-color:var(--accent-border);box-shadow:var(--shadow-sm);transform:translate(3px)}.quiz .option:hover:not(:disabled):before{background:var(--accent);color:#fff}.quiz .option.correct{border-color:var(--ok);box-shadow:var(--shadow-sm);background:#1f9d551f}.quiz .option.correct:before{background:var(--ok);color:#fff}.quiz .option.wrong{border-color:var(--err);background:#e5484d1f}.quiz .option.wrong:before{background:var(--err);color:#fff}.quiz .result{border-radius:10px;margin-top:12px;padding:10px 14px;font-size:14px;font-weight:700}.quiz .result.ok{color:var(--ok);background:#1f9d551a}.quiz .result.bad{color:var(--err);background:#e5484d1a}.quiz .result span{margin-top:3px;font-weight:400;display:block}.pager{justify-content:space-between;gap:12px;margin-top:48px;display:flex}.pager button{border:1px solid var(--border);background:var(--bg-card);color:var(--text-h);font:inherit;cursor:pointer;border-radius:12px;padding:11px 20px;font-size:14px;font-weight:650;transition:border-color .15s,transform .15s,box-shadow .15s,opacity .15s}.pager button:hover:not(:disabled){border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-2px)}.pager button:disabled{opacity:.4;cursor:default}.pager button.primary{background:linear-gradient(120deg, var(--accent), #ff5e7e);color:#fff;border-color:#0000;box-shadow:0 8px 20px -8px #aa3bff99}.pager button.primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 12px 28px -10px #aa3bffb3}.footer{border-top:1px dashed var(--border);color:var(--text-dim);text-align:center;margin-top:32px;padding-top:16px;font-size:12.5px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);background-clip:padding-box;border:3px solid #0000;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--accent);background-clip:padding-box}
