:root{--bg:#f6f5ef;--paper:#fffefa;--ink:#202e2b;--muted:#61706a;--line:#d8ded7;--green:#12644f;--soft:#e7efe7;--amber:#fcf0d6}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.7 system-ui,-apple-system,sans-serif}body.dark{--bg:#14221e;--paper:#1d2d27;--ink:#e5eee8;--muted:#b1c5b8;--line:#40574c;--green:#8ed7b2;--soft:#263f33;--amber:#493e26}a{color:var(--green)}button,select{font:inherit}button,.button{cursor:pointer;border:1px solid var(--line);border-radius:6px;padding:9px 15px;background:var(--paper);color:var(--ink);text-decoration:none;display:inline-block}button:hover,.button:hover{border-color:var(--green);background:var(--soft)}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #dc923c;outline-offset:4px}.primary{background:var(--green);color:var(--bg);border-color:var(--green)}aside{position:fixed;inset:0 auto 0 0;width:270px;padding:30px 24px;border-right:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column}.brand{text-decoration:none;font-weight:750;font-size:22px;color:var(--ink);line-height:1.4}.brand>span:last-child{display:block;font-size:11px;font-weight:500;margin-top:8px}.logo{display:inline-grid;place-content:center;background:var(--green);color:var(--paper);width:33px;height:33px;margin-right:6px;border-radius:8px}.eyebrow{font:600 11px/1.6 system-ui;letter-spacing:1.7px;color:var(--muted);margin:34px 0 16px}nav a{display:flex;gap:12px;padding:12px 9px;text-decoration:none;color:var(--muted);font-size:13px;border-radius:6px;line-height:1.5;margin:4px 0}nav a.active{background:var(--soft);color:var(--green);font-weight:700}nav a span{font-family:monospace}.sidefoot{margin-top:auto;font-size:12px}.sidefoot a{display:block;margin-top:14px}.sidefoot button{font-size:12px}main{max-width:1240px;margin-left:270px;padding:46px 7vw 80px}h1,h2,h3{line-height:1.18;letter-spacing:-.035em}h1{font-size:clamp(38px,5vw,66px);font-weight:600;margin:15px 0 24px}h2{font-size:28px;margin:42px 0 16px}h3{font-size:21px}p{margin:0 0 20px}.lead{font-size:21px;color:var(--muted);max-width:780px}.kicker{color:var(--green);font-size:12px;font-weight:700;letter-spacing:1.9px;text-transform:uppercase}.meta{font-size:13px;color:var(--muted);margin:24px 0}.hero{padding-bottom:30px}.hero h1 em{font-family:Georgia,serif;font-weight:400;color:var(--green)}.flow{background:#183d32;color:#f4f4e9;border-radius:12px;padding:30px;margin:32px 0}.flow .path{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.node{border:1px solid #82ac93;border-radius:7px;padding:13px 20px;font:14px/1.6 monospace}.workers{display:flex;gap:10px}.flow small{display:block;color:#b9d2bf;margin-top:20px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.card{display:block;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:25px;text-decoration:none;color:var(--ink)}.card:hover{border-color:var(--green)}.card p{font-size:14px;color:var(--muted);margin-bottom:0}.card .num{font:13px monospace;color:var(--green)}.card h3{margin:12px 0}.prediction{border-left:4px solid #ce9036;background:var(--amber);padding:22px 25px;margin:28px 0}.prediction strong{font-size:12px;letter-spacing:1.5px}.prediction p{margin:8px 0}details{padding:13px 0}summary{cursor:pointer;color:var(--green);font-weight:600}details p{margin-top:14px}table{border-collapse:collapse;width:100%;font-size:14px;margin:25px 0}th,td{text-align:left;padding:13px;border-bottom:1px solid var(--line);vertical-align:top}th{background:var(--soft)}code{background:var(--soft);padding:2px 5px;border-radius:3px;font-size:.88em}li{margin:9px 0}video{width:100%;display:block;border-radius:9px;background:#183d32;max-height:450px}.caption{font-size:12px;color:var(--muted);margin-top:10px}.lab{padding:24px;background:var(--paper);border:1px solid var(--line);border-radius:9px;margin:30px 0}.lab h3{margin-top:0}.controls{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin:16px 0}.workergrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.worker{border:1px solid var(--line);border-radius:7px;padding:16px;font-size:14px}.worker b{font-size:30px;display:block}.worker.failed{border-color:#b64d32;background:var(--amber)}.worker small{display:block}.status{font:14px/1.7 monospace;background:var(--soft);padding:16px;border-radius:5px;min-height:58px;white-space:pre-line}.stat{font:500 28px monospace;color:var(--green)}.quiz fieldset{border:1px solid var(--line);border-radius:6px;margin:20px 0;padding:20px}.quiz legend{font-weight:600}.quiz label{display:block;margin:8px 0;cursor:pointer}.feedback{padding:10px 0;color:var(--green);font-size:14px}.chapterend{border-top:1px solid var(--line);padding-top:24px;margin-top:40px;display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}.skip{position:absolute;left:-9999px}.skip:focus{left:20px;top:10px;z-index:99;background:var(--paper)}.source-note{font-size:13px;color:var(--muted);border-top:1px solid var(--line);padding-top:18px;margin-top:40px}@media(max-width:850px){aside{position:static;width:auto;padding:20px;display:block;border-right:0;border-bottom:1px solid var(--line)}nav{display:flex;overflow-x:auto}nav a{min-width:145px}.sidefoot{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.sidefoot p,.sidefoot a{margin:0}.eyebrow{margin:20px 0 5px}main{margin:0;padding:30px 22px}.grid{grid-template-columns:1fr}h1{font-size:43px}.workergrid{gap:6px}.worker{padding:10px}.workers{flex-wrap:wrap}.node{padding:8px}.flow{padding:20px}}@media print{aside,button,.controls,video,.chapterend{display:none}main{margin:0;padding:0;max-width:none}body{background:white;color:black}.lab{break-inside:avoid}}
nav{overflow:auto;min-height:0}nav a{padding:8px 9px;margin:1px 0}aside .eyebrow{margin-top:24px}.badge{font:600 11px system-ui;background:var(--soft);color:var(--green);padding:5px 8px;border-radius:4px;display:inline-block;margin:5px 6px 5px 0}.unit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.card{min-width:0}.card h3{font-size:22px}.unit-actions{display:flex;gap:12px;flex-wrap:wrap;margin:28px 0}input[type=range]{max-width:100%;accent-color:var(--green)}input[type=number],select,input[type=text],textarea{color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:5px;padding:7px;max-width:100%;font:inherit}input[type=number]{width:90px}.lab label{margin-right:12px}.lab .controls label{font-size:14px}.lab output{font-weight:700}.note{background:var(--soft);padding:18px;border-radius:6px;margin:20px 0}.lab button:disabled{opacity:.45;cursor:default}.stage{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.stage>span{border:1px solid var(--line);padding:10px;border-radius:5px;background:var(--soft)}.stage>span.off{background:var(--amber)}.sourcefile{overflow-wrap:anywhere;font-size:13px;color:var(--muted)}.chaptertext{max-width:850px}.reviewentry{padding-bottom:25px;border-bottom:1px solid var(--line)}.reviewentry li{font-size:15px}.reviewentry h3{margin-bottom:10px}.videolist{display:grid;grid-template-columns:1fr 1fr;gap:18px}.videolist video{height:auto}.quiz{margin-top:30px}.flow .path{font-size:16px}.home-stats{display:flex;flex-wrap:wrap;gap:35px;border-block:1px solid var(--line);padding:18px 0;margin:30px 0}.home-stats b{display:block;font-size:30px;font-weight:600}.home-stats span{font-size:13px;color:var(--muted)}.error{color:#b7442e}.tablewrap{overflow-x:auto}pre{overflow-x:auto;background:var(--soft);padding:15px;font-size:14px}main{overflow-wrap:break-word}.chapterlinks{display:flex;flex-wrap:wrap;gap:8px}.chapterlinks a{font-size:13px}.chaptertitle{font-size:clamp(32px,4vw,52px)}@media(max-width:850px){.unit-grid,.videolist{grid-template-columns:1fr}nav{max-height:170px}.home-stats{gap:20px}h1{font-size:40px}.lab{padding:17px}}@media print{details>*{display:block!important}.card{break-inside:avoid}.grid{display:block}.card{margin-bottom:12px}}

.lecture-links{margin:30px 0;padding:22px 26px;border:1px solid var(--line,#cad8cc);border-radius:12px;background:var(--panel,#eef4ed)}.lecture-links h2,.lecture-links h3{margin-top:0}.lecture-links li{margin:14px 0}.lecture-links small{line-height:1.5;display:block}.lecture-extension{margin:35px 0;padding-top:12px;border-top:2px solid #b8cbbd}.dark .lecture-links{background:#20372d;color:#e6eee3}.lecture-extension p{max-width:78ch}

.schedule-date{color:var(--green);font-weight:600;font-size:14px}.teaching-schedule{margin:30px 0}.teaching-schedule summary{font-size:1.3rem;font-weight:700;cursor:pointer}.schedule-scroll{overflow-x:auto}.teaching-schedule table{width:100%;border-collapse:collapse;font-size:14px}.teaching-schedule th,.teaching-schedule td{padding:12px;text-align:left;vertical-align:top;border-bottom:1px solid #81958855}.teaching-schedule td:nth-child(2){min-width:145px}.teaching-schedule td div{margin-top:5px}

.lab table{width:100%;border-collapse:collapse;font-size:14px}.lab th,.lab td{padding:10px;text-align:left;border-bottom:1px solid #81958855;vertical-align:top}.lab select{max-width:100%;padding:8px}.lab td select{min-width:110px}.lab label{display:inline-block;margin:8px 10px 8px 0}
