:root{--blue:#0072b2;--blue-dark:#005e93;--verm:#d55e00;--ink:#101418;--muted:#5b6670;--paper:#fbfbfa;--rule:#dcdfe2;--field:#fff;--error-bg:#fdf0e8;--serif:"Latin Modern Roman", "CMU Serif", "Computer Modern", Georgia, "Times New Roman", serif;--sans:"Inter", "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6}a{color:var(--blue)}a,button,summary,[role=button],[role=link]{cursor:pointer}button,summary,[role=button]{-webkit-user-select:none;user-select:none}button:disabled{cursor:not-allowed}.site-header{border-bottom:1px solid var(--rule);background:var(--paper)}.site-header .bar{align-items:center;gap:12px;max-width:1000px;margin:0 auto;padding:14px 22px;display:flex;position:relative}.course-menu>summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--blue);align-items:center;gap:6px;list-style:none;display:inline-flex}.course-menu>summary::-webkit-details-marker{display:none}.course-menu>summary:after{content:"";border-right:1.5px solid var(--blue);border-bottom:1.5px solid var(--blue);width:6px;height:6px;transform:translateY(-2px)rotate(45deg)}.course-menu[open]>summary:after{transform:translateY(1px)rotate(-135deg)}.course-menu>summary:hover{text-decoration:underline}.course-menu .panel{z-index:40;background:var(--field);border:1px solid var(--rule);width:min(390px,100vw - 44px);max-height:min(70vh,560px);padding:6px 0 0;position:absolute;top:100%;right:22px;overflow-y:auto;box-shadow:0 6px 24px #10141821}.course-menu .panel section{padding:0 0 6px}.course-menu .panel .mod{color:var(--ink);margin:0;padding:10px 16px 4px;font-size:13px;font-weight:600}.course-menu .panel .mod .n{font-family:var(--serif);color:var(--blue)}.course-menu .panel ul{margin:0;padding:0;list-style:none}.course-menu .panel li a{color:var(--ink);align-items:baseline;gap:9px;padding:7px 16px;font-size:14px;text-decoration:none;display:flex}.course-menu .panel li a:hover{background:var(--paper)}.course-menu .panel li a .n{font-family:var(--serif);color:var(--blue);flex:none}.course-menu .panel li a .t{flex:1}.course-menu .panel .tick{letter-spacing:.12em;text-transform:uppercase;color:var(--blue);flex:none;font-size:10px}.course-menu .panel .all{border-top:1px solid var(--rule);background:var(--field);padding:11px 16px;font-size:13px;display:block;position:sticky;bottom:0}.brand{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;text-decoration:none;display:flex}.brand svg{pointer-events:none}.brand .wordmark{font-family:var(--serif);color:var(--blue);font-size:21px;line-height:1}.brand .wordmark span{color:var(--verm)}.site-header nav{-webkit-user-select:none;user-select:none;align-items:center;gap:18px;margin-left:auto;font-size:14px;display:flex}.site-header nav a,.site-header nav button{color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:none}.site-header nav a:hover,.site-header nav button:hover{color:var(--blue)}main{max-width:1000px;margin:0 auto;padding:46px 22px 90px}main.narrow{max-width:460px}h1{font-family:var(--serif);margin:0 0 14px;font-size:38px;font-weight:400;line-height:1.15}h2{font-family:var(--serif);margin:38px 0 10px;font-size:25px;font-weight:400}.lede{color:var(--muted);max-width:62ch;margin:0 0 26px;font-size:17px}main form{flex-direction:column;gap:16px;display:flex}.site-header nav form{cursor:pointer;align-items:center;display:flex}label{letter-spacing:.03em;text-transform:uppercase;color:var(--muted);cursor:default;-webkit-user-select:none;user-select:none;flex-direction:column;gap:6px;font-size:13px;display:flex}input{font:inherit;cursor:text;text-transform:none;letter-spacing:normal;color:var(--ink);background:var(--field);border:1px solid var(--rule);border-radius:3px;padding:10px 12px;font-size:16px}input:focus{outline:2px solid var(--blue);outline-offset:1px;border-color:var(--blue)}.hint{color:var(--muted);text-transform:none;letter-spacing:normal;font-size:12.5px}textarea{font:inherit;cursor:text;text-transform:none;letter-spacing:normal;color:var(--ink);background:var(--field);border:1px solid var(--rule);resize:vertical;border-radius:3px;padding:10px 12px;font-size:16px}textarea:focus{outline:2px solid var(--blue);outline-offset:1px;border-color:var(--blue)}.trap{opacity:0;width:1px;height:1px;position:absolute;left:-9999px}button.primary{font:inherit;-webkit-user-select:none;user-select:none;background:var(--blue);color:#fff;cursor:pointer;border:none;border-radius:3px;padding:11px 18px;font-size:15px}button.primary:hover{background:#005e93}button.primary:disabled{opacity:.6;cursor:default}.error{background:var(--error-bg);border-left:3px solid var(--verm);padding:10px 13px;font-size:14px}.cta{margin:26px 0 34px}.cta a{background:var(--blue);color:#fff;-webkit-user-select:none;user-select:none;border-radius:3px;padding:13px 22px;font-size:16px;text-decoration:none;display:inline-block}.cta a:hover{background:var(--blue-dark)}.cta a:focus-visible{outline:2px solid var(--ink);outline-offset:3px}main>figure{margin:0 0 34px}main>figure img{border:1px solid var(--rule);background:var(--field);width:auto;max-width:100%;height:auto;max-height:55vh;margin:0 auto;display:block}main>figure.hero img{background:0 0;border:none}main>figure figcaption{color:var(--muted);max-width:62ch;margin-top:10px;font-size:14px;line-height:1.55}ul.plain{max-width:66ch;padding-left:20px}ul.plain li{margin-bottom:10px;line-height:1.62}ol.curriculum{border-top:1px solid var(--rule);max-width:68ch;margin:16px 0 34px;padding:0;list-style:none}ol.curriculum li{border-bottom:1px solid var(--rule);padding:13px 0}ol.curriculum .head{margin:0}ol.curriculum .n{font-family:var(--serif);color:var(--blue)}ol.curriculum .meta{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:11px}ol.curriculum .covers{color:var(--muted);margin:4px 0 0;font-size:14.5px;line-height:1.55}.notice{background:var(--error-bg);border-left:3px solid var(--verm);max-width:62ch;margin:0 0 26px;padding:14px 16px}.notice p{color:var(--ink);margin:0;font-size:15px;line-height:1.6}.notice p+p{margin-top:10px}.alt{color:var(--muted);margin-top:4px;font-size:14px}.panel{border:1px solid var(--rule);background:#fff;border-radius:4px;padding:20px 22px}.meta-list{margin:0;padding:0;font-size:14px;list-style:none}.meta-list li{border-bottom:1px solid var(--rule);gap:14px;padding:7px 0;display:flex}.meta-list li:last-child{border-bottom:none}.meta-list .k{color:var(--muted);min-width:130px}.site-footer{border-top:1px solid var(--rule);margin-top:60px;font-size:14px}.site-footer .bar{flex-wrap:wrap;align-items:flex-start;gap:40px;max-width:1000px;margin:0 auto;padding:38px 22px 30px;display:flex}.site-footer .identity{flex:320px}.footer-brand{-webkit-user-select:none;user-select:none;align-items:center;gap:9px;display:flex}.footer-brand .wordmark{font-family:var(--serif);color:var(--blue);font-size:19px;line-height:1}.footer-brand .wordmark span{color:var(--verm)}.footer-tagline{letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin:7px 0 18px;font-size:10px}.site-footer address{color:var(--muted);font-style:normal;line-height:1.8}.footer-links{text-align:right;flex-direction:column;gap:9px;margin-left:auto;display:flex}.footer-links a{color:var(--ink);text-decoration:none}.footer-links a:hover{color:var(--blue)}.footer-baseline{border-top:1px solid var(--rule)}.footer-baseline p{max-width:1000px;color:var(--muted);margin:0 auto;padding:16px 22px;font-size:13px}.prose{max-width:68ch}.prose h2{margin:32px 0 8px;font-size:21px}.prose p,.prose li{color:var(--ink)}.prose ul{padding-left:20px}.prose li{margin-bottom:6px}.updated{color:var(--muted);margin-top:0;font-size:13px}.verify-result{border:1px solid var(--rule);border-top:3px solid var(--blue);background:#fff;border-radius:4px;padding:26px 28px}.verify-result.revoked{border-top-color:var(--verm)}.verify-name{font-family:var(--serif);margin:6px 0 14px;font-size:30px}.verify-status{letter-spacing:.14em;text-transform:uppercase;color:var(--blue);font-size:11px}.verify-status.revoked{color:var(--verm)}.verify-seal{float:right;margin:0 0 12px 20px}.protected{-webkit-user-select:none;user-select:none}.protected pre.code,.protected pre.pseudocode{-webkit-user-select:text;user-select:text}.lesson h1 .n,.lesson-list .n{font-family:var(--serif);color:var(--blue);margin-right:2px}.crumb{color:var(--muted);margin-bottom:4px;font-size:14px}details.module{border-bottom:1px solid var(--rule)}details.module:first-of-type{border-top:1px solid var(--rule)}details.module>summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:baseline;gap:10px;padding:15px 0;list-style:none;display:flex}details.module>summary::-webkit-details-marker{display:none}details.module>summary:after{content:"";border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);align-self:center;width:7px;height:7px;margin-left:auto;transform:translateY(-2px)rotate(45deg)}details.module[open]>summary:after{transform:translateY(2px)rotate(-135deg)}details.module>summary:hover .t{text-decoration:underline}details.module>summary .n{font-family:var(--serif);color:var(--blue)}details.module>summary .t{color:var(--ink);font-weight:600}details.module>summary .count{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:11px}details.module>.prose{color:var(--muted);margin:0 0 4px;font-size:15px}details.module>.lesson-list{margin-bottom:20px}details.module>.lesson-list li:last-child{border-bottom:none}.lesson-list{border-top:1px solid var(--rule);margin:12px 0 0;padding:0;list-style:none}.lesson-list li{border-bottom:1px solid var(--rule);align-items:baseline;gap:12px;display:flex}.lesson-list li a{flex:1;gap:10px;padding:11px 0;text-decoration:none;display:flex}.lesson-list li a:hover .t{text-decoration:underline}.lesson-list .t{color:var(--ink)}.badge{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);-webkit-user-select:none;user-select:none;font-size:11px}.badge.done{color:var(--blue)}.prose pre.code,.prose pre.pseudocode{border:1px solid var(--rule);border-left:3px solid var(--blue);background:#f3f4f5;padding:12px 14px;font-size:14px;line-height:1.5;overflow-x:auto}.prose pre.pseudocode code{counter-reset:pline}.prose pre.pseudocode .ln{counter-increment:pline;display:block}.prose pre.pseudocode .ln:before{content:counter(pline);width:2em;color:var(--muted);-webkit-user-select:none;user-select:none;display:inline-block}.prose blockquote{border-left:3px solid var(--rule);color:var(--muted);margin:18px 0;padding:2px 0 2px 16px}.table-scroll{margin:18px 0;overflow-x:auto}.table-scroll table{border-collapse:collapse;min-width:100%;font-size:14px}.table-scroll th,.table-scroll td{border-bottom:1px solid var(--rule);text-align:left;padding:7px 14px 7px 0}.table-scroll th{border-bottom:1px solid var(--ink);white-space:nowrap;font-weight:600}.katex-display{padding:4px 0;overflow:auto hidden}figure.diagram{margin:20px 0;overflow-x:auto}figure.diagram svg{max-width:100%;height:auto}.check,.exercise{border:1px solid var(--rule);background:var(--field);margin:30px 0;padding:18px 20px}.exercise{border-left:3px solid var(--verm)}.check{border-left:3px solid var(--blue)}.check h2,.exercise h2{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);-webkit-user-select:none;user-select:none;margin-top:0;font-size:13px}.choices{margin:14px 0 0;padding:0;list-style:none}.choices li{margin-bottom:8px}.choices button{text-align:left;border:1px solid var(--rule);background:var(--paper);width:100%;font:inherit;color:inherit;padding:10px 13px}.choices button:hover:not(:disabled){border-color:var(--blue)}.choices button.picked.right{border-color:var(--blue);background:#eef5fa}.choices button.picked.wrong{border-color:var(--verm);background:var(--error-bg)}.verdict{margin:14px 0 0;font-weight:600}.verdict.correct{color:var(--blue)}.verdict.incorrect{color:var(--verm)}.explanation{border-top:1px solid var(--rule);margin-top:12px;padding-top:12px;font-size:15px}.reading-note{color:var(--muted);font-style:italic}.lesson-nav{border-top:1px solid var(--rule);justify-content:space-between;gap:18px;margin:34px 0 24px;padding-top:16px;display:flex}.lesson-nav a{flex-direction:column;gap:2px;max-width:45%;text-decoration:none;display:flex}.lesson-nav a.fwd{text-align:right}.lesson-nav .dir{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);-webkit-user-select:none;user-select:none;font-size:11px}.lesson-nav a:hover .t{text-decoration:underline}.report{border-top:1px solid var(--rule);margin:24px 0 40px;padding-top:14px}.report summary{color:var(--muted);-webkit-user-select:none;user-select:none;font-size:14px}.report summary:hover{color:var(--blue)}.report form{max-width:34rem;margin-top:14px}.locked p:last-child{color:var(--muted);font-size:15px}.choices button.spent{opacity:.45}.choices button:disabled{cursor:default}
