:root{--blue:#087fff;--navy:#11395f;--ink:#18334d;--muted:#60758a;--line:#d9e6f1;--light:#f2f7fc;--green:#16745b;--amber:#9d5e08;--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:#f5f8fc;color:var(--ink);font:16px/1.8 "Microsoft YaHei","PingFang SC",system-ui,sans-serif}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}button,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #f0a822}a{color:#0665bf;text-underline-offset:4px}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(32px,4.2vw,58px);line-height:1.25;letter-spacing:-1.5px;margin-bottom:22px}h2{font-size:28px;line-height:1.4;color:var(--navy);margin-bottom:16px}h3{font-size:20px;line-height:1.5;margin-bottom:12px}p{margin-bottom:14px}small,.muted{color:var(--muted)}header{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.98);border-bottom:1px solid var(--line);height:80px;padding:10px 28px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{width:240px;height:60px;object-fit:contain;object-position:left center}.header-actions{display:flex;gap:8px;align-items:center}.pill,.btn{border:1px solid #c9dbe9;border-radius:9px;background:#fff;color:var(--navy);padding:8px 14px;font-weight:600;text-decoration:none;display:inline-block;line-height:1.5}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.pill[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:#fff}.layout{max-width:1500px;margin:auto;display:grid;grid-template-columns:246px minmax(0,1fr);gap:32px;padding:32px}.sidebar{position:sticky;top:108px;align-self:start;max-height:calc(100vh - 130px);overflow:auto;padding-right:12px}.side-label,.eyebrow{font-size:12px;letter-spacing:2px;font-weight:700;color:#51728e;text-transform:uppercase}.sidebar nav{display:grid;gap:4px;margin:14px 0 24px}.sidebar nav a{padding:8px 12px;border-radius:8px;text-decoration:none;color:#4c657d;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{background:#e0efff;color:#075bb0}.progress-shell{height:6px;background:#dce8f3;border-radius:10px;overflow:hidden;margin:10px 0}.progress-bar{height:100%;background:var(--blue);transition:width .25s;width:0}.side-note{font-size:12px;color:var(--muted)}main{min-width:0}.hero{display:grid;grid-template-columns:1.15fr .85fr;background:var(--navy);color:white;border-radius:24px;overflow:hidden;margin-bottom:28px}.hero-copy{padding:44px 36px}.hero .eyebrow{color:#96c7fb}.hero p{color:#d9e8f7}.hero strong{color:#fff}.hero .btn{margin:8px 8px 0 0}.hero-graphic{position:relative;padding:30px 24px;background:linear-gradient(135deg,#104c83,#146cb7);display:grid;align-content:center;gap:14px}.journey-node{border:1px solid #b3d9ff66;border-radius:12px;padding:13px 18px;background:#ffffff12;display:flex;align-items:center;justify-content:space-between;gap:10px}.journey-node b{font-size:16px}.journey-node small{color:#d4eaff;font-size:12px}.journey-arrow{height:16px;text-align:center;color:#9cd2ff;font-size:22px;line-height:16px}.hero-num{font:700 48px/1 system-ui;color:#a1d2ff}.stats{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:24px;font-size:13px}.stats b{display:block;color:white;font-size:24px}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:30px;margin-bottom:24px;scroll-margin-top:100px}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}.index{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;background:#e3f1ff;color:#0067ca;border-radius:11px;margin-right:10px;font-size:16px}.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.three{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.card{padding:20px;background:var(--light);border:1px solid #e0ebf5;border-radius:12px}.card h3{font-size:17px}.callout{border-left:4px solid var(--blue);padding:14px 18px;border-radius:0 10px 10px 0;background:#edf6ff;margin:18px 0}.callout.warn{background:#fff7e8;border-color:#d9952d}.callout.ok{background:#edf9f4;border-color:#239a72}.callout p:last-child,.card p:last-child{margin-bottom:0}.checkline{display:flex;gap:10px;align-items:flex-start;margin:10px 0;padding:11px 12px;background:#f5f9fd;border-radius:8px;cursor:pointer}.checkline input{margin-top:8px;accent-color:var(--blue);width:18px;height:18px;flex:0 0 auto}.stephead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.time{font-size:13px;color:#376c99;background:#edf5fd;border-radius:20px;padding:3px 12px}.action-list{padding-left:23px}.action-list li{margin:10px 0}.figure{background:#f5f9fd;border:1px solid var(--line);padding:22px;border-radius:13px;margin:18px 0}.figlabel{font-size:12px;font-weight:700;color:#617d96;letter-spacing:.5px;margin:0 0 16px}.flow{display:flex;align-items:center;gap:12px}.node{flex:1;min-width:0;text-align:center;background:white;border:1px solid #bdd8ee;border-radius:12px;padding:18px 10px}.node strong{display:block;color:var(--navy);font-size:16px}.node small{font-size:12px;display:block}.node.blue{background:#e4f2ff;border:2px solid var(--blue)}.arrow{color:var(--blue);font-size:24px;font-weight:700;flex:0 0 auto}.diagram-svg{width:100%;height:auto;display:block}.browser{border:1px solid #c7d9e7;border-radius:10px;background:white;overflow:hidden}.address{background:#e8f0f7;color:#466179;padding:10px 14px;font:12px/1.5 ui-monospace,Consolas,monospace;overflow-wrap:anywhere}.browser-content{padding:22px}.repo-top{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:12px 0}.fake-button{padding:5px 12px;background:#087fff;color:white;border-radius:6px;font-weight:600;font-size:13px;white-space:nowrap}.tag{font-size:12px;border:1px solid #c6d9e9;border-radius:5px;padding:2px 7px;color:#637f96}.annotation{color:#0960b1;font-size:13px;font-weight:600}.codebox{position:relative;background:#102f4c;border-radius:12px;margin:16px 0;overflow:hidden}.code-label{padding:10px 16px;background:#0a253e;color:#b4d4f2;font:12px/1.5 system-ui;display:flex;justify-content:space-between;gap:12px;align-items:center}.copy{border:1px solid #688fae;background:transparent;border-radius:6px;padding:4px 10px;color:#e6f3ff;font-size:12px;white-space:nowrap}pre{font:14px/1.85 Consolas,"Cascadia Code",ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:18px;color:#e6f2ff;tab-size:2}code{font-family:Consolas,ui-monospace,monospace}p code,li code,td code{background:#eaf2f9;color:#184e7c;border-radius:4px;padding:1px 5px;font-size:.92em}.filetree{background:white;color:#153e63;border:1px solid #d7e6f2}.success{display:flex;gap:12px;padding:14px 16px;border:1px solid #c4e5d8;background:#f0faf6;border-radius:10px;margin:16px 0}.success b{color:var(--green)}.teacher{display:none;background:#f2f3ff;border:1px solid #d9dbf7;border-radius:10px;padding:16px;margin-top:20px;font-size:14px}.teacher h3{font-size:16px;color:#4c509c}.teacher-mode .teacher{display:block}.teacher-always{background:#f5f6ff}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;background:#edf4fa;color:#315574;font-weight:700}td,th{padding:12px 14px;border-bottom:1px solid #dde7ef;vertical-align:top}.table-wrap{overflow:auto}caption{text-align:left;color:#58748b;margin-bottom:8px}details{border-bottom:1px solid var(--line);padding:13px 0}summary{cursor:pointer;font-weight:600;color:#244e73}details p{margin-top:12px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field label{font-size:13px;font-weight:700;display:block;margin-bottom:6px}.field input,.field select,.search{width:100%;padding:11px 13px;border:1px solid #bacfe0;border-radius:8px;background:white;color:var(--navy);min-width:0}.error{color:#a83333;font-size:13px;min-height:24px;margin:8px 0}.quiz fieldset{border:1px solid #d3e1ed;border-radius:10px;margin:14px 0;padding:16px}.quiz label{display:block;padding:6px;cursor:pointer}.quiz input{accent-color:var(--blue)}.quiz-feedback{padding:12px;background:#edf6ff;border-radius:8px;margin:12px 0}.small{font-size:13px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.phase-number{font-size:38px;color:#81b7e8;font-weight:700;line-height:1.2}.phase-title{font-size:15px;font-weight:700;margin:8px 0}.timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.timeline .card{padding:16px}.mini-strip{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:12px 16px;background:#e9f3fd;border-radius:10px;font-size:13px}.result-link{overflow-wrap:anywhere}.footer{padding:12px 4px 32px;color:#6a8094;font-size:12px}.legend{font-size:12px;color:#6b8092;margin-top:12px}.mobile-nav{display:none}.status-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#11395f;color:#fff;padding:10px 20px;border-radius:10px;z-index:100;max-width:90vw;box-shadow:0 4px 25px #0f32552b}.hidden{display:none!important}figure{margin:0}svg text{font-family:"Microsoft YaHei",system-ui,sans-serif}.source-list{font-size:13px;line-height:1.9}.mode-note{font-size:12px;color:#667d93}button:disabled{cursor:not-allowed;opacity:.5}.numbered{font-weight:700;color:#0775df}
@media(min-width:1450px){.hero-copy{padding:48px}.panel{padding:36px}}
@media(max-width:1100px){.layout{grid-template-columns:205px minmax(0,1fr);gap:20px;padding:24px 18px}.hero{grid-template-columns:1fr}.hero-graphic{grid-template-columns:1fr 22px 1fr 22px 1fr;gap:8px;padding:20px}.journey-node{display:block;padding:14px 10px;text-align:center}.journey-node small{display:block}.journey-arrow{transform:rotate(-90deg)}.hero-num{display:none}.panel{padding:24px}.three{grid-template-columns:1fr}.timeline{grid-template-columns:1fr 1fr}}
@media(max-width:760px){header{padding:9px 14px;height:72px}.brand{width:190px;height:52px}.header-actions .printbtn{display:none}.pill{font-size:12px;padding:7px 9px}.layout{display:block;padding:16px 12px}.sidebar{position:static;max-height:none;padding:0}.sidebar nav{display:flex;overflow:auto;white-space:nowrap;margin:8px 0 18px}.sidebar .side-label,.sidebar .side-note{display:none}.sidebar nav a{font-size:12px;padding:6px 9px}.progress-shell{margin:6px 0}.sidebar .progress-title{font-size:12px}.hero-copy{padding:30px 24px}.hero-graphic{display:none}.panel{padding:22px 18px;margin-bottom:16px}.two,.formgrid{grid-template-columns:1fr}.flow{flex-direction:column;gap:8px}.flow .node{width:100%}.flow .arrow{transform:rotate(90deg);line-height:1}.diagram-svg{min-width:590px}.figure:has(.diagram-svg){overflow:auto}.figure{padding:16px}.stats{gap:16px}.stats b{font-size:22px}h2{font-size:24px}pre{font-size:12px;padding:14px}td,th{padding:10px;min-width:100px}.timeline{grid-template-columns:1fr 1fr}.source-list{overflow-wrap:anywhere}}
@media print{html{scroll-padding-top:0}body{background:#fff;font-size:11pt;line-height:1.6}header{position:static;height:68px;padding:0 0 10px;border-bottom:2px solid #0b74d1}.header-actions,.sidebar,.toolbar,.copy,.btn,.field,.error,.status-toast,.search,.quiz button{display:none!important}.layout{display:block;padding:16px 0;max-width:none}.hero{display:block;background:#eef5fc;color:#173854}.hero-copy{padding:20px}.hero p,.hero strong,.hero .eyebrow,.hero .stats b{color:#173854}.hero-graphic{display:none}.hero h1{font-size:30pt}.panel{border:0;border-top:1px solid #c9dbe9;border-radius:0;padding:20px 0;break-before:auto}.codebox,.card,.figure,.success,table tr,fieldset{break-inside:avoid}.codebox{background:#eff3f7;border:1px solid #bccddd}pre{color:#173854;font-size:9pt}.code-label{background:#e1eaf1;color:#173854}.teacher-mode .teacher{display:block}.figure .diagram-svg{min-width:0}.two{gap:12px}a{color:#14507f}a[href^=http]:after{content:" (" attr(href) ")";font-size:8pt;overflow-wrap:anywhere}details:not([open])>*:not(summary){display:block}details{break-inside:avoid}.legend{font-size:8pt}.footer{padding:12px 0}.progress-shell{display:none}.hero .stats{margin-top:10px}.mode-note{display:block}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
