*{box-sizing:border-box}
body{margin:0;font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1f2933;background:#f4f5f7}
header{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1.2rem;background:#0033a0;color:#fff}
header .brand{color:#fff;font-weight:600;text-decoration:none}
main{max-width:980px;margin:0 auto;padding:1rem 1.2rem 3rem}
h1{margin:.6rem 0}h2{margin:0 0 .6rem;font-size:1.1rem}
a{color:#0033a0}
.card{background:#fff;border:1px solid #d9dde3;border-radius:8px;padding:1rem 1.2rem;margin:1rem 0}
.card.narrow{max-width:360px}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.cols .card{margin:0}
@media(max-width:700px){.cols{grid-template-columns:1fr}}
.req{list-style:none;margin:0;padding:0}
.req li{padding:.5rem .6rem;margin:.35rem 0;border-left:4px solid}
.req li span{font-size:.92rem;color:#52606d}
.req .yes{border-color:#1b8a3a;background:#f0faf3}
.req .no{border-color:#c0392b;background:#fdf3f2}
.warn{border-color:#d9a400;background:#fffbea}
.warn ul{margin:0;padding-left:1.2rem}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid #e4e7eb}
.num{text-align:right}
.totals{max-width:360px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;align-items:end}
label{display:flex;flex-direction:column;font-size:.9rem;gap:.25rem}
label small{color:#7b8794}
input,select{padding:.5rem;border:1px solid #b8c0cc;border-radius:5px;font:inherit}
button{padding:.55rem 1rem;border:0;border-radius:5px;background:#0033a0;color:#fff;font:inherit;cursor:pointer}
button.secondary{background:#52606d}
button.link{background:none;color:#0033a0;padding:0;text-decoration:underline}
button.danger,.danger{color:#b42318}
header button.link{color:#fff}
.inline{display:inline-flex;align-items:center;gap:.4rem;margin:0}
.titlebar{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between}
.titlebar h1{margin-right:auto}
.actions{white-space:nowrap}.actions form{margin-left:.8rem}
.flash{padding:.6rem .9rem;border-radius:6px;margin:.8rem 0}
.flash.ok{background:#e3f6e8}.flash.err{background:#fde8e6}
.muted{color:#6b7785;font-size:.9rem}
.danger-zone{background:none;border:0;padding:0}
@media print{header,.noprint{display:none!important}body{background:#fff}.card{break-inside:avoid}}
label.check{grid-column:1/-1;flex-direction:row}label.check input{padding:0}
input.earned{width:6.5rem;text-align:right}
.semester{max-width:340px;margin-bottom:.6rem}
table.rows th small{font-weight:400;color:#7b8794}
table.rows input:not([type=checkbox]){width:100%}
table.rows td{padding:.25rem .4rem;border:0}
td.center{text-align:center}
