:root{--paper:#f4f0e4;--paper2:#ebe3d1;--ink:#19395f;--ink2:#2e587e;--text:#2e2d28;--muted:#777264;--line:#c6b99f;--red:#a54a35;--gold:#a98236;--shadow:0 14px 38px rgba(47,39,24,.12);--toc:254px;--read:920px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--text);background:var(--paper);font-family:"Songti SC","STSong","Noto Serif CJK SC",Georgia,serif;line-height:1.82;background-image:radial-gradient(rgba(25,57,95,.045) .7px,transparent .7px),linear-gradient(100deg,rgba(255,255,255,.22),transparent 48%,rgba(166,132,70,.035));background-size:8px 8px,100% 100%}body.immersive .tutorial-toc{transform:translateX(-105%)}body.immersive .tutorial-main{margin-left:0;max-width:var(--read);margin-right:auto;margin-left:auto}.progress-rail{position:fixed;top:0;left:0;height:3px;width:0;background:var(--red);z-index:30}.tutorial-topbar{height:58px;position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:22px;padding:0 26px;border-bottom:1px solid var(--line);background:rgba(244,240,228,.92);backdrop-filter:blur(12px)}.hamburger{display:none;border:0;background:none;color:var(--ink);font-size:22px}.top-brand{color:var(--ink);font:600 15px/1 "Georgia",serif;letter-spacing:.04em}.top-brand em{color:var(--red);font-style:normal}.top-crumb{font:10px "SFMono-Regular",monospace;color:var(--muted);letter-spacing:.08em}.top-actions{margin-left:auto;display:flex;gap:14px;align-items:center}.top-actions a,.top-actions button{border:0;background:none;color:var(--muted);font:10px "SFMono-Regular",monospace;cursor:pointer}.top-actions a:hover,.top-actions button:hover{color:var(--ink)}.tutorial-layout{display:flex;min-height:calc(100vh - 58px)}.tutorial-toc{position:fixed;top:58px;bottom:0;left:0;width:var(--toc);padding:24px 17px 18px;border-right:1px solid var(--line);background:rgba(235,227,209,.94);display:flex;flex-direction:column;transition:transform .25s ease;z-index:15}.tutorial-brand{display:flex;gap:10px;align-items:center;color:var(--ink);font:700 13px/1.3 "SFMono-Regular",monospace;letter-spacing:.08em;padding:0 7px 18px;border-bottom:1px solid var(--line)}.tutorial-brand small{font-size:8px;color:var(--muted)}.tutorial-mark{display:grid;place-items:center;width:35px;height:35px;border:1px solid var(--ink);border-radius:50%;font:20px Georgia,serif}.toc-toggle{margin:16px 0 7px;border:0;background:none;text-align:left;color:var(--red);font:10px "SFMono-Regular",monospace;letter-spacing:.1em;cursor:pointer}.tutorial-toc nav{overflow:auto;display:flex;flex-direction:column;gap:2px}.tutorial-toc nav a{display:grid;grid-template-columns:33px 1fr;gap:7px;padding:7px 8px;border-radius:3px;color:#58554c;font-size:11px;line-height:1.25}.tutorial-toc nav a span{color:#9a8c74;font:9px "SFMono-Regular",monospace}.tutorial-toc nav a:hover,.tutorial-toc nav a.active{background:var(--ink);color:var(--paper)}.tutorial-toc nav a.active span{color:#d9c68e}.toc-foot{margin-top:auto;padding:14px 7px 0;color:#8b7c64;font:9px/1.5 "SFMono-Regular",monospace;letter-spacing:.1em}.tutorial-main{width:calc(100% - var(--toc));margin-left:var(--toc);min-width:0}.module-hero,.book-hero{padding:70px clamp(25px,7vw,120px) 70px;min-height:610px;border-bottom:1px solid var(--ink);position:relative;overflow:hidden}.module-hero:after,.book-hero:after{content:"";position:absolute;width:520px;height:520px;border:1px solid rgba(25,57,95,.15);border-radius:50%;right:-220px;bottom:-320px;box-shadow:0 0 0 58px rgba(25,57,95,.025),0 0 0 116px rgba(25,57,95,.02)}.module-hero>* ,.book-hero>*{position:relative;z-index:1}.module-eyebrow,.module-kicker,.course-kicker,.lesson-eyebrow{font:10px "SFMono-Regular",monospace;letter-spacing:.12em;color:var(--red)}.module-hero h1,.book-hero h1{margin:22px 0 25px;color:var(--ink);font:400 clamp(53px,8vw,105px)/.95 Georgia,serif;letter-spacing:-.055em}.module-hero h1 em,.book-hero h1 em{color:var(--red);font-style:normal}.module-thesis,.book-hero>p{max-width:900px;margin:0;font-size:20px;color:#4d4b43}.module-meta{display:flex;flex-wrap:wrap;gap:9px;margin-top:30px}.module-meta span{padding:6px 10px;border:1px solid #9e927b;border-radius:20px;color:#615b4e;font:10px "SFMono-Regular",monospace}.module-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:45px}.module-actions>a{border:1px solid var(--ink);padding:9px 13px;color:var(--ink);font:10px "SFMono-Regular",monospace}.module-actions>a:first-child{background:var(--ink);color:var(--paper)}.module-actions label{display:flex;align-items:center;min-width:270px;margin-left:auto;border-bottom:1px solid var(--ink);padding:5px 2px}.module-actions label span{font-size:19px;color:var(--ink)}.module-actions input{width:100%;border:0;background:none;outline:0;padding:5px 8px;color:var(--text);font:12px "Songti SC",serif}.module-intro,.book-intro{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:44px;padding:75px clamp(25px,7vw,120px);background:rgba(226,216,193,.3);border-bottom:1px solid var(--line)}.module-intro h2,.module-section h2,.book-intro h2{margin:0 0 15px;color:var(--ink);font:400 clamp(31px,4.1vw,58px)/1.1 Georgia,serif;letter-spacing:-.03em}.module-intro p,.book-intro p{max-width:820px;margin:0;font-size:16px}.intro-stats{display:grid;grid-template-columns:1fr 1fr;align-content:start;border:1px solid var(--ink)}.intro-stats div{padding:16px;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink)}.intro-stats div:nth-child(2n){border-right:0}.intro-stats div:nth-last-child(-n+2){border-bottom:0}.intro-stats b{display:block;color:var(--ink);font:31px Georgia,serif}.intro-stats span{font:9px "SFMono-Regular",monospace;color:var(--muted)}.learning-contract,.book-rule{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:32px}.learning-contract>div,.book-rule{border-top:2px solid var(--ink);padding-top:12px}.learning-contract b,.book-rule b{display:block;color:var(--ink);font-size:15px;margin-bottom:6px}.learning-contract span,.book-rule span{display:block;color:var(--muted);font-size:13px}.module-section{padding:76px clamp(25px,7vw,120px);border-bottom:1px solid var(--line);max-width:1500px;margin:0 auto}.module-kicker{margin-bottom:11px}.section-question{max-width:850px;margin:0 0 25px;color:#59564d;font-size:17px}.analogy,.source-answer,.trace-note{max-width:900px;margin:20px 0 27px;padding:17px 20px;border-left:3px solid var(--gold);background:rgba(235,227,209,.52)}.analogy b,.source-answer b,.trace-note b{color:var(--ink);font-size:13px}.analogy p,.source-answer p,.trace-note p{margin:6px 0 0;font-size:16px}.source-answer{border-color:var(--ink);background:rgba(25,57,95,.06)}.section-route{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:28px 0 38px;color:var(--muted);font:10px "SFMono-Regular",monospace}.section-route span{color:var(--red);margin-right:9px}.section-route i{font-style:normal;border:1px solid var(--line);padding:5px 8px}.section-route b{color:var(--red)}.diagram-pair{display:grid;gap:28px}.diagram-pair figure{margin:0;border:1px solid var(--ink);background:#e9e2d1;box-shadow:var(--shadow)}.diagram-pair figcaption{display:flex;align-items:center;padding:11px 14px;border-bottom:1px solid var(--ink);color:var(--ink);font-size:14px}.diagram-pair figcaption a{margin-left:auto;color:var(--ink);font:9px "SFMono-Regular",monospace}.diagram-pair iframe{display:block;width:100%;height:min(72vh,780px);border:0;background:#f1ecdf}.route-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:28px}.route-cards>div{border:1px solid var(--line);padding:15px;background:rgba(246,241,227,.5)}.route-cards b{display:block;color:var(--red);font:10px "SFMono-Regular",monospace}.route-cards p{margin:7px 0 0;font-size:13px}.trace-board{display:grid;grid-template-columns:1fr 28px 1fr 28px 1fr 28px 1fr 28px 1fr 28px 1fr 28px 1fr 28px 1fr;gap:0;align-items:stretch;margin:35px 0 25px;overflow:auto;padding-bottom:8px}.trace-step{min-width:124px;border:1px solid var(--ink);padding:13px 12px;background:rgba(246,241,227,.6);display:flex;flex-direction:column;gap:6px}.trace-step>span{color:var(--red);font:10px "SFMono-Regular",monospace}.trace-step b{color:var(--ink);font-size:13px;line-height:1.35}.trace-step small{color:var(--muted);font-size:11px;line-height:1.35}.trace-arrow{display:grid;place-items:center;color:var(--red);font:16px Georgia,serif}.lesson-finding{padding:42px 0;border-top:1px solid var(--line)}.lesson-finding-head{display:grid;grid-template-columns:45px 1fr;gap:15px;margin-bottom:21px}.lesson-number{width:37px;height:37px;display:grid;place-items:center;border:1px solid var(--ink);border-radius:50%;color:var(--ink);font:10px "SFMono-Regular",monospace}.lesson-finding h3{margin:6px 0 0;color:var(--ink);font-size:clamp(23px,2.8vw,37px);line-height:1.2;font-weight:500}.lesson-eyebrow{text-transform:uppercase;color:var(--muted);font-size:9px}.lesson-finding-grid{display:grid;grid-template-columns:minmax(0,.82fr) minmax(420px,1.18fr);gap:30px;align-items:start}.lesson-copy>div{padding-bottom:17px;margin-bottom:17px;border-bottom:1px solid rgba(25,57,95,.14)}.lesson-copy b{font:10px "SFMono-Regular",monospace;color:var(--red);letter-spacing:.07em}.lesson-copy p{margin:7px 0 0;font-size:15px}.lesson-plain p{font-size:18px;color:var(--ink)}.lesson-why{border-left:3px solid var(--gold);padding-left:14px}.lesson-boundary{border-color:rgba(165,74,53,.55)!important}.lesson-boundary ul{margin:7px 0 0;padding-left:18px;font-size:14px}.lesson-code-card{background:#172e47;color:#ede5d4;border:1px solid #10233a;box-shadow:var(--shadow);min-width:0}.lesson-code-head{display:flex;justify-content:space-between;padding:10px 13px;border-bottom:1px solid #536a7c;font:9px "SFMono-Regular",monospace}.copy-code{border:1px solid #8194a6;background:none;color:#e7edf0;padding:3px 8px;font:9px "SFMono-Regular",monospace;cursor:pointer}.lesson-code-path{padding:9px 13px;font:9px "SFMono-Regular",monospace;overflow-wrap:anywhere}.lesson-code-path a{color:#c4d1d8}.lesson-code-card pre{max-height:520px;overflow:auto;margin:0;padding:0 13px 16px;font:10px/1.55 "SFMono-Regular",monospace;tab-size:2}.lesson-code-card code{color:#ede5d4}.lesson-evidence{margin-top:18px;border:1px solid var(--line);background:rgba(235,227,209,.4)}.lesson-evidence summary{padding:10px 13px;cursor:pointer;color:var(--ink);font-size:12px}.lesson-evidence ul{list-style:none;margin:0;padding:0 13px 12px}.lesson-evidence li{display:grid;grid-template-columns:90px minmax(220px,1fr) 1fr;gap:10px;border-top:1px solid rgba(25,57,95,.13);padding:9px 0;align-items:start;font-size:11px}.lesson-evidence li>span{color:var(--red);font:9px "SFMono-Regular",monospace}.lesson-evidence li code{color:var(--ink)}.lesson-evidence li small{color:var(--muted)}.checkpoint{margin:26px 0 5px;padding:14px 16px;border:1px dashed var(--gold);background:rgba(246,241,227,.6)}.checkpoint b{font:10px "SFMono-Regular",monospace;color:var(--red)}.checkpoint p{margin:7px 0 0;font-size:13px}.empty-lesson{padding:20px;border:1px dashed var(--line);color:var(--muted)}.empty-lesson p{margin:5px 0 0}.practice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.practice-grid article{border:1px solid var(--line);padding:18px;background:rgba(246,241,227,.45)}.practice-grid article>span{color:var(--red);font:10px "SFMono-Regular",monospace}.practice-grid h3{margin:8px 0;font-size:19px;color:var(--ink)}.practice-grid p{font-size:14px}.practice-grid details{border-top:1px solid var(--line);padding-top:9px}.practice-grid summary{cursor:pointer;color:var(--ink);font:11px "SFMono-Regular",monospace}.practice-grid details p{font-size:13px}.practice-grid small{color:var(--muted);font:9px "SFMono-Regular",monospace}.source-index ol{list-style:none;padding:0;border-top:1px solid var(--ink)}.source-index li{display:grid;grid-template-columns:38px minmax(240px,1fr) 1fr;gap:13px;padding:10px 5px;border-bottom:1px solid var(--line);align-items:center}.source-index li>span{color:var(--red);font:9px "SFMono-Regular",monospace}.source-index li code{color:var(--ink);font-size:10px;overflow-wrap:anywhere}.source-index li small{color:var(--muted);font:9px "SFMono-Regular",monospace;overflow-wrap:anywhere}.next-section{padding-top:50px;padding-bottom:50px}.next-lesson{display:flex;gap:25px;justify-content:space-between;align-items:center;border-top:2px solid var(--ink);padding-top:22px}.next-lesson span{color:var(--red);font:10px "SFMono-Regular",monospace}.next-lesson h2{font-size:32px;margin:12px 0 8px}.next-lesson p{margin:0;max-width:650px;font-size:14px;color:var(--muted)}.next-lesson>a{white-space:nowrap;border:1px solid var(--ink);padding:10px 14px;color:var(--ink);font:10px "SFMono-Regular",monospace}.tutorial-footer{display:flex;justify-content:space-between;gap:18px;padding:27px clamp(25px,7vw,120px) 42px;background:var(--ink);color:var(--paper)}.tutorial-footer span{display:block;color:#b8c4cc;font:8px "SFMono-Regular",monospace}.tutorial-footer code{font:9px "SFMono-Regular",monospace}.tutorial-footer nav{display:flex;gap:24px}.tutorial-footer a{color:var(--paper);font-size:12px}.book-hero{min-height:580px}.book-hero>p{max-width:840px}.book-metrics{display:grid;grid-template-columns:repeat(4,1fr);max-width:900px;border:1px solid var(--ink);margin-top:38px}.book-metrics span{padding:14px 18px;border-right:1px solid var(--ink);color:var(--muted);font:10px "SFMono-Regular",monospace}.book-metrics span:last-child{border:0}.book-metrics b{display:block;color:var(--ink);font:32px Georgia,serif}.book-actions{display:flex;gap:10px;margin-top:35px}.book-actions a{border:1px solid var(--ink);padding:9px 13px;color:var(--ink);font:10px "SFMono-Regular",monospace}.book-actions a:first-child{background:var(--ink);color:var(--paper)}.book-intro{grid-template-columns:minmax(0,1fr) 270px}.book-rule{display:flex;flex-direction:column;gap:6px;margin-top:0}.course-list{padding:75px clamp(25px,7vw,120px)}.course-list>h2{margin:0 0 28px;color:var(--ink);font:400 clamp(34px,4vw,58px)/1.1 Georgia,serif}.course-grid{display:grid;gap:0}.course-card{display:grid;grid-template-columns:70px 1fr;gap:20px;border-top:1px solid var(--ink);padding:26px 0}.course-number{color:var(--red);font:31px Georgia,serif}.course-card h2{margin:6px 0 8px;font-size:30px;font-weight:400}.course-card h2 a{color:var(--ink)}.course-card p{max-width:800px;margin:0;color:var(--muted);font-size:15px}.course-links{display:flex;gap:17px;margin-top:13px}.course-links a{color:var(--ink);font:10px "SFMono-Regular",monospace}.lesson-finding.hidden{display:none}@media(prefers-color-scheme:dark){:root{--paper:#1b2530;--paper2:#223140;--ink:#d7e4ef;--ink2:#a9c0d3;--text:#e5e0d5;--muted:#b8b2a5;--line:#516577;--red:#e38a6d;--gold:#d7b25b;--shadow:0 14px 38px rgba(0,0,0,.25)}body{background-image:radial-gradient(rgba(208,226,244,.04) .7px,transparent .7px),linear-gradient(100deg,rgba(255,255,255,.02),transparent 48%,rgba(0,0,0,.15))}.tutorial-topbar,.tutorial-toc{background:rgba(27,37,48,.92)}.lesson-code-card{background:#101b27}.tutorial-footer{background:#102235}.module-meta span,.book-rule,.learning-contract>div,.intro-stats,.book-metrics{border-color:var(--line)}}@media(max-width:1080px){:root{--toc:210px}.lesson-finding-grid{grid-template-columns:1fr}.lesson-code-card{margin-top:17px}.module-intro,.book-intro{grid-template-columns:1fr}.route-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){:root{--toc:0px}.tutorial-topbar{padding:0 14px;gap:10px}.hamburger{display:block}.top-crumb{display:none}.top-actions a{display:none}.tutorial-toc{transform:translateX(-105%);width:285px;top:58px}.tutorial-toc.open{transform:translateX(0)}.tutorial-main{width:100%;margin-left:0}.module-hero,.book-hero{padding:45px 18px 50px;min-height:auto}.module-hero h1,.book-hero h1{font-size:54px}.module-thesis,.book-hero>p{font-size:17px}.module-actions label{margin-left:0;min-width:100%}.module-intro,.book-intro,.module-section,.course-list{padding:52px 18px}.intro-stats{margin-top:10px}.learning-contract{grid-template-columns:1fr}.route-cards,.practice-grid{grid-template-columns:1fr}.trace-board{grid-template-columns:repeat(17,124px 28px);grid-auto-flow:column}.trace-step{min-width:124px}.lesson-evidence li{grid-template-columns:70px 1fr}.lesson-evidence li small{grid-column:2}.source-index li{grid-template-columns:30px 1fr}.source-index li small{grid-column:2}.next-lesson{display:block}.next-lesson>a{display:inline-block;margin-top:18px}.tutorial-footer{display:block}.tutorial-footer nav{margin-top:18px;justify-content:space-between}.book-metrics{grid-template-columns:repeat(2,1fr)}.book-metrics span:nth-child(2){border-right:0}.book-metrics span:nth-child(-n+2){border-bottom:1px solid var(--ink)}}.tutorial-toc nav.collapsed{display:none}.concept-table{overflow:auto;margin:28px 0 36px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.concept-table table{border-collapse:collapse;width:100%;min-width:680px;font-size:13px}.concept-table th,.concept-table td{padding:12px 13px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top;text-align:left}.concept-table th{color:var(--ink);font:10px "SFMono-Regular",monospace;background:rgba(235,227,209,.5)}.concept-table td code{color:var(--red);font-size:10px}.concept-table td:last-child,.concept-table th:last-child{border-right:0}html.theme-dark{--paper:#1b2530;--paper2:#223140;--ink:#d7e4ef;--ink2:#a9c0d3;--text:#e5e0d5;--muted:#b8b2a5;--line:#516577;--red:#e38a6d;--gold:#d7b25b;--shadow:0 14px 38px rgba(0,0,0,.25)}html.theme-dark .tutorial-topbar,html.theme-dark .tutorial-toc{background:rgba(27,37,48,.94)}html.theme-dark .lesson-code-card{background:#101b27}html.theme-dark .tutorial-footer{background:#102235}