:root{--blue-50:#eff5ff;--blue-100:#dce8ff;--blue-200:#c0d6ff;--blue-300:#97b9ff;--blue-400:#6592ff;--blue-500:#3b6cf6;--blue-600:#2553e0;--blue-700:#1e43be;--blue-800:#1d3b99;--blue-900:#1d3679;--blue-950:#131f47;--teal-50:#ecfdf8;--teal-100:#cffaee;--teal-200:#9ff2df;--teal-300:#5fe3cb;--teal-400:#2dccb6;--teal-500:#0fae9b;--teal-600:#0a8a7d;--teal-700:#0c6e65;--teal-800:#0e5852;--teal-900:#0f4944;--teal-950:#022b29;--violet-100:#ece7fe;--violet-300:#c4b5fd;--violet-500:#8b5cf6;--violet-600:#7c5cf0;--violet-700:#5b3fc4;--slate-50:#f6f8fb;--slate-100:#eef1f6;--slate-200:#e2e7f0;--slate-300:#cbd3e1;--slate-400:#94a0b8;--slate-500:#647088;--slate-600:#475067;--slate-700:#333c52;--slate-800:#1f2840;--slate-900:#121a2b;--slate-950:#0b0f1a;--r-xs:6px;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-xl:18px;--r-2xl:24px;--r-3xl:32px;--r-full:9999px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--font-sans:"Noto Sans SC","Manrope",-apple-system,system-ui,"PingFang SC","Microsoft YaHei",sans-serif;--font-num:"Manrope","Noto Sans SC",system-ui,sans-serif;--font-mono:"JetBrains Mono","SFMono-Regular",ui-monospace,monospace;--t-display:44px;--t-display-lh:1.08;--t-h1:34px;--t-h1-lh:1.15;--t-h2:26px;--t-h2-lh:1.2;--t-h3:20px;--t-h3-lh:1.3;--t-body-lg:18px;--t-body-lg-lh:1.7;--t-body:16px;--t-body-lh:1.75;--t-sm:14px;--t-sm-lh:1.6;--t-xs:12px;--t-xs-lh:1.5;--code-bg:#0c1326;--code-surface:#0f1830;--code-border:#1d2a4a;--code-fg:#dce6ff;--code-dim:#6b7ba6;--code-line:#283860;--syn-key:#7aa2ff;--syn-str:#5fe3cb;--syn-fn:#c4b5fd;--syn-num:#ffb877;--syn-cmt:#5a6890;--easing:cubic-bezier(.22,.61,.36,1)}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-base:#f6f8fb;--bg-subtle:#eef1f6;--bg-grid:#0c13260a;--surface:#fff;--surface-2:#f7f9fc;--surface-3:#eef1f6;--surface-inset:#f1f4f9;--border:#e6e9f0;--border-strong:#d4d9e3;--border-hover:#c2cad8;--fg:#0c1322;--fg-muted:#51607a;--fg-subtle:#8d99ad;--fg-faint:#aab4c5;--primary:#3b6cf6;--primary-hover:#2553e0;--primary-active:#1e43be;--primary-fg:#fff;--primary-text:#2553e0;--primary-soft:#eaf1ff;--primary-soft-fg:#1e43be;--primary-ring:#3b6cf64d;--accent:#0a8a7d;--accent-text:#0a8a7d;--accent-soft:#d6f5ef;--accent-soft-fg:#0c6e65;--sale:#f4511e;--sale-soft:#ffece4;--sale-soft-fg:#e8420f;--trial:#7c5cf0;--trial-soft:#ece7fe;--trial-fg:#5b3fc4;--lock:#8d99ad;--lock-soft:#eef1f6;--shadow-xs:0 1px 2px #1018280d;--shadow-card:0 1px 2px #1018280a, 0 6px 16px #1018280f;--shadow-card-hover:0 2px 4px #1018280f, 0 16px 32px #1018281f;--shadow-pop:0 12px 36px #10182829;--shadow-focus:0 0 0 4px var(--primary-ring);--skel-base:#eef1f6;--skel-shine:#f7f9fc;--bg:var(--bg-base);--panel:var(--surface);--panel-soft:var(--surface-2);--text:var(--fg);--muted:var(--fg-muted);--line:var(--border);--success:#0fae9b;--warning:#f59e0b;--danger:#ef4d4f;--info:#0fae9b;--hero-bg:#070d1c;--hero-panel:#0f1830;--hero-line:#ffffff1f;--shadow-soft:var(--shadow-card)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-base:#0b0f1a;--bg-subtle:#0d1322;--bg-grid:#ffffff09;--surface:#121a2b;--surface-2:#0f1626;--surface-3:#172139;--surface-inset:#0d1322;--border:#1e2840;--border-strong:#2b3956;--border-hover:#3a4a6b;--fg:#e8edf7;--fg-muted:#9aa7c0;--fg-subtle:#647088;--fg-faint:#4a5670;--primary:#4f7dff;--primary-hover:#6b92ff;--primary-active:#87a7ff;--primary-fg:#fff;--primary-text:#87aaff;--primary-soft:#4f7dff24;--primary-soft-fg:#aec6ff;--primary-ring:#4f7dff57;--accent:#2dccb6;--accent-text:#3fe0c9;--accent-soft:#2dccb624;--accent-soft-fg:#7ff0dd;--sale:#ff7a4d;--sale-soft:#ff5a1f29;--sale-soft-fg:#ff7a4d;--trial:#a78bfa;--trial-soft:#8b5cf629;--trial-fg:#c9b8ff;--lock:#647088;--lock-soft:#ffffff0a;--shadow-xs:0 1px 2px #0006;--shadow-card:0 1px 2px #00000080, 0 8px 24px #0000005c;--shadow-card-hover:0 2px 6px #0000008c, 0 20px 44px #00000080;--shadow-pop:0 16px 48px #0009;--shadow-focus:0 0 0 4px var(--primary-ring);--skel-base:#172139;--skel-shine:#1e2a45;--bg:var(--bg-base);--panel:var(--surface);--panel-soft:var(--surface-2);--text:var(--fg);--muted:var(--fg-muted);--line:var(--border);--success:#2dccb6;--warning:#fbbf57;--danger:#ff6b6d;--info:#2dccb6;--hero-bg:#05070f;--hero-panel:#0b1220;--hero-line:#ffffff1a;--shadow-soft:var(--shadow-card)}*{box-sizing:border-box;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}html,body{min-height:100%;margin:0}body{background:var(--bg-base);color:var(--fg);font-family:var(--font-sans);font-variant-numeric:tabular-nums}a{color:inherit;text-decoration:none}button,input{font:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.font-num{font-family:var(--font-num);font-feature-settings:"tnum" 1, "ss01" 1}.font-mono{font-family:var(--font-mono)}.scroll-slim{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.scroll-slim::-webkit-scrollbar{width:8px;height:8px}.scroll-slim::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:9999px}.scroll-slim::-webkit-scrollbar-track{background:0 0}.theme-anim,.theme-anim *{transition:background-color .35s var(--easing), border-color .35s var(--easing), color .35s var(--easing), box-shadow .35s var(--easing), fill .35s var(--easing)}@keyframes skel-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skel{background:linear-gradient(90deg, var(--skel-base) 25%, var(--skel-shine) 37%, var(--skel-base) 63%);border-radius:var(--r-sm);background-size:200% 100%;animation:1.4s ease-in-out infinite skel-shimmer}@keyframes prog-fill{0%{width:0}}.prog-animate{animation:prog-fill 1s var(--easing) both}.bg-dotgrid{background-image:radial-gradient(var(--bg-grid) 1px, transparent 1px);background-size:22px 22px}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.skel,.prog-animate{animation:none}.theme-anim,.theme-anim *{transition:none}}.public-shell{background:radial-gradient(circle at 15% 20%, color-mix(in srgb, var(--primary) 9%, transparent), transparent 26%), var(--bg-base);min-height:100dvh;padding:12px}.topbar{background:color-mix(in srgb, var(--surface) 96%, transparent);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-card);z-index:10;justify-content:space-between;align-items:center;gap:24px;max-width:1440px;margin:0 auto;padding:12px 20px;display:flex;position:sticky;top:12px}.brand{color:var(--fg);white-space:nowrap;align-items:center;gap:10px;font-size:15px;font-weight:700;display:inline-flex}.brand-mark{background:var(--primary);border-radius:var(--r-md);color:#fff;font-family:var(--font-mono);letter-spacing:-.02em;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:800;display:inline-flex}.topbar-nav{flex-shrink:0;justify-content:center;align-items:center;gap:18px;display:flex}.topbar-nav a{border-radius:var(--r-md);color:var(--fg-muted);white-space:nowrap;transition:background .15s var(--easing), color .15s var(--easing);padding:7px 11px;font-size:14px;font-weight:500}.topbar-nav a:hover{background:var(--surface-3);color:var(--fg)}.topbar-search{flex:160px;min-width:0}.topbar-search input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);color:var(--fg);outline:none;width:100%;height:40px;padding:0 14px;transition:border-color .18s,box-shadow .18s}.topbar-search input::placeholder{color:var(--fg-faint)}.topbar-search input:focus{border-color:var(--primary);box-shadow:var(--shadow-focus)}.topbar-actions{white-space:nowrap;flex-shrink:0;align-items:center;gap:12px;display:flex}.topbar-actions>a{white-space:nowrap}.topbar-account{color:var(--fg-muted);align-items:center;gap:8px;font-size:13px;display:inline-flex}.topbar-account-email{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}@media (max-width:1180px){.topbar-account-email{display:none}}.hero{background:linear-gradient(#ffffff0a 1px, transparent 1px), linear-gradient(90deg, #ffffff0a 1px, transparent 1px), radial-gradient(circle at 70% 30%, #1677ff2e, transparent 28%), var(--hero-bg);color:#fff;background-size:72px 72px,72px 72px,auto,auto;border-radius:0 0 4px 4px;grid-template-columns:minmax(0,1fr) minmax(360px,500px);gap:48px;max-width:1440px;min-height:430px;margin:8px auto 0;padding:46px 76px 36px;display:grid;overflow:hidden}.hero-content{align-self:center}.eyebrow{color:var(--primary-text);letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:12.5px;font-weight:700}.hero h1{letter-spacing:0;text-wrap:balance;max-width:780px;margin:0;font-size:clamp(40px,4vw,52px);line-height:1.08}.hero-copy{color:#ffffffbd;max-width:680px;margin:20px 0 0;font-size:20px;line-height:1.6}.hero-actions{flex-wrap:wrap;gap:16px;margin-top:28px;display:flex}.hero-proof-row{flex-wrap:wrap;gap:12px;margin-top:30px;display:flex}.hero-proof-row span{color:#ffffffb8;background:#ffffff0d;border:1px solid #ffffff1f;border-radius:6px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:inline-flex}.code-window{border:1px solid var(--hero-line);background:#071827db;border-radius:14px;align-self:center;overflow:hidden;box-shadow:0 30px 80px #0000005c}.code-window-bar{border-bottom:1px solid var(--hero-line);color:#ffffffad;background:#ffffff0a;justify-content:space-between;align-items:center;padding:12px 16px;font-size:13px;display:flex}.code-window pre{margin:0;padding:14px 20px 6px;overflow:auto}.code-window code{color:#8ee8ff;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.65}.terminal-result{border-top:1px solid var(--hero-line);color:#ffffffb8;gap:8px;padding:14px 20px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px;display:grid}.terminal-result strong{color:#7bf2a8;font-weight:600}.course-section,.system-strip{max-width:1440px;margin:0 auto}.course-section{background:var(--bg);padding:28px 64px 36px}.section-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:26px;display:flex}.section-heading h2,.system-strip h2{margin:0}.section-heading p{color:var(--muted);margin:8px 0 0}.section-heading a{color:var(--primary);font-size:14px;font-weight:700}.course-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;display:grid}.course-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);transition:border-color .2s var(--easing), box-shadow .2s var(--easing), transform .2s var(--easing);flex-direction:column;display:flex;overflow:hidden}.course-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-card-hover);transform:translateY(-4px)}.course-cover{--cover-grad:linear-gradient(135deg, #2553e0, #0fae9b);background:radial-gradient(circle at 80% 14%, #ffffff47, transparent 56%), linear-gradient(#ffffff17 1px, transparent 1px), linear-gradient(90deg, #ffffff17 1px, transparent 1px), var(--cover-grad);color:#fff;background-size:auto,30px 30px,30px 30px,auto;grid-template-rows:auto 1fr auto;min-height:156px;padding:16px;display:grid;position:relative}.course-cover span{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:var(--r-xs);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;background:#ffffff2e;place-self:start;padding:4px 9px;font-size:10.5px;font-weight:700}.course-cover strong{font-family:var(--font-mono);letter-spacing:-.02em;place-self:center start;font-size:40px;font-weight:800}.course-cover small{color:#ffffffd1;align-self:end;font-size:13px;font-weight:600}.course-cover-blue{--cover-grad:linear-gradient(135deg, #2553e0, #0fae9b)}.course-cover-green{--cover-grad:linear-gradient(135deg, #0a8a7d, #0f4944)}.course-cover-cyan{--cover-grad:linear-gradient(135deg, #0fae9b, #2553e0)}.course-cover-violet{--cover-grad:linear-gradient(135deg, #7c5cf0, #2553e0)}.course-card-body{flex-direction:column;flex:1;gap:8px;padding:18px 20px 20px;display:flex}.course-card h3{margin:0;font-size:16.5px;font-weight:700;line-height:1.4}.course-card p{color:var(--fg-muted);margin:0;font-size:13.5px;line-height:1.6}.course-card small,.course-card-footer span{color:var(--fg-subtle);font-size:12px}.course-card-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:auto;padding-top:14px;display:flex}.course-card-footer strong{color:var(--fg);font-family:var(--font-num);font-size:20px;font-weight:800}.system-strip{background:var(--panel);border:1px solid var(--line);border-radius:8px;grid-template-columns:1.4fr 1.1fr .9fr 1fr;gap:0;margin-bottom:28px;display:grid}.system-strip>div{border-right:1px solid var(--line);min-height:190px;padding:24px}.system-strip>div:last-child{border-right:0}.swatch-row{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.swatch-row span{color:var(--muted);gap:8px;font-size:12px;display:grid}.swatch-row i{border-radius:6px;height:42px;display:block}.swatch-primary{background:var(--primary)}.swatch-success{background:var(--success)}.swatch-warning{background:var(--warning)}.swatch-danger{background:var(--danger)}.swatch-info{background:var(--info)}.type-sample{margin:18px 0 8px;font-size:58px;font-weight:800;line-height:1}.theme-preview{border:1px solid var(--primary);border-radius:8px;justify-content:space-between;align-items:center;margin-top:18px;padding:20px;font-weight:700;display:flex}.auth-page,.protected-page{justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.auth-page{background:radial-gradient(circle at 15% 12%, #1677ff14, transparent 26%), radial-gradient(circle at 82% 4%, #13c2c214, transparent 25%), var(--bg)}.auth-topbar{justify-content:space-between;align-items:center;display:flex;position:absolute;top:24px;left:32px;right:32px}.auth-home-link{color:var(--muted);font-size:14px;font-weight:700}.auth-card,.protected-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-soft);border-radius:8px;width:100%;max-width:440px;padding:32px}.auth-card{padding:34px 36px}.auth-kicker{color:var(--primary);text-align:center;text-transform:uppercase;margin:0 0 8px;font-size:13px;font-weight:800}.auth-card h1{text-align:center;margin:0;font-size:28px;line-height:1.2}.auth-subtitle{color:var(--muted);text-align:center;max-width:320px;margin:10px auto 26px;line-height:1.6}.form-stack{gap:14px;display:grid}.field-stack{color:var(--text);gap:7px;font-size:14px;font-weight:700;display:grid}.field-stack input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);color:var(--fg);outline:none;padding:11px 13px;transition:border-color .18s,box-shadow .18s}.field-stack input:focus{border-color:var(--primary);box-shadow:var(--shadow-focus)}.field-hint,.form-message{margin:0;font-size:13px;line-height:1.5}.field-hint{color:var(--muted)}.form-message{color:var(--danger);background:#ff4d4f14;border:1px solid #ff4d4f29;border-radius:6px;padding:9px 10px}.auth-divider{color:var(--muted);justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{background:var(--line);content:"";flex:1;height:1px}.github-button{background:var(--panel);border:1px solid var(--line);color:var(--text);cursor:pointer;border-radius:6px;padding:10px 14px;font-weight:700;transition:background .12s,border-color .12s}.github-button:hover{background:var(--surface,var(--panel));border-color:var(--border-strong,var(--line))}.github-button:disabled{cursor:not-allowed;opacity:.6}.auth-links{color:var(--muted);text-align:center;margin-top:18px;font-size:14px}.auth-links p{margin:8px 0 0}.auth-links a{color:var(--primary);font-weight:700}.auth-topbar-right{align-items:center;gap:12px;display:flex}.auth-forgot-inline{display:none}.github-button-icon{flex-shrink:0}@media (max-width:720px){.auth-page{flex-direction:column;justify-content:flex-start;align-items:stretch;padding:0}.auth-topbar{background:var(--bg);z-index:5;padding:12px 18px;position:sticky;top:0;left:0;right:0}.auth-card{box-shadow:none;background:0 0;border:0;border-radius:0;max-width:100%;padding:8px 22px 20px}.auth-kicker{letter-spacing:.18em;margin-top:8px;margin-bottom:6px;font-size:11px}.auth-card h1{font-size:30px;font-weight:800}.auth-subtitle{margin:6px auto 16px;font-size:14px}.form-stack{gap:12px}.field-stack{gap:6px;font-size:13px}.field-stack input{border-radius:var(--r-full);padding:11px 18px;font-size:14px}.auth-forgot-inline{text-align:right;margin-top:-4px;display:block}.auth-forgot-inline a{color:var(--muted);font-size:13px;font-weight:500}.auth-submit{border-radius:var(--r-full);width:100%;height:44px;margin-top:2px;font-size:15px;font-weight:700}.auth-divider{margin:0}.github-button{border-radius:var(--r-full);justify-content:center;align-items:center;gap:10px;width:100%;height:44px;padding:0 20px;font-size:14px;display:flex}.auth-links{margin-top:14px;font-size:13px}.auth-link-forgot-desktop{display:none}}.learner-shell{background:var(--bg-base);min-height:100dvh}.learner-topbar{background:color-mix(in srgb, var(--surface) 96%, transparent);border-bottom:1px solid var(--border);z-index:30;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;height:64px;padding:0 24px;display:grid;position:sticky;top:0}.learner-topbar nav{align-items:center;gap:4px;display:flex}.learner-topbar nav a{border-radius:var(--r-md);color:var(--fg-subtle);transition:background .15s var(--easing), color .15s var(--easing);padding:7px 11px;font-size:13.5px;font-weight:500}.learner-topbar nav a:hover{background:var(--surface-3);color:var(--fg)}.learner-user{color:var(--fg-muted);justify-content:end;align-items:center;gap:8px;font-size:13px;display:flex}.learner-user-avatar{background:var(--accent-soft);border-radius:var(--r-full);color:var(--accent-soft-fg);justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:700;display:inline-flex}.learner-layout{grid-template-columns:232px minmax(0,1fr);max-width:1440px;min-height:calc(100dvh - 64px);margin:0 auto;display:grid}.learner-sidebar{background:var(--surface-2);border-right:1px solid var(--border);padding:22px 14px}.learner-sidebar-label{color:var(--fg-subtle);letter-spacing:.06em;text-transform:uppercase;padding:0 12px 10px;font-size:11.5px;font-weight:600}.learner-menu{gap:4px;margin:0;padding:0;list-style:none;display:grid}.learner-menu a{border-radius:var(--r-md);color:var(--fg-muted);transition:background .15s var(--easing), color .15s var(--easing);align-items:center;gap:10px;padding:10px 13px;font-size:14px;font-weight:500;display:flex}.learner-menu a:hover{background:var(--surface-3);color:var(--fg)}.learner-menu a.active{background:var(--primary-soft);color:var(--primary-soft-fg);font-weight:600}.learner-main{padding:34px 40px 64px}.learner-heading{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px;display:flex}.learner-heading h1{letter-spacing:-.01em;margin:0;font-size:28px;font-weight:800}.learner-tabs{border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:26px;margin-bottom:26px;display:flex;overflow-x:auto}.learner-tabs::-webkit-scrollbar{display:none}.learner-tabs button{color:var(--fg-subtle);cursor:pointer;transition:color .15s var(--easing), border-color .15s var(--easing);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;flex-shrink:0;margin-bottom:-1px;padding:0 0 12px;font-size:14px;font-weight:600}.learner-tabs button:hover{color:var(--fg)}.learner-tabs button.active{border-color:var(--primary);color:var(--primary-text)}.learning-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.learning-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);flex-direction:column;display:flex;overflow:hidden}.learning-cover{--cover-grad:linear-gradient(135deg, #2553e0, #0fae9b);background:radial-gradient(circle at 80% 12%, #ffffff4d, transparent 58%), linear-gradient(#ffffff1a 1px, transparent 1px), linear-gradient(90deg, #ffffff1a 1px, transparent 1px), var(--cover-grad);color:#fff;background-size:auto,30px 30px,30px 30px,auto;flex-direction:column;justify-content:space-between;min-height:132px;padding:16px 18px;display:flex;position:relative}.learning-card:nth-child(4n+2) .learning-cover{--cover-grad:linear-gradient(135deg, #5b3fc4, #2553e0)}.learning-card:nth-child(4n+3) .learning-cover{--cover-grad:linear-gradient(135deg, #0a8a7d, #1e43be)}.learning-card:nth-child(4n+4) .learning-cover{--cover-grad:linear-gradient(135deg, #1e43be, #7c5cf0)}.learning-cover-tag{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:var(--r-xs);color:#fff;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;background:#ffffff2e;align-self:flex-start;padding:4px 8px;font-size:10.5px;font-weight:700}.learning-cover-glyph{color:#fffffff5;font-family:var(--font-mono);letter-spacing:-.02em;font-size:40px;font-weight:800;line-height:1}.learning-card-body{flex-direction:column;flex:1;gap:12px;padding:18px 20px 20px;display:flex}.learning-card h2{margin:0;font-size:17px;font-weight:700;line-height:1.4}.learning-meta{color:var(--fg-subtle);align-items:center;gap:10px;font-size:12.5px;display:flex}.learning-meta-dot{background:var(--border-strong);border-radius:var(--r-full);width:4px;height:4px}.learning-progress{gap:8px;display:grid}.learning-progress-row{color:var(--fg-muted);justify-content:space-between;align-items:center;font-size:12.5px;display:flex}.learning-progress-row strong{color:var(--accent-text);font-family:var(--font-num);font-weight:700}.progress-track{background:var(--surface-3);border-radius:var(--r-full);height:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:inherit;height:100%;transition:width 1s var(--easing);display:block}.learning-card-footer{border-top:1px solid var(--border);color:var(--fg-subtle);justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding-top:14px;font-size:12.5px;display:flex}@media (max-width:1024px){.learner-layout{grid-template-columns:minmax(0,1fr)}.learner-sidebar{display:none}.learner-main{padding:28px 24px 48px}.learning-grid{grid-template-columns:minmax(0,1fr);gap:16px}}@media (max-width:720px){.learner-topbar,.learner-topbar nav{display:none}.learner-user{gap:6px}.learner-main{padding:20px 16px 40px}.learner-heading{flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:20px}.learner-heading h1{font-size:24px}.learner-tabs{gap:20px;margin-bottom:20px}.learning-card h2{font-size:16px}.learning-cover{min-height:108px;padding:14px 16px}.learning-cover-glyph{font-size:32px}.learning-card-body{gap:10px;padding:14px 16px 16px}.learning-card-footer{flex-direction:column;align-items:flex-start;gap:10px}}.admin-shell{min-height:100dvh}.admin-sider{background:linear-gradient(#06111f 0%,#0b1726 100%)!important}.admin-brand{color:#fff;align-items:center;gap:10px;min-height:72px;padding:16px 18px;display:flex}.admin-brand strong,.admin-brand small{display:block}.admin-brand strong{font-size:14px;line-height:1.3}.admin-brand small{color:#ffffff85;margin-top:2px;font-size:12px}.admin-content-layout{background:var(--bg);height:100vh;overflow:hidden}.admin-topbar{background:var(--panel);border-bottom:1px solid var(--line);grid-template-columns:auto 1fr auto auto;align-items:center;gap:16px;height:64px;padding:0 22px;display:grid}.admin-topbar-spacer{flex:1}.admin-view-storefront{align-items:center;text-decoration:none;display:inline-flex}.admin-icon-button{color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.admin-icon-button:hover{background:var(--panel-soft);border-color:var(--line)}.admin-profile{color:var(--text);align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.admin-page{height:calc(100vh - 64px);padding:16px 24px;overflow-y:auto}.admin-topbar-brand,.admin-mobile-tabbar{display:none}.admin-dashboard{gap:12px;display:grid}.admin-dashboard-desktop{display:contents}.admin-dashboard-mobile{display:none}.admin-bell{position:relative}.admin-bell-dot{background:#e5484d;border-radius:50%;width:6px;height:6px;display:none;position:absolute;top:6px;right:8px}.admin-page-heading{justify-content:space-between;align-items:center;gap:12px;margin:0;display:flex}.admin-page-heading>div:first-child{align-items:baseline;gap:10px;display:flex}.admin-page-heading .eyebrow{color:var(--muted);margin:0;font-size:12px}.admin-page-heading h1{margin:0;font-size:20px;font-weight:600;line-height:1.2}.admin-page-heading>span{color:var(--muted);font-size:13px}.admin-page-heading>a:not(.ant-btn){color:var(--muted);font-size:13px;text-decoration:none}.admin-page-heading>a:not(.ant-btn):hover{color:var(--foreground,currentColor)}.admin-page-heading .ant-space,.admin-page-heading form{align-items:center;display:inline-flex}.admin-page-heading .ant-space a,.admin-page-heading form a,.admin-page-heading>a.ant-btn{text-decoration:none;display:inline-flex}.admin-kpi-card{border-radius:8px}.admin-kpi-card p{margin:10px 0 0;font-size:13px;font-weight:700}.admin-kpi-blue p,.admin-kpi-green p,.admin-kpi-purple p{color:var(--success)}.admin-kpi-orange p{color:var(--danger)}.admin-grid{grid-template-columns:minmax(320px,.9fr) minmax(520px,1.4fr);gap:20px;display:grid}.trend-panel{min-height:310px}.trend-bars{grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:10px;height:220px;padding-top:20px;display:grid}.trend-bar{background:linear-gradient(#1677fff2,#1677ff3d);border-radius:6px 6px 2px 2px;min-height:28px;display:block}.trend-42{height:42%}.trend-58{height:58%}.trend-51{height:51%}.trend-73{height:73%}.trend-68{height:68%}.trend-92{height:92%}.trend-120{height:100%}.trend-104{height:88%}.trend-146{height:96%}.trend-132{height:90%}.trend-178{height:100%}.trend-164{height:94%}.primary-button,.secondary-button,.soft-button,.accent-button,.ghost-button{border-radius:var(--r-lg);cursor:pointer;white-space:nowrap;height:44px;transition:background .15s var(--easing), border-color .15s var(--easing), transform .15s var(--easing), box-shadow .15s var(--easing), filter .15s var(--easing);justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:14px;font-weight:600;line-height:1;display:inline-flex}.primary-button:focus-visible,.secondary-button:focus-visible,.soft-button:focus-visible,.accent-button:focus-visible,.ghost-button:focus-visible{box-shadow:var(--shadow-focus);outline:none}.primary-button{background:var(--primary);box-shadow:var(--shadow-xs);color:var(--primary-fg);border:0}.primary-button:hover{background:var(--primary-hover)}.secondary-button{background:var(--surface);border:1px solid var(--border-strong);color:var(--fg)}.secondary-button:hover{background:var(--surface-2);border-color:var(--border-hover)}.soft-button{background:var(--primary-soft);color:var(--primary-soft-fg);border:0}.soft-button:hover{filter:brightness(.97)}.accent-button{background:var(--accent);box-shadow:var(--shadow-xs);color:#fff;border:0}.accent-button:hover{filter:brightness(1.08)}.ghost-button{color:var(--fg-muted);background:0 0;border:0}.ghost-button:hover{background:var(--surface-3);color:var(--fg)}.button-sm{border-radius:var(--r-md);height:36px;padding:0 14px;font-size:13px}.hero-secondary{color:#fff;background:#ffffff0f;border-color:#ffffff47}.hero-secondary:hover{background:#ffffff1f;border-color:#ffffff6b}.primary-button:active,.secondary-button:active,.soft-button:active,.accent-button:active,.ghost-button:active{transform:scale(.97)}@media (max-width:1180px){.topbar-nav{display:none}.hero{grid-template-columns:1fr;padding:64px 40px}.course-grid,.system-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.public-shell{padding:0}.topbar{border-radius:0;flex-wrap:wrap;top:0}.topbar-search{flex-basis:100%}.hero{border-radius:0;min-height:auto;padding:48px 22px}.course-section{padding:36px 18px}.section-heading{flex-direction:column;align-items:start}.course-grid,.system-strip{grid-template-columns:1fr}.system-strip{border-left:0;border-right:0;border-radius:0}.system-strip>div{border-right:0;border-top:1px solid var(--line)}}@media (max-width:991px){.admin-sider-desktop{flex:0!important;width:0!important;min-width:0!important;max-width:0!important;display:none!important}.admin-content-layout{background:var(--bg-base);max-width:100vw;height:auto;overflow:hidden visible}.admin-shell{max-width:100vw;overflow-x:hidden}.admin-topbar{z-index:50;grid-template-columns:auto 1fr auto auto;gap:10px;width:100vw;height:56px;padding:0 14px;position:fixed;top:0;border-bottom:1px solid var(--border)!important}.admin-topbar-brand{color:var(--fg);align-items:center;gap:8px;text-decoration:none;display:inline-flex}.admin-topbar-brand .brand-mark{background:var(--primary);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:700;display:inline-flex}.admin-topbar-brand-name{color:var(--fg);font-size:14px;font-weight:700}.admin-profile,.admin-view-storefront .admin-view-storefront-label{display:none}.admin-view-storefront .ant-btn{border-color:var(--border-strong);color:var(--fg-muted);border-radius:8px;width:36px;height:36px;padding:0}.admin-bell{color:var(--fg-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:inline-flex}.admin-bell-dot{display:block}.admin-page{background:var(--bg-base);max-width:100vw;height:auto;min-height:calc(100dvh - 56px);padding:calc(56px + 12px) 0 calc(80px + env(safe-area-inset-bottom,0px));overflow:hidden visible}.admin-dashboard-desktop{display:none!important}.admin-dashboard-mobile{display:block}.admin-mobile-tabbar{background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border);padding:0 0 calc(10px + env(safe-area-inset-bottom,0px));z-index:50;grid-template-columns:repeat(5,minmax(0,1fr));display:grid;position:fixed;inset:auto 0 0;box-shadow:0 -4px 16px #0000000a}.admin-mobile-tab{color:var(--fg-subtle);cursor:pointer;flex-direction:column;align-items:center;gap:3px;padding-top:10px;font-size:10.5px;font-weight:400;text-decoration:none;transition:color .12s;display:flex}.admin-mobile-tab:active{opacity:.7}.admin-mobile-tab-icon{border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;font-size:21px;display:inline-flex}.admin-mobile-tab-active{color:var(--primary-text);font-weight:600}.admin-mobile-tab-active .admin-mobile-tab-icon{background:var(--primary-soft);color:var(--primary)}}html,body,.admin-content-layout,.admin-page,.ant-table-body,.ant-table-content{scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar{width:0;height:0;display:none}body::-webkit-scrollbar{width:0;height:0;display:none}.admin-content-layout::-webkit-scrollbar{width:0;height:0;display:none}.admin-page::-webkit-scrollbar{width:0;height:0;display:none}.ant-table-body::-webkit-scrollbar{width:0;height:0;display:none}.ant-table-content::-webkit-scrollbar{width:0;height:0;display:none}.theme-toggle-btn{color:var(--fg-muted);cursor:pointer;height:36px;transition:background-color .15s var(--easing), color .15s var(--easing);background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;width:36px;padding:0;display:inline-flex}.theme-toggle-btn:hover{background:var(--surface-3);color:var(--fg)}.theme-toggle-btn:active{transform:scale(.95)}.theme-toggle-btn[disabled]{cursor:default;opacity:.5}.theme-toggle-sm{width:32px;height:32px}.theme-toggle-icon-wrap{width:18px;height:18px;display:inline-block;position:relative}.theme-toggle-svg{transition:opacity .3s var(--easing), transform .3s var(--easing);position:absolute;inset:0}.course-card-link{color:inherit;display:block}.course-card-link:hover .course-card{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}.course-detail-hero{background:var(--hero-bg);color:#fff;padding:72px 40px 64px;position:relative;overflow:hidden}.course-detail-hero:before{content:"";pointer-events:none;background:radial-gradient(circle at 80% 10%,#2dccb638,#0000 60%);position:absolute;inset:0}.course-detail-hero-inner{max-width:1180px;margin:0 auto;position:relative}.course-detail-hero .eyebrow{color:var(--accent-text);margin-bottom:16px}.course-detail-hero h1{color:#fff;max-width:640px;margin:0 0 16px;font-size:44px;font-weight:800;line-height:1.1}.course-detail-hero-copy{color:var(--fg-muted);max-width:560px;margin:0 0 28px;font-size:16px;line-height:1.7}.course-detail-hero-actions{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.course-detail-hero-chips{flex-wrap:wrap;gap:10px;display:flex}.course-detail-hero-chips span{color:var(--fg-muted);background:#ffffff0a;border:1px solid #ffffff2e;border-radius:10px;padding:6px 12px;font-size:12.5px;font-weight:500}.course-detail-body{background:var(--bg-base);grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:40px;max-width:1180px;margin:0 auto;padding:56px 40px 80px;display:grid}.course-detail-section{margin-bottom:48px}.course-detail-section .eyebrow{color:var(--accent-text);margin-bottom:6px}.course-detail-section h2{color:var(--fg);margin:0 0 24px;font-size:28px;font-weight:800}.course-detail-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.course-detail-step{background:var(--surface-2);border-left:3px solid var(--primary);border-radius:12px;padding:20px}.course-detail-step-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.course-detail-step-no{background:var(--primary-soft);color:var(--primary-soft-fg);width:20px;height:20px;font-size:12px;font-weight:700;font-family:var(--font-num);border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.course-detail-step-title{color:var(--fg);font-size:15px;font-weight:700}.course-detail-step p{color:var(--fg-muted);margin:0;font-size:13.5px;line-height:1.65}.course-detail-toc{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden}.course-detail-toc-group+.course-detail-toc-group{border-top:1px solid var(--border)}.course-detail-toc-group-title{color:var(--fg-subtle);letter-spacing:.04em;text-transform:uppercase;padding:14px 16px 8px;font-size:13px;font-weight:700}.course-detail-toc-row{border:0;border-bottom:1px solid var(--border);color:inherit;cursor:pointer;text-align:left;transition:background-color .2s var(--easing);background:0 0;align-items:center;gap:12px;width:100%;padding:14px 16px;display:flex}.course-detail-toc-row:last-child{border-bottom:0}.course-detail-toc-row:hover{background:var(--surface-2)}.course-detail-toc-row-no{color:var(--fg-subtle);font-family:var(--font-num);flex-shrink:0;width:56px;font-size:12px}.course-detail-toc-row-title{color:var(--fg);flex:1;font-size:14px;font-weight:500}.course-detail-toc-row-locked .course-detail-toc-row-title{color:var(--fg-muted)}.course-detail-toc-row-tag{border-radius:999px;padding:3px 8px;font-size:11.5px;font-weight:700}.course-detail-toc-row-tag.preview{background:var(--trial-soft);color:var(--trial-fg)}.course-detail-toc-row-tag.locked{color:var(--lock);background:0 0}.course-detail-toc-footer{background:var(--surface-2);color:var(--fg-subtle);text-align:center;padding:14px 16px;font-size:13px}.course-detail-toc-empty{color:var(--fg-muted);text-align:center;padding:32px 16px;font-size:14px}.course-detail-access{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card);border-radius:18px;padding:24px;position:sticky;top:24px}.course-detail-access .eyebrow{color:var(--accent-text);margin-bottom:6px}.course-detail-access h3{color:var(--fg);margin:0 0 12px;font-size:20px;font-weight:700}.course-detail-price{align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.course-detail-price-now{color:var(--primary-text);font-family:var(--font-num);font-size:40px;font-weight:800;line-height:1}.course-detail-access-copy{color:var(--fg-muted);margin:8px 0 20px;font-size:13.5px;line-height:1.65}.course-detail-access .primary-button,.course-detail-access .secondary-button{justify-content:center;width:100%;margin-bottom:10px}.course-detail-access-divider{background:var(--border);height:1px;margin:16px 0}.course-detail-access-bullets{gap:10px;margin:0;padding:0;list-style:none;display:grid}.course-detail-access-bullets li{color:var(--fg-muted);align-items:flex-start;gap:8px;font-size:13px;line-height:1.5;display:flex}.course-detail-access-bullets li span{color:var(--accent-text);flex-shrink:0;font-weight:700}.primary-button.full,.secondary-button.full{justify-content:center;width:100%}@media (max-width:960px){.course-detail-hero{padding:56px 24px 48px}.course-detail-hero h1{font-size:32px}.course-detail-body{grid-template-columns:1fr;gap:32px;padding:40px 24px 64px}.course-detail-steps{grid-template-columns:1fr}.course-detail-access{position:static}}.contact-wechat{display:inline-flex}.contact-wechat-trigger{appearance:none;color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;padding:0}.contact-wechat-layer{z-index:1000;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.contact-wechat-backdrop{appearance:none;cursor:pointer;background:#060a148c;border:0;padding:0;position:absolute;inset:0}.contact-wechat-panel{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-pop,0 24px 60px #00000047);color:var(--fg);text-align:center;border-radius:18px;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:min(340px,100vw - 48px);padding:28px 24px 24px;display:flex;position:relative}.contact-wechat-panel img{border-radius:12px;width:100%;max-width:100%;height:auto;display:block}.contact-wechat-panel strong{color:var(--fg);font-size:16px;font-weight:700}.contact-wechat-panel p{color:var(--fg-muted);margin:0;font-size:13.5px;line-height:1.55}.contact-wechat-close{appearance:none;background:var(--surface-3);color:var(--fg-muted);cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;font-size:20px;line-height:1;display:inline-flex;position:absolute;top:12px;right:12px}.contact-wechat-close:hover{background:var(--surface-2);color:var(--fg)}.lesson-md-editor{border:1px solid #d9d9d9;border-radius:8px;overflow:hidden}.lesson-md-editor .bytemd{height:560px}.lesson-md-editor__loading{color:#888;justify-content:center;align-items:center;height:560px;font-size:13px;display:flex}.lesson-md-color-bubble{z-index:1000;background:#fff;border:1px solid #e6e9f0;border-radius:8px;gap:6px;padding:6px 8px;display:flex;position:fixed;box-shadow:0 6px 20px #00000029}.lesson-md-color-bubble__swatch{cursor:pointer;border:1px solid #0000001f;border-radius:50%;width:20px;height:20px;padding:0;transition:transform .1s}.lesson-md-color-bubble__swatch:hover{transform:scale(1.12)}.bytemd-viewer img{cursor:zoom-in}.md-red,.md-red *{color:#e5484d!important}.md-blue,.md-blue *{color:#3b82f6!important}.md-green,.md-green *{color:#2da44e!important}.md-highlight{border-radius:3px;padding:0 3px;background:#fde68a!important}.md-highlight,.md-highlight *{color:#1f2937!important}.markdown-alert{background:var(--surface-2);border-left:4px solid var(--border);border-radius:8px;margin:20px 0;padding:12px 16px}.markdown-alert>:last-child{margin-bottom:0}.markdown-alert>:not(.markdown-alert-title):first-of-type{margin-top:0}.markdown-alert-title{align-items:center;gap:6px;margin:0 0 6px;font-size:.95em;font-weight:700;line-height:1.4;display:flex}.markdown-alert-title:before{font-size:1.05em}.markdown-alert-note{background:#3b82f614;border-left-color:#3b82f6}.markdown-alert-note .markdown-alert-title{color:#3b82f6}.markdown-alert-note .markdown-alert-title:before{content:"ℹ️"}.markdown-alert-tip{background:#2da44e14;border-left-color:#2da44e}.markdown-alert-tip .markdown-alert-title{color:#2da44e}.markdown-alert-tip .markdown-alert-title:before{content:"💡"}.markdown-alert-important{background:#8250df14;border-left-color:#8250df}.markdown-alert-important .markdown-alert-title{color:#8250df}.markdown-alert-important .markdown-alert-title:before{content:"❗"}.markdown-alert-warning{background:#d4a72c1f;border-left-color:#d4a72c}.markdown-alert-warning .markdown-alert-title{color:#bf8700}.markdown-alert-warning .markdown-alert-title:before{content:"⚠️"}.markdown-alert-caution{background:#cf222e14;border-left-color:#cf222e}.markdown-alert-caution .markdown-alert-title{color:#cf222e}.markdown-alert-caution .markdown-alert-title:before{content:"⛔"}.katex{font-size:1.05em}.katex-display{margin:18px 0;padding:2px 0;overflow:auto hidden}.mermaid-diagram{text-align:center;margin:22px 0}.mermaid-diagram svg{max-width:100%;height:auto}mark.user-highlight{color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-bottom:2px solid #f0a020eb;border-radius:0;padding:0}mark.user-highlight.has-note{background:#f0a02029;border-radius:2px}::highlight(annotation-pending){color:inherit;background-color:#f0c83c6b}
