:root{--bg:#0b0d13;--bg-soft:#10131c;--card:#161a26;--card-hover:#1c2130;--border:#262c3d;--border-strong:#343c52;--text:#e8ebf3;--text-strong:#fff;--muted:#9aa3bd;--muted-2:#6b7388;--accent:#6c8cff;--accent-soft:#6c8cff1f;--gradient:linear-gradient(135deg, #6c8cff 0%, #a78bfa 50%, #4ade80 100%);--green:#4ade80;--green-soft:#4ade801f;--yellow:#fbbf24;--yellow-soft:#fbbf241f;--red:#f87171;--red-soft:#f871711f;--mnemo:#a78bfa;--ts:#34d399;--yolo:#f97316;--fs-xs:.75rem;--fs-sm:.85rem;--fs-md:.95rem;--fs-base:1rem;--fs-lg:1.15rem;--fs-xl:1.4rem;--fs-2xl:1.8rem;--fs-3xl:2.4rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--r-sm:6px;--r-md:10px;--r-lg:16px;--shadow:0 4px 24px #00000059;--shadow-lg:0 12px 48px #00000080;--glow:0 0 0 1px var(--accent) inset, 0 0 24px #6c8cff26;--container:1200px;--nav-h:62px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 20px)}body{background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:var(--fs-base);-webkit-font-smoothing:antialiased;line-height:1.75}::selection{color:var(--text-strong);background:#6c8cff59}h1,h2,h3,h4{color:var(--text-strong);letter-spacing:-.015em;font-weight:700;line-height:1.3}a{color:var(--accent);text-decoration:none;transition:opacity .15s}a:hover{opacity:.85}code{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--green);padding:2px 7px;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.88em}.container{max-width:var(--container);padding:0 var(--sp-5);margin:0 auto}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-main{flex:1}.app-footer{border-top:1px solid var(--border);background:var(--bg-soft);margin-top:var(--sp-8)}.navbar{z-index:100;height:var(--nav-h);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);background:#0b0d13d9;position:sticky;top:0}.navbar-inner{max-width:var(--container);padding:0 var(--sp-5);justify-content:space-between;align-items:center;height:100%;margin:0 auto;display:flex}.brand{align-items:center;gap:var(--sp-3);color:var(--text-strong);font-size:1.05rem;font-weight:700;display:flex}.brand-logo{border-radius:var(--r-md);background:var(--gradient);place-items:center;width:34px;height:34px;font-size:1rem;display:grid;box-shadow:0 2px 12px #6c8cff59}.nav-links{align-items:center;gap:var(--sp-2);list-style:none;display:flex}.nav-links a{border-radius:var(--r-md);color:var(--muted);font-size:var(--fs-sm);padding:8px 14px;font-weight:500;transition:all .15s;display:block}.nav-links a:hover{color:var(--text-strong);background:var(--card);opacity:1}.nav-links a.active{color:var(--text-strong);background:var(--accent-soft)}.nav-badge{background:var(--green-soft);color:var(--green);font-size:var(--fs-xs);border:1px solid #4ade8033;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-weight:600;display:inline-flex}.hero{text-align:center;padding:var(--sp-8) var(--sp-5) var(--sp-7);position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;background:radial-gradient(800px 300px at 50% 0,#6c8cff14,#0000 70%),radial-gradient(500px 200px at 80% 20%,#a78bfa0f,#0000 70%);position:absolute;inset:0}.hero-inner{max-width:780px;margin:0 auto;position:relative}.hero h1{margin-bottom:var(--sp-4);background:var(--gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(1.9rem,4.5vw,2.8rem);font-weight:800}.hero-sub{color:var(--muted);font-size:var(--fs-lg);max-width:640px;margin:0 auto var(--sp-5)}.hero-tags{justify-content:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.tag{font-size:var(--fs-xs);border:1px solid var(--border);background:var(--card);color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-weight:600;display:inline-flex}.tag.green{color:var(--green);background:var(--green-soft);border-color:#4ade8033}.tag.accent{color:var(--accent);background:var(--accent-soft);border-color:#6c8cff33}.stats-bar{gap:var(--sp-4);max-width:900px;margin:0 auto var(--sp-7);padding:var(--sp-5);background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.stat{text-align:center}.stat-value{font-size:var(--fs-2xl);color:var(--text-strong);background:var(--gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-weight:800}.stat-label{font-size:var(--fs-xs);color:var(--muted-2);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}.section-title{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5);display:flex}.section-title h2{font-size:var(--fs-2xl)}.section-title .line{background:linear-gradient(90deg, var(--border-strong), transparent);flex:1;height:1px}.course-grid{gap:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(320px,1fr));display:grid}.course-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-6);color:var(--text);flex-direction:column;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.course-card:before{content:"";background:var(--gradient);opacity:0;height:3px;transition:opacity .2s;position:absolute;top:0;left:0;right:0}.course-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-lg);color:var(--text);opacity:1;transform:translateY(-6px)}.course-card:hover:before{opacity:1}.course-card.alt:before{background:linear-gradient(135deg,#34d399,#6c8cff)}.course-meta{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);display:flex}.course-emoji{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--r-md);place-items:center;width:52px;height:52px;font-size:1.6rem;display:grid}.course-difficulty{font-size:var(--fs-xs);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:3px 10px;font-weight:600}.course-card h3{font-size:var(--fs-xl);margin-bottom:var(--sp-2)}.course-card .course-desc{color:var(--muted);font-size:var(--fs-md);margin-bottom:var(--sp-4);flex:1}.course-topics{margin-bottom:var(--sp-5);flex-wrap:wrap;gap:6px;display:flex}.topic-chip{font-size:var(--fs-xs);background:var(--bg-soft);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:3px 10px}.course-cta{border-radius:var(--r-md);background:var(--accent);color:#fff;font-weight:600;font-size:var(--fs-sm);justify-content:center;align-items:center;gap:8px;padding:11px 20px;transition:background .15s,transform .15s;display:inline-flex}.course-card:hover .course-cta{background:var(--accent);filter:brightness(1.1)}.course-cta:hover{opacity:1;transform:translate(4px)}.notice{background:var(--card);border:1px solid var(--border);border-left:4px solid var(--yellow);border-radius:var(--r-md);padding:var(--sp-5);margin-top:var(--sp-7)}.notice h3{color:var(--yellow);margin-bottom:var(--sp-2);font-size:var(--fs-lg)}.notice p{color:var(--muted);font-size:var(--fs-md)}.guide-layout{gap:var(--sp-6);grid-template-columns:260px minmax(0,1fr);align-items:start;display:grid}.guide-sidebar{top:calc(var(--nav-h) + 20px);background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);max-height:calc(100vh - var(--nav-h) - 40px);position:sticky;overflow-y:auto}.guide-sidebar h4{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted-2);margin-bottom:var(--sp-4)}.toc-list{list-style:none}.toc-list a{border-radius:var(--r-sm);color:var(--muted);font-size:var(--fs-sm);border-left:2px solid #0000;padding:7px 10px;transition:all .15s;display:block}.toc-list a:hover{color:var(--text-strong);background:var(--bg-soft);opacity:1}.toc-list a.active{color:var(--accent);background:var(--accent-soft);border-left-color:var(--accent);font-weight:600}.guide-content{min-width:0}.guide-header{padding:var(--sp-5) 0 var(--sp-6);border-bottom:1px solid var(--border);margin-bottom:var(--sp-6)}.guide-header .title-row{align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-3);display:flex}.guide-header h1{font-size:var(--fs-3xl)}.guide-emoji{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);flex-shrink:0;place-items:center;width:64px;height:64px;font-size:2rem;display:grid}.guide-header .intro{color:var(--muted);font-size:var(--fs-lg);max-width:720px}.guide-meta-row{align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);flex-wrap:wrap;display:flex}.breadcrumb{font-size:var(--fs-sm);color:var(--muted-2);margin-bottom:var(--sp-5);align-items:center;gap:8px;display:flex}.breadcrumb a{color:var(--muted)}.breadcrumb a:hover{color:var(--accent);opacity:1}.breadcrumb .sep{opacity:.5}.progress-rail{top:var(--nav-h);z-index:50;background:0 0;height:3px;position:sticky}.progress-rail .progress-fill{background:var(--gradient);border-radius:0 2px 2px 0;width:0%;height:100%;transition:width .1s linear}.guide-section{margin-bottom:var(--sp-7);scroll-margin-top:calc(var(--nav-h) + var(--sp-5))}.guide-section h2{font-size:var(--fs-2xl);margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:2px solid var(--border);align-items:baseline;gap:var(--sp-3);display:flex}.section-num{font-size:var(--fs-sm);color:var(--accent);font-family:JetBrains Mono,monospace;font-weight:700}.guide-section h3{font-size:var(--fs-lg);margin:var(--sp-5) 0 var(--sp-3);color:var(--text-strong)}.guide-section p{color:var(--muted);margin-bottom:var(--sp-4)}.guide-section ul,.guide-section ol{color:var(--muted);margin-bottom:var(--sp-4);padding-left:24px}.guide-section li{margin-bottom:6px}.guide-section li strong{color:var(--text)}.guide-footer-nav{justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-7);padding-top:var(--sp-5);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.nav-box{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);min-width:200px;padding:var(--sp-4);color:var(--text);flex:1;transition:border-color .15s,transform .15s;display:block}.nav-box:hover{border-color:var(--accent);opacity:1;transform:translateY(-2px)}.nav-box .nav-label{font-size:var(--fs-xs);color:var(--muted-2);text-transform:uppercase;letter-spacing:.06em}.nav-box .nav-title{margin-top:4px;font-weight:600}.nav-box.next{text-align:right}.callout{gap:var(--sp-4);background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-5);margin:var(--sp-4) 0;display:flex}.callout-icon{font-size:1.2rem;line-height:1.4}.callout-body strong{color:var(--text-strong);margin-bottom:4px;display:block}.callout-body div{color:var(--muted);font-size:var(--fs-md)}.callout-body a{color:var(--accent)}.callout-body code{color:var(--green)}.callout.info{border-left:4px solid var(--accent)}.callout.warn{border-left:4px solid var(--yellow)}.callout.ok{border-left:4px solid var(--green)}.callout.danger{border-left:4px solid var(--red)}.code-block{border:1px solid var(--border);border-radius:var(--r-md);margin:var(--sp-4) 0;background:#0d1017;position:relative;overflow:hidden}.code-block .code-header{background:var(--bg-soft);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.code-block .code-lang{font-size:var(--fs-xs);color:var(--muted-2);text-transform:uppercase;letter-spacing:.05em;font-family:JetBrains Mono,monospace}.copy-btn{border:1px solid var(--border);color:var(--muted);font-size:var(--fs-xs);border-radius:var(--r-sm);cursor:pointer;background:0 0;align-items:center;gap:6px;padding:4px 10px;font-family:inherit;transition:all .15s;display:inline-flex}.copy-btn:hover{color:var(--text-strong);border-color:var(--border-strong);background:var(--card)}.copy-btn.copied{color:var(--green);background:var(--green-soft);border-color:#4ade804d}.code-block pre{padding:var(--sp-4) var(--sp-5);font-size:var(--fs-sm);line-height:1.65;overflow-x:auto}.code-block pre code{color:#c9d3e8;background:0 0;border:none;padding:0;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.table-wrap{margin:var(--sp-4) 0;border-radius:var(--r-md);border:1px solid var(--border);overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.data-table thead th{background:var(--card);color:var(--text-strong);text-align:left;border-bottom:1px solid var(--border-strong);white-space:nowrap;padding:12px 16px;font-weight:600}.data-table tbody td{border-bottom:1px solid var(--border);color:var(--muted);vertical-align:top;padding:11px 16px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:#ffffff05}.data-table td strong,.data-table th strong{color:var(--text)}.data-table code{font-size:.85em}.flow-diagram{justify-content:center;align-items:center;gap:var(--sp-3);margin:var(--sp-5) 0;padding:var(--sp-6);background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);flex-wrap:wrap;display:flex}.flow-node{background:var(--bg-soft);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-5);text-align:center;min-width:140px}.flow-node .fn-label{color:var(--text-strong);font-weight:600;font-size:var(--fs-sm);display:block}.flow-node .fn-desc{color:var(--muted-2);font-size:var(--fs-xs);white-space:pre-line;margin-top:4px;line-height:1.5;display:block}.flow-arrow{color:var(--muted-2);font-size:1.3rem;font-weight:700}.glossary{gap:var(--sp-3);margin:var(--sp-5) 0;padding:var(--sp-5) var(--sp-6);background:var(--bg-soft);border:1px dashed var(--border-strong);border-radius:var(--r-lg);grid-template-columns:1fr;display:grid}.glossary-term{gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);grid-template-columns:180px 1fr;align-items:baseline;display:grid}.glossary-term:last-child{border-bottom:none}.glossary-term dt{color:var(--text-strong);font-weight:700;font-family:var(--font-mono);font-size:var(--fs-sm)}.glossary-term dd{color:var(--muted-1);font-size:var(--fs-sm);line-height:1.6}.chapter-list li a{align-items:baseline;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);transition:background .15s;display:flex}.chapter-list li a:hover{background:var(--bg-soft)}.chapter-list .chapter-num{font-size:var(--fs-xs);color:var(--muted-2);white-space:nowrap;min-width:34px;font-weight:700}.chapter-list .chapter-title{font-size:var(--fs-sm);color:var(--text-1);line-height:1.35}.chapter-list li a.active{background:var(--bg-soft);border-left:3px solid var(--accent)}.chapter-list li a.active .chapter-num{color:var(--accent)}.chapter-list li a.active .chapter-title{color:var(--text-strong);font-weight:600}.chapter-objective{margin-top:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:linear-gradient(135deg, var(--bg-soft), var(--card));border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--r-md);color:var(--text-1);font-size:var(--fs-sm);line-height:1.7}.objective-label{color:var(--accent);margin-right:var(--sp-2);font-weight:700}.chat-fab{z-index:200;background:var(--gradient);color:#fff;cursor:pointer;border:none;border-radius:50%;place-items:center;width:56px;height:56px;font-size:1.4rem;transition:transform .2s;display:grid;position:fixed;bottom:24px;right:24px;box-shadow:0 8px 24px #6c8cff66}.chat-fab:hover{transform:scale(1.08)}.chat-panel{z-index:200;background:var(--card);border:1px solid var(--border-strong);border-radius:var(--r-lg);width:380px;max-width:calc(100vw - 48px);height:520px;max-height:calc(100vh - 140px);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:fixed;bottom:92px;right:24px;overflow:hidden}.chat-header{padding:var(--sp-4) var(--sp-5);background:var(--bg-soft);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.chat-header strong{color:var(--text-strong)}.chat-header .model-tag{font-size:var(--fs-xs);color:var(--green);background:var(--green-soft);border-radius:999px;padding:3px 10px}.chat-close{color:var(--muted);cursor:pointer;border-radius:var(--r-sm);background:0 0;border:none;padding:4px;font-size:1.2rem}.chat-close:hover{color:var(--text-strong);background:var(--card)}.chat-messages{padding:var(--sp-4);gap:var(--sp-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-msg{border-radius:var(--r-md);max-width:85%;font-size:var(--fs-sm);white-space:pre-wrap;word-break:break-word;padding:10px 14px;line-height:1.6}.chat-msg.user{background:var(--accent);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.chat-msg.ai{background:var(--bg-soft);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px;align-self:flex-start}.chat-msg.ai.thinking{opacity:.7;font-style:italic}.chat-input-row{gap:var(--sp-2);padding:var(--sp-3);border-top:1px solid var(--border);background:var(--bg-soft);display:flex}.chat-input-row textarea{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text);font-family:inherit;font-size:var(--fs-sm);resize:none;outline:none;flex:1;min-height:42px;padding:10px 14px}.chat-input-row textarea:focus{border-color:var(--accent)}.chat-send{border-radius:var(--r-md);background:var(--accent);color:#fff;cursor:pointer;border:none;width:42px;font-size:1rem;transition:opacity .15s}.chat-send:disabled{opacity:.4;cursor:not-allowed}.footer-inner{max-width:var(--container);padding:var(--sp-6) var(--sp-5);justify-content:space-between;align-items:center;gap:var(--sp-4);flex-wrap:wrap;margin:0 auto;display:flex}.footer-inner p{color:var(--muted-2);font-size:var(--fs-sm)}.footer-links{gap:var(--sp-4);display:flex}.footer-links a{color:var(--muted);font-size:var(--fs-sm)}.footer-links a:hover{color:var(--accent);opacity:1}@media (width<=900px){.guide-layout{grid-template-columns:1fr}.guide-sidebar{max-height:none;position:static}.hero{padding-top:var(--sp-6)}}@media (width<=640px){.nav-links a{padding:6px 10px}.nav-badge{display:none}.course-grid{grid-template-columns:1fr}.guide-header .title-row{text-align:center;flex-direction:column}.chat-panel{width:calc(100vw - 24px);bottom:84px;right:12px}.chat-fab{bottom:16px;right:16px}}
