:root{--bg:#fafaf6;--paper:#fff;--ink:#22332f;--muted:#596861;--line:#dce3db;--green:#153d37;--accent:#d9ecbb;--soft:#eef3e9;--shadow:0 20px 70px #173d3718;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;font-size:16px;line-height:1.85}a{color:var(--green);text-decoration-thickness:1px;text-underline-offset:4px}button,input{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.55}a,button,input,summary{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #9baa41;outline-offset:4px}button:not(.term),.button{min-height:44px;border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:8px 15px;font-size:14px;font-weight:600}.button,#complete-toggle,#step-next{display:inline-flex;align-items:center;justify-content:center;gap:28px;background:var(--green);color:#fff;border:1px solid var(--green);text-decoration:none}.button:hover,#complete-toggle:hover,#step-next:hover{filter:brightness(1.2)}.skip{position:fixed;top:-80px;left:16px;z-index:100;background:var(--paper);padding:12px}.skip:focus{top:8px}.topbar{height:80px;border-bottom:1px solid var(--line);position:fixed;inset:0 0 auto;z-index:25;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:16px}.brand{display:flex;gap:13px;align-items:center;text-decoration:none;color:var(--ink);font-size:18px;font-weight:700;line-height:1.3}.brand small{display:block;font-size:10px;letter-spacing:2px;color:var(--muted);font-weight:500;margin-top:5px}.brand-mark{display:flex;align-items:center;justify-content:center;width:37px;height:37px;background:var(--green);color:var(--accent);border-radius:10px;font-size:25px}.top-actions{display:flex;gap:8px;align-items:center}kbd{font-size:12px;color:var(--muted);margin-left:30px;padding:0 5px;border:1px solid var(--line);border-radius:4px}.icon-button{font-size:22px!important;width:46px;padding:3px!important}#menu-toggle{display:none}#sidebar{width:270px;position:fixed;top:80px;bottom:0;left:0;border-right:1px solid var(--line);padding:35px 24px 24px;background:var(--bg);overflow-y:auto;z-index:20}.side-label{font-size:12px;font-weight:700;letter-spacing:1px;margin-bottom:18px}.side-label span{display:block;font-size:11px;color:var(--muted);letter-spacing:0;margin-top:2px;font-weight:400}#sidebar nav{display:flex;flex-direction:column;gap:5px}#sidebar nav a{text-decoration:none;font-size:13px;color:var(--muted);padding:10px 11px;border-radius:6px;line-height:1.6;min-height:42px}#sidebar nav a:hover{background:var(--soft);color:var(--ink)}#sidebar nav a.active{background:var(--green);color:#fff}#sidebar nav .nav-lesson{display:grid;grid-template-columns:23px 1fr 8px;gap:7px}.nav-num{font:12px/1.9 ui-monospace,monospace;opacity:.65}.done{font-size:11px;color:#718c46}.active .done{color:var(--accent)}.progress{border-top:1px solid var(--line);margin-top:26px;padding-top:20px;font-size:12px;color:var(--muted)}.progress small{font-size:10px}.progress-track{height:4px;background:var(--line);margin:9px 0}.progress-track span{display:block;height:100%;width:0;background:#749259}.side-note{font-size:11px;margin-top:28px;color:var(--muted);line-height:1.7}.side-note a{margin-left:8px}.side-note span{display:block}main{max-width:1150px;margin-left:270px;padding:126px clamp(28px,5vw,85px) 20px;min-height:100vh}h1,h2,h3{line-height:1.35;letter-spacing:-.035em}h1{font-size:clamp(32px,3.7vw,52px);margin:20px 0;font-weight:730}h2{font-size:25px;margin:0 0 20px;font-weight:650}h3{font-size:20px;font-weight:650}p{margin:0 0 18px}li{margin-bottom:10px}ul{padding-left:23px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--muted);line-height:1.7}.eyebrow span{float:right;font-weight:400;letter-spacing:0}.hero{padding:22px 0 45px;max-width:800px}.hero h1{font-size:clamp(38px,4.5vw,65px);line-height:1.25;margin:24px 0}.hero h1 span{color:var(--green)}.lead{font-size:18px;line-height:1.8;color:var(--muted);max-width:700px}.hero-meta{display:flex;flex-wrap:wrap;gap:12px;margin:25px 0 28px}.hero-meta span{font-size:12px;padding:4px 10px;background:var(--soft);border-radius:4px;color:var(--green)}.text-link{margin-left:24px;font-size:14px;text-decoration:none}section{margin:40px 0;max-width:850px}.term{display:inline;border:0;background:transparent;color:var(--green);padding:0;border-radius:2px;line-height:inherit;font-size:inherit;text-align:left;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:4px}.term-hint{font-size:.7em;color:var(--muted);text-decoration:none;letter-spacing:0}.term:hover{background:var(--accent);color:#153d37}.term:hover .term-hint{color:#445954}.lesson-header{border-bottom:1px solid var(--line);padding:6px 0 26px;margin-bottom:32px}.lesson-header h1{font-size:clamp(30px,3.3vw,46px)}.lesson-meta{font-size:12px;color:var(--muted);margin-top:24px}.goals{background:var(--soft);padding:23px 28px;border-radius:10px;border-left:3px solid #819761}.goals h2{font-size:15px;margin:0 0 12px;letter-spacing:0}.goals ul{margin:0;padding-left:22px}.goals li{font-size:14px;margin:4px 0}.section-heading{display:flex;gap:12px;justify-content:space-between;align-items:baseline}.section-heading span{font-size:11px;color:var(--muted)}.course-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.course-card{border:1px solid var(--line);background:var(--paper);padding:25px;border-radius:10px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;transition:border-color .15s,transform .15s}.course-card:hover{border-color:#779482;transform:translateY(-2px)}.card-num{font-family:ui-monospace,monospace;color:#779482;font-size:21px;display:flex;justify-content:space-between}.card-num small{font:11px/1.7 system-ui;color:var(--muted)}.course-card h3{font-size:20px;margin:17px 0 12px}.course-card p{font-size:13px;color:var(--muted);line-height:1.8;flex:1}.card-end{border-top:1px solid var(--line);padding-top:13px;margin-top:5px;font-size:12px;color:var(--green);display:flex;justify-content:space-between}figure{margin:35px 0;padding:0;max-width:900px}figure img{display:block;width:100%;height:auto;border-radius:13px}figcaption{font-size:11px;line-height:1.7;color:var(--muted);margin-top:11px}pre{position:relative;background:#172e29;color:#e2ebe3;padding:22px 25px;border-radius:9px;overflow:auto;font-size:12px;line-height:1.9;tab-size:4;max-width:100%}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85em;overflow-wrap:anywhere}pre code{font-size:inherit;overflow-wrap:normal}.copy-code{position:absolute;top:7px;right:7px;min-height:28px!important;padding:2px 9px!important;font-size:10px!important;background:#243e35!important;color:#e2ebe3!important;border-color:#607266!important}pre:has(.copy-code){padding-top:38px}.excerpt{padding:20px 0 12px;margin-top:24px;border-top:1px solid var(--line)}.excerpt p{font-size:14px;color:var(--muted)}.excerpt>a{font-size:12px}.sources{margin:40px 0;border:1px solid var(--line);padding:26px;border-radius:10px;background:var(--paper)}.sources h2{font-size:21px}.sources p{font-size:13px;color:var(--muted)}.sources ul{list-style:none;padding:0;margin:20px 0 0}.sources li{padding:13px 0;border-top:1px solid var(--line);font-size:14px;margin:0}.sources li code{display:block;color:var(--muted);font-size:11px;line-height:1.7;margin-top:4px}.sources h3{font-size:16px;margin-top:30px}.exercise{background:var(--soft);padding:28px;border-radius:10px}.exercise h2{font-size:21px;margin-top:12px}.exercise-note{font-size:11px;color:var(--muted);margin-bottom:0}.answer{border-top:1px solid var(--line);padding:20px 0}.answer:last-child{border-bottom:1px solid var(--line)}summary{cursor:pointer;font-size:15px;line-height:1.8}summary span{font-size:11px;color:var(--muted);white-space:nowrap;margin-left:8px}.answer p{font-size:14px;margin-top:15px;padding:16px;background:var(--soft);border-radius:7px;margin-bottom:0}.answer[open] summary span{display:none}.lesson-complete{padding:25px 0;display:flex;align-items:center;gap:16px}.lesson-complete>span{font-size:11px;color:var(--muted)}.pager{display:flex;justify-content:space-between;gap:30px;padding:28px 0;border-top:1px solid var(--line);font-size:14px;align-items:start}.pager a{text-decoration:none;max-width:65%}footer{border-top:1px solid var(--line);padding:30px 0 12px;display:flex;flex-wrap:wrap;gap:10px 24px;font-size:10px;color:var(--muted);margin-top:40px}footer span{flex:1;min-width:240px}.version-box{background:var(--green);color:#fff;padding:30px;border-radius:10px;margin:40px 0}.version-box h2{font-size:22px}.version-box p{font-size:12px;opacity:.8}.version-box code{display:block;font-size:11px;color:var(--accent);margin-bottom:17px}.version-box a{font-size:13px;color:#fff}.gloss-filter-label{display:block;font-size:13px;margin-bottom:8px}input[type=search]{width:100%;padding:13px 16px;border:1px solid var(--line);border-radius:7px;color:var(--ink);background:var(--paper);font-size:16px;min-height:48px}.gloss-item{padding:25px 0;border-bottom:1px solid var(--line);scroll-margin-top:110px}.gloss-item:target{background:var(--soft);padding:25px 18px}.gloss-item dt{font-weight:650;font-size:19px}.gloss-item dt span{font-weight:400;font-size:12px;color:var(--muted);margin-left:14px}.gloss-item dd{font-size:14px;margin:12px 0 0;line-height:1.9}.gloss-item[hidden]{display:none}#gloss-status{font-size:12px;color:var(--muted);margin-top:8px}dialog{width:min(650px,calc(100vw - 28px));border:1px solid var(--line);border-radius:14px;padding:28px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);max-height:85vh;overflow-y:auto}dialog::backdrop{background:#0c251a80;backdrop-filter:blur(3px)}.dialog-top{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.dialog-top h2{font-size:22px;margin:0}.dialog-top button{font-size:12px}dialog label{display:block;font-size:12px;margin-bottom:7px}.search-status{font-size:12px;color:var(--muted);margin-top:14px}.search-result{display:block;padding:17px 0;border-top:1px solid var(--line);text-decoration:none}.search-result strong{font-size:15px}.search-result p{font-size:12px;color:var(--muted);margin:7px 0 0;line-height:1.8}#term-short{font-size:13px;color:var(--muted)}#term-definition{font-size:16px}#term-link{font-size:13px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.stepper{background:var(--soft);padding:27px;border-radius:10px;margin:35px 0}.stepper h2{font-size:21px}.stepper p{min-height:92px;font-size:15px}.stepper small{font-size:11px;color:var(--muted)}.button-row{display:flex;gap:10px;margin-bottom:15px}[data-theme=dark]{--bg:#15211d;--paper:#1c2b24;--ink:#e6ece4;--muted:#adb9af;--line:#3c4c40;--green:#c4dfb8;--accent:#d9ecbb;--soft:#26372b;color-scheme:dark}[data-theme=dark] .brand-mark,[data-theme=dark] .button,[data-theme=dark] #complete-toggle,[data-theme=dark] #step-next,[data-theme=dark] #sidebar nav a.active,[data-theme=dark] .version-box{background:#345844;color:#fff}[data-theme=dark] .version-box code{color:#d9ecbb}[data-theme=dark] figure img{opacity:.94}
@media(min-width:1600px){main{margin-left:calc(270px + (100vw - 1500px)/2)}}@media(max-width:1100px){#sidebar{width:235px;padding:30px 16px}main{margin-left:235px;padding:118px 36px 20px}.topbar{padding:0 24px}.term-hint{font-size:.68em}}@media(max-width:800px){.topbar{height:68px;padding:0 18px}.brand{font-size:16px}.brand small{font-size:9px;letter-spacing:1px}.brand-mark{width:31px;height:31px;font-size:23px}#menu-toggle{display:block}#sidebar{top:68px;width:280px;transform:translateX(-100%);transition:transform .2s;box-shadow:var(--shadow)}body.menu-open #sidebar{transform:translateX(0)}main{margin-left:0;padding:100px 24px 20px;max-width:850px}.hero{padding-top:0}.hero h1{font-size:44px}kbd{display:none}.section-heading{display:block}.section-heading span{display:block;margin-bottom:16px}.top-actions{gap:5px}#search-open{font-size:12px;padding:7px 11px}.icon-button{width:38px}#menu-toggle{font-size:12px;padding:7px 11px}h2{font-size:23px}.lesson-header h1{font-size:34px}.lead{font-size:17px}.sources{padding:22px}}@media(max-width:500px){body{font-size:15px;line-height:1.95}.topbar{padding:0 12px}.brand{gap:7px;font-size:14px}.brand small{font-size:8px}.brand-mark{width:28px;height:28px;font-size:20px}.top-actions{gap:4px}.icon-button{width:33px}main{padding:97px 20px 20px}.hero h1{font-size:36px}.hero .text-link{display:inline-block;margin:18px 0 0 18px;font-size:12px}.hero-meta{gap:8px}.hero-meta span{font-size:10px}.course-grid{grid-template-columns:1fr;gap:12px}.course-card{padding:21px}.course-card h3{margin:10px 0;font-size:20px}.course-card p{margin-bottom:13px}.lesson-header h1{font-size:30px}.goals{padding:20px}.goals li{font-size:13px}.term-hint{font-size:.65em}figure{overflow-x:auto}figure img{min-width:620px}figcaption{max-width:100%;font-size:10px}figure::before{content:"横向滑动查看完整图示 →";display:block;font-size:10px;color:var(--muted);margin-bottom:6px}pre{font-size:11px;padding:21px 17px}.exercise,.stepper{padding:22px}.sources{padding:20px}.sources h2{font-size:21px}.pager{font-size:12px;gap:15px}.lesson-complete{align-items:flex-start;flex-direction:column;gap:8px}.version-box{padding:23px}dialog{padding:22px}summary{font-size:14px}.gloss-item dt span{display:block;margin-left:0;margin-top:4px}.brand small{white-space:nowrap}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media print{.topbar,#sidebar,.skip,.copy-code,.lesson-complete,.pager,.stepper,dialog,footer{display:none!important}main{padding:0;margin:0;max-width:none}body{background:#fff;color:#111;font-size:12pt}.term{color:#111;text-decoration:none}.term-hint{color:#555}figure img{min-width:0;max-width:100%}figure::before{display:none}details p{display:block}.version-box{background:#eee;color:#111}.version-box a{color:#111}pre{white-space:pre-wrap;background:#eee;color:#111}h2,h3{break-after:avoid}figure,.goals{break-inside:avoid}}
.quiz-item{border-top:1px solid var(--line);padding:20px 0}.quiz-item:last-child{border-bottom:1px solid var(--line)}.quiz-question{font-weight:550;margin-bottom:9px}.quiz-item .answer{border:0;padding:0}.quiz-item summary{font-size:12px;color:var(--muted)}
.top-actions{flex-shrink:0}.top-actions button{white-space:nowrap}@media(max-width:360px){.brand-mark{display:none}.brand{font-size:12px}.topbar{gap:8px}.hero h1{font-size:33px}}
/* Architecture edition: long evidence chains and horizontally readable tables. */
.implementation-ref{padding:10px 13px;background:var(--soft);border-left:2px solid #819761;font-size:11px!important;line-height:1.8;margin:15px 0 24px}.implementation-ref a{font-size:12px;font-weight:550}.implementation-ref code{display:block;color:var(--muted);font-size:10px;margin-top:4px}.table-scroll{max-width:100%;overflow-x:auto;margin:24px 0 28px;border:1px solid var(--line);border-radius:9px}.table-scroll:focus-visible{outline:3px solid #9baa41;outline-offset:3px}table{border-collapse:collapse;width:100%;min-width:630px;table-layout:fixed;font-size:13px;line-height:1.8}th,td{text-align:left;vertical-align:top;padding:15px 16px;overflow-wrap:anywhere}th{background:var(--soft);font-weight:650;font-size:12px;border-bottom:1px solid var(--line)}td{border-bottom:1px solid var(--line)}tr:last-child td{border-bottom:0}td:first-child{font-weight:550;width:23%}.technical-note{padding:20px 24px;border:1px solid var(--line);border-left:3px solid #819761;border-radius:7px;background:var(--paper);margin:28px 0}.technical-note h3{font-size:15px;letter-spacing:0;margin:0 0 12px}.technical-note p{font-size:14px;line-height:1.9;margin:0}.article-toc{margin:24px 0 36px;padding:15px 20px;border:1px solid var(--line);border-radius:8px}.article-toc summary{font-size:13px;color:var(--muted)}.article-toc ol{padding-left:20px;margin:18px 0 0}.article-toc li{font-size:13px;margin:8px 0}.article-toc a{text-decoration:none}h2[id]{scroll-margin-top:102px}.sources h2{letter-spacing:0}.hero .lead{max-width:750px}@media(max-width:500px){.table-scroll::before{content:'横向滑动查看完整对照表 →';display:block;padding:8px 12px;font-size:10px;color:var(--muted);background:var(--soft)}.technical-note{padding:18px 20px}.implementation-ref{padding:10px;font-size:10px!important}h2[id]{scroll-margin-top:88px}table{font-size:12px}td,th{padding:13px}.hero h1{font-size:36px}}
main{overflow-wrap:anywhere}

/* Full explanations and the overview viewer. */
.term-field{margin:23px 0}.term-field h3,.term-source h3{font-size:13px;color:var(--muted);letter-spacing:0;margin:0 0 6px}.term-field p{font-size:15px;line-height:1.9;margin:0}.term-source{border-top:1px solid var(--line);padding-top:17px;margin:22px 0}.term-source a{font-size:13px}.term-source code{display:block;font-size:11px;margin:4px 0 12px;color:var(--muted)}.term-related{font-size:12px;margin:18px 0;display:flex;flex-wrap:wrap;align-items:center;gap:7px}.term-related button{font-size:12px;padding:4px 9px;min-height:36px}.gloss-item dd>.term-related{display:block}.gloss-item dd .term-field{margin:17px 0}.gloss-item dd .term-field p{font-size:14px}.architecture-map figure{border:1px solid var(--line);border-radius:13px;background:#f4f7f4;padding:8px}.architecture-map figcaption{padding:0 9px 8px}.architecture-map .map-read{font-size:12px;color:var(--muted);margin-top:15px}button.map-open{background:var(--green);color:var(--bg);border-color:var(--green)}#map-dialog{width:min(1450px,calc(100vw - 28px));max-width:none;max-height:92vh;overflow:hidden;padding:22px}#map-dialog .dialog-top{margin-bottom:12px}#map-dialog h2{font-size:21px}.map-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.map-controls button{font-size:13px;padding:6px 12px}.map-controls span{font-size:12px;color:var(--muted);margin-left:5px}.map-help{font-size:12px;color:var(--muted);margin:8px 0}#map-scroll{max-height:calc(92vh - 200px);overflow:auto;border:1px solid var(--line);border-radius:9px;background:#f4f7f4;overscroll-behavior:contain}#map-image{display:block;max-width:none;min-width:0;height:auto;width:100%}@media(max-width:500px){.architecture-map figure img{min-width:1050px}#map-dialog{padding:16px}#map-scroll{max-height:calc(92vh - 230px)}#map-dialog h2{font-size:18px}.map-controls button{font-size:12px}.term-field p{font-size:14px}}@media print{.map-open{display:none}.architecture-map figure img{min-width:0}}
