:root{--bg: #f5f6fa;--bg-soft: #eef0f7;--card: #ffffff;--ink: #161a26;--ink-2: #3d4457;--ink-3: #6b7288;--line: #e2e5ef;--line-strong: #cfd4e4;--brand: #2b46c8;--brand-2: #4a67e8;--brand-soft: #edf0ff;--gold: #b8860b;--gold-soft: #fdf6e3;--ok: #157f5a;--ok-soft: #e8f6f0;--warn: #b2540a;--warn-soft: #fdf1e3;--bad: #c0392b;--bad-soft: #fdecea;--radius: 14px;--shadow: 0 1px 2px rgba(20, 28, 60, .04), 0 8px 24px rgba(20, 28, 60, .06);--shadow-lg: 0 2px 6px rgba(20, 28, 60, .06), 0 18px 48px rgba(20, 28, 60, .1);--mono: ui-monospace, "SFMono-Regular", "JetBrains Mono", Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Source Han Sans SC,sans-serif;font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit;font-size:inherit;cursor:pointer}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#d3d7e4;border-radius:10px;border:3px solid var(--bg)}::-webkit-scrollbar-track{background:transparent}.app{display:flex;min-height:100vh}.side{width:228px;flex:0 0 228px;background:#101820;color:#cfd5ea;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:18px 12px}.brand{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding:4px 10px 16px}.brand-logo{display:block;line-height:0}.brand-logo img{height:32px;width:auto;display:block}.brand-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,#4a67e8,#2b46c8);display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;letter-spacing:-.5px;box-shadow:0 4px 12px #4a67e866}.brand-text b{display:block;color:#fff;font-size:13px;letter-spacing:.2px}.brand-text span{font-size:11px;color:#7f88a8;letter-spacing:.4px;white-space:nowrap}.nav{display:flex;flex-direction:column;gap:2px;overflow-y:auto}.nav-group{font-size:11px;color:#5d6684;letter-spacing:1.4px;padding:16px 12px 6px;text-transform:uppercase}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;color:#b9c1d9;font-size:13.5px;transition:background .15s,color .15s}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:linear-gradient(90deg,#4a67e847,#4a67e81a);color:#fff;box-shadow:inset 2px 0 #6f8bff}.nav-item .dot{width:6px;height:6px;border-radius:50%;background:#4a67e8;opacity:.6}.nav-item.active .dot{background:#8ea6ff;opacity:1;box-shadow:0 0 8px #8ea6ff}.side-foot{margin-top:auto;padding:12px;border-top:1px solid rgba(255,255,255,.07);font-size:12px;color:#7f88a8}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:62px;flex:0 0 62px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:#ffffffc7;-webkit-backdrop-filter:saturate(150%) blur(10px);backdrop-filter:saturate(150%) blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.crumb{font-size:13px;color:var(--ink-3)}.crumb b{color:var(--ink);font-weight:600}.topbar-right{display:flex;align-items:center;gap:12px}.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(140deg,#e6ebff,#c9d4ff);color:#2b46c8;display:grid;place-items:center;font-weight:700;font-size:13px}.page{padding:26px 28px 60px;max-width:1180px;width:100%;margin:0 auto}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:20px 22px}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.row{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.wrap{flex-wrap:wrap}h1.title{font-size:25px;line-height:1.35;margin:0 0 6px;letter-spacing:-.3px;font-weight:700}h2.sec{font-size:18px;margin:0 0 4px;font-weight:650;letter-spacing:-.2px}.sub{color:var(--ink-3);font-size:13px}.muted{color:var(--ink-3)}.tiny{font-size:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 16px;border-radius:9px;border:1px solid var(--line-strong);background:#fff;color:var(--ink-2);font-weight:550;transition:all .15s;white-space:nowrap}.btn:hover{border-color:#b9c0d6;background:#fafbff}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 4px 14px #2b46c838}.btn.primary:hover{background:#2439a8;border-color:#2439a8}.btn.ghost{background:transparent;border-color:transparent;color:var(--brand);padding:0 8px;height:32px}.btn.ghost:hover{background:var(--brand-soft)}.btn.sm{height:32px;padding:0 12px;font-size:13px;border-radius:8px}.btn.lg{height:44px;padding:0 22px;font-size:15px}.btn:disabled{opacity:.5;cursor:not-allowed}.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:999px;font-size:11.5px;font-weight:600;background:var(--bg-soft);color:var(--ink-2);white-space:nowrap}.pill.brand{background:var(--brand-soft);color:var(--brand)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.gold{background:var(--gold-soft);color:var(--gold)}.divider{height:1px;background:var(--line);margin:18px 0}.auth-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:#101820}.auth-hero{padding:56px 62px;color:#dfe4f7;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:22px;background:radial-gradient(900px 520px at 12% 12%,rgba(74,103,232,.35),transparent 60%),radial-gradient(700px 500px at 88% 82%,rgba(184,134,11,.18),transparent 62%),#101820}.auth-hero h1{font-size:38px;line-height:1.28;margin:0;color:#fff;letter-spacing:-.6px}.auth-hero p{margin:0;color:#98a2c4;font-size:15px;max-width:460px}.hero-stats{display:flex;gap:30px;margin-top:8px}.hero-stats div b{display:block;font-size:24px;color:#fff;letter-spacing:-.5px}.hero-stats div span{font-size:12px;color:#7f89ad}.auth-panel{background:#fff;display:grid;place-items:center;padding:40px}.auth-box{width:100%;max-width:360px}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:6px;font-weight:550}.input{width:100%;height:42px;padding:0 13px;border-radius:9px;border:1px solid var(--line-strong);background:#fff;outline:none;transition:border .15s,box-shadow .15s}.input:focus{border-color:var(--brand-2);box-shadow:0 0 0 3px #4a67e81f}textarea.input{height:auto;padding:12px 13px;resize:vertical;line-height:1.7}.tabs{display:flex;gap:4px;background:var(--bg-soft);padding:4px;border-radius:10px;margin-bottom:20px}.tabs button{flex:1;height:34px;border:none;background:transparent;border-radius:7px;color:var(--ink-3);font-weight:600;white-space:nowrap;font-size:13px}.tabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px #141c3c1a}.alert{padding:10px 13px;border-radius:9px;font-size:13px;margin-bottom:14px}.alert.bad{background:var(--bad-soft);color:var(--bad)}.alert.ok{background:var(--ok-soft);color:var(--ok)}.hero-card{background:linear-gradient(120deg,#17204a,#25347a 58%,#33459c);color:#fff;border-radius:18px;padding:26px 28px;position:relative;overflow:hidden;box-shadow:var(--shadow-lg)}.hero-card:after{content:"";position:absolute;right:-60px;top:-90px;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.14),transparent 65%)}.hero-card h2{margin:0 0 4px;font-size:22px;letter-spacing:-.3px}.hero-card p{margin:0;color:#b8c2e8;font-size:13px}.hero-metrics{display:flex;gap:34px;margin-top:22px;position:relative;z-index:1;flex-wrap:wrap}.hero-metrics b{display:block;font-size:26px;letter-spacing:-.5px;line-height:1.3}.hero-metrics span{font-size:12px;color:#9aa6d4}.ring-wrap{display:flex;align-items:center;gap:18px}.ring{--p: 0;width:92px;height:92px;border-radius:50%;background:conic-gradient(var(--brand-2) calc(var(--p) * 1%),#dfe4f2 0);display:grid;place-items:center;flex:0 0 auto;position:relative;z-index:2}.ring>div{width:72px;height:72px;border-radius:50%;background:#fff;display:grid;place-items:center;font-weight:700;font-size:17px;color:var(--ink);letter-spacing:-.3px}.stat-card{padding:16px 18px}.stat-card .k{font-size:12px;color:var(--ink-3);margin-bottom:6px}.stat-card .v{font-size:24px;font-weight:700;letter-spacing:-.5px;line-height:1.25}.stat-card .d{font-size:11.5px;color:var(--ink-3);margin-top:4px}.progress-line{height:6px;border-radius:999px;background:#edf0f8;overflow:hidden}.progress-line i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--brand-2),var(--brand))}.unit-row{display:flex;align-items:center;gap:14px;padding:13px 16px;border-radius:11px;border:1px solid var(--line);background:#fff;transition:all .15s}.unit-row:hover{border-color:#c3cbe6;box-shadow:var(--shadow);transform:translateY(-1px)}.unit-no{width:30px;height:30px;border-radius:8px;background:var(--bg-soft);display:grid;place-items:center;font-size:12.5px;font-weight:700;color:var(--ink-3);flex:0 0 auto}.unit-no.done{background:var(--ok-soft);color:var(--ok)}.unit-no.learning{background:var(--warn-soft);color:var(--warn)}.lesson-layout{display:grid;grid-template-columns:minmax(0,1fr) 268px;gap:22px;align-items:start}.lesson-body h3{font-size:16.5px;margin:26px 0 10px;padding-left:11px;border-left:3px solid var(--brand);line-height:1.4;font-weight:650}.lesson-body p{margin:0 0 12px;color:var(--ink-2);font-size:14.5px;line-height:1.85}.lesson-body ul{margin:0 0 14px;padding-left:20px;color:var(--ink-2)}.lesson-body li{margin-bottom:7px;line-height:1.75}.note{border-radius:11px;padding:13px 15px;margin:14px 0 16px;font-size:13.5px;border:1px solid}.note.exam{background:var(--gold-soft);border-color:#f0dfae;color:#6b5410}.note.tip{background:var(--brand-soft);border-color:#d3dbff;color:#25368c}.note b{display:block;margin-bottom:3px;font-size:12.5px;letter-spacing:.5px}.data-table{width:100%;border-collapse:collapse;margin:12px 0 18px;font-size:13.2px;border:1px solid var(--line);border-radius:10px;overflow:hidden}.data-table th{background:#f7f8fc;text-align:left;padding:9px 12px;font-weight:600;color:var(--ink-2);border-bottom:1px solid var(--line);font-size:12.5px}.data-table td{padding:9px 12px;border-bottom:1px solid #f0f2f8;color:var(--ink-2);vertical-align:top}.data-table tr:last-child td{border-bottom:none}.figure{margin:16px 0 20px;padding:16px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,#fcfdff,#f7f9ff)}.figure svg{display:block;width:100%;height:auto}.figure figcaption{text-align:center;font-size:12px;color:var(--ink-3);margin-top:10px}.side-sticky{position:sticky;top:78px;display:flex;flex-direction:column;gap:14px}.mini-list{display:flex;flex-direction:column;gap:8px}.mini-item{display:flex;gap:8px;font-size:12.8px;color:var(--ink-2);line-height:1.6}.mini-item i{width:5px;height:5px;border-radius:50%;background:var(--brand-2);margin-top:8px;flex:0 0 auto}.q-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:20px 22px;box-shadow:var(--shadow)}.q-stem{font-size:15px;line-height:1.8;color:var(--ink);margin-bottom:14px;font-weight:500}.opt{display:flex;gap:11px;padding:11px 14px;border:1px solid var(--line);border-radius:10px;margin-bottom:9px;cursor:pointer;transition:all .14s;background:#fff;align-items:flex-start;width:100%;text-align:left;color:var(--ink-2);line-height:1.65}.opt:hover{border-color:#bcc6e8;background:#fbfcff}.opt .key{width:22px;height:22px;border-radius:6px;background:var(--bg-soft);display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--ink-3);flex:0 0 auto;margin-top:1px}.opt.sel{border-color:var(--brand-2);background:var(--brand-soft);color:var(--brand)}.opt.sel .key{background:var(--brand);color:#fff}.opt.right{border-color:#7fceac;background:var(--ok-soft);color:#0f5f43}.opt.right .key{background:var(--ok);color:#fff}.opt.wrong{border-color:#efb4ac;background:var(--bad-soft);color:#8c2b20}.opt.wrong .key{background:var(--bad);color:#fff}.opt:disabled{cursor:default}.answer-box{margin-top:14px;border-top:1px dashed var(--line);padding-top:14px}.explain{font-size:13.5px;color:var(--ink-2);line-height:1.85}.exam-bar{position:sticky;top:62px;z-index:15;background:#fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:12px;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;box-shadow:var(--shadow)}.timer{font-family:var(--mono);font-size:19px;font-weight:700;letter-spacing:1px;color:var(--brand)}.timer.danger{color:var(--bad)}.md{font-size:14px;line-height:1.85;color:var(--ink-2)}.md h1,.md h2,.md h3{font-size:15px;margin:18px 0 8px;color:var(--ink);font-weight:650}.md h2{padding-bottom:6px;border-bottom:1px solid var(--line)}.md p{margin:0 0 10px}.md ul,.md ol{margin:0 0 12px;padding-left:20px}.md li{margin-bottom:5px}.md code{background:#f2f4fa;padding:1px 5px;border-radius:4px;font-family:var(--mono);font-size:12.5px}.md pre{background:#11162b;color:#d8e0ff;padding:13px 15px;border-radius:9px;overflow-x:auto;font-size:12.5px}.md blockquote{margin:0 0 12px;padding:8px 14px;border-left:3px solid var(--brand-2);background:var(--brand-soft);color:#2b3a7a;border-radius:0 8px 8px 0}.chat-scroll{height:calc(100vh - 260px);min-height:340px;overflow-y:auto;padding-right:6px}.msg{display:flex;gap:10px;margin-bottom:16px}.msg .who{width:28px;height:28px;border-radius:8px;flex:0 0 auto;display:grid;place-items:center;font-size:11px;font-weight:700}.msg.ai .who{background:var(--brand-soft);color:var(--brand)}.msg.me .who{background:#eef7f2;color:var(--ok)}.msg .bubble{background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px 15px;max-width:92%}.msg.ai .bubble{background:#fbfcff}.typing i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--brand-2);margin-right:4px;animation:blink 1.1s infinite}.typing i:nth-child(2){animation-delay:.18s}.typing i:nth-child(3){animation-delay:.36s}@keyframes blink{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}.span2{grid-column:span 2}.badge-num{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:6px;background:var(--brand-soft);color:var(--brand);font-size:11px;font-weight:700}.empty{text-align:center;padding:48px 20px;color:var(--ink-3);font-size:13.5px}.loading-dots{color:var(--ink-3);font-size:13px}.blog-link{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border-radius:8px;background:var(--warn-soft);color:#8a4a08;font-size:12.5px;font-weight:600;border:1px solid #f2dcc0}.blog-link:hover{background:#fbe9d4}.page-fade{animation:fade .28s ease}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (max-width: 1080px){.lesson-layout{grid-template-columns:1fr}.side-sticky{position:static}.g4,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 860px){.side{display:none}.auth-wrap{grid-template-columns:1fr}.auth-hero{display:none}.page{padding:18px 16px 50px}.g2,.g3,.g4{grid-template-columns:1fr}.span2{grid-column:span 1}}
