: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}.layout>.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}.floating-playground-layer{z-index:1000;pointer-events:none;position:fixed;inset:0}.floating-playground-window{pointer-events:auto;background:#111015;border:1px solid #46414f;border-radius:11px;grid-template-rows:38px minmax(0,1fr);min-width:min(720px,100vw - 16px);min-height:min(480px,100vh - 16px);display:grid;position:absolute;overflow:hidden;box-shadow:0 24px 80px #00000094,0 0 0 1px #7c5cff14}.floating-playground-titlebar{color:#dcd9e2;cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;background:#1b1a20;border-bottom:1px solid #34313a;align-items:center;gap:8px;padding:0 7px 0 10px;display:flex}.floating-playground-titlebar strong{font-size:11px}.floating-playground-mark{color:#111015;background:#f7df1e;border-radius:4px;place-items:end;width:22px;height:22px;padding:2px;font-size:8px;font-weight:900;display:grid}.floating-playground-hint{color:#77727f;flex:1;font-size:9px}.floating-playground-titlebar kbd{color:#827d8a;font:9px var(--mono)}.floating-playground-opacity{color:#8d8895;cursor:default;align-items:center;gap:5px;font-size:9px;display:flex}.floating-playground-opacity input{accent-color:#7c5cff;cursor:ew-resize;width:76px;height:3px}.floating-playground-opacity output{color:#aaa5b1;width:28px;font:8px var(--mono);text-align:right}.floating-playground-titlebar button{color:#918c99;width:26px;height:26px;font:17px var(--sans);cursor:pointer;background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.floating-playground-titlebar button:hover{color:#fff;background:#e34c55}.floating-playground-content{min-width:0;min-height:0;overflow:hidden}.floating-playground-loading{z-index:1000;border:1px solid var(--border);color:#b8b4c0;background:#1b1a20;border-radius:9px;padding:12px 16px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.floating-resize-handle{z-index:5;touch-action:none;position:absolute}.floating-resize-handle.n,.floating-resize-handle.s{cursor:ns-resize;height:7px;left:8px;right:8px}.floating-resize-handle.n{top:0}.floating-resize-handle.s{bottom:0}.floating-resize-handle.e,.floating-resize-handle.w{cursor:ew-resize;width:7px;top:8px;bottom:8px}.floating-resize-handle.e{right:0}.floating-resize-handle.w{left:0}.floating-resize-handle.ne,.floating-resize-handle.se,.floating-resize-handle.sw,.floating-resize-handle.nw{width:13px;height:13px}.floating-resize-handle.ne{cursor:nesw-resize;top:0;right:0}.floating-resize-handle.se{cursor:nwse-resize;bottom:0;right:0}.floating-resize-handle.sw{cursor:nesw-resize;bottom:0;left:0}.floating-resize-handle.nw{cursor:nwse-resize;top:0;left:0}.pg-window-interacting,.pg-window-interacting *{-webkit-user-select:none!important;user-select:none!important}.full-playground{--pg-panel:#18171d;--pg-panel-soft:#201f26;--pg-border:#34323c;--pg-text:#eceaf1;--pg-muted:#96929f;min-height:100svh;color:var(--pg-text);background:#111015;grid-template-rows:auto auto minmax(360px,1fr) minmax(120px,auto);font-size:13px;display:grid}.full-playground.embedded{grid-template-rows:auto minmax(0,1fr) minmax(100px,150px);height:100%;min-height:0}.full-playground.embedded .pg-toolbar{padding-inline:10px}.pg-run-embedded{padding:6px 10px;font-size:10px}.pg-header,.pg-toolbar,.pg-panel-tab,.pg-output-tabs,.pg-problems-title{align-items:center;display:flex}.pg-header{border-bottom:1px solid var(--pg-border);background:#16151b;gap:14px;min-height:64px;padding:9px 16px}.pg-back,.pg-tool-button,.pg-output-tabs button,.pg-clear{color:inherit;font:inherit;cursor:pointer;border:0}.pg-back{border:1px solid var(--pg-border);background:var(--pg-panel-soft);width:36px;height:36px;color:var(--pg-muted);border-radius:9px;font-size:19px}.pg-back:hover,.pg-tool-button:hover{color:#fff;border-color:#575260}.pg-brand{align-items:center;gap:10px;display:flex}.pg-brand>span:last-child{flex-direction:column;line-height:1.3;display:flex}.pg-brand strong{letter-spacing:-.01em;font-size:15px}.pg-brand small{color:var(--pg-muted);font-size:10px}.pg-logo{color:#111015;background:#f7df1e;border-radius:7px;place-items:end;width:35px;height:35px;padding:4px;font-weight:900;line-height:1;display:grid}.pg-header-actions{align-items:center;gap:12px;margin-left:auto;display:flex}.pg-check{color:#68d391;font-size:12px}.pg-check:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block;box-shadow:0 0 8px}.pg-check.bad{color:#ff6b72}.pg-run{color:#fff;font:inherit;cursor:pointer;background:#7c5cff;border:0;border-radius:8px;align-items:center;gap:10px;padding:9px 13px;font-weight:750;transition:background .15s,transform .15s;display:inline-flex}.pg-run:hover{background:#8b70ff;transform:translateY(-1px)}.pg-run:disabled,.pg-tool-button:disabled{opacity:.42;cursor:not-allowed;transform:none}.pg-run kbd{color:#ffffffb8;font:10px var(--mono);border:1px solid #ffffff38;border-radius:4px;padding:1px 5px}.pg-toolbar{border-bottom:1px solid var(--pg-border);background:#19181e;gap:12px;min-height:48px;padding:6px 16px}.pg-language{border:1px solid var(--pg-border);background:#111015;border-radius:8px;padding:3px;display:flex}.pg-language button{color:var(--pg-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;padding:5px 10px;font-size:11px}.pg-language button.active{color:#fff;background:#2a2931}.pg-language button.active.js:before,.pg-language button.active.ts:before{content:"";background:#f7df1e;border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.pg-language button.active.ts:before{background:#4d9cdb}.pg-strict,.pg-select-label{color:var(--pg-muted);white-space:nowrap;align-items:center;gap:7px;font-size:11px;display:flex}.pg-strict input{accent-color:#7c5cff}.pg-separator{background:var(--pg-border);width:1px;height:22px}.pg-select-label select{border:1px solid var(--pg-border);color:var(--pg-text);font:inherit;background:#222127;border-radius:6px;outline:none;padding:5px 26px 5px 8px;font-size:11px}.pg-toolbar-spacer,.pg-output-tabs>span{flex:1}.pg-tool-button{border:1px solid var(--pg-border);color:var(--pg-muted);background:0 0;border-radius:6px;padding:6px 9px;font-size:11px}.pg-tool-button.primary{color:#dcd5ff;background:#7c5cff26;border-color:#7c5cffa6}.pg-tool-button kbd{color:#8d8797;font:9px var(--mono);margin-left:4px}.pg-save-state{color:#68d391;white-space:nowrap;font-size:10px}.pg-save-state.dirty{color:#eab308}.pg-workspace{grid-template-columns:220px minmax(360px,1.2fr) minmax(300px,.8fr);min-height:0;display:grid}.pg-workspace.explorer-hidden{grid-template-columns:minmax(360px,1.2fr) minmax(300px,.8fr)}.pg-explorer{border-right:1px solid var(--pg-border);background:#18171c;flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.pg-explorer-header{color:#aaa6b1;border-bottom:1px solid #29272f;align-items:center;gap:3px;min-height:39px;padding:0 8px 0 12px;display:flex}.pg-explorer-header strong{letter-spacing:.11em;text-transform:uppercase;font-size:9px;font-weight:750}.pg-explorer-header>span{flex:1}.pg-explorer-header button{color:#8c8794;width:25px;height:25px;font:13px var(--mono);cursor:pointer;background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.pg-explorer-header button:hover{color:#fff;background:#2a2830}.pg-project-title{color:#d0ccd5;letter-spacing:.05em;align-items:center;gap:6px;min-height:30px;padding:0 9px;font-size:9px;font-weight:800;display:flex}.pg-project-title span{color:#77727f;font-size:13px}.pg-tree{flex:1;min-height:0;padding-bottom:8px;overflow:auto}.pg-tree-row{color:#aaa6b1;width:100%;height:27px;font:11px var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 8px;display:flex;overflow:hidden}.pg-tree-row:hover,.pg-tree-row.selected{color:#e1dee6;background:#242229}.pg-tree-row.active{color:#fff;background:#2b2835}.pg-tree-row>span:nth-last-child(2),.pg-tree-row>span:last-child:not(.pg-file-dirty){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pg-tree-arrow{color:#797481;flex:none;width:10px;font-size:14px}.pg-folder-icon{color:#9b7cff;flex:none;font-size:8px}.pg-file-icon{color:#8d8795;width:18px;font:8px var(--mono);text-align:center;flex:none;font-weight:850}.pg-file-icon.ext-ts,.pg-file-icon.ext-tsx{color:#4d9cdb}.pg-file-icon.ext-js,.pg-file-icon.ext-jsx{color:#f7df1e}.pg-file-icon.ext-json{color:#eab308}.pg-file-dirty{color:#d9b7ff;margin-left:auto;font-size:7px}.pg-tree-rename-row{background:#242229}.pg-tree-rename-row input{color:#f0edf4;min-width:0;font:10px var(--mono);background:#111015;border:1px solid #7c5cff;border-radius:3px;outline:0;flex:1;padding:3px 5px}.pg-tree-rename-error{color:#ff747b;white-space:nowrap;font-size:8px}.pg-file-menu{z-index:1000;background:#222027;border:1px solid #403c49;border-radius:7px;gap:3px;width:164px;padding:5px;display:grid;position:fixed;box-shadow:0 12px 30px #0000006b}.pg-file-menu button{color:#d7d3dc;width:100%;font:10px var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:space-between;align-items:center;padding:7px 8px;display:flex}.pg-file-menu button:hover{background:#302d37}.pg-file-menu button.danger{color:#ff7d84}.pg-file-menu kbd{color:#77717f;font:8px var(--mono)}.pg-file-menu p{color:#cbc7d1;margin:3px 5px 5px;font-size:10px}.pg-file-menu-confirm{gap:3px;display:flex}.pg-file-menu-confirm button{justify-content:center}.pg-file-menu-error{color:#ff747b;padding:3px 5px;font-size:9px}.pg-create-box{background:#201e25;border-block:1px solid #2d2a34;grid-template-columns:1fr auto auto;gap:5px;padding:7px 8px;display:grid}.pg-create-box label{color:#837e8a;grid-column:1/-1;font-size:9px}.pg-create-box input{color:#ece9f0;width:100%;font:10px var(--mono);background:#151419;border:1px solid #6551bd;border-radius:4px;outline:0;margin-top:4px;padding:5px 7px}.pg-create-box button{color:#b5b0bb;cursor:pointer;background:#28262d;border:1px solid #393641;border-radius:4px;padding:4px 7px;font-size:9px}.pg-create-box>span{color:#ff6b72;grid-column:1/-1;font-size:9px}.pg-explorer-help{color:#625e69;border-top:1px solid #29272f;padding:7px 10px;font-size:9px}.pg-editor-panel,.pg-output-panel{background:var(--pg-panel);flex-direction:column;min-width:0;min-height:0;display:flex}.pg-editor-panel{border-right:1px solid var(--pg-border)}.pg-panel-tab,.pg-output-tabs{border-bottom:1px solid var(--pg-border);background:#1d1c22;min-height:39px}.pg-panel-tab{border-right:1px solid var(--pg-border);color:#d3d0d9;width:max-content;min-width:230px;font-family:var(--mono);gap:8px;padding:0 13px;font-size:11px}.pg-explorer-restore{border:0;border-right:1px solid var(--pg-border);color:#9b96a3;font:10px var(--sans);cursor:pointer;background:#242229;align-self:stretch;margin:0 5px 0 -13px;padding:0 9px}.pg-explorer-restore:hover{color:#fff}.ts-dot,.js-dot{color:#4d9cdb;font-size:9px;font-weight:850}.js-dot{color:#f7df1e}.pg-dirty{color:#777380;font:9px var(--sans);margin-left:auto}.pg-code-editor{background:#17161b;flex:1;min-height:320px;position:relative;overflow:hidden}.pg-editor-loading{color:#77727f;place-items:center;height:100%;font-size:11px;display:grid}.pg-editor-status{color:#77727f;min-height:22px;font:9px var(--mono);background:#1d1b22;border-top:1px solid #29272f;justify-content:flex-end;align-items:center;gap:15px;padding:0 9px;display:flex}.pg-output-tabs{gap:2px;padding:0 8px}.pg-output-tabs button{color:var(--pg-muted);background:0 0;align-self:stretch;padding:0 10px;font-size:11px;position:relative}.pg-output-tabs button.active{color:#fff}.pg-output-tabs button.active:after{content:"";background:#7c5cff;height:2px;position:absolute;bottom:-1px;left:9px;right:9px}.pg-output-tabs button span{color:#c8c4cf;background:#34313d;border-radius:8px;margin-left:6px;padding:1px 5px;font-size:9px}.pg-output-tabs .pg-clear{color:#777380;align-self:center;padding:4px 8px}.pg-console,.pg-compiled{background:#141318;flex:1;min-height:0;margin:0;overflow:auto}.pg-console-row{border-bottom:1px solid #242229;grid-template-columns:24px minmax(0,1fr);gap:7px;padding:9px 12px;display:grid}.pg-console-row pre{overflow-wrap:anywhere;color:#dbd8e1;font:12px/1.55 var(--mono);white-space:pre-wrap;margin:0}.pg-console-icon{color:#b5b1bc;width:17px;height:17px;font:11px var(--mono);background:#34313c;border-radius:50%;place-items:center;margin-top:1px;display:grid}.pg-console-row.warn{background:#eab3080f}.pg-console-row.warn .pg-console-icon{color:#171308;background:#eab308}.pg-console-row.error{background:#ff4a5414}.pg-console-row.error .pg-console-icon{color:#fff;background:#e34c55}.pg-console-row.system pre{color:#777380}.pg-console-row.system .pg-console-icon{color:#68d391;background:#48bb7826}.pg-empty{color:#625e6b;text-align:center;place-content:center;justify-items:center;height:100%;min-height:260px;display:grid}.pg-empty>span{color:#817b8b;font:25px var(--mono);margin-bottom:13px}.pg-empty strong{color:#8e8996;font-size:12px}.pg-empty p{margin:4px 0 0;font-size:10px}.pg-compiled{color:#c7c3ce;font:12px/1.7 var(--mono);white-space:pre;padding:15px 17px}.pg-diagnostics{border-top:1px solid var(--pg-border);background:#17161b;min-height:120px;max-height:230px;overflow:hidden}.pg-problems-title{border-bottom:1px solid var(--pg-border);color:#898592;gap:14px;min-height:37px;padding:0 16px;font-size:10px}.pg-problems-title strong{color:#d5d2db;font-size:11px}.pg-problems-title .bad{color:#ff6b72}.pg-security{margin-left:auto}.pg-problems-list{max-height:192px;padding:5px 0;overflow:auto}.pg-problem{color:#b8b4c0;width:100%;font:11px/1.45 var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:20px 46px minmax(0,1fr);gap:6px;padding:6px 16px;display:grid}.pg-problem:hover{background:#222027}.pg-problem>span:first-child{color:#ff626b;font-size:15px;line-height:1}.pg-problem.warning>span:first-child{color:#eab308}.pg-problem strong{color:#827d8b;font:10px var(--mono)}.pg-no-problems{color:#68d391;padding:13px 16px;font-size:11px}@media (width<=820px){.floating-playground-hint,.floating-playground-opacity>span,.floating-playground-titlebar kbd{display:none}.floating-playground-opacity input{width:54px}.full-playground{min-height:100svh;display:block}.pg-brand small,.pg-check,.pg-run kbd,.pg-security,.pg-separator{display:none}.pg-toolbar{overflow-x:auto}.pg-toolbar-spacer{min-width:8px}.pg-workspace,.pg-workspace.explorer-hidden{grid-template-columns:1fr}.pg-explorer-restore span{display:none}.pg-explorer{border-right:0;border-bottom:1px solid var(--pg-border);height:230px}.pg-editor-panel{border-right:0;border-bottom:1px solid var(--pg-border);height:52svh}.pg-output-panel{height:38svh}.pg-diagnostics{max-height:260px}}@media (width<=520px){.pg-header{gap:8px;padding-inline:10px}.pg-brand>span:last-child,.pg-strict,.pg-select-label>:first-child{display:none}.pg-toolbar{gap:7px;padding-inline:10px}.pg-problems-title{padding-inline:10px}}::-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}
