:root{--bg:oklch(99.4% .004 73);--text:oklch(20% .01 73);--text-2:oklch(20% .01 73/.78);--muted:oklch(20% .01 73/.62);--divider:oklch(20% .01 73/.12);--gold:#b97d1c;--link:oklch(53.6% .127 73);--gold-fill:#9e6912;--gold-fill-hover:#87590e;--gold-soft:#b97d1c1a;--stripe:#b97d1c0f;--good:#16713a;--good-soft:#16a34a1a;--bad:#b3261e;--bad-soft:#dc262614;--s-xs:.25rem;--s-sm:.5rem;--s-md:1rem;--s-lg:1.5rem;--s-xl:2rem;--s-2xl:4rem;--radius:.375rem;--fs-meta:.8rem;--fs-ui:.9rem;--fs-card:1.125rem;--fs-sub:1.375rem;--fs-num:2rem;--fs-num-lg:2.5rem;--tap:44px;--wrap:80rem;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-size:112.5%}body{color:var(--text);background:var(--bg);margin:0;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:1rem;line-height:1.6}a{color:var(--link);text-underline-offset:.15em}a:hover{color:var(--gold)}h1,h2,h3{color:var(--gold);text-wrap:balance;margin:0;line-height:1.25}p{text-wrap:pretty}h1{letter-spacing:-.02em;margin-bottom:var(--s-sm);font-size:2rem;font-weight:400}h2{letter-spacing:-.01em;margin:var(--s-xl) 0 var(--s-md);font-size:1.5rem;font-weight:600}h3{margin:0 0 var(--s-xs);font-size:1.125rem;font-weight:600}p{margin:0 0 var(--s-md)}strong,b{font-weight:600}.lede{font-size:var(--fs-card);text-wrap:balance;color:var(--text-2);margin-bottom:var(--s-lg)}code{background:oklch(20% .01 73/.06);border-radius:4px;padding:.05em .3em;font-size:.9em}.muted{color:var(--muted)}.small{font-size:.875rem}.wrap{max-width:var(--wrap);padding-inline:var(--s-md);margin:0 auto}.site-header .wrap{justify-content:space-between;align-items:center;gap:var(--s-sm) var(--s-md);padding-block:var(--s-md);flex-wrap:wrap;display:flex}.lockup{min-height:var(--tap);color:var(--text);letter-spacing:-.01em;align-items:center;gap:.55rem;font-size:1.25rem;font-weight:600;text-decoration:none;display:inline-flex}.lockup:hover{color:var(--text)}.lockup svg{flex:none;width:30px;height:36px}.lockup .slash{color:var(--gold);margin:0 .3em}.nav-links{align-items:center;gap:0 var(--s-xs);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.nav-links a,.nav-links button{min-height:var(--tap);padding:0 var(--s-sm);border-radius:var(--radius);color:var(--text-2);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;font-size:.875rem;text-decoration:none;display:inline-flex}.nav-links a:hover,.nav-links button:hover{color:var(--gold);background:0 0}.nav-links a[aria-current=page]{color:var(--link);text-underline-offset:.5em;text-decoration:underline 2px}.nav-links form{margin:0}.menu-toggle{display:none}@media (width<720px){.js .nav-collapsible .menu-toggle{width:var(--tap);height:var(--tap);color:var(--text);border:1px solid var(--divider);border-radius:var(--radius);background:0 0;justify-content:center;align-items:center;padding:0;display:inline-flex}.js .nav-collapsible .nav-links{flex-direction:column;flex-basis:100%;align-items:stretch;display:none}.js .nav-collapsible.open .nav-links{display:flex}.js .nav-collapsible .nav-links a,.js .nav-collapsible .nav-links button{border-top:1px solid var(--divider);border-radius:0;justify-content:flex-start;width:100%;font-size:1rem}}main{padding-block:var(--s-lg) var(--s-2xl)}.hero{color:#fff;background:linear-gradient(#0000004d,#0000008c 45%,#000c),repeating-linear-gradient(135deg,#b97d1c2e 0 2px,#0000 2px 26px),#3b342b}.hero .wrap{padding-block:var(--s-xl)}.hero h1{color:#fff;letter-spacing:-.02em;text-shadow:0 1px 2px #0000008c;max-width:22ch;margin:0;font-size:clamp(2rem,5vw,3.5rem);font-weight:400;line-height:1.15}.hero h1:after{content:"";width:4rem;height:4px;margin-top:var(--s-md);background:var(--gold);border-radius:2px;display:block}.hero p{max-width:40rem;margin:var(--s-md) 0 0;color:#ffffffe0;font-size:1.125rem}.site-footer{border-top:1px solid var(--divider);color:var(--muted);font-size:.875rem}.site-footer .wrap{padding-block:var(--s-lg) var(--s-xl)}.site-footer p{margin:0 0 var(--s-xs)}.page-head{gap:var(--s-md) var(--s-lg);margin-bottom:var(--s-lg);display:grid}.page-head .lede{margin-bottom:0}.split{gap:var(--s-lg);align-items:start;display:grid}.split>*{min-width:0}.split h2:first-child,.col>h2:first-child,.col>section:first-child>h2:first-child{margin-top:0}.grid-auto{gap:var(--s-lg);grid-template-columns:repeat(auto-fill,minmax(min(100%,24rem),1fr));align-items:start;display:grid}.grid-cards{gap:var(--s-md);grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));display:grid}.narrow{max-width:30rem;margin-inline:auto}.col>*+*{margin-top:var(--s-lg)}.card{border:1px solid var(--divider);padding:var(--s-md);background:var(--bg)}.card>h2:first-child,.card>h3:first-child,.card>details>summary>h2{margin-top:0}.card h2{margin-bottom:var(--s-sm);font-size:1.125rem}.card>:last-child{margin-bottom:0}.stats{gap:var(--s-md);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.stat{border:1px solid var(--divider);padding:.75rem var(--s-md);flex-direction:column;display:flex}.stat dt{color:var(--text-2);flex:1;font-size:.875rem;line-height:1.35}.stat dd{font-size:var(--fs-num);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:.35rem 0 0;font-weight:400;line-height:1.1}.stat dd small{font-size:var(--fs-meta);letter-spacing:0;color:var(--muted);margin-top:.2rem;display:block}.alert{border:1px solid var(--divider);border-radius:var(--radius);padding:var(--s-sm) var(--s-md);margin-bottom:var(--s-lg)}.alert-error{color:var(--bad);background:var(--bad-soft);border-color:currentColor}.alert-notice{color:var(--good);background:var(--good-soft);border-color:currentColor}.alert-info{background:var(--gold-soft)}.grade{border-radius:var(--radius);min-width:2.75rem;height:1.625rem;font-size:var(--fs-meta);letter-spacing:.02em;white-space:nowrap;vertical-align:middle;border:1px solid;justify-content:center;align-items:center;padding:0 .5rem;font-weight:600;line-height:1;display:inline-flex}p .grade,li .grade{vertical-align:baseline}.grade-HD{color:#0d5c46;background:#e3f2ec}.grade-D{color:#1d4f91;background:#e6edf8}.grade-CR{color:#5b3a8c;background:#efe8f7}.grade-P,.grade-PS{color:#7a4d00;background:#faefd8}.grade-N,.grade-NCN,.grade-WN{color:var(--bad);background:var(--bad-soft)}.grade-other{color:var(--text-2);background:oklch(20% .01 73/.05)}.grade.tracking{background:0 0;border-style:dashed;border-width:1.5px}.status{font-size:var(--fs-meta);white-space:nowrap;border:0;border-radius:999px;align-items:center;gap:.3rem;padding:.1rem .55rem;font-weight:600;line-height:1.5;display:inline-flex}.status svg{flex:none;width:13px;height:13px}.status-on{color:var(--good);background:var(--good-soft)}.status-todo{color:#7a4d00;background:var(--gold-soft)}.status-off{color:var(--text-2);background:oklch(20% .01 73/.06)}.course-list{gap:var(--s-md);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));margin:0;padding:0;list-style:none;display:grid}.course-card{align-items:flex-start;gap:var(--s-md);height:100%;padding:var(--s-md);border:1px solid var(--divider);color:var(--text);text-decoration:none;transition:background-color .15s;display:flex}.course-card:hover,.course-card:focus-visible{color:var(--text);background:var(--gold-soft);border-color:#b97d1c73}.course-card .info{flex:1;min-width:0}.course-card .code{font-size:var(--fs-card);color:var(--gold);font-weight:600;line-height:1.3;display:block}.course-card .title{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.875rem;display:-webkit-box;overflow:hidden}.course-card .meta{font-size:var(--fs-meta);color:var(--muted);text-wrap:pretty;line-height:1.45;display:block}.nw{white-space:nowrap}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th{text-align:left;color:#fff;background:var(--gold-fill);padding:.5rem .75rem;font-weight:700}td{border-bottom:1px solid var(--divider);vertical-align:middle;padding:.5rem .75rem}tbody tr:nth-child(2n){background:var(--stripe)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}td.grade-cell,th.grade-cell{text-align:center;width:4rem}.course-cell a{font-weight:400}.course-cell span{color:var(--text-2);font-size:.8rem;display:block}tfoot td{border-bottom:0}.table-head{justify-content:space-between;align-items:baseline;gap:var(--s-xs) var(--s-md);margin-bottom:var(--s-sm);flex-wrap:wrap;display:flex}.table-head h2,.table-head h3{margin:0}.big-number{font-size:var(--fs-num-lg);letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums;margin-bottom:var(--s-xs);font-weight:400;line-height:1.1}.progress{height:12px;margin:var(--s-md) 0 var(--s-sm);background:oklch(20% .01 73/.08);position:relative}.progress span{position:absolute;inset:0 auto 0 0}.progress .target{background:var(--text);width:2px;top:-5px;bottom:-5px;transform:translate(-1px)}.progress .secured{background:var(--good)}.progress .remaining{background:repeating-linear-gradient(45deg,oklch(20% .01 73/.16) 0 5px,#0000 5px 10px)}.legend{gap:.2rem var(--s-md);font-size:var(--fs-meta);color:var(--muted);flex-wrap:wrap;margin:0;padding:0;line-height:1.45;list-style:none;display:flex}.legend i{vertical-align:middle;width:10px;height:10px;margin-right:4px;display:inline-block}.legend i.hatch{background:repeating-linear-gradient(45deg,oklch(20% .01 73/.16) 0 3px,#0000 3px 6px);outline:1px solid oklch(20% .01 73/.16)}.legend i.tick{background:var(--text);width:2px;height:12px}.scenario{margin-top:var(--s-md);padding:var(--s-md);background:var(--gold-soft)}.scenario h3{margin-top:0}.scenario p:last-child{margin-bottom:0}.demo{margin-top:var(--s-md);border-top:1px solid var(--divider);padding-top:var(--s-xs)}.demo-list{margin:0 0 var(--s-sm)}.demo-list div{gap:var(--s-sm);display:flex}.demo-list dt{min-width:4.5rem;color:var(--text-2)}.demo-list dd,form{margin:0}.field{margin-bottom:var(--s-md)}.field label{margin-bottom:var(--s-xs);font-size:.9rem;font-weight:600;display:block}.field .hint{margin-top:var(--s-xs);line-height:1.45;font-size:var(--fs-meta);color:var(--muted);display:block}.row{gap:0 var(--s-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}input,select,textarea{width:100%;min-height:var(--tap);border:1px solid var(--divider);border-radius:var(--radius);background:var(--bg);color:var(--text);caret-color:var(--gold);font:inherit;padding:.4rem .75rem;font-size:1rem;transition:border-color .15s;display:block}input:hover,select:hover,textarea:hover{border-color:var(--muted)}input:focus,select:focus,textarea:focus{border-color:var(--gold);outline:2px solid var(--gold);outline-offset:1px}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%231a1a1a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;padding-right:2.25rem}select.compact{width:auto;min-width:6rem}textarea{resize:vertical;min-height:5rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem}input[type=file]{font-size:var(--fs-ui);padding:.5rem}input::placeholder,textarea::placeholder{color:var(--muted)}td input{min-width:5rem}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;box-shadow:0 0 0 4px var(--bg)}button,.button{justify-content:center;align-items:center;gap:var(--s-sm);min-height:var(--tap);padding:.35rem var(--s-lg);border:2px solid var(--gold-fill);border-radius:var(--radius);background:var(--gold-fill);color:#fff;font:inherit;cursor:pointer;font-size:.9rem;font-weight:600;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}button:active,.button:active,details.disclose>summary:active{transform:translateY(1px)}button:hover,.button:hover{background:var(--gold-fill-hover);border-color:var(--gold-fill-hover);color:#fff}.button-secondary{color:var(--link);border-color:var(--gold);background:0 0}.button-secondary:hover{background:var(--gold-soft);color:var(--link);border-color:var(--gold)}.button-danger{color:var(--bad);border-color:var(--bad);background:0 0}.button-danger:hover{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}.button-block{width:100%}.link-button{min-height:auto;color:var(--link);background:0 0;border:0;padding:0;font-weight:400;text-decoration:underline}.actions{gap:var(--s-sm);flex-wrap:wrap;align-items:center;display:flex}.inline-form{align-items:end;gap:var(--s-sm);flex-wrap:wrap;display:flex}.inline-form .field{flex:1;min-width:9rem;margin:0}.chips{gap:var(--s-sm);margin:0 0 var(--s-md);border:0;flex-wrap:wrap;padding:0;display:flex}.chips legend{color:var(--text);margin-bottom:var(--s-xs);padding:0;font-size:.9rem;font-weight:600}.chips label{position:relative}.chips input{opacity:0;width:1px;height:1px;min-height:0;position:absolute}.chips span{min-height:var(--tap);padding:0 var(--s-md);border:1px solid var(--divider);border-radius:var(--radius);cursor:pointer;align-items:center;font-size:.9rem;display:inline-flex}.chips input:checked+span{border-color:var(--gold-fill);background:var(--gold-fill);color:#fff}.chips input:focus-visible+span{outline:2px solid var(--gold);outline-offset:2px}details>summary{min-height:var(--tap);cursor:pointer;color:var(--link);align-items:center;display:flex}details[open]>summary{margin-bottom:var(--s-sm)}summary h2,summary h3{margin:0;font-size:1.125rem}.sync-banner{left:var(--s-md);right:var(--s-md);bottom:calc(var(--s-md) + env(safe-area-inset-bottom));z-index:20;justify-content:space-between;align-items:center;gap:var(--s-md);padding:var(--s-sm) var(--s-md);border-radius:var(--radius);background:var(--text);color:#fff;display:flex;position:fixed;box-shadow:0 8px 32px #0003}.sync-banner[hidden]{display:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.prose{max-width:48rem;margin-inline:auto}.prose h1{font-size:2.5rem}.prose img{max-width:100%;height:auto}.prose pre{overflow-x:auto}@media (width>=720px){.wrap{padding-inline:var(--s-xl)}h1{font-size:2.5rem}h2{font-size:1.875rem}.lockup{font-size:1.375rem}.nav-links{gap:0 var(--s-sm)}main{padding-block:var(--s-xl) var(--s-2xl)}.hero .wrap{padding-block:var(--s-2xl) var(--s-xl)}.sync-banner{max-width:26rem;left:auto}}@media (width>=1000px){.wrap{width:80%;padding-inline:0}.page-head{grid-template-columns:minmax(0,1fr) auto;align-items:end}.page-head .stats{min-width:34rem}.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.stats.stats-2{grid-template-columns:repeat(2,minmax(0,1fr))}.stats.stats-1,.page-head .stats.stats-1{grid-template-columns:minmax(12rem,1fr);min-width:12rem}.page-head .stats.stats-2{min-width:20rem}.split{gap:var(--s-xl);grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.split.split-even{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.split.split-side{grid-template-columns:minmax(0,2fr) minmax(20rem,1fr)}}.item-list{gap:var(--s-md);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));margin:0;padding:0;list-style:none;display:grid}.item-box{gap:var(--s-xs);height:100%;padding:var(--s-md);border:1px solid var(--divider);flex-direction:column;display:flex}a.item-box{color:var(--text);text-decoration:none;transition:background-color .15s}a.item-box:hover,a.item-box:focus-visible{color:var(--text);background:var(--gold-soft);border-color:#b97d1c73}.item-top{justify-content:space-between;align-items:start;gap:var(--s-sm);flex-wrap:wrap;display:flex}.item-name{font-size:var(--fs-card);color:var(--gold);font-weight:600;line-height:1.3}.item-sub{font-size:var(--fs-meta);color:var(--muted);line-height:1.45}.item-score{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:1.25rem;line-height:1.2}.item-score .of{font-size:var(--fs-ui);color:var(--muted)}.item-score .pct{font-size:var(--fs-meta);color:var(--muted);margin-top:.15rem;display:block}.item-box .field{margin:var(--s-xs) 0 0}.item-box .field label{font-size:.8rem}.try-input{align-items:center;gap:var(--s-sm);display:flex}.try-input input{max-width:7rem}.try-input span{color:var(--muted);font-size:.9rem}details.disclose>summary{gap:var(--s-sm);min-height:var(--tap);padding:.35rem var(--s-md);border:2px solid var(--gold);border-radius:var(--radius);color:var(--link);font-size:.9rem;font-weight:600;list-style:none;display:inline-flex}details.disclose>summary::-webkit-details-marker{display:none}details.disclose>summary:after{content:"";border-bottom:2px solid;border-right:2px solid;width:.45em;height:.45em;transition:transform .15s;transform:translateY(-.15em)rotate(45deg)}details.disclose[open]>summary:after{transform:translateY(.1em)rotate(-135deg)}details.disclose>summary:hover{background:var(--gold-soft)}details.disclose[open]>summary{margin-bottom:var(--s-md)}details.section{border:1px solid var(--divider)}details.section>summary{gap:var(--s-sm);min-height:3.25rem;padding:var(--s-sm) var(--s-md);color:var(--gold);font-size:var(--fs-sub);font-weight:600;list-style:none}details.section>summary::-webkit-details-marker{display:none}details.section>summary:after{content:"";border-bottom:2px solid;border-right:2px solid;flex:none;width:.45em;height:.45em;margin-left:auto;transition:transform .15s;transform:translateY(-.15em)rotate(45deg)}details.section[open]>summary:after{transform:translateY(.1em)rotate(-135deg)}details.section>summary:hover{background:var(--gold-soft)}details.section[open]>summary{border-bottom:1px solid var(--divider);margin:0}details.section>:not(summary){margin:var(--s-md)}details.section>summary .status{font-size:var(--fs-meta)}details:not(.disclose):not(.section):not(.remove)>summary:after{content:"";border-bottom:2px solid;border-right:2px solid;width:.4em;height:.4em;margin-left:.5em;transform:translateY(-.15em)rotate(45deg)}details:not(.disclose):not(.section):not(.remove)[open]>summary:after{transform:translateY(.1em)rotate(-135deg)}.remove>summary{min-height:var(--tap);font-size:var(--fs-ui);color:var(--muted);text-underline-offset:.15em;padding:0 .25rem;text-decoration:underline;list-style:none}.remove>summary::-webkit-details-marker{display:none}.remove>summary:hover{color:var(--bad)}.remove{margin:0}.remove[open]{flex-basis:100%}.section-hint{margin:-.5rem 0 var(--s-md);font-size:var(--fs-ui);color:var(--muted)}.empty{border:1px solid var(--divider);background:var(--stripe);padding:var(--s-lg) var(--s-md);text-align:center;color:var(--text-2)}.empty p{margin:0}.empty .button,.empty details{margin-top:var(--s-md)}.whatif{padding:var(--s-md);background:var(--gold-soft);border:1px solid #b97d1c40;margin-top:0}.whatif-label,.status-label{font-size:var(--fs-ui);color:var(--text-2);margin:0}.whatif-mark,.status-number{font-size:var(--fs-num-lg);letter-spacing:-.02em;font-variant-numeric:tabular-nums;align-items:center;gap:.5rem;margin:.25rem 0 0;font-weight:400;line-height:1.1;display:flex}.status-number{font-size:var(--fs-num)}.whatif-grade,.status-sub{margin:.15rem 0 var(--s-md);color:var(--text-2)}.status-sub{font-size:var(--fs-meta);color:var(--muted);margin-bottom:0}.whatif-gpa{justify-content:space-between;gap:var(--s-sm);padding-top:var(--s-sm);border-top:1px solid var(--divider);font-variant-numeric:tabular-nums;margin:0;display:flex}.whatif-gpa dt{font-size:var(--fs-ui);color:var(--text-2)}.whatif-gpa dd{margin:0}.whatif-gpa dd span{font-size:var(--fs-meta);color:var(--muted)}.whatif-target{margin:var(--s-sm) 0 0;font-size:var(--fs-ui);color:var(--text-2);align-items:center;gap:.4rem;display:flex}.whatif-target.met{color:var(--good)}.whatif-target svg{flex:none;width:16px;height:16px}.detail-layout{gap:var(--s-lg);display:grid}.detail-layout>*{min-width:0}.section-gap{margin-top:var(--s-xl)}table.rows{border-collapse:separate;border-spacing:0 var(--s-sm)}table.rows thead th{color:var(--muted);background:0 0;padding-block:0;font-size:.8rem;font-weight:400}table.rows tbody tr{background:0 0}table.rows td{border-top:1px solid var(--divider);border-bottom:1px solid var(--divider)}table.rows td:first-child{border-left:1px solid var(--divider)}table.rows td:last-child{border-right:1px solid var(--divider)}.one-col{max-width:52rem}.table-head h2{font-size:var(--fs-sub)}@media (width>=1000px){.detail-layout{column-gap:var(--s-xl);grid-template:"main side""main result"1fr"how how"/minmax(0,2fr) minmax(19rem,1fr);align-items:start}.detail-main{grid-area:main}.detail-side{grid-area:side}.detail-result{grid-area:result}.detail-how{grid-area:how}.split.split-login{grid-template-columns:minmax(20rem,1fr) minmax(0,2fr)}.grid-3{gap:var(--s-lg);grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;display:grid}}@media (width<1000px){.grid-3>*+*{margin-top:var(--s-lg)}}@media (width<720px){.course-list,.item-list{gap:var(--s-sm)}.course-card,.item-box{padding:.75rem var(--s-md)}.row{grid-template-columns:1fr}.card .item-top>form{flex-basis:100%}.card .item-top>form button{width:100%}}@media (width<1000px){.stats.stats-1{grid-template-columns:1fr}}
