:root{--bg:#090e17;--panel:#111924;--panel2:#151f2c;--text:#eaf0f6;--muted:#9faebe;--line:#273444;--accent:#b8ee91;--violet:#b7a7ef;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--sans:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--radius:18px;color-scheme:dark}
:root[data-theme=light]{--bg:#f2f5f2;--panel:#fff;--panel2:#e9efec;--text:#172321;--muted:#53655f;--line:#ccdad1;--accent:#356a37;--violet:#675499;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased}body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 75% 2%,#789ca914,transparent 42%),linear-gradient(90deg,transparent 99%,#71839807 99%),linear-gradient(transparent 99%,#71839807 99%);background-size:auto,72px 72px,72px 72px}a{color:inherit;text-decoration:none}button{font:inherit}a,button{touch-action:manipulation}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{cursor:pointer}::selection{background:#b8ee9135}img,svg{max-width:100%}.wrap{max-width:1220px;margin:auto;padding:0 44px}.topbar{height:84px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(15px)}.topbar .wrap{display:flex;height:100%;align-items:center;justify-content:space-between;gap:24px}.brand{font-size:18px;font-weight:650;letter-spacing:-.4px;display:flex;align-items:center;gap:12px}.monogram{width:35px;height:35px;display:grid;place-items:center;background:var(--accent);color:var(--bg);font-family:var(--mono);font-size:15px;font-weight:700;border-radius:10px}nav{display:flex;gap:28px;align-items:center;font-size:13px;color:var(--muted)}nav a:hover,nav a[aria-current=page]{color:var(--text)}.theme-button{background:none;border:1px solid var(--line);border-radius:50%;color:var(--text);width:34px;height:34px;line-height:1}.skip{position:absolute;left:16px;top:-70px;padding:10px;background:var(--panel);z-index:100}.skip:focus{top:10px}.eyebrow{font:11px/1.5 var(--mono);letter-spacing:2px;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:10px}.live-dot{height:6px;width:6px;background:var(--accent);border-radius:50%;box-shadow:0 0 16px #b8ee9150}.hero{display:grid;grid-template-columns:1.45fr 1fr;gap:48px;align-items:center;padding:80px 0 68px}.hero h1{font-size:clamp(42px,4.9vw,68px);letter-spacing:-3.5px;line-height:1.1;font-weight:550;margin:25px 0}.hero h1 span{color:var(--accent)}.hero .intro{color:var(--muted);max-width:520px;line-height:1.85;font-size:16px}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.button{font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:22px;padding:12px 19px;border:1px solid var(--line);border-radius:8px;color:var(--text);background:var(--panel)}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:650}.button:hover{transform:translateY(-1px);filter:brightness(1.08)}.hero-note{font:10px var(--mono);color:var(--muted);margin-top:28px;letter-spacing:1px}.orbital{position:relative;min-height:350px;display:grid;place-items:center}.orbital svg{width:100%;overflow:visible}.orbital .orbit{stroke:var(--line);stroke-width:1;fill:none}.orbital .path{stroke:var(--accent);stroke-width:.8;fill:none;opacity:.5}.orbital .dot{fill:var(--accent)}.orbital text{font-family:var(--mono);fill:var(--muted);font-size:10px}.orbital .core{fill:var(--panel);stroke:var(--accent);stroke-width:1}.orbital .core-label{fill:var(--text);font-size:23px;letter-spacing:-1px}.orbital .core-sub{fill:var(--accent);font-size:8px;letter-spacing:2px}.figure-caption{font:9px var(--mono);color:var(--muted);position:absolute;bottom:2px;left:14px;letter-spacing:1px}.meta-strip{display:grid;grid-template-columns:1.3fr 1.3fr 1fr;gap:24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0}.meta-item{display:flex;gap:16px;align-items:center}.meta-item strong{font-size:13px;font-weight:500;display:block}.meta-item span{font-size:11px;color:var(--muted);display:block}.meta-symbol{font:20px var(--mono);color:var(--accent)}section.section{padding:72px 0 20px}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px}.section-head h2{font-size:30px;line-height:1.2;font-weight:500;letter-spacing:-1px;margin:12px 0 0}.section-head p{font-size:13px;color:var(--muted);max-width:340px;margin:0}.number{font:11px var(--mono);letter-spacing:2px;color:var(--muted)}.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.course-card{position:relative;border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);padding:26px;display:flex;flex-direction:column;min-height:278px;transition:transform .18s,border-color .18s;overflow:hidden}.course-card:after{content:'';position:absolute;right:-35px;top:-45px;width:150px;height:150px;border:1px solid color-mix(in srgb,var(--card-color) 25%,transparent);border-radius:50%;pointer-events:none}.course-card:hover{transform:translateY(-4px);border-color:var(--card-color)}.card-top{display:flex;justify-content:space-between;gap:15px;font:10px var(--mono);letter-spacing:1px;color:var(--muted)}.course-code{color:var(--card-color)}.course-card h3{font-size:21px;line-height:1.35;font-weight:500;letter-spacing:-.4px;margin:30px 0 13px;max-width:270px}.course-card p{font-size:12px;line-height:1.7;color:var(--muted);margin:0 0 25px}.card-foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center;font:10px var(--mono);color:var(--muted)}.arrow{font-size:22px;color:var(--card-color)}.method{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--radius);margin-top:24px;overflow:hidden}.method div{padding:24px;border-right:1px solid var(--line)}.method div:last-child{border:0}.method b{font:10px var(--mono);color:var(--accent)}.method h3{font-size:14px;font-weight:500;margin:12px 0 8px}.method p{font-size:12px;color:var(--muted);margin:0}.research-panel{display:grid;grid-template-columns:1.7fr 1fr;gap:50px;padding:38px;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(135deg,var(--panel),var(--bg));position:relative;overflow:hidden}.pill{font:10px var(--mono);padding:5px 10px;border:1px solid var(--line);border-radius:5px;color:var(--accent);display:inline-block;margin-right:6px}.research-panel h3{font-weight:500;font-size:26px;letter-spacing:-.6px;line-height:1.35;margin:20px 0}.research-panel p{font-size:13px;color:var(--muted)}.research-side{border-left:1px solid var(--line);padding-left:30px;display:flex;flex-direction:column;justify-content:center}.research-side h4{font:11px var(--mono);text-transform:uppercase;letter-spacing:2px;color:var(--violet)}.text-link{font-size:13px;color:var(--accent);display:inline-block;border-bottom:1px solid var(--line);padding-bottom:3px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}.about-grid p{color:var(--muted);font-size:14px}.timeline{list-style:none;margin:0;padding:0}.timeline li{position:relative;padding:0 0 25px 25px;border-left:1px solid var(--line)}.timeline li:before{content:'';position:absolute;left:-4px;top:6px;width:7px;height:7px;background:var(--accent);border-radius:50%}.timeline time{font:10px var(--mono);color:var(--muted)}.timeline h3{font-size:16px;font-weight:500;line-height:1.4;margin:8px 0 5px}.timeline p{font-size:12px;margin:0}.skills{display:flex;gap:8px;flex-wrap:wrap;margin-top:25px}.skills span{font:10px var(--mono);padding:7px 12px;background:var(--panel);border:1px solid var(--line);border-radius:6px}.footer{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-top:75px;padding:26px 0;border-top:1px solid var(--line);color:var(--muted);font:10px/1.8 var(--mono)}.watermark{font:12px var(--mono);letter-spacing:3px;color:var(--accent);opacity:.75}.course-hero{padding:50px 0 35px;border-bottom:1px solid var(--line)}.breadcrumb{font:11px var(--mono);color:var(--muted);display:flex;gap:12px;margin-bottom:30px}.breadcrumb a:hover{color:var(--accent)}.course-hero h1{font-size:clamp(32px,4vw,50px);line-height:1.15;font-weight:500;letter-spacing:-1.8px;max-width:850px;margin:18px 0}.course-hero>p{color:var(--muted);max-width:760px;font-size:15px}.course-meta{font:11px var(--mono);color:var(--muted);margin-top:25px}.course-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:50px;align-items:start}.toc{position:sticky;top:106px;max-height:calc(100vh - 130px);overflow-y:auto;padding:25px 20px 25px 0;font-size:11px}.toc summary{font:11px var(--mono);letter-spacing:1px;color:var(--accent);cursor:pointer}.toc ol{padding:10px 0 0 20px;margin:0}.toc li{padding:5px 0;color:var(--muted)}.toc a:hover{color:var(--accent)}.toc .toc-group{display:block;margin:20px 0 10px;color:var(--text);font:10px var(--mono)}.course-body{min-width:0}.overview{padding:36px 0}.overview h2,.framework h2{font-size:24px;font-weight:500;margin:0 0 14px}.overview p,.overview li{font-size:14px;color:var(--muted)}.scope{padding:16px 20px;background:var(--panel);border-left:2px solid var(--accent);font-size:12px!important}.overview-cols{display:grid;grid-template-columns:1fr 1fr;gap:30px}.overview h3{font:11px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:1px}.overview ul{padding-left:20px}.framework{padding:12px 0 40px}.framework>p{font-size:13px;color:var(--muted)}.map-stage{display:grid;grid-template-columns:115px 1fr;gap:18px;border-top:1px solid var(--line);padding:18px 0}.map-stage h3{font:11px/1.6 var(--mono);color:var(--accent);margin:5px 0}.map-nodes{display:flex;flex-wrap:wrap;gap:8px}.map-nodes a{font-size:11px;border:1px solid var(--line);background:var(--panel);padding:7px 10px;border-radius:5px}.map-nodes a:hover{border-color:var(--accent)}.topic{padding:45px 0;border-top:1px solid var(--line);position:relative}.topic-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.topic-number{font:11px var(--mono);color:var(--accent);letter-spacing:2px}.topic h2{font-size:29px;font-weight:500;letter-spacing:-.7px;line-height:1.3;margin:15px 0 30px}.topic h3{font:10px var(--mono);letter-spacing:1.6px;text-transform:uppercase;color:var(--accent);margin:0 0 12px}.topic p{font-size:14px;line-height:1.95;margin:0 0 18px;color:var(--muted)}.story-principle{display:grid;grid-template-columns:1fr 1fr;gap:30px}.story{padding:21px;background:var(--panel);border-radius:10px}.principle{padding:21px 0}.formula{padding:25px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;margin:24px 0}.formula pre{font:clamp(12px,1.4vw,16px)/1.9 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);margin:0 0 14px}.formula p{font-size:12px;margin:0}.example{padding:4px 0}.code{padding:20px;border:1px solid var(--line);background:var(--panel);border-radius:10px;overflow-x:auto;font:12px/1.8 var(--mono)}.pitfall{font-size:12px;padding:15px 19px;border-left:2px solid var(--violet);background:var(--panel);color:var(--muted);margin:20px 0}.pitfall strong{color:var(--violet)}.check{border:1px solid var(--line);border-radius:9px;margin:25px 0 0;overflow:hidden}.check summary{cursor:pointer;padding:16px 20px;font-size:12px;color:var(--text)}.check p{padding:0 20px 18px;font-size:13px;margin:0}.references{padding:35px 0;border-top:1px solid var(--line)}.references h2{font-size:22px;font-weight:500}.references li{font-size:13px;color:var(--muted);padding:5px 0}.references a{text-decoration:underline;text-underline-offset:4px}.download-panel{padding:26px;background:var(--panel);border:1px solid var(--line);border-radius:12px;margin:35px 0}.download-panel h2{font-size:20px;font-weight:500;margin:0}.download-panel p{font-size:13px;color:var(--muted)}.cheat-page{max-width:1150px}.cheat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:35px 0}.cheat-item{padding:22px;border:1px solid var(--line);background:var(--panel);border-radius:12px}.cheat-item h2{font-size:16px;margin:0 0 12px;font-weight:500}.cheat-item p{font-size:12px;white-space:pre-line;color:var(--muted);margin:0}.back-top{font:10px var(--mono);color:var(--muted)}[hidden]{display:none!important}
@media(min-width:1450px){.wrap{max-width:1300px}.hero h1{font-size:72px}}
@media(max-width:960px){.wrap{padding:0 28px}.hero{gap:20px}.hero h1{letter-spacing:-2px}.course-grid{grid-template-columns:repeat(2,1fr)}.method{grid-template-columns:repeat(2,1fr)}.method div:nth-child(2){border-right:0}.method div:nth-child(-n+2){border-bottom:1px solid var(--line)}.course-layout{grid-template-columns:180px minmax(0,1fr);gap:25px}.story-principle{grid-template-columns:1fr;gap:8px}.principle{padding:18px 0}.research-panel{gap:30px;padding:30px}.cheat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.wrap{padding:0 20px}.topbar{height:70px}.topbar .wrap{gap:12px}.brand{font-size:15px;gap:8px}.monogram{width:30px;height:30px;font-size:13px}nav{gap:14px;font-size:11px}.nav-research,.nav-github{display:none}.hero{display:block;padding:50px 0 35px}.hero h1{font-size:46px;letter-spacing:-2px}.hero .intro{font-size:14px}.orbital{min-height:250px;max-width:340px;margin:35px auto 0}.hero-note{font-size:9px}.meta-strip{grid-template-columns:1fr;gap:18px;padding:23px 0}.meta-item{gap:14px}.meta-item:nth-child(3){display:none}.section-head{display:block}.section-head p{margin-top:15px}.course-grid{grid-template-columns:1fr}.course-card{min-height:240px;padding:24px}.course-card h3{margin-top:23px;max-width:none}.method div{padding:20px}.section-head h2{font-size:28px}section.section{padding-top:48px}.research-panel{grid-template-columns:1fr;gap:12px;padding:24px}.research-panel h3{font-size:22px}.research-side{border-left:0;border-top:1px solid var(--line);padding:15px 0 0}.about-grid{grid-template-columns:1fr;gap:35px}.footer{align-items:flex-start;flex-direction:column;gap:12px;margin-top:50px}.course-hero{padding-top:30px}.course-hero h1{font-size:35px}.course-layout{display:block}.toc{position:static;max-height:none;padding:22px 0 5px}.toc ol{columns:2;column-gap:30px;font-size:10px}.toc li{break-inside:avoid}.overview-cols{grid-template-columns:1fr;gap:8px}.map-stage{grid-template-columns:1fr;gap:5px}.topic{padding:35px 0}.topic h2{font-size:25px}.formula{padding:20px}.cheat-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media print{body{background:#fff;color:#16201d;font-size:10pt}body:before,.topbar,.toc,.actions,.skip,.back-top{display:none!important}.wrap{max-width:none;padding:0}.course-layout{display:block}.topic{break-inside:avoid}.topic p,.overview p,.overview li,.cheat-item p{color:#333}.story,.formula,.cheat-item{background:#f5f7f5;border-color:#ccd5cd}.course-hero{padding:10px 0}.course-hero h1{font-size:24pt}.cheat-grid{grid-template-columns:repeat(3,1fr);gap:10px;padding:14px 0}.cheat-item{padding:12px;break-inside:avoid}.cheat-item h2{font-size:11pt}.cheat-item p{font-size:8.5pt}.footer{margin-top:14px;padding:10px 0}.watermark{color:#497443}.eyebrow,.topic h3{color:#37672f}.cheat-page .course-hero>p{font-size:9pt}.cheat-page .course-meta,.cheat-page .breadcrumb{display:none}@page{size:A4 landscape;margin:12mm}}
:root[data-theme=light] .course-card{--card-color:#356a37!important}
@media print{.cheat-page .cheat-item{padding:9px}.cheat-page .cheat-item h2{font-size:10pt;margin-bottom:6px}.cheat-page .cheat-item p{font-size:8pt;line-height:1.35}.cheat-page .cheat-grid{gap:8px}.cheat-page .course-hero h1{font-size:21pt}.cheat-page .course-hero{border-bottom:1px solid #ccd5cd}.cheat-page .eyebrow{font-size:8pt}}
@media print{:root,:root[data-theme=light]{--bg:#fff;--panel:#f5f7f5;--panel2:#eef3ee;--text:#172c28;--muted:#40554b;--line:#ccd5cd;--accent:#326846;--violet:#675499;color-scheme:light}.formula pre,.code{color:#172c28}.watermark{opacity:1}}
/* Bilingual AI field guides */
.ai-section{border-top:1px solid var(--line);margin-top:52px}.ai-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.ai-card{border:1px solid var(--line);border-radius:18px;background:linear-gradient(135deg,var(--panel),var(--bg));overflow:hidden;position:relative;transition:border-color .2s,transform .2s}.ai-card:hover{border-color:var(--guide-color);transform:translateY(-3px)}.ai-card:before{content:'';height:3px;background:var(--guide-color);display:block;opacity:.7}.ai-card-main{padding:30px;display:block}.ai-card .course-code{color:var(--guide-color)}.ai-card h3{font-size:28px;font-weight:500;line-height:1.25;letter-spacing:-.7px;margin:24px 0 13px}.ai-card p{font-size:14px;color:var(--muted);max-width:420px;margin-bottom:22px}.ai-card-foot{border-top:1px solid var(--line);display:flex;gap:12px;align-items:center;padding:14px 30px;font:10px var(--mono);color:var(--muted)}.ai-card-foot span{margin-right:auto}.ai-card-foot a{padding:5px 9px;border:1px solid var(--line);border-radius:5px;color:var(--text)}.ai-card-foot a:hover{border-color:var(--accent)}.source-note{font-size:12px;color:var(--muted);line-height:1.8;margin:24px 0}.language-switch{display:flex;gap:3px;border:1px solid var(--line);border-radius:7px;padding:3px}.language-switch a{padding:5px 9px;border-radius:4px;font-size:12px;white-space:nowrap}.language-switch a[aria-current=page]{background:var(--accent);color:var(--bg)}.guide-story{border-left:2px solid var(--accent);padding:27px 30px;margin-bottom:30px}.guide-story p:last-child{margin-bottom:0}.guide-concept{padding:4px 0 18px}.guide-application-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.guide-practice{border-left:1px solid var(--line);padding-left:26px}.takeaway{margin:25px 0;padding:18px 22px;border:1px solid var(--line);border-radius:10px}.takeaway span{font:10px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:1px}.takeaway p{color:var(--text);margin:7px 0 0}.topic-sources{padding:20px 0}.topic-sources ul{margin:0;padding-left:17px}.topic-sources li{font-size:11px;line-height:1.8;color:var(--muted);padding:5px 0}.topic-sources a{text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.source-list li{padding:14px 0!important}.source-list span{font-size:10px;display:block;margin-top:5px}.guide-review{padding:30px 0}.guide-review-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.guide-review-grid h3{line-height:1.5;letter-spacing:.5px}.guide-review-grid .cheat-item:hover{border-color:var(--accent)}:lang(zh){line-break:strict}:lang(zh) .guide-topic p{font-size:15px;line-height:2.1}:lang(zh) .course-hero h1{letter-spacing:-1px}:root[data-theme=light] .ai-card{--guide-color:#356a37!important}
@media(max-width:960px){.guide-application-grid{grid-template-columns:1fr;gap:10px}.guide-practice{padding:18px 22px;border:1px solid var(--line);border-radius:10px;margin-bottom:12px}.field-guide .course-layout{grid-template-columns:170px minmax(0,1fr)}}
@media(max-width:640px){.ai-grid,.guide-review-grid{grid-template-columns:1fr}.ai-card-main{padding:24px}.ai-card h3{font-size:25px}.ai-card-foot{padding:14px 24px}.ai-card-foot span{max-width:175px;line-height:1.5}.field-guide .course-layout{display:block}.field-guide .topbar nav{gap:9px}.language-switch a{padding:4px 7px;font-size:11px}.guide-story{padding:22px}.field-guide .course-hero h1{font-size:34px}.field-guide .guide-home{display:none}.field-guide .topic h2{overflow-wrap:anywhere}.field-guide .toc ol{columns:1}}
@media print{.field-guide .topic{break-inside:auto}.field-guide .story,.field-guide .formula,.field-guide .takeaway{break-inside:avoid}.guide-application-grid{grid-template-columns:1fr 1fr}.topic-sources a,.references a{color:#253e2e}.language-switch{display:none}.ai-grid{grid-template-columns:1fr 1fr}}

/* Reading-first typography. Keep instructional text legible at every width. */
@media screen {
  :root{--read-font:18px;--code-font:16px;--muted:#bdc9d6;--text:#f0f4fa;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;--sans:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',Arial,sans-serif}
  :root[data-theme=light]{--muted:#42534d;--text:#14251e}
  :root[data-reading-size=large]{--read-font:21px;--code-font:18px}
  body{font-size:var(--read-font);line-height:1.8}
  nav{font-size:16px;gap:22px}.theme-button{width:44px;height:44px;font-size:20px}
  .hero .intro,.course-hero>p,.section-head p,.course-card p,.method p,.research-panel p,.about-grid p,.timeline p,.ai-card p,.download-panel p{font-size:var(--read-font);line-height:1.8}
  .eyebrow,.number,.hero-note,.card-top,.card-foot,.course-meta,.topic-number,.pill,.timeline time,.skills span,.footer,.watermark,.ai-card-foot,.source-note,.breadcrumb,.back-top{font-size:14px;line-height:1.6;letter-spacing:.4px}
  .eyebrow,.number,.topic-number{letter-spacing:1px}
  .meta-item strong,.meta-item span,.method h3,.method b,.research-side h4,.text-link,.button{font-size:16px;line-height:1.6}
  .course-card h3{font-size:24px;font-weight:600}.course-card{min-height:320px}.card-top,.card-foot{flex-wrap:wrap;gap:10px}
  .topic p,.overview p,.overview li,.framework>p,.formula p,.check p,.cheat-item p,.pitfall,.source-note,.references li,:lang(zh) .guide-topic p{font-size:var(--read-font);line-height:1.85;color:var(--text)}
  .topic h2{font-size:32px;font-weight:650;line-height:1.35;letter-spacing:-.3px}
  .topic h3,.overview h3,.map-stage h3,.takeaway span,.guide-review-grid h3{font-size:15px;line-height:1.65;font-weight:650;letter-spacing:.5px}
  .topic h4{font-size:20px;line-height:1.5;margin:18px 0 12px;font-weight:650;color:var(--text)}
  .topic p{margin-bottom:20px}.scope{font-size:var(--read-font)!important;line-height:1.8}
  .story-principle,.guide-application-grid{grid-template-columns:1fr;gap:20px}.story,.guide-story{padding:28px}.principle{padding:8px 0}
  .guide-practice{padding:22px 26px;border:1px solid var(--line);border-radius:10px}
  .course-layout{grid-template-columns:250px minmax(0,1fr);gap:40px}
  .toc,.toc ol,.toc summary,.toc .toc-group{font-size:15px;line-height:1.6}.toc li{padding:7px 0}.toc .toc-group{font-family:var(--sans)}
  .map-stage{grid-template-columns:140px 1fr}.map-nodes a{font-size:16px;line-height:1.5;padding:10px 13px}
  .formula pre{font-size:var(--read-font);line-height:1.8}.code,.code code{font:var(--code-font)/1.7 var(--mono);tab-size:4}.code{margin:0 0 22px;padding:24px;white-space:pre;max-width:100%}.formula p{margin-top:18px}
  .check summary{font-size:var(--read-font)}.topic-sources li,.source-list span{font-size:15px;line-height:1.8}.watermark{opacity:1}
  .language-switch a{font-size:15px;padding:7px 10px}.source-list li{overflow-wrap:anywhere}
  .reading-tools{display:flex;flex-wrap:wrap;gap:18px 24px;margin:28px 0 0;padding:20px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-size:16px}
  .reading-tools>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.reading-tools button,.code-actions button,.code-actions a{min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:6px;background:var(--panel2);color:var(--text);font-size:16px}
  .reading-tools button[aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:var(--accent)}.reading-tools>a{display:block;width:100%;color:var(--accent);text-decoration:underline;text-underline-offset:4px}
  .level-label{display:inline-block;margin:-12px 0 24px;padding:5px 12px;font-size:15px;border:1px solid var(--line);border-radius:6px;color:var(--accent)}
  .glossary,.guided,.practice-cases{margin:28px 0}.glossary{padding:24px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
  .glossary dl{margin:12px 0 0}.glossary dl>div+div{margin-top:18px}.glossary dt{font-size:var(--read-font);font-weight:650;color:var(--accent)}.glossary dd{margin:4px 0 0;font-size:var(--read-font);line-height:1.8}
  .guided{padding:24px;border-left:3px solid var(--accent);background:var(--panel)}.guided ol{margin:0;padding-left:24px}.guided li{padding-left:6px;margin:20px 0}.guided li:last-child p:last-child{margin-bottom:0}
  .code-example{margin:34px 0;padding-top:24px;border-top:1px solid var(--line)}.code-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 10px;font-size:15px}.code-actions span{margin-right:auto}.code-output{border-left:3px solid var(--accent);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--panel2)}
  .practice-cases article{padding:22px 24px;margin:14px 0;border:1px solid var(--line);border-radius:10px}.practice-cases h4{margin-top:0}
  .course-body,.course-body>*{min-width:0}.course-body p,.course-body dd{overflow-wrap:break-word}
  @media(max-width:1000px){.course-layout,.field-guide .course-layout{display:block}.toc{position:static;max-height:none;padding:24px 0}.toc ol{columns:2;column-gap:32px}.toc li{break-inside:avoid}.toc summary{font-size:16px}.story-principle{grid-template-columns:1fr}}
  @media(max-width:640px){
    .wrap{padding:0 20px}.topbar .wrap{gap:10px}.brand{font-size:17px}nav{gap:12px;font-size:15px}.topbar nav .nav-ai{display:none}.theme-button{width:40px;height:40px;flex-shrink:0}.language-switch a{font-size:14px;padding:6px 8px}.field-guide .guide-home{display:none}
    .hero .intro,.course-hero>p{font-size:var(--read-font)}.hero-note,.figure-caption{font-size:13px}.toc ol{columns:1;font-size:16px}.map-stage{grid-template-columns:1fr}.topic h2{font-size:28px}.topic h3{font-size:15px}.story,.guide-story,.glossary,.guided,.formula{padding:20px}.code{padding:18px}.reading-tools{padding:16px}.code-actions{gap:8px}.code-actions span{width:100%}
    .overview-cols,.guide-review-grid{grid-template-columns:1fr}.ai-card-foot{padding:16px 22px;flex-wrap:wrap}.ai-card-foot span{width:100%}.method{grid-template-columns:1fr}.method div{border-right:0;border-bottom:1px solid var(--line)}.footer{font-size:14px}.hero h1{font-size:42px}.course-hero h1{font-size:34px}.section-head p{max-width:none}
  }
}
@media print{.reading-tools,.code-actions button{display:none}.glossary,.guided,.practice-cases{border:1px solid #bbb;padding:12px;margin:14px 0}.glossary dd{margin-left:0}.code{white-space:pre-wrap}.topic{break-inside:auto}.code-example{break-inside:avoid}}
@media screen {
  .primer-callout{padding:28px;margin:0 0 24px;border:1px solid var(--accent);border-radius:14px;background:var(--panel)}
  .primer-callout h3{margin:0 0 8px;font-size:24px}.primer-callout p{margin:0;max-width:760px;font-size:var(--read-font);color:var(--text)}.primer-callout .actions{margin-top:20px}
  .orbital text{font-size:13px}.orbital .core-sub{font-size:11px;letter-spacing:1px}.figure-caption{font-size:13px}
}
@media screen {
  .run-help{width:100%;border-top:1px solid var(--line);padding-top:16px}
  .run-help summary{cursor:pointer;font-size:16px;font-weight:600;color:var(--accent)}
  .run-help p,.run-help li{font-size:var(--read-font);line-height:1.85;max-width:850px}.run-help li+li{margin-top:12px}
  .run-help code{font-size:var(--code-font);font-family:var(--mono);overflow-wrap:anywhere;color:var(--accent)}.run-help a{text-decoration:underline;text-underline-offset:3px}
}
/* Course studio: route diagrams, readable programs and worked reasoning. */
.extension-route,.code-example[id],.extension-summary{scroll-margin-top:110px}
.extension-route .route-flow{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.extension-route .route-flow li{display:flex;flex-direction:column;gap:14px}
.extension-route .route-node{height:auto;flex:1}
.extension-prerequisite{font-size:16px;line-height:1.7;color:var(--muted);text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
.extension-summary{padding:30px;margin:32px 0;border:1px solid var(--line);border-radius:16px;background:var(--panel)}
.extension-summary h3{font-size:28px;line-height:1.4;margin:16px 0}
.extension-summary p{font-size:18px;line-height:1.85;max-width:80ch;color:var(--text)}
.extension-summary ul{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:0 28px;padding:0;margin:24px 0 0}
.extension-summary li{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:16px 0;border-top:1px solid var(--line);font-size:16px;line-height:1.7}
.extension-summary li strong{color:var(--accent)}.extension-summary li span{margin-right:auto;color:var(--muted)}
.extension-summary li a{padding:4px;text-decoration:underline;text-underline-offset:4px}
@media(max-width:640px){.extension-summary{padding:22px}.extension-summary h3{font-size:25px}}
@media print{.extension-summary{break-inside:avoid}.extension-prerequisite{color:inherit}}
.learning-route{padding:36px 0 38px;border-bottom:1px solid var(--line)}
.route-heading{display:flex;align-items:end;justify-content:space-between;gap:32px;margin-bottom:24px}.route-heading h2{font-size:28px;line-height:1.3;margin:12px 0 0;letter-spacing:-.6px}.route-heading p{max-width:470px;margin:0;color:var(--muted);font-size:17px;line-height:1.8}
.toc ol{padding-left:2.2em}
.route-flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;list-style:none;margin:0;padding:0}.route-flow li{min-width:0;position:relative}.route-node{height:100%;display:flex;flex-direction:column;gap:14px;padding:24px;border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:12px;background:linear-gradient(145deg,var(--panel2),var(--panel));transition:border-color .15s}.route-node:hover{border-color:var(--accent)}.route-step{font:18px var(--mono);color:var(--accent);display:flex;justify-content:space-between}.route-step>span{font-size:24px}.route-node h3{font-size:22px;line-height:1.5;letter-spacing:0;margin:0;font-weight:600}.route-node p{font-size:16px;color:var(--muted);margin:0;line-height:1.8}.route-count{font-size:15px;color:var(--accent);margin-top:auto;padding-top:8px}
.topic .code-example{margin:48px 0;padding:30px 0 10px;border-top:2px solid var(--line)}.topic .code-example>h4{font-size:23px;line-height:1.5;margin:14px 0 22px}.topic .code-example>h3{margin-bottom:18px}.code-example p,.execution-steps p,.calculation-steps p{max-width:75ch}.code-example .code-actions{margin-top:25px;margin-bottom:0;padding:14px 18px;border:1px solid var(--line);border-bottom:0;border-radius:10px 10px 0 0;background:var(--panel2)}.code-example .highlighted{margin-top:0;border-radius:0 0 10px 10px}.highlighted{tab-size:4;white-space:pre;font-size:var(--code-font,16px);line-height:1.95;padding:26px;max-width:100%;text-align:left}.highlighted code{font:inherit}.highlighted .k,.highlighted .kd,.highlighted .kn,.highlighted .kt,.highlighted .kc,.highlighted .kr,.highlighted .kp,.highlighted .ow{color:#d0b6ff}.highlighted .s,.highlighted .s1,.highlighted .s2,.highlighted .sa,.highlighted .sb,.highlighted .sc,.highlighted .sd,.highlighted .se,.highlighted .si{color:#b5e7aa}.highlighted .m,.highlighted .mi,.highlighted .mf,.highlighted .mh,.highlighted .il{color:#ffcd95}.highlighted .c,.highlighted .c1,.highlighted .cm,.highlighted .cp,.highlighted .ch{color:#afc3d5}.highlighted .nf,.highlighted .nc,.highlighted .nb{color:#99e1f2}.highlighted .err{color:inherit;border:0}.topic .code-hint{font-size:15px;line-height:1.6;color:var(--muted);margin:12px 0 20px}.example-run{padding:0 0 20px}.example-run summary{font-size:17px;cursor:pointer;color:var(--accent)}.output-block{margin:24px 0 32px;padding:22px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.output-block h4{margin:0 0 12px!important}.output-block .code{margin:0;padding:16px;font-size:var(--code-font,16px)}
.code-actions .code-hint{flex-basis:100%;margin:4px 0 0;font-size:15px;line-height:1.6}
.syntax-notes{margin:30px 0;padding:24px;background:var(--panel2);border:1px solid var(--line);border-radius:12px}.syntax-notes h4{margin:0 0 16px!important}.syntax-notes dl{margin:0}.syntax-notes dl>div{padding:16px 0;display:grid;grid-template-columns:minmax(130px,1fr) 2fr;gap:24px;border-top:1px solid var(--line)}.syntax-notes dt{font-size:var(--code-font,16px);overflow-wrap:anywhere}.syntax-notes dt code{color:var(--accent);font-family:var(--mono)}.syntax-notes dd{margin:0;font-size:var(--read-font,18px);line-height:1.85}
.execution-steps,.calculation-steps{padding-left:32px;margin:22px 0 32px}.execution-steps li,.calculation-steps li{padding:4px 0 10px 12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.execution-steps li::marker,.calculation-steps li::marker{color:var(--accent);font-family:var(--mono);font-weight:600}.execution-steps p,.calculation-steps p{margin:8px 0}
.trace-wrap{overflow-x:auto;margin:28px 0 36px;border:1px solid var(--line);border-radius:12px}.trace-table{border-collapse:collapse;width:100%;min-width:540px;font-size:var(--code-font,16px);line-height:1.8}.trace-table caption{text-align:left;padding:18px 22px;color:var(--accent);background:var(--panel2);font-size:18px;font-weight:600}.trace-table th,.trace-table td{text-align:left;vertical-align:top;padding:16px 20px;border-top:1px solid var(--line);overflow-wrap:break-word}.trace-table th{color:var(--accent);font-weight:600}.trace-table tbody tr:nth-child(even){background:var(--panel)}
.worked-problem{padding:28px;margin:42px 0;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.worked-problem h4{font-size:22px;line-height:1.5;margin:26px 0 16px}.worked-problem>h4:first-of-type{margin-top:15px;font-size:24px}.problem-question{border-left:3px solid var(--accent);padding:14px 20px;background:var(--panel2);margin:22px 0}.problem-question p:last-child{margin-bottom:0}.problem-answer{padding:2px 20px 16px;border:1px solid var(--accent);border-radius:10px;margin-top:30px}.problem-answer p:last-child,.sanity-check p:last-child{margin-bottom:0}.sanity-check{margin:26px 0 0}.sanity-check h4{color:var(--accent)}
.instructor-notes{margin:38px 0;padding:26px;border-left:3px solid var(--violet);border-radius:0 12px 12px 0;background:var(--panel2)}.instructor-notes>h3{color:var(--violet)}.instructor-notes article+article{border-top:1px solid var(--line);padding-top:12px;margin-top:24px}.instructor-notes h4{font-size:22px;line-height:1.5;margin:22px 0 16px}.instructor-notes p:last-child{margin-bottom:0}
:root[data-theme=light] .highlighted .k,:root[data-theme=light] .highlighted .kd,:root[data-theme=light] .highlighted .kn,:root[data-theme=light] .highlighted .kt,:root[data-theme=light] .highlighted .kc,:root[data-theme=light] .highlighted .kr,:root[data-theme=light] .highlighted .kp,:root[data-theme=light] .highlighted .ow{color:#65298c}
:root[data-theme=light] .highlighted .s,:root[data-theme=light] .highlighted .s1,:root[data-theme=light] .highlighted .s2,:root[data-theme=light] .highlighted .sa,:root[data-theme=light] .highlighted .sb,:root[data-theme=light] .highlighted .sc,:root[data-theme=light] .highlighted .sd,:root[data-theme=light] .highlighted .se,:root[data-theme=light] .highlighted .si{color:#276533}
:root[data-theme=light] .highlighted .m,:root[data-theme=light] .highlighted .mi,:root[data-theme=light] .highlighted .mf,:root[data-theme=light] .highlighted .mh,:root[data-theme=light] .highlighted .il{color:#863f13}
:root[data-theme=light] .highlighted .c,:root[data-theme=light] .highlighted .c1,:root[data-theme=light] .highlighted .cm,:root[data-theme=light] .highlighted .cp,:root[data-theme=light] .highlighted .ch{color:#54655b}
:root[data-theme=light] .highlighted .nf,:root[data-theme=light] .highlighted .nc,:root[data-theme=light] .highlighted .nb{color:#155877}
@media(max-width:1000px){.route-flow{grid-template-columns:repeat(2,minmax(0,1fr))}.route-heading{display:block}.route-heading p{max-width:750px;margin-top:16px}}
@media(max-width:640px){.route-flow{grid-template-columns:1fr}.route-node{padding:22px}.learning-route{padding-top:28px}.route-heading h2{font-size:26px}.route-node h3{font-size:22px}.topic .code-example{margin:36px 0}.code-example .code-actions{padding:12px}.highlighted{padding:20px;line-height:2}.syntax-notes,.worked-problem,.instructor-notes{padding:20px}.syntax-notes dl>div{grid-template-columns:1fr;gap:10px}.output-block{padding:18px}.execution-steps,.calculation-steps{padding-left:25px}.execution-steps li,.calculation-steps li{padding-left:6px}.problem-question{padding:14px}.topic .code-example>h4,.worked-problem h4,.instructor-notes h4{font-size:22px}.trace-table th,.trace-table td{padding:14px 16px}}
@media print{.learning-route{break-inside:avoid;padding:16px 0}.route-flow{grid-template-columns:repeat(4,1fr);gap:8px}.route-node{padding:10px}.route-node h3{font-size:12pt}.route-node p,.route-count,.route-heading p{font-size:10pt}.route-step{font-size:12pt}.route-heading h2{font-size:18pt}.code-example,.worked-problem{break-inside:auto}.highlighted span{color:inherit!important}.highlighted{white-space:pre-wrap;font-size:10pt}.syntax-notes,.instructor-notes{padding:12px}.trace-wrap{overflow:visible}.trace-table{min-width:0;font-size:10pt}.code-hint,.example-run{display:none}.cheat-page .route-node p,.cheat-page .route-count,.cheat-page .route-heading{display:none}}
/* COMP2017: guided passes and complete engineering workshops. */
.study-path,.project-library{padding:42px 0;border-bottom:1px solid var(--line)}.study-path>p{font-size:var(--read-font,18px);max-width:78ch}.study-passes{list-style:none;padding:0;margin:28px 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.study-passes>li,.project-card{padding:26px;border:1px solid var(--line);border-radius:14px;background:var(--panel);min-width:0}.study-passes h3,.project-card h3{font-size:24px;line-height:1.45;margin:18px 0}.study-passes p,.project-card p{font-size:var(--read-font,18px);line-height:1.85}.study-passes details{margin-top:20px}.study-passes summary{font-size:16px;color:var(--accent);cursor:pointer}.study-passes details a{text-decoration:underline;text-underline-offset:3px}.study-passes details li{margin:12px 0}.project-next{display:block;margin-top:22px;color:var(--accent);font-size:17px}.project-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.project-card{display:flex;flex-direction:column;border-top:3px solid var(--accent);transition:border-color .15s}.project-card:hover{border-color:var(--accent)}.project-card .project-next{margin-top:auto;padding-top:18px}.chapter-coach{margin:30px 0;padding:26px;border-left:3px solid var(--accent);border-radius:0 12px 12px 0;background:var(--panel2)}.chapter-coach h3{font-size:22px!important;letter-spacing:0;text-transform:none;margin:20px 0 12px}.chapter-coach h4{font-size:20px;line-height:1.5}.chapter-coach summary{font-size:17px}
.project-section{padding:40px 0;border-bottom:1px solid var(--line);min-width:0}.project-section>h2{font-size:30px;line-height:1.5;margin:0 0 26px}.project-section p,.project-section li{font-size:var(--read-font,18px);line-height:1.9;overflow-wrap:break-word}.project-section h3{font-size:23px;line-height:1.5;letter-spacing:0;text-transform:none}.project-section h4{font-size:20px;line-height:1.5}.project-section a:not(.code-actions a){text-decoration:underline;text-underline-offset:3px}.design-card{margin:28px 0;padding:26px;background:var(--panel);border:1px solid var(--line);border-radius:12px}.design-card h3{margin-top:0}.design-card p:last-child{margin-bottom:0}.architecture-flow{list-style:none;padding:0;display:grid;gap:18px;counter-reset:node}.architecture-flow>li{counter-increment:node;background:var(--panel2);border-left:3px solid var(--accent);padding:24px}.architecture-flow>li:before{content:counter(node,decimal-leading-zero) ' →';color:var(--accent);font:20px var(--mono)}.architecture-flow h3{margin:14px 0}.milestone-goal{border-left:3px solid var(--accent);background:var(--panel2);padding:12px 24px;margin:24px 0}.project-section .code-example{margin:36px 0;padding:24px 0;border-top:1px solid var(--line)}.file-index{display:flex;flex-wrap:wrap;gap:12px;list-style:none;padding:0}.file-index a{display:block;padding:12px 15px;border:1px solid var(--line);border-radius:8px;font:16px var(--mono);overflow-wrap:anywhere}.project-file h3{overflow-wrap:anywhere}.project-file .code-actions{display:flex;flex-wrap:wrap;gap:16px}.project-guide .course-hero>p{max-width:80ch}.project-guide .code-hint{font-size:16px;line-height:1.8;color:var(--muted)}.project-guide .course-body{min-width:0}.project-guide .highlighted{font-size:var(--code-font,16px)}
@media(max-width:1000px){.study-passes,.project-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.study-passes,.project-cards{grid-template-columns:1fr}.study-passes>li,.project-card,.chapter-coach,.design-card{padding:22px}.project-section>h2{font-size:27px}.project-guide .topbar nav{gap:7px}.project-guide .brand{font-size:15px;gap:6px}.project-guide .topbar .wrap{gap:6px}.project-guide nav>a{font-size:13px}.project-guide .language-switch a{padding:6px}.project-guide .theme-button{width:34px;height:34px}}
@media print{.study-passes,.project-cards{display:block}.study-passes>li,.project-card{break-inside:avoid;margin:16px 0}.design-card{background:white}.project-file,.project-section{break-inside:auto}.chapter-coach{background:white}.project-section .code-actions{display:none}}
