:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#183044;background:#fff;font-size:16px;line-height:1.5;--navy:#082d49;--blue:#005a9c;--line:#dae3eb;--muted:#526675}*{box-sizing:border-box}body{margin:0}a{color:var(--blue);text-underline-offset:3px}a:focus-visible,summary:focus-visible{outline:3px solid #dca400;outline-offset:4px}.skip{position:absolute;top:-80px;background:white;padding:1rem;z-index:5}.skip:focus{top:0}header{border-top:6px solid #e9b933;border-bottom:1px solid var(--line)}.wrap{width:min(1720px,94%);margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;padding:24px 0;gap:24px}.eyebrow{font-size:.875rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0 0 5px}h1{font-size:2rem;letter-spacing:-.04em;line-height:1.15;margin:0;color:var(--navy)}h1 span{font-weight:400}nav{display:flex;gap:24px;font-size:.875rem}nav a{text-decoration:none;font-weight:600}.draft{font-size:.8rem;color:#675000;background:#fff4ce;padding:4px 9px;border-radius:4px;white-space:nowrap}.goals{padding:26px 0 23px}h2{font-size:1.35rem;letter-spacing:-.025em;margin:0 0 12px;color:var(--navy)}.goal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 30px}.goal{border-left:3px solid var(--blue);padding-left:15px}.goal:nth-child(2){border-color:#7256a4}.goal:nth-child(3){border-color:#168277}.goal h3{font-size:1rem;margin:0 0 5px}.goal p{margin:0;color:#42596b;max-width:54ch}.tag{display:inline-block;font-size:.75rem;font-weight:750;line-height:1.65;padding:0 6px;border-radius:3px;background:#e7f1fa;color:#005188;margin-right:5px;white-space:nowrap}.g2{color:#62408b;background:#f0ebf7}.g3{color:#08665a;background:#e3f4ee}.rhythm{display:flex;flex-wrap:wrap;gap:10px 26px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;color:var(--muted);font-size:.875rem}.rhythm b{color:var(--navy)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin:25px 0 12px}.section-head h2{margin:0}.section-head p{margin:0;font-size:.875rem;color:var(--muted)}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:6px;max-height:78vh;scrollbar-color:#a8bac8 #f3f6f8}table{border-collapse:separate;border-spacing:0;width:100%;min-width:1300px;table-layout:fixed}th,td{text-align:left;vertical-align:top;padding:15px 13px;border-bottom:1px solid var(--line);border-right:1px solid #e8edf1}thead th{position:sticky;top:0;background:var(--navy);color:white;font-size:.875rem;font-weight:600;z-index:2;padding:13px}thead th:first-child{width:8%}thead th:nth-child(2){width:15%}thead th:nth-child(3){width:23%}thead th:nth-child(4){width:20%}thead th:nth-child(5){width:21%}thead th:last-child{width:13%}tbody th{font-weight:650;background:#f4f7fa;color:var(--navy)}tbody th span{display:block;font-size:.875rem;font-weight:400;margin-top:4px}tbody tr:last-child>*{border-bottom:0}td:last-child,th:last-child{border-right:0}td p{margin:0 0 10px}td p:last-child{margin-bottom:0}.date{display:block;font-size:.875rem;color:var(--muted);margin-bottom:2px}.practice{color:#526675}.event{font-size:.875rem;font-weight:700;color:#07578f}.due{color:#965318}.empty{color:#a0acb7}.exam{background:#fffaf0}.project-cell{background:#f5fafb}.note{font-size:.875rem;color:var(--muted);margin:12px 0 0}.below{display:grid;grid-template-columns:1.35fr 1fr;gap:50px;margin:32px 0}.below h3{font-size:1rem;margin:0 0 8px}.below p{margin:0 0 12px}.milestones{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}.milestones div{border-top:3px solid #26858a;padding-top:9px}.milestones b{display:block;font-size:.875rem}.milestones span{font-size:.875rem;color:var(--muted)}details{border-top:1px solid var(--line);padding:12px 0}summary{cursor:pointer;color:var(--navy);font-weight:600}details p,details ul{margin-top:12px!important;color:#435b6c}ul{padding-left:20px}li{margin-bottom:7px}.grades{display:grid;grid-template-columns:1fr auto;gap:7px 25px;font-size:1rem}.grades dt,.grades dd{margin:0;border-bottom:1px solid #e8edf1;padding-bottom:7px}.grades dd{font-weight:700}.fine{font-size:.875rem;color:var(--muted)}footer{border-top:1px solid var(--line);padding:20px 0 30px;font-size:.875rem;color:var(--muted)}footer p{margin:4px 0}section{scroll-margin-top:16px}@media(min-width:1600px){td{padding:18px 15px}}@media(max-width:850px){.heading{align-items:flex-start;flex-wrap:wrap}h1{font-size:1.65rem}nav{gap:18px}.goal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.goal p{max-width:none}.section-head{display:block}.section-head p{margin-top:5px}.below{grid-template-columns:1fr;gap:20px}.table-scroll{max-height:none;overflow:visible;border:0}table{display:block;min-width:0}thead{display:none}tbody{display:grid;gap:18px}tr{display:block;border:1px solid var(--line);border-radius:6px;overflow:hidden}tbody th{display:block;padding:12px 15px}tbody th span{display:inline;margin-left:10px}td{display:block;border-right:0;padding:12px 15px}td:before{content:attr(data-label);display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--muted);margin-bottom:6px}td.none{display:none}.milestones{grid-template-columns:repeat(2,1fr)}.draft{margin-left:auto}}@media print{.wrap{width:100%}nav,.draft,.skip{display:none}.table-scroll{overflow:visible;max-height:none;border:0}table{min-width:0;font-size:9pt}thead th{position:static}th,td{padding:7px}.tag,.date,.event{font-size:8pt}.below{gap:20px}.goal p{font-size:10pt}tr{break-inside:avoid}body{color:#000}a{color:inherit}header{border-top:0}@page{size:landscape;margin:10mm}}

