:root{--page:#f7f5f0;--paper:#fff;--ink:#1d2733;--muted:#5d6673;--line:#e6e2d8;--navy:#1f3a5f;--link:#1f4f8f;--gold:#c08a1e;--gold-wash:#fbf2de;--green:#1e7a4c;--green-wash:#e6f3ec;--blue:#2f5fa8;--blue-wash:#e8eff9;--amber:#946300;--amber-wash:#fcf1d9;--red:#b42318;--red-wash:#fdecea;--grey:#667085;--grey-wash:#eef0f3;--violet:#5b45b0;--violet-wash:#efebfb;--radius:12px;--shadow:0 1px 2px #1d27330d, 0 6px 20px #1d27330f;color-scheme:light}*{box-sizing:border-box}body{color:var(--ink);background:var(--page);margin:0;font-family:system-ui,sans-serif;line-height:1.5}a{color:var(--link)}h1{color:var(--navy);letter-spacing:-.01em;margin:0;font-size:clamp(1.45rem,4vw,2.1rem);line-height:1.15}h2{color:var(--navy);margin:0 0 .75rem;font-size:1.1rem}h3{margin:0;font-size:.95rem}.muted{color:var(--muted);font-weight:400}.lede{font-size:1.1rem}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.js-hidden{display:none}header.site{background:var(--paper);border-bottom:3px solid var(--gold);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding:.8rem 1rem;display:flex}.brand{color:var(--navy);font-weight:750;text-decoration:none}nav{gap:1rem;display:flex}nav a[aria-current=page]{color:var(--ink);font-weight:600;text-decoration:none}main{max-width:44rem;margin:0 auto;padding:1.5rem 1rem 5rem}main.wide{max-width:84rem}button,input,select{font:inherit}input,select{background:var(--paper);color:var(--ink);border:1px solid #c9c4b8;border-radius:8px;padding:.45rem .6rem}button{border:1px solid var(--navy);background:var(--navy);color:#fff;cursor:pointer;border-radius:8px;padding:.45rem 1rem;font-weight:600}button:hover{filter:brightness(1.12)}button.secondary{background:var(--paper);color:var(--navy);border-color:#c9c4b8}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.card,.add,.next,.term,.audit,.progress-card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow)}.tag{background:var(--grey-wash);color:var(--grey);text-transform:uppercase;letter-spacing:.03em;border-radius:4px;padding:0 .45rem;font-size:.72rem;font-weight:700;display:inline-block}.units{background:var(--grey-wash);color:var(--muted);border-radius:999px;flex:none;padding:.05rem .45rem;font-size:.75rem;font-weight:700}.start{max-width:44rem;margin:2.5rem auto 0}.degree-picker{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-block:1rem;display:flex}.degree-picker select{flex:16rem;min-width:0;max-width:30rem}.plan-head{grid-template-columns:minmax(0,1fr);gap:1rem 2rem;margin-bottom:1.5rem;display:grid}@media (width>=64rem){.plan-head{grid-template-columns:minmax(0,1fr) 26rem;align-items:end}}.year{color:var(--gold);font-weight:600}.meta{color:var(--muted);margin:.35rem 0 0;font-size:.9rem}.plan-head .degree-picker{margin:.75rem 0 0;font-size:.9rem}.progress-card{padding:1rem 1.1rem}.progress-line{justify-content:space-between;align-items:baseline;display:flex}.progress-line strong{color:var(--navy);font-size:1.35rem}.progress-pct{color:var(--gold);font-weight:700}.progress{background:var(--gold-wash);border-radius:999px;height:10px;margin:.5rem 0 .6rem;overflow:hidden}.progress span{background:var(--gold);border-radius:999px;height:100%;display:block}.summary{color:var(--muted);margin:0;font-size:.9rem}.summary a{color:var(--ink);border-bottom:1px dotted var(--muted);text-decoration:none}.summary a.ok{color:var(--green)}.summary a.bad{color:var(--red);font-weight:600}.planner{grid-template-columns:minmax(0,1fr);grid-template-areas:"add""next""terms""audit";gap:1.5rem;display:grid}.add{grid-area:add}.next{grid-area:next}.semesters{grid-area:terms}.audit{grid-area:audit}@media (width>=64rem){.planner{grid-template:"add next""terms next""terms audit"1fr/minmax(0,1fr) 22rem;align-items:start}.audit{max-height:calc(100vh - 2rem);position:sticky;top:1rem;overflow-y:auto}}.add{padding:1.1rem 1.2rem}.search{gap:.5rem;display:flex}.search input{flex:1;min-width:0;padding:.6rem .8rem;font-size:1.02rem}.add.flash{animation:.9s ease-out flash}@keyframes flash{0%{box-shadow:0 0 0 3px var(--gold)}}.results:empty{display:none}.results-heading{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:1rem 0 .35rem;font-size:.78rem}.no-results{color:var(--muted);margin:.9rem 0 0;font-size:.92rem}.result-list{margin:0;padding:0;list-style:none}.result{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.15rem 1rem;padding:.6rem 0;display:grid}.result-detail{grid-column:1}.result-detail summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:.2rem .5rem;list-style:none;display:flex}.result-detail summary::-webkit-details-marker{display:none}.result-detail summary strong{color:var(--navy)}.result-more{color:var(--muted);margin:.35rem 0 0;font-size:.82rem}.fit{grid-column:1;font-size:.82rem}.fit-counts{color:var(--green)}.fit-if-chosen{color:var(--blue)}.fit-other{color:var(--muted)}.result-add{grid-area:1/2/span 2;gap:.4rem;display:flex}.result-add select{padding:.3rem .4rem;font-size:.88rem}.result-add button{padding:.3rem .9rem}.custom{margin-top:.9rem;font-size:.9rem}.custom summary{color:var(--link);cursor:pointer}.custom-form{flex-wrap:wrap;align-items:end;gap:.5rem .75rem;margin-top:.6rem;display:flex}.custom-form label{color:var(--muted);gap:.15rem;font-size:.82rem;display:grid}.custom-form input[name=code]{width:8rem}.custom-form input[name=units]{width:4rem}.checks{color:var(--muted);margin:.9rem 0 0;font-size:.82rem}.next{border-top:4px solid var(--gold);padding:1.1rem 1.2rem}.steps{gap:.7rem;margin:0;padding-left:1.3rem;display:grid}.steps li::marker{color:var(--gold);font-weight:700}.step-text{font-weight:600}.chips{flex-wrap:wrap;gap:.3rem;margin-top:.3rem;display:flex}.chips a,.missing li a{background:var(--blue-wash);color:var(--blue);border-radius:999px;padding:.1rem .55rem;font-size:.82rem;text-decoration:none;display:inline-block}.chips a:hover,.missing li a:hover{background:var(--blue);color:#fff}.all-done{color:var(--green);margin:0}.view-audit{margin-top:.9rem;font-size:.9rem;display:inline-block}.semesters h2{margin-bottom:.9rem}.terms{grid-template-columns:repeat(auto-fill,minmax(17.5rem,1fr));align-items:start;gap:1rem;display:grid}.term{flex-direction:column;padding:.9rem 1rem .8rem;display:flex}.term h3{color:var(--navy);justify-content:space-between;align-items:baseline;margin-bottom:.6rem;font-size:1rem;display:flex}.term-load{color:var(--muted);font-size:.8rem;font-weight:600}.term-over{color:var(--red)}.term-empty{box-shadow:none;border:2px dashed var(--line);background:0 0}.add-here{margin-top:auto;padding-top:.5rem;font-size:.88rem;font-weight:600;text-decoration:none}.courses{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.course{border-left:4px solid var(--grey);background:var(--grey-wash);border-radius:8px;gap:.2rem;padding:.55rem .7rem;display:grid}.tint-compulsory{border-left-color:var(--green);background:var(--green-wash)}.tint-list,.tint-elective{border-left-color:var(--blue);background:var(--blue-wash)}.tint-attention{border-left-color:var(--amber);background:var(--amber-wash)}.course-head{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.course-head strong{color:var(--navy)}.course-title{font-size:.86rem}.course-note{color:var(--muted);font-size:.78rem}.tint-attention .course-note{color:var(--amber);font-weight:600}.course[data-duplicate] .course-head strong{text-decoration:line-through}.course-actions{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.2rem;display:flex}.move{gap:.4rem;display:flex}.move select{background:#ffffffb3;padding:.15rem .35rem;font-size:.82rem}.move button{padding:.15rem .6rem;font-size:.82rem}.menu{position:relative}.menu summary{cursor:pointer;color:var(--muted);border-radius:6px;padding:0 .45rem;font-weight:700;list-style:none}.menu summary::-webkit-details-marker{display:none}.menu summary:hover{background:#0000000f}.menu-body{z-index:3;background:var(--paper);box-shadow:var(--shadow);white-space:nowrap;border-radius:8px;padding:.3rem;position:absolute;top:1.7rem;right:0}button.remove{color:var(--red);background:0 0;border:none;padding:.3rem .6rem;font-size:.85rem;font-weight:600}.toast{z-index:10;background:var(--navy);color:#fff;border-radius:10px;align-items:center;gap:.75rem;width:max-content;max-width:calc(100vw - 2rem);padding:.7rem .8rem .7rem 1.1rem;animation:.25s ease-out rise;display:flex;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #1d273340}@keyframes rise{0%{opacity:0;transform:translate(-50%,.75rem)}}.toast+.toast{bottom:5.5rem}.toast-text{display:grid}.toast-warning{background:#5c4200}.toast-warning-text{color:#fde7b0;font-size:.85rem}.toast-error{background:var(--red)}.toast form{display:contents}.toast-undo{border-color:var(--gold);color:#fde7b0;background:0 0;padding:.25rem .75rem}.toast-close{color:#ffffffbf;background:0 0;border:none;padding:0 .4rem;font-size:1.2rem}.audit{padding:.3rem 1.1rem .9rem}#audit>summary{cursor:pointer;justify-content:space-between;align-items:baseline;padding:.75rem 0;list-style:none;display:flex}#audit>summary::-webkit-details-marker{display:none}#audit>summary h2{margin:0;font-size:1rem}#audit>summary h2:before{content:"▸ ";color:var(--gold)}#audit[open]>summary h2:before{content:"▾ "}.audit-group{border-top:1px solid var(--line);padding:.55rem 0}.audit-group>summary{cursor:pointer;font-weight:600}.count{background:var(--grey-wash);min-width:1.4rem;color:var(--muted);text-align:center;border-radius:999px;padding:0 .35rem;font-size:.8rem;display:inline-block}.audit-missing>summary .count{background:var(--amber-wash);color:var(--amber)}.audit-met>summary .count{background:var(--green-wash);color:var(--green)}.notes ul{color:var(--muted);padding-left:1.1rem;font-size:.85rem}.reqs{margin:0;padding:0;list-style:none}.reqs .reqs{border-left:2px solid var(--line);margin-top:.35rem;padding-left:.75rem}.req{padding:.45rem 0}.req-head{align-items:baseline;gap:.45rem;display:flex}.req-label{font-size:.92rem;font-weight:600}.req-progress{color:var(--muted);font-size:.82rem}.badge{text-transform:uppercase;letter-spacing:.03em;border-radius:4px;flex:none;padding:.05rem .4rem;font-size:.68rem;font-weight:700}.badge-met{background:var(--green-wash);color:var(--green)}.badge-missing{background:var(--amber-wash);color:var(--amber)}.badge-limit{background:var(--grey-wash);color:var(--grey)}.badge-over{background:var(--red-wash);color:var(--red)}.badge-manual{background:var(--violet-wash);color:var(--violet)}.bar{background:var(--grey-wash);border-radius:3px;height:5px;margin-top:.3rem;overflow:hidden}.bar span{background:var(--amber);height:100%;display:block}.req-met>.bar span{background:var(--green)}.req-limit>.bar span{background:var(--grey)}.req-over>.bar span{background:var(--red)}.choice{gap:.5rem;margin-top:.4rem;display:flex}.choice label{flex:1;min-width:0}.choice select{width:100%}.note{color:var(--muted);margin:.25rem 0 0;font-size:.8rem}.missing{margin-top:.3rem;font-size:.82rem}.missing-label{color:var(--muted)}.missing ul{flex-wrap:wrap;gap:.25rem .35rem;margin:.2rem 0 0;padding:0;list-style:none;display:flex}@media (width<=40rem){.result{grid-template-columns:minmax(0,1fr)}.result-add{grid-area:auto/1;margin-top:.3rem}.result-add select{flex:1}.search button{display:none}}article img{max-width:100%}
