.course-section{scroll-margin-top:-40px}.listing:has(.course-checkpoints){padding-right:10%;max-width:1320px}.course-project-title{font-size:clamp(27px,3vw,38px);font-weight:550;color:#ffd0a0;letter-spacing:-.8px;line-height:1.25;margin:0 0 24px}.course-checkpoints{position:fixed;right:18px;top:50%;transform:translateY(-50%);z-index:40;display:flex;flex-direction:column;gap:4px}.course-checkpoints a{position:relative;display:flex;align-items:center;justify-content:flex-end;width:42px;height:44px;color:#e5d9c7}.checkpoint-tick{display:block;height:3px;width:14px;background:#68808b;border-radius:2px;transition:width .22s,background .22s,transform .22s}.course-checkpoints a.is-current .checkpoint-tick{width:27px;background:#ffc188}.course-checkpoints a:hover .checkpoint-tick,.course-checkpoints a:focus-visible .checkpoint-tick{width:32px;background:#b4e7e6;transform:translateX(-2px)}.checkpoint-name{position:absolute;right:52px;white-space:nowrap;background:#182029f5;border:1px solid #69808d66;padding:12px 18px;font-size:20px;line-height:1.25;opacity:0;transform:translateX(10px);pointer-events:none;transition:opacity .2s,transform .2s}.course-checkpoints a:hover .checkpoint-name,.course-checkpoints a:focus-visible .checkpoint-name{opacity:1;transform:translateX(0)}.course-checkpoints a:focus-visible{outline-offset:1px}.car-cover{position:relative;width:100%;height:100%;background:#102639;overflow:hidden}.car-cover canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:pan-y}.car-cover canvas.is-dragging{cursor:grabbing}.car-fallback{display:none}.model-unavailable .car-fallback{display:block;position:absolute;inset:40% 0;text-align:center;font-size:34px;color:#d1e8ed}.car-figure .car-cover{height:390px}.car-cover canvas:focus-visible{outline:2px solid #a5dee0;outline-offset:-5px}.connect-four-demo{display:grid;grid-template-columns:minmax(0,1.2fr) 1fr;gap:8%;align-items:center;margin:42px 0 22px;max-width:1100px}.connect-board{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;background:#213c51;padding:15px;border-radius:12px}.connect-cell{display:block;aspect-ratio:1;border-radius:50%;background:#0d1822;box-shadow:inset 0 2px 4px #0005;transition:background .18s,transform .18s}.connect-cell[data-piece="1"]{background:#df7162;box-shadow:inset 0 0 0 3px #ed9c8266}.connect-cell[data-piece="2"]{background:#a5dce1;box-shadow:inset 0 0 0 3px #daf8f366}.connect-column-controls{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;padding:0 15px}.connect-column-controls button{font-size:30px;min-height:46px;border-radius:4px}.connect-column-controls button:hover,.connect-column-controls button:focus-visible{color:#ffcfad;background:#ffffff09}.connect-four-copy p{font-size:23px;color:#dde4e7;line-height:1.45}#connect-four-search{font-size:20px;color:#9db7c7;min-height:55px}.companion-caption{font-size:20px;line-height:1.5;color:#b4c2cb;max-width:850px}.course-section .case-figure{margin:40px 0}.course-section .artifact-copy{margin:45px 0}.course-section .approximation{padding-top:25px}.course-section .lab-grid{gap:0}
@media(max-width:700px){.listing:has(.course-checkpoints){padding-right:62px;padding-left:6%}.course-checkpoints{right:9px;gap:3px}.course-checkpoints a{width:35px}.checkpoint-name{white-space:normal;width:max-content;max-width:255px;font-size:19px;right:44px}.course-checkpoints a.is-current .checkpoint-tick{width:22px}.course-section>h2{font-size:35px;overflow-wrap:break-word}.course-project-title{font-size:27px}.connect-four-demo{grid-template-columns:1fr;gap:28px}.connect-four-copy{display:flex;flex-wrap:wrap;gap:16px;align-items:center}.connect-four-copy p{font-size:21px;margin-bottom:0}#connect-four-search{font-size:20px;min-height:0;flex-basis:100%}.connect-board{gap:5px;padding:9px}.connect-column-controls{gap:5px;padding:0 9px}.car-figure .car-cover{height:280px}.companion-caption{font-size:19px}}

/* Each course is a separate workbench: a bold cover and an open paper workspace. */
.coursework-page .listing{max-width:1440px;padding-right:8%;padding-left:6%}
.coursework-page .listing>h1{max-width:950px;font-size:clamp(56px,6vw,86px);margin-top:45px}
.coursework-page .listing-intro{font-size:25px;max-width:760px;margin-bottom:72px}
.coursework-page .course-section{--chapter:#255965;--cover:#dce8e8;padding:0;margin:0 0 110px;border:1px solid #b6c4c2;border-top:0;scroll-margin-top:105px;background:#f6f3ec;box-shadow:7px 8px 0 #d4cbbb}
.coursework-page #data-structures{--chapter:#82432d;--cover:#eadcd0}
.coursework-page #secret-codes{--chapter:#3e6451;--cover:#dae5db}
.coursework-page #game-playing-ai{--chapter:#265a79;--cover:#d6e4ec}
.coursework-page #database-backend{--chapter:#66502a;--cover:#e9e1cd}
.coursework-page .course-cover{position:relative;padding:42px 46px 38px;background:var(--cover);border-top:7px solid var(--chapter);border-bottom:1px solid #17212a26}
.coursework-page .course-code{display:inline-block;color:var(--chapter);font-size:20px;font-weight:650;letter-spacing:.015em;margin:0 0 28px;padding:7px 12px;border:1px solid currentColor}
.coursework-page .course-cover h2{font-size:clamp(42px,4.5vw,66px);font-weight:650;line-height:1.04;letter-spacing:-.045em;margin:0 0 28px;max-width:970px;text-wrap:balance}
.coursework-page .course-project-title{font-size:clamp(27px,2.8vw,36px);color:var(--chapter);font-weight:600;letter-spacing:-.8px;margin:0 0 20px}
.coursework-page .course-intro{font-size:24px;line-height:1.5;max-width:900px;margin:0 0 23px;color:#34454c}
.coursework-page .course-cover .skill-tags{margin-bottom:0;margin-top:25px}
.coursework-page .course-workspace{padding:10px 46px 36px}
.coursework-page .course-workspace .artifact-copy{display:block;max-width:940px;margin:40px 0 32px}
.coursework-page .course-workspace .artifact-copy h2{position:static;font-size:32px;margin:0 0 20px}
.coursework-page .course-workspace .artifact-copy p{font-size:22px;line-height:1.65}
.coursework-page .course-section .approximation{border:0;background:none;box-shadow:none;padding:26px 0 14px}
.coursework-page .approximation canvas{height:350px}
.coursework-page .course-section .case-figure{box-shadow:none;border:1px solid #c6c8be;margin:32px 0}
.coursework-page .course-workspace .lab-legend{margin-bottom:10px}
.coursework-page .course-checkpoints a.is-current .checkpoint-tick{height:5px;background:#255965}
.coursework-page .course-checkpoints a.is-current:after{content:'';position:absolute;right:-4px;width:5px;height:5px;background:#255965;border-radius:50%}
@media(max-width:700px){
 .coursework-page .listing{padding-right:51px;padding-left:5%}
 .coursework-page .listing>h1{font-size:48px}
 .coursework-page .listing-intro{font-size:22px;margin-bottom:48px}
 .coursework-page .course-section{margin-bottom:75px;box-shadow:4px 5px 0 #d4cbbb;scroll-margin-top:90px}
 .coursework-page .course-cover{padding:27px 20px 28px;border-top-width:6px}
 .coursework-page .course-code{font-size:18px;margin-bottom:22px}
 .coursework-page .course-cover h2{font-size:38px;line-height:1.08;overflow-wrap:normal;hyphens:auto;margin-bottom:24px}
 .coursework-page .course-project-title{font-size:26px;line-height:1.2;letter-spacing:-.65px}
 .coursework-page .course-intro{font-size:21px}
 .coursework-page .course-workspace{padding:4px 20px 22px}
 .coursework-page .course-workspace .artifact-copy p{font-size:20px}
 .coursework-page .course-workspace .artifact-copy h2{font-size:29px}
 .coursework-page .approximation canvas{height:280px}
 .coursework-page .course-section .case-figure figcaption{padding:14px}
}
