@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@1,400;1,500;1,600&display=swap");@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap");:root{--bg:#f6f8fc;--surface:#ffffff;--surface-2:#eef2f9;--surface-3:#e4eaf3;--ink:#101827;--muted:#5a6879;--line:#dce5f0;--accent:#0052ff;--accent-strong:#003fd0;--accent-soft:#e9efff;--accent-ink:#ffffff;--electric:#4d7cff;--lime:#b9ff5a;--sun:#ffcf58;--coral:#ff8a70;--danger:#b5483a;--studio:#0d1526;--studio-text:#dce7ff;--shadow:0 14px 40px rgba(0,82,255,0.12);--radius:8px}@media (prefers-color-scheme:dark){:root{--bg:#0b1220;--surface:#111a2c;--surface-2:#182338;--surface-3:#22304a;--ink:#eef3fb;--muted:#a9b7ca;--line:#2c3d58;--accent:#6d9bff;--accent-strong:#8db2ff;--accent-soft:#1b2c4f;--accent-ink:#0a1020;--lime:#c9f057;--sun:#f3c453;--coral:#ff9378;--danger:#ff9d83;--shadow:0 18px 50px rgba(0,0,0,0.35)}}*{box-sizing:border-box}html{color-scheme:light dark}body,html{background:var(--bg)}body{margin:0;font-family:PingFang SC,Noto Sans SC,Microsoft YaHei,ui-sans-serif,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3,p{letter-spacing:0}.shell{min-height:100dvh}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.topbar{height:72px;padding:0 5vw;justify-content:space-between;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 92%,transparent);position:-webkit-sticky;position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand,.topbar{display:flex;align-items:center}.brand{font-weight:850;font-size:1.2rem;gap:9px}.brand-mark{width:27px;height:27px;border-radius:7px;background:var(--accent);position:relative}.brand-mark:after{content:"";width:9px;height:9px;border-radius:50%;background:#ffffff;position:absolute;top:5px;left:9px;box-shadow:0 9px 0 rgba(255,255,255,.55)}.nav{display:flex;gap:20px;align-items:center;color:var(--muted);font-size:.92rem}.nav a:hover{color:var(--accent)}.button{border:0;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius);padding:10px 15px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .15s,background .15s,opacity .15s}.button:hover{transform:translateY(-1px);background:var(--accent-strong)}.button:active{transform:translateY(0) scale(.98)}.button:disabled{opacity:.6;cursor:not-allowed}.button.secondary{background:var(--accent-soft);color:var(--accent)}.button.light{background:var(--surface);color:var(--accent);border:1px solid var(--line)}.button.warn{background:var(--coral);color:#3b1e14}.icon-button,.mini-button{border:1px solid var(--line);background:var(--surface);color:var(--accent);border-radius:var(--radius);padding:7px 10px;font-size:.8rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:transform .15s,border-color .15s,background .15s}.mini-button:hover{border-color:var(--accent);transform:translateY(-1px)}.mini-button.danger{color:var(--danger)}.icon-button{width:38px;height:38px;padding:0}.pill{padding:5px 9px;font-size:.76rem;font-weight:750;background:var(--accent-soft);color:var(--accent);white-space:nowrap}.outline-pill{background:transparent;border:1px solid var(--line)}.eyebrow{font-size:.82rem}.eyebrow,.section-kicker{color:var(--accent);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.section-kicker{display:block;font-size:.76rem;margin-bottom:5px}.page{max-width:1280px;margin:auto;padding:36px 4vw 80px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.page-head h1{font-size:2.45rem;margin:0}.page-head h2+p,.page-head p{color:var(--muted);margin:8px 0 0}.section-title-h2{font-size:2rem;margin:0}.head-actions{display:flex;gap:10px;flex-wrap:wrap}input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);outline-color:var(--accent)}textarea{resize:vertical;min-height:88px}select{width:auto;min-width:170px}.hero{max-width:1160px;padding:84px 5vw 70px;margin:auto;display:grid;grid-template-columns:1.05fr .95fr;grid-gap:56px;gap:56px;align-items:center}.hero h1{font-size:clamp(3rem,7vw,5.4rem);line-height:1.02;margin:16px 0 20px;max-width:700px}.hero p{font-size:1.12rem;line-height:1.8;color:var(--muted);max-width:580px}.hero-actions{margin-top:26px}.hero-card{background:var(--accent);color:var(--accent-ink);min-height:410px;padding:30px;box-shadow:var(--shadow)}.fake-canvas,.hero-card{border-radius:var(--radius);position:relative;overflow:hidden}.fake-canvas{margin-top:115px;height:185px;background:var(--surface-2)}.fake-canvas .circle{position:absolute;width:112px;height:112px;background:var(--sun);border-radius:50%;left:23%;top:35px}.fake-canvas .square{position:absolute;width:76px;height:76px;background:var(--coral);right:18%;top:58px;transform:rotate(20deg)}.fake-canvas .line{height:9px;background:var(--accent);width:135px;transform:rotate(-33deg);position:absolute;left:43%;top:61px;border-radius:10px}.card-caption{position:relative;z-index:1;font-weight:750;font-size:1.1rem}.card-stats{position:absolute;bottom:25px;right:28px;z-index:1;font-size:.83rem;opacity:.8}.section{max-width:1160px;margin:0 auto;padding:64px 5vw}.section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:25px}.section h2{font-size:2.1rem;margin:0}.section-title p{color:var(--muted);margin:0}.feature-grid,.module-grid,.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.feature,.module-card,.stat-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:22px}.feature .icon{width:37px;height:37px;background:var(--accent-soft);border-radius:var(--radius);display:grid;place-items:center;font-weight:850;color:var(--accent);margin-bottom:16px}.feature h3,.module-card h3{margin:0 0 8px;font-size:1.08rem}.feature p,.module-card p{margin:0;color:var(--muted);line-height:1.65;font-size:.92rem}.module-card{position:relative;min-height:150px}.module-no{font-size:.75rem;color:var(--accent);font-weight:800}.module-card:hover{border-color:var(--accent);background:var(--accent-soft)}.module-card .tag{position:absolute;right:16px;bottom:16px;font-size:.75rem;padding:4px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.cta{background:var(--sun);max-width:1060px;margin:32px auto 75px;border-radius:var(--radius);padding:42px 48px;display:flex;justify-content:space-between;align-items:center;gap:25px}.cta h2{margin:0;font-size:1.9rem}.cta p{color:#5c4d1a;margin:8px 0 0}.home-dashboard{display:grid;grid-gap:20px;gap:20px}.class-banner{display:grid;grid-template-columns:1.15fr .85fr;grid-gap:22px;gap:22px;align-items:stretch;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius);padding:34px;box-shadow:var(--shadow);overflow:hidden;position:relative}.class-banner:before{content:"";position:absolute;right:-80px;top:-90px;width:260px;height:260px;border-radius:50%;background:color-mix(in srgb,var(--lime) 80%,transparent)}.class-banner-copy{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center}.class-meta{display:flex;gap:9px;margin-bottom:18px}.class-banner .pill{background:color-mix(in srgb,var(--accent-ink) 14%,transparent);color:var(--accent-ink)}.class-banner .outline-pill{border-color:color-mix(in srgb,var(--accent-ink) 30%,transparent)}.class-banner-copy h1{font-size:clamp(2.3rem,5vw,4.2rem);margin:0 0 12px;line-height:1.04}.class-banner-copy p{margin:0;opacity:.88;font-size:1.05rem;max-width:56ch;line-height:1.7}.class-banner .button{background:var(--accent-ink);color:var(--accent)}.class-banner .button.secondary{background:transparent;color:var(--accent-ink);border:1px solid color-mix(in srgb,var(--accent-ink) 40%,transparent)}.class-banner-note{position:relative;z-index:1;background:color-mix(in srgb,var(--accent-ink) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent-ink) 24%,transparent);border-radius:var(--radius);padding:24px;display:flex;gap:16px;align-items:flex-start;align-self:center}.class-banner-note span{display:block;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;opacity:.75;margin-bottom:8px}.class-banner-note h2{margin:0 0 8px;font-size:1.25rem;line-height:1.4}.class-banner-note p{margin:0;opacity:.86;line-height:1.7}.home-grid{display:grid;grid-template-columns:1.35fr .65fr;grid-gap:18px;gap:18px;align-items:start}.home-panel,.teacher-list-card,.upload-card{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 20px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:1.15rem;margin:0}.material-list{display:grid}.material-row{display:grid;grid-template-columns:auto 1fr auto;grid-gap:13px;gap:13px;align-items:center;padding:15px 20px;border-bottom:1px solid var(--line);transition:background .15s}.material-row:last-child{border-bottom:0}.material-row:hover{background:var(--accent-soft)}.material-row-main{display:grid;grid-gap:4px;gap:4px;min-width:0}.material-row-main b{font-size:.94rem}.announcement-row time,.material-card-meta,.material-row-main small{color:var(--muted);font-size:.78rem}.material-type-icon{width:40px;height:40px;border-radius:var(--radius);display:grid;place-items:center;color:var(--accent);background:var(--accent-soft);flex:0 0 auto}.material-type-icon.pdf{color:#b5483a;background:color-mix(in srgb,var(--coral) 18%,var(--surface))}.material-type-icon.image{color:#2e6d82;background:color-mix(in srgb,#8fd7d5 20%,var(--surface))}.material-type-icon.video{color:#8a5b16;background:color-mix(in srgb,var(--sun) 24%,var(--surface))}.lesson-chip{display:inline-flex;align-items:center;justify-content:center;justify-self:start;align-self:start;min-width:64px;height:26px;font-size:.72rem;font-weight:800;line-height:1;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:0 10px;white-space:nowrap}.announcement-list{display:grid}.announcement-row{padding:16px 20px;border-bottom:1px solid var(--line)}.announcement-row:last-child{border-bottom:0}.announcement-line{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:.78rem;margin-bottom:6px}.announcement-row h3{margin:0 0 6px;font-size:.98rem;line-height:1.45}.announcement-row p{margin:0;color:var(--muted);font-size:.85rem;line-height:1.7;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.module-strip{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px;padding:18px 20px}.module-chip{border:1px solid var(--line);border-radius:var(--radius);padding:15px;display:grid;grid-gap:7px;gap:7px;position:relative;min-height:116px;background:var(--surface);transition:border-color .15s,transform .15s}.module-chip:hover{border-color:var(--accent);transform:translateY(-2px)}.module-chip>span{font-size:.72rem;font-weight:850;color:var(--accent)}.module-chip b{font-size:.96rem}.module-chip small{color:var(--muted);font-size:.78rem;line-height:1.5}.module-chip i{position:absolute;top:12px;right:12px;font-style:normal;font-size:.68rem;font-weight:800;color:var(--accent-ink);background:var(--accent);padding:3px 6px;border-radius:999px}.featured-strip{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;padding:18px 20px}.featured-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.featured-thumb{height:118px;background:var(--surface-2);display:grid;place-items:center;color:var(--accent)}.featured-thumb img{width:100%;height:100%;object-fit:cover;display:block}.featured-card h3{margin:12px 13px 3px;font-size:.92rem}.featured-card p{margin:0 13px 12px;color:var(--muted);font-size:.76rem}.material-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;grid-gap:12px;gap:12px;align-items:end;margin-bottom:18px}.field-search{position:relative;display:flex;align-items:center;color:var(--muted)}.field-search svg{position:absolute;left:12px}.field-search input{padding-left:38px}.select-wrap select{height:44px}.material-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.material-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;display:flex;flex-direction:column;min-height:270px}.material-card-type{height:120px;display:grid;place-items:center;color:var(--accent);background:var(--surface-2)}.material-card-type.pdf{color:#b5483a;background:color-mix(in srgb,var(--coral) 16%,var(--surface))}.material-card-type.image{color:#2e6d82;background:color-mix(in srgb,#8fd7d5 20%,var(--surface))}.material-card-type.video{color:#8a5b16;background:color-mix(in srgb,var(--sun) 22%,var(--surface))}.material-card-copy{padding:16px;display:grid;grid-gap:8px;gap:8px;flex:1 1}.material-card-copy h2{margin:0;font-size:1.08rem;line-height:1.4}.material-card-copy p{margin:0;color:var(--muted);font-size:.87rem;line-height:1.65}.material-card-meta{display:flex;gap:10px;flex-wrap:wrap}.material-open{margin:0 16px 16px}.panel-empty{border:1px dashed var(--line);border-radius:var(--radius);padding:34px 20px;color:var(--muted);text-align:center}.modal-backdrop{position:fixed;inset:0;z-index:60;background:rgba(7,16,11,.58);display:grid;place-items:center;padding:24px}.material-preview{width:min(980px,100%);max-height:min(86dvh,860px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto;box-shadow:var(--shadow)}.material-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid var(--line)}.material-preview-head h2{margin:7px 0 5px;font-size:1.35rem}.material-preview-head p{margin:0;font-size:.88rem;line-height:1.6}.type-line{display:inline-flex;align-items:center;gap:7px;font-size:.72rem;font-weight:800;letter-spacing:.08em;color:var(--accent)}.material-preview-actions{display:flex;gap:8px;align-items:center}.material-preview-body{min-height:280px;overflow:auto;background:var(--surface-2)}.material-preview-body img,.material-preview-body video{width:100%;max-height:560px;object-fit:contain;display:block;background:#0c140f}.material-preview-body iframe{width:100%;height:62dvh;min-height:420px;border:0;background:var(--surface)}.material-preview-foot{display:flex;align-items:center;gap:12px;padding:12px 22px;border-top:1px solid var(--line);font-size:.8rem}.material-preview-foot .mini-button{margin-left:auto}.markdown-body{max-width:760px;padding:26px 28px;line-height:1.8}.markdown-body h1,.markdown-body h2,.markdown-body h3{margin:1.4em 0 .55em;line-height:1.35}.markdown-body h1{font-size:1.7rem}.markdown-body h2{font-size:1.3rem}.markdown-body p{margin:.8em 0}.markdown-body ol,.markdown-body ul{padding-left:1.4em;margin:.8em 0}.markdown-body li{margin:.35em 0}.markdown-body code{background:var(--surface-3);border-radius:5px;padding:2px 5px;font-size:.9em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.markdown-body pre{background:var(--studio);color:var(--studio-text);padding:15px;border-radius:var(--radius);overflow:auto}.markdown-body pre code{background:transparent;padding:0}.markdown-body img{display:block;width:100%;max-width:720px;height:auto;margin:1.1em auto;padding:10px;box-sizing:border-box;background:#fffdf7;border:1px solid rgba(255,255,255,.12);border-radius:10px}.markdown-body a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.markdown-body blockquote{margin:1em 0;padding:.6em 1em;border-left:4px solid var(--lime);background:var(--accent-soft);border-radius:0 var(--radius) var(--radius) 0}.learn-layout{position:relative;display:grid;grid-template-columns:1fr;grid-gap:20px;gap:20px;padding-left:34px;border:1px solid var(--line);border-radius:var(--radius);overflow:visible;min-height:calc(100dvh - 155px);background:var(--surface);transition:padding-left .34s cubic-bezier(.16,1,.3,1)}.learn-layout.menu-open{padding-left:270px}.lesson-nav-zone{position:absolute;left:0;top:0;bottom:0;width:34px;z-index:20;transition:width .34s cubic-bezier(.16,1,.3,1)}.lesson-nav-zone.is-open{width:250px}.lesson-nav-trigger{position:absolute;left:0;top:0;bottom:0;width:34px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.03);border-right:1px solid var(--line);border-radius:var(--radius) 0 0 var(--radius);cursor:pointer;transition:background .2s,border-color .2s}.lesson-nav-trigger .bi{writing-mode:vertical-rl;display:grid;grid-gap:4px;gap:4px;color:var(--muted);font-size:.72rem;letter-spacing:.1em}.lesson-nav-trigger .bi-sep{display:none}.lesson-nav-trigger:hover{background:rgba(255,255,255,.08)}.lesson-nav{position:absolute;left:34px;top:0;bottom:0;width:216px;z-index:20;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:18px 12px;box-shadow:0 18px 50px rgba(0,0,0,.24);transform:translateX(-105%);opacity:0;pointer-events:none;transition:transform .34s cubic-bezier(.16,1,.3,1),opacity .22s}.lesson-nav-zone.is-open .lesson-nav{transform:translateX(0);opacity:1;pointer-events:auto}.lesson-nav h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:0 10px}.lesson-link{display:block;padding:10px;border-radius:var(--radius);font-size:.87rem;margin:3px 0}.lesson-link.active{background:var(--accent);color:var(--accent-ink);font-weight:750}.lesson-link .done{float:right;color:var(--lime)}.lesson-content{padding:34px;overflow:auto}.lesson-content h1{font-size:1.95rem;margin:10px 0}.lesson-content h2{font-size:1.2rem;margin:30px 0 10px}.lesson-content li,.lesson-content p{line-height:1.75}.lesson-content code{background:var(--surface-3);border-radius:5px;padding:2px 5px;font-size:.88em}.learning-goals{padding:14px 16px;border-left:4px solid var(--lime);background:var(--accent-soft);border-radius:0 var(--radius) var(--radius) 0}.learning-goals strong{display:block;margin-bottom:5px}.challenge{background:color-mix(in srgb,var(--sun) 22%,var(--surface));border-radius:var(--radius);padding:17px;margin-top:24px}.challenge h3{margin:0 0 8px;font-size:1rem}.api-list{border-top:1px solid var(--line);margin-top:22px}.api-row{padding:10px 0;border-bottom:1px solid var(--line);font-size:.88rem}.api-row b{color:var(--accent)}.studio{background:var(--studio);color:var(--studio-text);display:flex;flex-direction:column;min-width:0}.studio-top{display:flex;justify-content:space-between;align-items:center;padding:13px 15px;border-bottom:1px solid #304138}.studio-title{font:600 .8rem ui-monospace,SFMono-Regular,Menlo,monospace;color:#a9bcae}.studio-actions{display:flex;gap:8px}.run{background:var(--lime);color:#173725;border:0;padding:7px 11px;border-radius:var(--radius);font-weight:800;font-size:.8rem}.outline{background:transparent;color:var(--studio-text);border:1px solid #5b7161;padding:6px 10px;border-radius:var(--radius);font-size:.78rem}.studio-workbench{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:14px;gap:14px;padding:14px;min-height:460px}.codearea{width:100%;resize:vertical;border:0;outline:0;background:var(--studio);color:var(--studio-text);padding:17px;font:13px/1.65 ui-monospace,SFMono-Regular,Menlo,monospace;-moz-tab-size:2;tab-size:2}.codearea,.preview-wrap{height:100%;min-height:420px}.preview-wrap{background:var(--surface-2);margin:0;border-radius:var(--radius);overflow:hidden;position:relative}.preview-wrap iframe{width:100%;height:100%;min-height:420px;border:0;display:block}.console{margin:0 14px 14px;padding:10px;border-radius:var(--radius);background:#0c1510;min-height:64px;max-height:120px;overflow:auto;font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;color:#9dbba5}.console .error{color:#ff9d83}.submit-row{display:flex;gap:10px;padding:0 14px 14px;align-items:center}.save-state{font-size:.75rem;color:#9dbba5;margin-left:auto}.dashboard-grid{display:grid;grid-template-columns:1.3fr .7fr;grid-gap:20px;gap:20px}.table-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.card-head{padding:18px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.card-head h2{font-size:1.05rem;margin:0}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th{background:var(--surface-2);text-align:left;font-size:.76rem;text-transform:uppercase;letter-spacing:.04em}.table td,.table th{padding:13px 16px;border-bottom:1px solid var(--line)}.table tr:last-child td{border-bottom:0}.side-stack{display:grid;grid-gap:20px;gap:20px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:12px}.stat-card{padding:18px}.stat-card b{display:block;font-size:2rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.stat-card span{font-size:.8rem;color:var(--muted)}.empty{padding:34px 20px;text-align:center}.gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px}.gallery-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.gallery-thumb{height:175px;background:var(--surface-2);display:grid;place-items:center;color:var(--accent);font-size:2.8rem}.gallery-thumb img{width:100%;height:100%;object-fit:cover}.gallery-card main{padding:14px}.gallery-card h3{margin:0 0 4px;font-size:1rem}.gallery-card p{margin:0;color:var(--muted);font-size:.82rem}.notice{border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--line));background:var(--accent-soft);border-radius:var(--radius);padding:14px 16px;color:var(--accent);font-size:.88rem;line-height:1.6}.auth-box{max-width:490px;margin:70px auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:34px}.auth-box h1{margin:0 0 10px}.auth-box p{color:var(--muted);line-height:1.65}.field{width:100%;margin:20px 0 12px}.role-choice{display:flex;gap:10px;margin:16px 0}.role-choice button{flex:1 1;padding:11px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius)}.role-choice button.selected{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);font-weight:800}.toast{position:fixed;bottom:24px;right:24px;padding:12px 16px;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius);box-shadow:var(--shadow);font-size:.88rem;z-index:80}.lesson-link{width:100%;border:0;background:transparent;color:inherit;text-align:left}.lesson-link:hover{background:var(--surface-3)}.teacher-page{display:grid;grid-gap:20px;gap:20px}.teacher-page-head{margin-bottom:0}.teacher-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);padding-bottom:10px;flex-wrap:wrap}.teacher-tab{border:1px solid transparent;background:transparent;color:var(--muted);border-radius:var(--radius);padding:9px 13px;font-weight:750;display:inline-flex;align-items:center;gap:7px}.teacher-tab:hover{color:var(--accent);background:var(--surface)}.teacher-tab.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.teacher-panel{display:grid;grid-gap:18px;gap:18px;align-items:start}.upload-card{padding-bottom:4px}.upload-form{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;padding:20px}.form-field{display:grid;grid-gap:7px;gap:7px}.form-field>span{font-size:.82rem;font-weight:750;color:var(--muted)}.form-field-wide{grid-column:1/-1}.upload-form>.button{justify-self:start;margin-top:4px}.file-drop{grid-column:1/-1;border:1.5px dashed var(--line);border-radius:var(--radius);background:var(--surface-2);padding:24px;display:grid;justify-items:center;grid-gap:7px;gap:7px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.file-drop:hover{border-color:var(--accent);background:var(--accent-soft)}.file-drop input{position:absolute;width:1px;height:1px;opacity:0}.file-drop-icon{width:44px;height:44px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center}.file-drop b{font-size:.95rem}.file-drop small{color:var(--muted)}.material-admin-list{display:grid}.material-admin-row{display:grid;grid-template-columns:auto 1fr auto auto;grid-gap:14px;gap:14px;align-items:center;padding:15px 20px;border-bottom:1px solid var(--line)}.material-admin-row:last-child{border-bottom:0}.material-admin-copy{min-width:0}.material-admin-copy h3{margin:0 0 4px;font-size:.98rem}.material-admin-copy p{margin:0 0 5px;color:var(--muted);font-size:.85rem;line-height:1.55}.material-admin-copy small{color:var(--muted);font-size:.76rem}.material-admin-actions{display:flex;gap:7px;flex-wrap:wrap}.status-chip{font-size:.72rem;font-weight:800;border-radius:999px;padding:4px 8px;display:inline-flex;align-items:center;gap:4px}.status-chip.published{color:var(--accent);background:var(--accent-soft)}.status-chip.draft{background:var(--surface-3)}.token-notice{display:flex;align-items:center;justify-content:space-between;gap:16px}.token-notice p{margin:4px 0 0;color:var(--muted)}.token-form{display:flex;gap:8px;min-width:min(390px,100%)}.check-row{display:inline-flex;align-items:center;gap:8px;font-weight:750;color:var(--muted)}.check-row input{width:17px;height:17px;accent-color:var(--accent)}.check-row span{display:inline-flex;align-items:center;gap:5px}.announcement-admin-list{display:grid}.announcement-admin-row{display:grid;grid-template-columns:1fr auto;grid-gap:14px;gap:14px;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}.announcement-admin-row:last-child{border-bottom:0}.announcement-admin-copy h3{margin:6px 0 5px;font-size:1rem}.announcement-admin-copy p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.65}@media (max-width:1080px){.home-grid{grid-template-columns:1fr}.featured-strip,.material-grid,.module-strip{grid-template-columns:repeat(2,1fr)}.learn-layout{grid-template-columns:1fr}.studio{grid-column:auto;min-height:620px}.dashboard-grid{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,1fr)}}@media (max-width:760px){.topbar{padding:0 18px}.nav{gap:12px}.nav a:not(.nav-keep){display:none}.nav .button{display:inline-flex}.hero{padding:50px 22px}.class-banner,.hero{grid-template-columns:1fr}.class-banner{padding:24px}.featured-strip,.material-grid,.material-toolbar,.module-strip,.upload-form{grid-template-columns:1fr}.form-field-wide{grid-column:auto}.material-admin-row{grid-template-columns:auto 1fr}.material-admin-actions{grid-column:1/-1}.announcement-admin-row{grid-template-columns:1fr}.token-notice{display:grid}.token-form{min-width:0}.learn-layout{display:block;border-radius:0;margin:0 -4vw}.learn-layout,.learn-layout.menu-open{padding-left:0}.lesson-nav-zone{position:relative;width:auto;transition:none}.lesson-nav-zone.is-open{width:auto}.lesson-nav-trigger{display:none}.lesson-nav{position:relative;left:auto;top:auto;bottom:auto;width:auto;transform:none;opacity:1;pointer-events:auto;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;display:flex;overflow:auto;gap:5px}.lesson-nav h3{display:none}.lesson-link{white-space:nowrap}.studio-workbench{grid-template-columns:1fr}.lesson-content{padding:25px}.page{padding-top:24px}.page-head{display:block}.head-actions,.page-head .button{margin-top:14px}.table-card{overflow:auto}.table{min-width:590px}.gallery,.syllabus-grid{grid-template-columns:1fr}.chapter-menu{margin-bottom:10px}.materials-chapter-head{padding:15px 16px}.auth-box{margin:35px 18px;padding:25px}.material-preview{max-height:94dvh}.material-preview-head{display:grid}}.home-v2{max-width:1280px;margin:0 auto;padding:0 4vw 80px}.bi{display:inline}.bi-sep{margin:0 .35em;color:var(--muted)}.bi [lang=en]{font-weight:500}.hero-studio{background:#0c111c;color:#f8fbff;overflow:hidden;position:relative}.hero-studio:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(77,124,255,.65),transparent)}.hero-inner{max-width:1280px;margin:0 auto;padding:64px 4vw 72px;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-gap:56px;gap:56px;align-items:center}.hero-copy{min-width:0}.hero-kicker{display:flex;align-items:center;gap:10px;color:#aeb9cc;font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.hero-kicker span{padding:5px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.14)}.hero-kicker span:first-child{background:linear-gradient(135deg,#0052ff,#4d7cff);border-color:transparent;color:#ffffff}.hero-copy h1{font-family:Songti SC,"Noto Serif SC",Georgia,serif;font-size:clamp(2.7rem,6vw,5rem);line-height:1.06;margin:20px 0 18px;font-weight:600;letter-spacing:0}.hero-lead{color:#b9c6dc;font-size:1.1rem;line-height:1.8;max-width:58ch;margin:0}.hero-goal{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border:1px solid rgba(255,255,255,.14);border-radius:var(--radius);background:rgba(255,255,255,.06);color:#dce7ff;line-height:1.7;margin-top:24px}.hero-goal svg{flex:0 0 auto;margin-top:3px}.hero-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}.hero-studio .button{background:linear-gradient(135deg,#0052ff,#4d7cff);color:#ffffff;box-shadow:0 16px 40px rgba(0,82,255,.28)}.hero-studio .button.ghost{background:transparent;color:#f8fbff;border:1px solid rgba(255,255,255,.22);box-shadow:none}.hero-visual{min-width:0}.home-sketch{aspect-ratio:4/3;border-radius:var(--radius);overflow:hidden;border:1px solid rgba(255,255,255,.14);background:#f7f9ff;box-shadow:0 24px 80px rgba(0,0,0,.35)}.home-sketch iframe{width:100%;height:100%;min-height:380px;border:0;display:block}.canvas-caption{display:flex;justify-content:space-between;gap:14px;margin-top:12px;color:#aeb9cc;font-size:.8rem}.canvas-caption span{display:inline-flex;align-items:center;gap:7px}.live-dot{width:8px;height:8px;border-radius:50%;background:#4d7cff;display:inline-block;box-shadow:0 0 0 4px rgba(77,124,255,.18)}.task-rail{display:grid;grid-template-columns:1.25fr .9fr .9fr .9fr;grid-gap:12px;gap:12px;margin:28px 0 64px}.task-card{display:flex;align-items:center;gap:13px;padding:17px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);transition:transform .16s,border-color .16s,box-shadow .16s}.task-card:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow)}.task-card.primary{background:linear-gradient(135deg,#0052ff,#4d7cff)}.task-icon{width:42px;height:42px;border-radius:var(--radius);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:0 0 auto}.task-card.primary .task-icon{background:rgba(255,255,255,.16)}.task-copy{min-width:0}.task-copy b{display:block;font-size:.98rem}.task-copy small{display:block;margin-top:4px;color:var(--muted);font-size:.78rem;line-height:1.45}.task-card.primary .task-copy small{color:rgba(255,255,255,.76)}.task-arrow{margin-left:auto;color:var(--muted);flex:0 0 auto}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.section-head h2{font-family:Songti SC,"Noto Serif SC",Georgia,serif;font-size:clamp(1.8rem,3vw,2.55rem);margin:0;font-weight:600;line-height:1.2}.section-head p{color:var(--muted);margin:0;max-width:56ch;line-height:1.7}.text-link{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:750}.lesson-focus{margin-bottom:64px}.lesson-focus-grid{display:grid;grid-template-columns:1.1fr .9fr .9fr;grid-gap:14px;gap:14px}.focus-panel{border:1px solid var(--line);border-radius:var(--radius);padding:26px;background:var(--surface)}.goal-panel{background:linear-gradient(135deg,var(--accent-soft),var(--surface))}.challenge-panel{background:#0c111c;color:#f8fbff;border-color:transparent}.focus-label{display:block;font-size:.74rem;font-weight:800;letter-spacing:0;text-transform:uppercase;color:var(--accent);margin-bottom:12px}.challenge-panel .focus-label{color:#8db2ff}.focus-panel h3{font-family:Songti SC,"Noto Serif SC",Georgia,serif;font-size:1.42rem;margin:0 0 10px;line-height:1.38;font-weight:600}.focus-panel p{margin:0;color:var(--muted);line-height:1.75}.challenge-panel p{color:#b9c6dc}.api-mini-list{display:grid}.api-mini-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.88rem}.api-mini-row:last-child{border-bottom:0}.api-mini-row b{color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.api-mini-row span{color:var(--muted);text-align:right}.challenge-panel .text-link{color:#8db2ff}.review-hub{margin-bottom:64px}.review-grid{display:grid;grid-template-columns:1.2fr .8fr 1fr;grid-gap:14px;gap:14px;align-items:stretch}.review-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;display:flex;flex-direction:column}.review-panel header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}.review-panel header h3{margin:0}.review-panel header a,.review-panel header span{color:var(--accent);font-size:.8rem;font-weight:750}.material-mini-list{display:grid}.material-mini-row{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--line)}.material-mini-row:last-child{border-bottom:0}.material-mini-row .material-type-icon{width:34px;height:34px}.material-mini-row b{display:block;font-size:.9rem;line-height:1.4}.material-mini-row small{display:block;margin-top:3px;color:var(--muted);font-size:.74rem}.announcement-mini-list{display:grid}.announcement-mini{padding:14px 18px;border-bottom:1px solid var(--line)}.announcement-mini:last-child{border-bottom:0}.announcement-mini h4{margin:6px 0 5px;font-size:.92rem;line-height:1.45}.announcement-mini p{margin:0;color:var(--muted);font-size:.8rem;line-height:1.6}.gallery-mini-grid{display:grid;padding:14px;grid-gap:12px;gap:12px}.gallery-mini{display:grid;grid-template-columns:76px 1fr;grid-gap:12px;gap:12px;align-items:center}.gallery-mini-thumb{height:62px;border-radius:var(--radius);background:var(--surface-2);display:grid;place-items:center;color:var(--accent);overflow:hidden}.gallery-mini-thumb img{width:100%;height:100%;object-fit:cover}.gallery-mini b{display:block;font-size:.88rem;line-height:1.4}.gallery-mini small{display:block;margin-top:3px;color:var(--muted);font-size:.75rem}.course-path{margin-bottom:64px}.path-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.path-item{position:relative;border:1px solid var(--line);border-radius:var(--radius);padding:18px;background:var(--surface);min-height:132px;transition:transform .16s,border-color .16s}.path-item:hover{transform:translateY(-2px);border-color:var(--accent)}.path-item.current{border-color:var(--accent);background:linear-gradient(135deg,var(--accent-soft),var(--surface))}.path-index{color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;font-weight:800;letter-spacing:0}.path-item h3{font-family:Songti SC,"Noto Serif SC",Georgia,serif;font-size:1.1rem;margin:12px 0 6px;font-weight:600;line-height:1.35}.path-item p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.55}.path-item i{position:absolute;top:14px;right:14px;font-style:normal;font-size:.7rem;font-weight:800;color:#ffffff;background:var(--accent);padding:3px 7px;border-radius:999px}.home-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding-top:26px;font-size:.85rem}.home-footer .brand-mark{display:inline-block;vertical-align:-7px;margin-right:8px}@media (max-width:1080px){.hero-inner{grid-template-columns:1fr;gap:36px}.hero-visual{max-width:720px}.lesson-focus-grid,.task-rail{grid-template-columns:1fr 1fr}.challenge-panel{grid-column:1/-1}.review-grid{grid-template-columns:1fr 1fr}.notice-panel{grid-column:1/-1}.path-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:760px){.home-v2{padding:0 18px 56px}.hero-inner{padding:46px 18px 56px}.hero-copy h1{font-size:2.45rem}.hero-actions .button{width:100%}.task-rail{margin:20px 0 48px}.lesson-focus-grid,.task-rail{grid-template-columns:1fr}.challenge-panel{grid-column:auto}.review-grid{grid-template-columns:1fr}.notice-panel{grid-column:auto}.path-grid{grid-template-columns:1fr}.section-head{display:block}.section-head p{margin-top:8px}.section-head .text-link{margin-top:12px}.home-footer{display:block;line-height:1.8}}.art-stage{position:relative;min-height:100dvh;overflow:hidden;background:#0a0f1a}.topbar-overlay{position:absolute;top:0;left:0;right:0;z-index:30;background:transparent;border-color:rgba(255,255,255,.14)}.topbar-overlay .brand,.topbar-overlay .nav{color:#f3f6fc}.topbar-overlay .nav a:hover{color:#ffffff}.topbar-overlay .nav .button{background:rgba(255,255,255,.12);color:#ffffff;border:1px solid rgba(255,255,255,.22)}.abstract-canvas{position:absolute;inset:0}.abstract-canvas canvas{display:block}.canvas-error,.canvas-loading{position:absolute;inset:0;display:grid;place-items:center;color:#aeb9cc;font-size:.86rem}.canvas-loading span{width:14px;height:14px;margin-right:8px;border-radius:50%;border:2px solid rgba(77,124,255,.25);border-top-color:#4d7cff;animation:canvasSpin .9s linear infinite}@keyframes canvasSpin{to{transform:rotate(1turn)}}.today-lecture{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-gap:52px;gap:52px;align-items:center;padding:68px 0 76px}.today-copy{min-width:0}.today-copy .hero-kicker{color:var(--muted)}.today-copy .hero-kicker span:first-child{background:linear-gradient(135deg,#0052ff,#4d7cff);border-color:transparent;color:#ffffff}.today-copy h1{color:var(--ink);font-family:Songti SC,"Noto Serif SC",Georgia,serif;font-size:clamp(2.6rem,5.6vw,4.7rem);line-height:1.06;margin:20px 0 18px;font-weight:600}.today-copy .hero-lead{color:var(--muted)}.today-copy .hero-goal{border-color:var(--line);background:var(--accent-soft)}.today-copy .hero-actions .button{background:linear-gradient(135deg,#0052ff,#4d7cff);box-shadow:0 16px 40px rgba(0,82,255,.2)}.today-copy .hero-actions .button.ghost{background:transparent;color:var(--accent);border:1px solid var(--line);box-shadow:none}.today-preview{min-width:0}.today-preview .home-sketch{aspect-ratio:4/3;border-color:var(--line);box-shadow:var(--shadow)}.today-preview .home-sketch iframe{min-height:380px}.today-preview .canvas-caption{color:var(--muted)}@media (max-width:1080px){.today-lecture{grid-template-columns:1fr;gap:36px;padding:56px 0 64px}.today-preview{max-width:760px}}@media (max-width:760px){.today-lecture{padding:44px 0 52px}.today-copy h1{font-size:2.45rem}.today-copy .hero-actions .button{width:100%}.today-preview .home-sketch iframe{min-height:250px}}.font-playfair{font-family:Playfair Display,serif;font-style:italic}.lithos-hero{position:relative;width:100%;overflow:hidden;background:#000;font-family:Inter,sans-serif}.lithos-base{z-index:10}.lithos-base,.lithos-reveal{position:absolute;inset:0;background-position:50%;background-size:cover;background-repeat:no-repeat}.lithos-reveal{z-index:30;pointer-events:none}.lithos-canvas{inset:0}.lithos-canvas,.lithos-heading{position:absolute;pointer-events:none}.lithos-heading{top:14%;left:0;right:0;z-index:50;display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 20px}.lithos-heading h1{color:#fff;line-height:.95;font-size:3rem;letter-spacing:-.05em;margin:0}.lithos-heading h1 span{display:block}.lithos-heading h1 span.font-playfair{font-family:Playfair Display,serif;font-style:italic;font-weight:400;font-size:inherit;letter-spacing:-.05em}.lithos-heading h1 span:last-child{letter-spacing:-.08em;margin-top:-.25rem}@media (min-width:640px){.lithos-heading h1{font-size:4.5rem}}@media (min-width:768px){.lithos-heading h1{font-size:6rem}}.lithos-bottom-left{position:absolute;bottom:56px;left:40px;z-index:50;display:none;max-width:260px}.lithos-bottom-left p,.lithos-bottom-right p{color:rgba(255,255,255,.8);font-size:.875rem;line-height:1.625;margin:0}@media (min-width:640px){.lithos-bottom-left{display:block;left:40px}}@media (min-width:768px){.lithos-bottom-left{left:56px}}.lithos-bottom-right{position:absolute;bottom:40px;left:20px;right:20px;z-index:50;display:flex;flex-direction:column;align-items:flex-start;gap:16px;max-width:none}@media (min-width:640px){.lithos-bottom-right{bottom:96px;left:auto;right:40px;max-width:260px;gap:20px}}@media (min-width:768px){.lithos-bottom-right{right:56px}}.lithos-cta{display:inline-flex;background:#e8702a;color:#fff;font-size:.875rem;font-weight:500;padding:12px 28px;border-radius:999px;transition:background .2s,transform .2s,box-shadow .2s}.lithos-cta:hover{background:#d2611f;transform:scale(1.03);box-shadow:0 12px 30px rgba(232,112,42,.3)}.lithos-cta:active{transform:scale(.95)}.lithos-nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 20px;font-family:Inter,sans-serif}@media (min-width:640px){.lithos-nav{padding:20px}}.lithos-brand{display:flex;align-items:center;gap:10px;color:#fff}.lithos-brand span{font-family:Playfair Display,serif;font-style:italic;font-size:1.5rem}.lithos-pill{display:none;position:absolute;left:50%;transform:translateX(-50%);background:rgba(255,255,255,.2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.3);border-radius:999px;padding:8px;align-items:center;gap:4px}@media (min-width:768px){.lithos-pill{display:flex}}.lithos-pill-link{color:rgba(255,255,255,.8);padding:6px 16px;border-radius:999px;font-size:.875rem;font-weight:500;transition:background .2s,color .2s}.lithos-pill-link:hover{background:rgba(255,255,255,.2);color:#fff}.lithos-pill-link.active{color:#fff}.lithos-signup{display:none;background:#fff;color:#111827;font-size:.875rem;font-weight:600;padding:10px 24px;border-radius:999px;transition:background .2s}@media (min-width:768px){.lithos-signup{display:block}}.lithos-signup:hover{background:#f3f4f6}.lithos-mobile-menu{display:block;color:#fff}@media (min-width:768px){.lithos-mobile-menu{display:none}}@keyframes heroReveal{0%{opacity:0;transform:translateY(28px);filter:blur(12px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes heroFadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes heroZoom{0%{transform:scale(1.12)}to{transform:scale(1)}}.hero-anim{opacity:0;animation-fill-mode:forwards;animation-timing-function:cubic-bezier(.16,1,.3,1)}.hero-reveal{animation-name:heroReveal;animation-duration:1.1s}.hero-fade{animation-name:heroFadeUp;animation-duration:1s}.hero-zoom{animation:heroZoom 1.8s cubic-bezier(.16,1,.3,1) forwards}@media (prefers-reduced-motion:reduce){.hero-anim,.hero-zoom{animation:none;opacity:1}}:root{--ink:#fafafa;--muted:#a7a6a6;--nav:#b6b5b5;--strip:#8b8a8a;--pill:#ffffff;--pill-ink:#050505;--stage:#050505;--bg:#050505;--surface:#0c0c0c;--surface-2:#111111;--surface-3:#1a1a1a;--line:rgba(255,255,255,0.12);--accent:#ffffff;--accent-strong:#e8e8e8;--accent-soft:rgba(255,255,255,0.08);--accent-ink:#050505;--shadow:none;--u:calc(100dvh / 1058);--uw:calc(100vw / 1487);--h:clamp(var(--u),calc(var(--u) * 0.65 + var(--uw) * 0.35),calc(var(--u) * 1.16))}@supports (height:100dvh){:root{--u:calc(100dvh / 1058)}}body,html{background:#050505}body{text-rendering:geometricPrecision}.ai-stage,body{font-family:Manrope,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}.ai-stage{position:relative;width:100%;overflow:hidden;background:var(--stage)}.plate{overflow:hidden}.plate,.plate:after{position:absolute;inset:0;pointer-events:none}.plate:after{content:"";z-index:2}.plate-video{position:absolute;left:50%;top:calc(1 * var(--u));width:calc(1492 * var(--u));height:calc(1054 * var(--u));transform:translateX(calc(-50% - calc(.5 * var(--u))));object-fit:cover}.ai-topbar{position:absolute;top:0;left:0;right:0;z-index:50;justify-content:space-between;padding:0 5vw;height:calc(78 * var(--u))}.ai-brand,.ai-topbar{display:flex;align-items:center}.ai-brand{gap:12px}.ai-topbar-left-text{color:rgba(255,255,255,.88);font-size:.85rem;font-weight:500;line-height:1.5;max-width:320px}.ai-links{position:absolute;left:50%;top:calc(51 * var(--u));transform:translate(-50%,-50%);display:flex;gap:24px;color:var(--nav);font-size:19px;font-weight:400;white-space:nowrap}.ai-links a{color:inherit}.ai-pill-nav{position:absolute;right:5vw;top:calc(27 * var(--u));transform:translateY(-50%)}.ai-topbar-brand{color:rgba(255,255,255,.78);font-size:.85rem;line-height:1.5;text-align:right;max-width:340px}.ai-burger{display:none;width:44px;height:44px;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:rgba(255,255,255,.06);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:relative}.ai-burger i{position:absolute;left:12px;right:12px;height:2px;background:#fff;transition:transform .3s cubic-bezier(.22,1,.36,1)}.ai-burger i:first-child{top:17px}.ai-burger i:last-child{top:25px}.ai-stage.is-open .ai-burger i:first-child{transform:rotate(45deg) translateY(4.3px)}.ai-stage.is-open .ai-burger i:last-child{transform:rotate(-45deg) translateY(-4.3px)}.ai-menu{position:fixed;inset:0;z-index:90;background:linear-gradient(180deg,rgba(5,5,5,.98),rgba(5,5,5,.92));-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);opacity:0;visibility:hidden;transition:opacity .42s,visibility .42s;padding:80px 24px 24px}.ai-menu.is-open{opacity:1;visibility:visible}.menu-inner{max-width:640px;margin:0 auto;display:flex;flex-direction:column;height:100%}.menu-eyebrow{color:var(--muted);font-size:12px;letter-spacing:.12em;text-transform:uppercase}.menu-list{list-style:none;margin:24px 0;padding:0;display:grid;grid-gap:10px;gap:10px}.menu-list a{display:flex;justify-content:space-between;align-items:center;color:var(--ink);font-size:31px;min-height:44px}.menu-list a:after{content:"";width:8px;height:8px;border-right:1px solid var(--muted);border-top:1px solid var(--muted);transform:rotate(45deg)}.menu-foot{margin-top:auto;display:flex;align-items:center;flex-wrap:wrap;gap:18px}.ai-ghost{color:#fff;font-weight:500}.ai-hero{position:absolute;z-index:40;left:5vw;top:0;bottom:0;display:flex;flex-direction:column;justify-content:center}.ai-headline{font-size:72px;line-height:80px;font-weight:400;letter-spacing:.3px;color:var(--ink);margin:0;white-space:nowrap}.ai-headline span{display:block}.ai-sub{color:var(--muted);font-size:21px;line-height:24px;font-weight:400;margin:0;white-space:nowrap}.ai-sub span{display:block}.ai-actions{display:flex;align-items:center;gap:24px;margin-top:34px}.ai-ghost{letter-spacing:.12px}.ai-pill-cta{font-size:21px}.pill{display:inline-flex;align-items:center;justify-content:center;background:var(--pill);color:var(--pill-ink);border-radius:999px;font-family:Manrope,sans-serif;font-weight:500}.pill>span{transform:translateY(1px)}.ai-logos{left:50%;bottom:0;transform:translateX(-50%);width:741px;height:63px;color:var(--strip)}.ai-logos,.lg{position:absolute}.lg{display:flex;align-items:flex-start}.lg svg{width:30px;height:31px}.lg span{margin-left:7px;font-family:IpsumMark,Manrope,sans-serif;font-weight:700;font-size:18px}.lg1{left:0;top:0}.lg2{left:207px;top:1px}.lg3{left:417px;top:2px}.lg4{left:621px;top:4px}.lg-dot{display:inline-block;width:.09em;height:.09em;border-radius:50%;background:currentColor;vertical-align:.62em;margin-left:.06em}@keyframes aiRise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes aiFade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:no-preference){.ai-brand,.ai-pill-nav{animation:aiRise .8s cubic-bezier(.22,1,.36,1) both}.ai-links{animation:aiRiseNav .8s cubic-bezier(.22,1,.36,1) both}.ai-headline{animation:aiRise .9s cubic-bezier(.22,1,.36,1) .06s both}.ai-sub{animation:aiRise .9s cubic-bezier(.22,1,.36,1) .14s both}.ai-hero .ai-ghost,.ai-pill-cta{animation:aiRise .9s cubic-bezier(.22,1,.36,1) .22s both}.lg{animation:aiFade 1.1s cubic-bezier(.22,1,.36,1) .34s both}}@keyframes aiRiseNav{0%{opacity:0;transform:translate(calc(-50% + 0px),calc(-50% + 14px))}to{opacity:1;transform:translate(-50%,-50%)}}@media (max-aspect-ratio:11/10){:root{--m:min(100vw/430,1.34px);--u:var(--m)}@media (min-width:600px){:root{--m:min(100vw/860,100vh/760,1.25px)}}.plate-video{inset:0;width:100%;height:100%;transform:none;object-fit:cover;object-position:43% center}.ai-stage{display:flex;flex-direction:column}.ai-links,.ai-pill-nav,.ai-topbar-brand,.ai-topbar-left-text{display:none}.ai-burger{display:block}.ai-topbar{padding:0 20px;height:64px}.ai-hero{position:absolute;left:0;right:0;top:auto;bottom:0;padding:0 20px 160px;justify-content:flex-end}.ai-headline{font-size:clamp(36px,10vw,56px);line-height:1;white-space:normal}.ai-sub{font-size:15px;line-height:1.4;white-space:normal}.ai-actions{margin-top:22px}.ai-logos{position:absolute;left:20px;right:20px;bottom:20px;width:auto;transform:none;display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;height:auto}.lg{position:static;align-items:center}}.topbar{background:rgba(5,5,5,.82)}.learn-layout,.topbar{border-color:rgba(255,255,255,.12)}.learn-layout{background:rgba(255,255,255,.04)}.lesson-content{color:var(--ink)}.lesson-content li,.lesson-content p{color:var(--muted)}.file-drop{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.14);color:var(--ink)}.material-preview-body{background:#0a0a0a}.card-head,.panel-head,.review-panel header,.teacher-list-card header,.upload-card header{border-color:rgba(255,255,255,.1)}.topbar .brand,.topbar .nav{color:var(--ink)}.topbar .nav a:hover{color:#fff}.topbar .button{background:var(--pill);color:var(--pill-ink);border-radius:999px}.shell{background:#050505}.home-v2,.page{color:var(--ink)}.auth-box h1,.focus-panel h3,.gallery-card h3,.lesson-content h1,.material-card-copy h2,.module-chip b,.page-head h1,.panel-head h2,.path-item h3,.review-panel header h3,.section-head h2,.today-copy h1{font-family:Manrope,sans-serif;color:var(--ink);font-weight:500;letter-spacing:0}.auth-box,.featured-card,.focus-panel,.gallery-card,.home-panel,.material-card,.module-chip,.path-item,.review-panel,.stat-card,.table-card,.teacher-list-card,.upload-card{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12);color:var(--ink)}.focus-panel.challenge-panel{background:#0b0b0b}.button.secondary{background:rgba(255,255,255,.1);color:var(--ink)}.button.light{background:rgba(255,255,255,.08)}.button.light,.icon-button,.mini-button{color:var(--ink);border-color:rgba(255,255,255,.14)}.icon-button,.mini-button{background:rgba(255,255,255,.06)}.lesson-chip,.pill,.status-chip.published{background:rgba(255,255,255,.1);color:var(--ink)}.outline-pill{border-color:rgba(255,255,255,.16)}.empty,.outline-pill{color:var(--muted)}.notice{background:rgba(255,255,255,.04)}.notice,input,select,textarea{color:var(--ink);border-color:rgba(255,255,255,.14)}input,select,textarea{background:#0a0a0a}.lesson-nav{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12)}.lesson-link.active{background:var(--pill);color:var(--pill-ink)}.learning-goals{color:var(--ink)}.challenge,.learning-goals{background:rgba(255,255,255,.06)}.announcement-admin-row,.announcement-row,.api-row,.material-admin-row,.material-row{border-color:rgba(255,255,255,.1)}.table th{background:rgba(255,255,255,.05);color:var(--muted)}.table td{border-color:rgba(255,255,255,.1)}.role-choice button{background:rgba(255,255,255,.04);color:var(--ink);border-color:rgba(255,255,255,.14)}.role-choice button.selected,.teacher-tab.active,.toast{background:var(--pill);color:var(--pill-ink)}.teacher-tab:hover{color:#fff;background:rgba(255,255,255,.06)}.status-chip.draft{color:var(--muted);background:rgba(255,255,255,.05)}.featured-thumb,.gallery-mini-thumb,.gallery-thumb,.material-card-type,.preview-wrap{background:rgba(255,255,255,.06)}.markdown-body{color:var(--ink)}.markdown-body code{background:rgba(255,255,255,.1)}.material-preview{background:#0c0c0c;color:var(--ink)}.material-preview-head p{color:var(--muted)}.material-preview-foot{border-color:rgba(255,255,255,.12);color:var(--muted)}.modal-backdrop{background:rgba(0,0,0,.78)}.home-footer{color:var(--muted);border-color:rgba(255,255,255,.12)}.today-copy .hero-kicker span:last-child{color:var(--muted);border:0;background:transparent;padding:0}.today-copy .hero-goal{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.12);color:var(--ink)}.today-copy .hero-actions .button.ghost{color:#fff;border-color:rgba(255,255,255,.2)}.today-preview .home-sketch{border-color:rgba(255,255,255,.16);box-shadow:none}.canvas-caption{color:var(--muted)}.blank-page{min-height:100dvh;display:grid;place-items:center;align-content:center;grid-gap:18px;gap:18px;padding:0 24px;text-align:center;color:var(--ink)}.blank-page-mark{width:42px;height:42px;border:1px solid rgba(255,255,255,.2);border-radius:50%;margin:0 auto;position:relative}.blank-page-mark:after{content:"";position:absolute;inset:12px;border-radius:50%;background:rgba(255,255,255,.25)}.blank-page h1{font-size:clamp(2rem,5vw,4rem);font-weight:500;margin:0;letter-spacing:0}.blank-page p{max-width:560px;color:var(--muted);font-size:1rem;line-height:1.8;margin:0}.hero-kicker span:first-child,.today-copy .hero-kicker span:first-child{background:#ffffff;color:#050505;border-color:transparent}.hero-studio .button,.today-copy .hero-actions .button{background:#ffffff;color:#050505;box-shadow:none}.live-dot{background:#ffffff;box-shadow:0 0 0 4px rgba(255,255,255,.16)}.task-card.primary{background:#ffffff;color:#050505;border-color:transparent}.task-card.primary .task-icon{background:rgba(5,5,5,.08);color:#050505}.task-card.primary .task-copy small{color:rgba(5,5,5,.65)}.task-card.primary .task-arrow{color:#050505}.canvas-loading span{border-color:#ffffff rgba(255,255,255,.25) rgba(255,255,255,.25)}.ai-headline{font-size:clamp(30px,3.8vw,56px);line-height:1.02;max-width:62vw}.ai-sub{font-size:clamp(15px,1.4vw,19px);line-height:1.5;white-space:normal}.auth-box h1,.blank-page h1,.page-head h1{font-size:clamp(1.6rem,3vw,2.2rem)}.card-head h2,.lesson-content h1,.panel-head h2,.section-head h2{font-size:1.3rem}.focus-panel h3,.gallery-card h3,.material-card-copy h2,.path-item h3{font-size:1.05rem}.review-panel header h3{font-size:1rem}.notice-page-list{display:grid;grid-gap:14px;gap:14px;max-width:920px}.notice-page-item{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:22px}.notice-page-item h2{font-size:1.2rem;margin:8px 0 6px;font-weight:500}.notice-page-item p{color:var(--muted);line-height:1.7;margin:0}.task-card{transition:background .18s,color .18s,border-color .18s,box-shadow .18s}.task-card:hover{background:#ffffff;color:#050505;border-color:transparent;box-shadow:0 12px 30px rgba(255,255,255,.12)}.task-card:hover .task-icon{background:rgba(5,5,5,.08);color:#050505}.task-card:hover .task-copy small{color:rgba(5,5,5,.65)}.task-card:hover .task-arrow{color:#050505}.topbar .nav a:not(.button){padding:7px 11px;border-radius:999px;transition:background .18s,color .18s}.topbar .nav a:not(.button):hover{background:#ffffff;color:#050505}.button:hover,.check-row:hover,.file-drop:hover,.icon-button:hover,.lesson-link:hover,.material-open:hover,.mini-button:hover,.role-choice button:hover,.status-chip:hover,.teacher-tab:hover{background:#ffffff;color:#050505;border-color:transparent}.course-intro-page{max-width:1000px}.course-intro-section{margin-bottom:44px}.course-intro-section h2{font-size:1.3rem;font-weight:500;margin:0 0 18px}.course-info-table{width:100%;max-width:860px;border-collapse:collapse;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.12);border-radius:8px;overflow:hidden}.course-info-table td,.course-info-table th{padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.08);text-align:left;vertical-align:middle}.course-info-table th{width:230px;color:var(--muted);font-size:.82rem;font-weight:500}.course-info-table td{font-size:.9rem}.course-info-table tr:last-child td,.course-info-table tr:last-child th{border-bottom:0}.course-intro-text h3{font-size:1rem;font-weight:500;margin:22px 0 8px}.course-intro-text p{color:var(--muted);line-height:1.8;margin:0 0 18px}@media (max-width:760px){.course-info-table th{width:150px}}.ai-ghost,.ai-pill-cta{transition:background .18s,color .18s,transform .18s}.ai-pill-cta:hover{background:#050505;color:#ffffff}.ai-ghost:hover{background:#ffffff;color:#050505}.ai-ghost{padding:12px 28px;border-radius:999px;font-size:21px}.ai-ghost,.ai-menu .pill:hover{background:#050505;color:#ffffff}.ai-menu .ai-ghost:hover{background:#ffffff;color:#050505}.today-copy .hero-actions .button:hover{background:#050505;color:#ffffff}.today-copy .hero-actions .button.ghost:hover{background:#ffffff;color:#050505}.task-card.primary:hover{background:#050505;color:#ffffff}.task-card.primary:hover .task-icon{background:rgba(255,255,255,.14);color:#ffffff}.task-card.primary:hover .task-copy small{color:rgba(255,255,255,.7)}.ai-links a:hover,.ai-pill-cta,.task-card.primary:hover .task-arrow{color:#ffffff}.ai-pill-cta{background:#050505}.ai-pill-cta:hover{background:#ffffff;color:#050505}.ai-menu .pill{background:#050505;color:#ffffff}.ai-menu .pill:hover{background:#ffffff;color:#050505}.today-copy .hero-actions .button{background:#050505;background:transparent;color:#ffffff;border:1px solid rgba(255,255,255,.2);box-shadow:none}.today-copy .hero-actions .button:hover{background:#ffffff;color:#050505}.task-card.primary{background:#050505;color:#ffffff}.task-card.primary:hover{background:#ffffff;color:#050505}.task-card.primary .task-icon{background:rgba(255,255,255,.12);color:#ffffff}.task-card.primary:hover .task-icon{background:rgba(5,5,5,.08);color:#050505}.task-card.primary .task-copy small{color:rgba(255,255,255,.7)}.task-card.primary:hover .task-copy small{color:rgba(5,5,5,.65)}.task-card.primary .task-arrow{color:#ffffff}.task-card.primary:hover .task-arrow{color:#050505}.ai-headline,.auth-box h1,.blank-page h1,.page-head h1,.today-copy h1{font-size:clamp(30px,3.8vw,56px)}.challenge-panel .focus-label,.challenge-panel .text-link{color:#fafafa}.challenge-panel .text-link{font-size:.9rem}.ai-cta{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-width:224px;min-height:52px;padding:12px 28px;border-radius:999px;font-size:21px;font-weight:500;line-height:1.2;letter-spacing:.12px;white-space:nowrap}.ai-cta>span{transform:none}@media (max-aspect-ratio:11/10){.ai-actions,.menu-foot{flex-direction:column;align-items:stretch;gap:14px}.ai-actions .ai-cta,.menu-foot .ai-cta{width:100%;min-width:0}}.sync-hint{grid-column:1/-1;margin:-4px 0 0;color:var(--muted);font-size:.88rem;line-height:1.6}.sync-template-link{justify-self:start}.lesson-content-page .lesson-content{max-width:860px}.code-block{background:var(--studio);color:var(--studio-text);padding:16px;border-radius:8px;overflow:auto;font-size:.9rem;line-height:1.6}.lesson-content-page .markdown-body{max-width:840px;padding:0}.markdown-body h3{border-top:1px solid var(--line);padding-top:26px;margin-top:36px}.markdown-body h3:first-child{border-top:0;padding-top:0;margin-top:24px}.markdown-body strong{color:var(--ink)}.markdown-body ol>li{margin:.45em 0}.pending-lesson{display:grid;place-content:center;justify-items:center;grid-gap:18px;gap:18px;text-align:center}.pending-lesson .empty{max-width:520px}.path-pending{margin:0;color:var(--muted);font-size:.9rem}.learn-heading .bi{display:grid;grid-gap:6px;gap:6px;margin-top:6px}.learn-heading .bi-sep{display:none}.learn-heading .bi [lang=zh]{font-size:clamp(1.45rem,3vw,2.1rem)}.learn-heading .bi [lang=en]{font-size:clamp(1.02rem,1.8vw,1.35rem);color:var(--muted);font-weight:400}.ai-login-button{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:rgba(255,255,255,.06);color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;transition:background .18s,color .18s,border-color .18s}.ai-login-button:hover{background:#fff;color:#050505;border-color:transparent}.login-backdrop{z-index:100}.login-dialog{width:min(420px,100%);background:#0c0c0c;border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.5)}.login-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid var(--line)}.login-dialog-head h2{margin:6px 0 0;font-size:1.35rem;font-weight:500}.login-dialog-body{display:grid;grid-gap:14px;gap:14px;padding:22px}.login-signed-in{text-align:center}.login-signed-in p{color:var(--ink);margin:0 0 16px}.login-gate{max-width:560px;margin:42px auto;padding:38px 28px;display:grid;justify-items:center;grid-gap:14px;gap:14px;text-align:center;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.03)}.login-gate-mark{width:52px;height:52px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.14);border-radius:50%;color:var(--muted)}.login-gate h2{margin:0;font-size:1.2rem;font-weight:500}.login-gate p{margin:0;color:var(--muted);line-height:1.7}.form-error{color:var(--danger,#ff9d83);font-size:.85rem;line-height:1.5;margin:0}.syllabus-page{max-width:1100px}.syllabus-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1px;gap:1px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--line)}.syllabus-chapter{display:flex;align-items:flex-start;gap:16px;padding:18px 20px;background:var(--surface)}.syllabus-number{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);font-size:.78rem;line-height:1.7;min-width:64px}.syllabus-copy h2{margin:0;font-size:1rem;font-weight:500;line-height:1.55}.chapter-menu{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 12px;margin-bottom:14px;scrollbar-width:thin}.chapter-menu button{flex:0 0 auto;padding:9px 14px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.04);color:var(--muted);font-size:.82rem;white-space:nowrap;cursor:pointer;transition:background .18s,color .18s,border-color .18s}.chapter-menu button:hover{background:rgba(255,255,255,.12);color:var(--ink)}.chapter-menu button.active{background:#fff;color:#050505;border-color:transparent}.materials-chapter-head{display:grid;grid-gap:6px;gap:6px;padding:18px 20px;margin-bottom:18px;border:1px solid var(--line);border-left:4px solid #fff;border-radius:8px;background:rgba(255,255,255,.03)}.materials-chapter-head span{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.materials-chapter-head h2{margin:0;font-size:1.25rem;font-weight:500}.materials-chapter-head p{margin:0;color:var(--muted);font-size:.88rem}@media (max-width:760px){.syllabus-grid{grid-template-columns:1fr}.syllabus-chapter,.syllabus-copy,.syllabus-copy h2{min-width:0;overflow-wrap:anywhere}.ai-headline{max-width:100%}.page-head h1,.today-copy h1{overflow-wrap:anywhere}.chapter-menu,.code-block,.materials-chapter-head{max-width:100%}.login-dialog{width:min(100%,360px)}.hero-actions .button,.today-copy .hero-actions .button{white-space:normal}.today-copy .hero-kicker{flex-direction:column;align-items:flex-start;gap:8px}.today-copy .hero-kicker span{max-width:100%;white-space:normal;text-align:left}}.notice-page-item .markdown-body{max-width:none;padding:0}.notice-page-item .markdown-body p{margin:.8em 0;color:var(--muted);line-height:1.8}.notice-page-item .markdown-body a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}