:root{--ink:#1b1b1f;--muted:#53565c;--line:#d6d7dc;--paper:#fff;--wash:#f4f5f7;--accent:#0b5cad;--now:#0f5132;--next:#7a4e00;--next-wash:#fff4d6;--ok:#0f5132;--ok-wash:#e6f4ec;--bad:#9b1c1c;--bad-wash:#fdecec;--warn:#6b4600;--radius:6px;color-scheme:light;color:var(--ink);background:var(--paper);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.45}*{box-sizing:border-box}body{margin:0}a{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}h1,h2,h3,h4{margin:0;line-height:1.2}h1{margin:.75rem 0 .5rem;font-size:1.75rem}h2{font-size:1.25rem}h3{font-size:1.05rem}h4{font-size:.95rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.app{grid-template-columns:minmax(0,1fr);grid-template-areas:"demo""header""aside""main""footer";gap:1rem;max-width:78rem;margin:0 auto;padding:0 1rem 2rem;display:grid}.demo-bar{grid-area:demo}.site-header{grid-area:header}.requirements{grid-area:aside}.primary{grid-area:main;grid-template-columns:minmax(0,1fr);align-content:start;gap:1.5rem;min-width:0;display:grid}.primary>*{min-width:0}.skip-link{z-index:20;background:var(--paper);border:2px solid var(--accent);border-radius:var(--radius);padding:.4rem .75rem;font-weight:600;position:absolute;top:.5rem;left:-9999px}.skip-link:focus{left:1rem}#sessions-heading:focus{outline:none}#sessions-heading:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.site-footer{color:var(--muted);border-top:1px solid var(--line);grid-area:footer;padding-top:.75rem;font-size:.875rem}@media (width>=960px){.app{grid-template-columns:minmax(0,1fr) 22rem;grid-template-areas:"demo demo""header header""main aside""footer footer"}.requirements{align-self:start;max-height:calc(100vh - 2rem);position:sticky;top:1rem;overflow:auto}}.site-nav{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.75rem 0;display:flex}.site-nav__links{gap:1rem;margin:0;padding:0;font-weight:600;list-style:none;display:flex}.site-nav__links a{text-decoration:none}.site-nav__links a[aria-current=page]{text-underline-offset:.3em;text-decoration:underline}.site-nav__who{color:var(--muted);margin:0 0 0 auto;font-size:.9rem}.button{font:inherit;border-radius:var(--radius);border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;padding:.45rem .9rem;font-weight:600}.button:disabled{opacity:.6;cursor:not-allowed}.button--quiet{background:var(--paper);color:var(--accent)}.button--danger{background:var(--paper);color:var(--bad);border-color:var(--bad)}.button--small{padding:.25rem .6rem;font-size:.85rem}.notices ul{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.notice{border-radius:var(--radius);border-left:4px solid;padding:.5rem .75rem}.notice--ok{background:var(--ok-wash);border-color:var(--ok)}.notice--error{background:var(--bad-wash);border-color:var(--bad)}.notice--warning{background:var(--next-wash);border-color:var(--warn)}.notice--info{background:var(--wash);border-color:var(--muted)}.noscript{background:var(--next-wash);border-radius:var(--radius);padding:.5rem .75rem}.sessions{gap:.5rem;display:grid}.sessions__note{color:var(--muted)}.year-group{gap:.5rem;display:grid}.year-group__label{color:var(--muted);margin:.75rem 0 0;font-weight:700}.fold>summary{cursor:pointer;color:var(--accent);padding:.35rem 0;font-weight:600}.fold{gap:.5rem;display:grid}.session{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper)}.session--now{border-left:5px solid var(--now)}.session--next{border-left:5px solid var(--next)}.session__summary{cursor:pointer;padding:.6rem .75rem}.session__name{margin-right:.5rem;display:inline}.session__dates{color:var(--muted);margin-right:.5rem}.session__key-dates{color:var(--muted);margin-top:.2rem;font-size:.875rem;display:block}.session__body{padding:0 .75rem .75rem}.badge{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border:1px solid;border-radius:999px;padding:.15rem .5rem;font-size:.75rem;font-weight:700}.badge--now{background:var(--now);border-color:var(--now);color:#fff}.badge--next{background:var(--next-wash);border-color:var(--next);color:var(--next)}.badge--upcoming{background:var(--paper);color:#3f434a;border-color:#6b6f78}.badge--past{background:var(--wash);border-color:var(--line);color:var(--muted)}.details{border-top:1px solid var(--line);gap:.6rem;padding-top:.6rem;display:grid}.details__count{color:var(--muted);font-weight:400}.details__empty{color:var(--muted);margin:0}.classes{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.class{border:1px solid var(--line);border-radius:var(--radius);background:var(--wash);padding:.4rem .6rem}.class>summary{cursor:pointer}.class__code{font-weight:700}.class__meta{color:var(--muted)}.class__state{margin-left:.5rem;font-size:.85rem;font-weight:600}.class--completed .class__state{color:var(--ok)}.class--dropped .class__state,.class--failed .class__state{color:var(--bad)}.class__facts{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.25rem 1rem;margin:.5rem 0;display:grid}.class__facts dt{color:var(--muted);font-size:.8rem}.class__facts dd{margin:0}.class__note{color:var(--muted);margin:.25rem 0 0;font-size:.85rem}.class__links{margin:.25rem 0;font-size:.85rem}.details__tutorials{color:var(--muted);margin:.5rem 0;font-size:.85rem}.chooser__page{font-size:.85rem}.drop-confirm{border:2px solid var(--bad);border-radius:var(--radius);background:var(--paper);margin-top:.5rem;padding:.6rem .75rem}.drop-confirm:focus{outline:3px solid var(--accent);outline-offset:2px}.drop-confirm__question{margin:0 0 .35rem;font-weight:700}.drop-confirm__consequences{gap:.2rem;margin:0 0 .5rem;padding-left:1.2rem;display:grid}.drop-confirm__more{margin:0 0 .5rem;font-size:.85rem}.drop-confirm__actions{flex-wrap:wrap;gap:.5rem;display:flex}.add{gap:.3rem;display:grid}.add__row{flex-wrap:wrap;gap:.5rem;display:flex}.add input,.field input,.field select{font:inherit;border-radius:var(--radius);background:var(--paper);min-width:0;color:var(--ink);border:1px solid #8a8f98;padding:.4rem .5rem}.add input{flex:14rem}.hint{color:var(--muted);margin:0;font-size:.85rem}.error{color:var(--bad);margin:0;font-weight:600}.add__closed{color:var(--muted);margin:0}.chooser{border:1px solid var(--accent);border-radius:var(--radius);gap:.5rem;margin:0;padding:.6rem .75rem;display:grid}.chooser legend{padding:0 .25rem;font-weight:700}.chooser__classes{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.chooser__class{align-items:baseline;gap:.5rem;display:flex}.chooser__requisites{margin:0;font-size:.875rem}.chooser__actions{flex-wrap:wrap;gap:.5rem;display:flex}.requirements{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);padding:.75rem}.requirements__summary{cursor:pointer}.requirements__summary h2{display:inline}.requirements__tally{color:var(--muted);margin-top:.2rem;font-size:.9rem;display:block}.requirements__who{font-size:.9rem}.pc-link{font-size:.8rem}.req-block{gap:.5rem;margin-top:.75rem;display:grid}.req-block h3{font-size:.95rem}.req-group{gap:.25rem;display:grid}.req-group__rule,.req-group__text{margin:0;font-size:.875rem}.req-group__text{color:var(--muted)}.state{font-weight:600}.state--met{color:var(--ok)}.state--in-progress{color:var(--next)}.state--not-met{color:var(--bad)}.req-courses{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.req-course{grid-template-columns:1.25rem 1fr;gap:0 .4rem;font-size:.9rem;display:grid}.req-course>:not(.req-course__icon){grid-column:2}.req-course__icon{grid-row:1;font-weight:700}.req-course--done .req-course__icon{color:var(--ok)}.req-course--enrolled .req-course__icon,.req-course--partial .req-course__icon{color:var(--next)}.req-course__title{color:var(--muted)}.req-course__status{font-size:.85rem}.req-course .button{justify-self:start;margin-top:.2rem}.requirements__notes{margin-top:.75rem;font-size:.875rem}.requirements__notes>summary{cursor:pointer;color:var(--accent)}.req-note{border-top:1px dashed var(--line);margin-top:.4rem;padding-top:.4rem}.req-note p{margin:.2rem 0}.browse>details>summary{cursor:pointer}.browse>details>summary h2{display:inline}.browse__scope{color:var(--muted);font-size:.9rem}.field{gap:.2rem;display:grid}.field label{font-size:.85rem;font-weight:600}.browse__session{max-width:20rem;margin-bottom:.75rem}.filters{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));align-items:end;gap:.6rem;margin-bottom:.75rem;display:grid}.results{border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}.results table{border-collapse:collapse;width:100%;font-size:.9rem}.results caption{text-align:left;padding:.5rem .6rem;font-weight:600}.results th,.results td{border-top:1px solid var(--line);text-align:left;vertical-align:top;padding:.4rem .6rem}.results thead th{background:var(--wash);white-space:nowrap}.results th[aria-sort] a{font-weight:700}.topic{color:var(--muted)}.tags{flex-wrap:wrap;gap:.25rem;margin-left:.35rem;display:inline-flex}.tag{background:var(--wash);border:1px solid var(--line);border-radius:999px;padding:.05rem .4rem;font-size:.72rem}.tag--required{background:var(--next-wash);border-color:var(--next);color:var(--next);font-weight:700}.tag--quiet{color:var(--muted)}.tag--permission{border-color:var(--warn);font-weight:600}.pager{align-items:center;gap:1rem;margin-top:.5rem;display:flex}.bulkbar{background:var(--paper);border-top:2px solid var(--accent);margin-top:.5rem;padding:.6rem 0;position:sticky;bottom:0}.bulkbar__result{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;display:flex}.inline-notices{gap:.25rem;margin:.5rem 0 0;padding:0;font-size:.9rem;list-style:none;display:grid}.inline-notices .notice{margin:0}.browse__failed{color:var(--bad)}.readme nav{gap:1rem;max-width:48rem;margin:0 auto;padding:.75rem 1rem;font-weight:600;display:flex}.readme main{max-width:48rem;margin:0 auto;padding:0 1rem 2rem}.readme main img{border:1px solid var(--line);max-width:100%;height:auto}.demo-bar{z-index:10;border-radius:var(--radius);background:#eef0f3;border:2px dashed #6b6f78;margin-top:.5rem;padding:.5rem .75rem}.demo-bar__label{text-transform:uppercase;letter-spacing:.04em;color:#3f434a;margin:0 0 .35rem;font-size:.8rem;font-weight:700}.demo-bar__form{flex-wrap:wrap;align-items:end;gap:.5rem .75rem;display:flex}.demo-bar__note{color:var(--muted);font-size:.8rem}@media (width>=960px){.demo-bar{position:sticky;top:0}.demo-bar select{max-width:14rem}html{scroll-padding-top:12rem}.requirements{max-height:none;position:static}}