#schedule .table-scroll{overflow:visible;max-height:none}

/* Assignment and primer resources share the same typography and blue links. */
#schedule .assignment-group{margin-bottom:12px}
#schedule .assignment-group strong{color:#183044;font-size:.95rem}
#schedule .assignment-links{font-size:.875rem;margin-top:2px;line-height:1.65}
#schedule .assignment-links a{color:var(--blue)}
#schedule .assignment-note{font-size:.8rem;color:var(--muted);margin-left:5px}
#schedule .assignment-dates{font-size:.825rem;color:var(--muted);margin:4px 0 10px}
#schedule .assignment-dates strong{color:#183044}

.goal:nth-child(4){border-color:#986323}.g4{color:#80531b;background:#fff0dc}

@media(max-width:480px){.goal-grid{grid-template-columns:1fr}}

/* Dedicated course guides */
nav a[aria-current="page"]{color:var(--navy);text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:8px}
.document{max-width:1180px;padding-bottom:40px}.page-intro{padding:32px 0 20px;max-width:850px}.page-intro h2{font-size:2rem;line-height:1.2}.page-intro p{font-size:1.05rem}.page-nav{flex-wrap:wrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;gap:12px 22px}.document section{margin-top:32px}.document h3{font-size:1.1rem;color:var(--navy);margin:0 0 10px}.document p{margin:0 0 14px}.mission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:22px}.mission{border:1px solid var(--line);border-top:4px solid #26858a;padding:22px;border-radius:4px}.mission h3{font-size:1.3rem}.mission dl{margin:16px 0 0}.mission dt{font-size:.875rem;font-weight:700;color:var(--navy)}.mission dd{margin:2px 0 12px;color:#42596b}.mission dd:last-child{margin-bottom:0}.callout{border-left:4px solid var(--blue);background:#edf5fb;padding:18px 20px;margin:18px 0}.callout p{margin:8px 0 0}.timeline{border-left:3px solid #26858a;margin:22px 0 0 4px;padding-left:24px}.timeline article{padding:0 0 20px}.timeline article:last-child{padding-bottom:0}.timeline h3{font-size:1rem}.split{display:grid;grid-template-columns:1.2fr 1fr;gap:35px}.rubric-list article{padding:20px 0;border-top:1px solid var(--line)}.rubric-list h3{display:flex;justify-content:space-between;gap:20px}.rubric-list h3 span{font-size:1rem;font-weight:500;white-space:nowrap;color:var(--muted)}.rubric-list ol{margin-bottom:0}.score-scale{display:grid;grid-template-columns:35px 1fr;gap:8px 14px;max-width:700px}.score-scale dt{font-weight:700;color:var(--navy)}.score-scale dd{margin:0}.document .grades{max-width:750px}.document details{margin-top:12px}.document li{margin-bottom:9px}
@media(max-width:850px){.mission-grid,.split{grid-template-columns:1fr}.document{width:92%}.page-intro h2{font-size:1.65rem}.page-nav{font-size:.875rem}.mission{padding:18px}.rubric-list h3{flex-wrap:wrap;gap:4px}.timeline{padding-left:16px}}
@media print{.document{max-width:none}.page-nav{display:none}.mission-grid{grid-template-columns:1fr 1fr}.mission,.rubric-list article{break-inside:avoid}}

/* Project guide: a readable single-column document with compact mission summaries. */
.project-guide{width:min(820px,calc(100% - 48px));padding-bottom:64px;line-height:1.75}
.project-guide .page-intro{padding:36px 0 18px;max-width:none}
.project-guide .page-intro h2{font-size:2.1rem;letter-spacing:-.02em;line-height:1.25;margin-bottom:12px}
.project-guide .page-intro p{font-size:1rem;margin:0 0 18px}
.project-guide .page-intro .project-subtitle{font-size:1.2rem;color:var(--navy);line-height:1.5;margin-bottom:22px}
.project-guide p{max-width:72ch;margin:0 0 20px;line-height:1.75}
.project-guide h2{font-size:1.55rem;line-height:1.35;margin:0 0 20px;letter-spacing:-.015em}
.project-guide h3{font-size:1.15rem;line-height:1.5;margin:0 0 14px}
.project-guide .page-nav{font-size:1rem;gap:8px 22px;padding:18px 0;line-height:1.6}
.project-guide .page-nav a{padding:4px 0;text-decoration:underline;text-underline-offset:4px}
.project-guide section{margin-top:42px;padding-top:30px;border-top:1px solid var(--line)}
.project-guide .project-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:28px;padding:20px 0}
.project-facts b,.project-facts span{display:block}.project-facts b{font-size:1.05rem;color:var(--navy)}.project-facts span{font-size:.95rem;color:var(--muted);margin-top:4px}
.project-guide .mission-grid{display:block;margin-top:26px}
.project-guide .mission{margin-bottom:20px;padding:24px 28px;background:#fafcfd;border:1px solid var(--line);border-left:4px solid #26858a;border-radius:4px}
.project-guide .mission .eyebrow{font-size:.875rem;line-height:1.5;margin:0 0 8px}
.project-guide .mission h3{font-size:1.3rem;margin-bottom:10px}
.project-guide .mission-question{font-size:1.05rem;margin-bottom:16px;color:var(--navy)}
.project-guide details{padding:16px 0;margin-top:16px;line-height:1.75}
.project-guide summary{font-size:1rem;line-height:1.6;cursor:pointer;padding:2px 0}
.project-guide details[open] summary{margin-bottom:20px}
.project-guide details p{margin:0 0 18px!important}
.project-guide .mission details{margin:0;padding:14px 0 0}
.project-guide .mission dl{margin-top:20px}.project-guide .mission dt{font-size:1rem;font-weight:700;margin-top:16px}.project-guide .mission dd{margin:5px 0 18px;line-height:1.75}
.project-guide ol,.project-guide ul{padding-left:26px;margin:18px 0 26px;max-width:72ch}
.project-guide li{padding-left:5px;margin-bottom:18px;line-height:1.75}
.project-guide .callout{padding:22px 24px;margin:24px 0}.project-guide .callout p{margin:12px 0 0}
.project-guide .timeline{border-left:0;padding:0;margin:24px 0 0}
.project-guide .timeline article{padding:22px 0;border-top:1px solid var(--line)}
.project-guide .timeline article:first-child{border-top:0;padding-top:0}
.project-guide .timeline h3{font-size:1.1rem;color:var(--blue);margin-bottom:12px}
.project-guide .timeline p{margin-bottom:0}
.project-guide .split{display:block}.project-guide .split>div{margin:24px 0 30px}
.project-guide #resources>h3{margin-top:28px}
@media(max-width:600px){.project-guide{width:calc(100% - 32px)}.project-guide .page-intro h2{font-size:1.8rem}.project-guide .project-facts{grid-template-columns:1fr;gap:16px;padding:12px 0}.project-guide .project-facts>div{border-left:3px solid var(--line);padding-left:14px}.project-guide .mission{padding:20px}.project-guide .page-nav{gap:10px 18px}.project-guide section{margin-top:30px;padding-top:24px}}
@media print{.project-guide{width:100%;max-width:820px}.project-guide .mission{break-inside:avoid}}

/* Project mission comparison */
.project-missions{width:min(1720px,94%);max-width:none;line-height:1.5}
.project-missions .page-intro{max-width:1050px;padding-bottom:8px}
.project-missions .page-intro p{line-height:1.5;margin:0}
.project-missions section{margin-top:18px;padding-top:20px}
.project-missions section h2{margin-bottom:10px}
.project-missions #missions{margin-top:0;padding-top:0;border-top:0}
.project-guide .table-key{max-width:none;line-height:1.5;margin-bottom:16px}
.mission-table-wrap{max-height:none;overflow-x:auto}
.project-stages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0 24px}
.project-stages article{border:1px solid var(--line);border-top:3px solid #26858a;border-radius:4px;padding:14px 16px;background:#fafcfd}
.project-stages h3{font-size:1.05rem;margin:0 0 4px;color:var(--navy)}
.project-stages .stage-date{font-size:.85rem;font-weight:700;color:#287579;margin:0 0 10px}
.project-guide .project-stages p{font-size:.88rem;line-height:1.5;max-width:none;margin:0 0 10px}
.project-guide .project-stages p:last-child{margin-bottom:0}
.mission-table{min-width:1080px;table-layout:fixed}
.mission-table caption{caption-side:top;text-align:left;padding:0 0 12px;color:var(--muted);font-size:.875rem}
.mission-table thead th{font-size:.95rem;line-height:1.35}
.mission-table thead th span{font-size:.8rem;font-weight:400;color:#d9e6f0}
.mission-table thead th:first-child{width:16%}
.mission-table thead th:nth-child(2){width:18%}
.mission-table thead th:nth-child(3){width:17%}
.mission-table thead th:nth-child(4){width:29%}
.mission-table thead th:nth-child(5){width:11%}
.mission-table thead th:nth-child(6){width:9%}
.mission-table tbody th{font-size:1rem;line-height:1.35;overflow-wrap:break-word}
.mission-table td{font-size:.93rem;line-height:1.5;overflow-wrap:break-word}
.mission-table p,.project-guide .mission-table p{max-width:none;margin:0 0 10px;line-height:1.5}
.mission-table p:last-child{margin-bottom:0}
.mission-table .mission-number{display:block;font-size:.75rem;font-weight:750;letter-spacing:.05em;text-transform:uppercase;color:#287579;margin:0 0 7px}
.mission-table .mission-prompt{display:block;font-size:.875rem;font-weight:400;line-height:1.4;color:#526675;margin-top:8px}
.mission-table .grade-criterion{border-top:1px solid var(--line);padding-top:9px;color:#42596b}
.mission-table .cell-intro{font-weight:650;color:var(--navy);margin-bottom:7px}
.project-guide .mission-table .proposal-directions{margin:0 0 11px;padding-left:20px;max-width:none}
.project-guide .mission-table .proposal-directions li{margin:0 0 5px;padding-left:0;font-size:.9rem;line-height:1.4}
.project-guide .note{max-width:none;margin-top:14px;line-height:1.5}
@media(max-width:1100px){.project-stages{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:850px){.project-missions{width:92%}.mission-table-wrap{overflow:visible}.mission-table{min-width:0}.mission-table caption{display:block;padding:0 0 10px}.mission-table tbody th{font-size:1.1rem}.mission-table td{font-size:1rem}.mission-table tbody th .mission-number{display:block;margin:0 0 5px}.mission-table .mission-prompt{margin-top:5px}.mission-table .grade-criterion{padding-top:8px}}
@media(max-width:600px){.project-missions{width:calc(100% - 32px)}.project-stages{grid-template-columns:1fr}}
@media print{.project-missions{width:100%;max-width:none}.mission-table{min-width:0;font-size:8pt}.mission-table td{font-size:8pt}.mission-table tbody th{font-size:8pt}.mission-table .mission-prompt{font-size:7pt}.mission-table .grade-criterion{padding-top:4px}}

/* Keep lecture resources distinct from the topic and description. */
.lecture-resources{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;font-size:.875rem;font-weight:600}
.lecture-resources a{display:inline-block;padding:4px 10px;border:1px solid #c9dfee;border-radius:4px;background:#f3f8fc}
.lecture-resources a:hover{background:#e7f1fa}
.lecture-resources a.lecture-recording{color:#176344;background:#e8f5ed;border-color:#b8dcc6}
.lecture-resources a.lecture-recording:hover{color:#104b33;background:#d6eddf;border-color:#8fc5a5}
.lecture-resources a.lecture-supplement{color:#9a3e0b;background:#fff3e5;border-color:#efbd8c}
.lecture-resources a.lecture-supplement:hover{color:#7c2d08;background:#ffe5c7;border-color:#dc9b5c}
.lecture-resources a.lecture-supplement:focus-visible{outline:2px solid #b45309;outline-offset:3px}

/* Course policies and staff: readable text and navigation at every width. */
.heading{flex-wrap:wrap}
.heading>div{flex:1 1 520px}
nav{flex-wrap:wrap}
.policy-guide{max-width:900px;line-height:1.65}
.policy-guide section{padding-top:26px;border-top:1px solid var(--line)}
.policy-guide h3{margin-top:24px}
.policy-guide .callout p{margin:0}
.course-facts{display:grid;grid-template-columns:125px minmax(0,1fr);gap:10px 20px;margin:18px 0 24px}
.course-facts dt{font-weight:650;color:var(--navy)}
.course-facts dd{margin:0}
.staff-card{padding:22px 24px;background:#f4f7fa;border-left:4px solid var(--blue);border-radius:4px}
.staff-card h3{margin-top:0}
.staff-card .course-facts{margin-bottom:0}
.policy-guide .grades{font-size:.95rem}
.policy-guide .note{margin:14px 0}
@media(max-width:600px){.heading{gap:18px}.heading nav{gap:12px 18px;width:100%}.heading .draft{margin-left:0}.course-facts{grid-template-columns:1fr;gap:4px}.course-facts dd{margin-bottom:12px}.policy-guide .grades{grid-template-columns:1fr;gap:4px}.policy-guide .grades dt{border-bottom:0;padding:0}.policy-guide .grades dd{margin-bottom:10px}.staff-card{padding:18px}}

/* Staff profiles and the office-hours schedule. */
.staff-guide{max-width:1100px}
.staff-guide .page-intro{max-width:none}
.staff-guide section:first-of-type{margin-top:0}
.staff-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.staff-profile{min-width:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fff}
.staff-photo{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;object-position:center;background:#f0f4f7}
.staff-photo-placeholder{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.9rem;border-bottom:1px solid var(--line)}
.staff-profile-details{padding:18px 20px}
.staff-profile-details h3{margin:0 0 6px;font-size:1.15rem;line-height:1.4}
.staff-profile-details p{margin:0 0 8px;overflow-wrap:anywhere}
.staff-profile-details p:last-child{margin-bottom:0}
.staff-year,.staff-email-pending{color:var(--muted);font-size:.95rem}
.office-hours-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:6px}
.office-hours-scroll:focus-visible{outline:3px solid #dca400;outline-offset:4px}
.office-hours-table{display:table;min-width:650px;width:100%;table-layout:fixed}
.office-hours-table caption{caption-side:top;text-align:left;padding:12px 15px;color:var(--muted);font-size:.9rem;background:#f8fafc}
.office-hours-table thead{display:table-header-group}
.office-hours-table tbody{display:table-row-group}
.office-hours-table tr{display:table-row}
.office-hours-table th,.office-hours-table td{display:table-cell;padding:14px 16px;font-size:.95rem;overflow-wrap:break-word}
.office-hours-table thead th{position:static;width:25%}
.office-hours-table td:before{content:none}
@media(max-width:850px){.staff-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:540px){.staff-grid{grid-template-columns:1fr}.staff-profile{display:grid;grid-template-columns:100px minmax(0,1fr);align-items:start}.staff-photo{width:100px;height:100px}.staff-photo-placeholder{font-size:.75rem;border-bottom:0}.staff-profile-details{padding:12px 14px}.staff-profile-details h3{font-size:1rem}.staff-profile-details p{font-size:.875rem}}
@media print{.office-hours-scroll{overflow:visible}.office-hours-table{min-width:0}.staff-profile{break-inside:avoid}}
