:root{--bg:#f4f5f7;--surface:#fff;--surface-sunk:#fafbfc;--line:#e3e6ea;--line-soft:#eef0f3;--ink:#15171c;--ink-soft:#5b6270;--accent:#4f46e5;--accent-ink:#fff;--accent-soft:#eef0ff;--radius:10px;--shadow:0 1px 2px #10141c0f, 0 8px 24px -16px #10141c2e;color-scheme:light}.tone-1{--tone-bg:#eef2ff;--tone-edge:#6366f1;--tone-ink:#312c8f}.tone-2{--tone-bg:#ecfdf5;--tone-edge:#10b981;--tone-ink:#05543f}.tone-3{--tone-bg:#fff7ed;--tone-edge:#f59e0b;--tone-ink:#7c3d09}.tone-4{--tone-bg:#fff1f2;--tone-edge:#f43f5e;--tone-ink:#8f1030}.tone-5{--tone-bg:#f0f9ff;--tone-edge:#0ea5e9;--tone-ink:#07507a}.tone-6{--tone-bg:#faf5ff;--tone-edge:#a855f7;--tone-ink:#61199b}.tone-7{--tone-bg:#f7fee7;--tone-edge:#65a30d;--tone-ink:#35550f}@media (prefers-color-scheme:dark){:root{--bg:#0e1014;--surface:#16191f;--surface-sunk:#1b1f26;--line:#272c35;--line-soft:#1f242b;--ink:#e7e9ed;--ink-soft:#99a1ae;--accent:#8b93f8;--accent-ink:#14162b;--accent-soft:#1d2030;color-scheme:dark}.tone-1{--tone-bg:#1d1b45;--tone-edge:#818cf8;--tone-ink:#cdd4fe}.tone-2{--tone-bg:#06291f;--tone-edge:#34d399;--tone-ink:#a7f3d0}.tone-3{--tone-bg:#2b1d05;--tone-edge:#fbbf24;--tone-ink:#fde68a}.tone-4{--tone-bg:#3a0d18;--tone-edge:#fb7185;--tone-ink:#fecdd3}.tone-5{--tone-bg:#082b42;--tone-edge:#38bdf8;--tone-ink:#bae6fd}.tone-6{--tone-bg:#2a1257;--tone-edge:#c084fc;--tone-ink:#e9d5ff}.tone-7{--tone-bg:#1a2a08;--tone-edge:#a3e635;--tone-ink:#d9f99d}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.55}a{color:var(--accent);text-underline-offset:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.masthead{border-bottom:1px solid var(--line);background:var(--surface)}.masthead nav{flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;max-width:72rem;margin:0 auto;padding:.85rem 1.5rem;display:flex}.brand{letter-spacing:.01em;margin-right:auto;font-family:Instrument Serif,Georgia,serif;font-size:1.3rem}.masthead ul{gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.masthead a{color:var(--ink-soft);border-radius:99px;padding:.3rem .7rem;font-size:.9rem;font-weight:500;text-decoration:none;display:block}.masthead a:hover{color:var(--ink);background:var(--surface-sunk)}.masthead a[aria-current=page]{color:var(--accent);background:var(--accent-soft)}main{max-width:46rem;margin:0 auto;padding:2.5rem 1.5rem 5rem}main.wide{max-width:72rem}h1{letter-spacing:-.01em;margin:0 0 .6rem;font-family:Instrument Serif,Georgia,serif;font-size:clamp(2rem,5vw,2.7rem);font-weight:400;line-height:1.15}h2{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:2.75rem 0 .9rem;font-size:.8rem;font-weight:600}.lede{color:var(--ink-soft);max-width:36rem;margin:0 0 .5rem;font-size:1.05rem}.hint{color:var(--ink-soft);font-size:.85rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.25rem}form{margin:0}.field-row{flex-wrap:wrap;align-items:flex-end;gap:.9rem;display:flex}.field{flex-direction:column;flex:14rem;gap:.3rem;display:flex}.field.narrow{flex:0 0 6.5rem}label{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);font-size:.78rem;font-weight:600}input,select{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);font:inherit;font-variant-numeric:tabular-nums;border-radius:7px;padding:.5rem .65rem}button{background:var(--accent);color:var(--accent-ink);font:inherit;cursor:pointer;border:1px solid #0000;border-radius:7px;padding:.5rem 1rem;font-weight:600}button:hover{filter:brightness(1.08)}button.quiet{border-color:var(--line);color:var(--ink-soft);background:0 0;font-weight:500}button.quiet:hover{color:var(--ink);background:var(--surface-sunk);filter:none}.cta{background:var(--accent);color:var(--accent-ink);border-radius:8px;padding:.6rem 1.15rem;font-weight:600;text-decoration:none;display:inline-block}.cta:hover{filter:brightness(1.08)}table{border-collapse:collapse;width:100%}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel th{border-bottom:1px solid var(--line);background:var(--surface-sunk);text-align:left;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);padding:.6rem 1rem;font-size:.7rem}.panel td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:.7rem 1rem}.panel tbody tr:last-child td{border-bottom:0}.course{align-items:baseline;gap:.6rem;display:flex}.chip{background:var(--tone-edge);border-radius:2px;flex:none;width:.55rem;height:.55rem;margin-top:.35rem}.course-code{letter-spacing:-.01em;font-weight:600}.course-title{color:var(--ink-soft)}.times{color:var(--ink-soft);font-size:.9rem}.rank{align-items:center;gap:.35rem;display:flex}.rank input{text-align:center;width:3.6rem}.col-actions{text-align:right;white-space:nowrap}.grid-scroll{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.week{table-layout:fixed;border-collapse:collapse;min-width:46rem}.week thead th{border-bottom:1px solid var(--line);background:var(--surface-sunk);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);padding:.7rem .5rem;font-size:.72rem;font-weight:600}.week thead th.gutter{text-align:right;width:4.5rem}.week tbody tr{height:2.1rem}.week td{border-top:1px solid var(--line-soft);padding:0}.week tr.hour td{border-top-color:var(--line)}.week tbody tr:first-child td{border-top:0}.week td.gutter{text-align:right;vertical-align:top;color:var(--ink-soft);border-top:0;padding-right:.6rem;font-size:.72rem;transform:translateY(-.45em)}.week td.slot{padding:0;position:relative}.block{border-left:3px solid var(--tone-edge);background:var(--tone-bg);color:var(--tone-ink);border-radius:7px;flex-direction:column;justify-content:flex-start;gap:.05rem;padding:.3rem .55rem;display:flex;position:absolute;inset:1px 2px;overflow:hidden}.block-code{letter-spacing:-.01em;font-size:.82rem;font-weight:700}.block-title{opacity:.85;font-size:.75rem;line-height:1.25}.block-kind{letter-spacing:.06em;text-transform:uppercase;opacity:.7;font-size:.66rem;font-weight:600}.block-when{opacity:.75;font-size:.7rem}.block.tutorial{border-left-style:dashed}.components{margin:0;padding:0;font-size:.85rem;list-style:none}.components li{align-items:baseline;gap:.6rem;display:flex}.components li+li{margin-top:.15rem}.kind{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);flex:0 0 4.2rem;font-size:.68rem;font-weight:600}.slots{color:var(--ink-soft)}.when{white-space:nowrap}.fixed{border:1px solid var(--line);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);border-radius:99px;padding:.02rem .35rem;font-size:.66rem;font-weight:600}.prefs{table-layout:fixed}.prefs thead th{border-bottom:1px solid var(--line);background:var(--surface-sunk);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);padding:.7rem .5rem;font-size:.72rem;font-weight:600}.prefs tbody th{border-top:1px solid var(--line-soft);text-align:left;width:6.5rem;color:var(--ink-soft);padding:.6rem .75rem;font-size:.8rem}.prefs td{border-top:1px solid var(--line-soft);padding:.45rem}.prefs select{min-width:0;padding:.35rem .4rem;font-size:.82rem}.notes{color:var(--ink-soft);margin:0;padding-left:1.1rem;font-size:.92rem}.notes li+li{margin-top:.4rem}.notes strong{color:var(--ink)}.dropped{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.dropped>li{border:1px solid var(--line);border-left:3px solid var(--tone-edge);border-radius:var(--radius);background:var(--surface);padding:.85rem 1.1rem}.dropped-head{flex-wrap:wrap;align-items:baseline;gap:.5rem;margin:0 0 .35rem;display:flex}.badge{background:var(--surface-sunk);border:1px solid var(--line);color:var(--ink-soft);border-radius:99px;padding:.05rem .45rem;font-size:.72rem;font-weight:600}.reasons{color:var(--ink-soft);margin:0;padding-left:1.1rem;font-size:.9rem}.swap{margin-top:.75rem}.summary{flex-wrap:wrap;align-items:baseline;gap:.5rem 1.25rem;margin:0 0 .25rem;display:flex}.count{font-family:Instrument Serif,Georgia,serif;font-size:1.6rem}.empty{border:1px dashed var(--line);border-radius:var(--radius);text-align:center;color:var(--ink-soft);padding:2.5rem 1.5rem}.empty p{margin:0}.try{flex-direction:column;align-items:center;gap:.5rem;margin-top:1.1rem;display:flex}.day-short{display:none}.actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1.25rem;display:flex}main h3{margin-top:2rem}main :is(p,li) code{background:var(--surface-sunk);border:1px solid var(--line);border-radius:4px;padding:.1rem .3rem;font-size:.9em}@media (width<=40rem){main{padding-inline:1rem}.week{min-width:0}.week thead th{letter-spacing:.03em;padding:.6rem .15rem}.week thead th.gutter{width:2.4rem}.week td.gutter{padding-right:.35rem;font-size:.66rem}.day-long{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.day-short{display:inline}.block{border-left-width:2px;border-radius:5px;padding:.25rem .15rem .25rem .25rem;inset:1px}.block-code{letter-spacing:-.03em;font-size:.62rem}.block-kind{letter-spacing:.02em;font-size:.56rem}.block-when{display:none}.stack thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.stack,.stack tbody,.stack td{display:block}.stack tr{border-bottom:1px solid var(--line-soft);grid-template-columns:1fr auto;align-items:center;gap:.6rem .75rem;padding:.85rem 1rem;display:grid}.stack tbody tr:last-child{border-bottom:0}.stack td,.panel .stack td{border:0;padding:0}.stack .cell-course{order:-2;grid-column:1/-1}.stack .cell-times{order:-1;grid-column:1/-1}.prefs tbody th{width:6rem;padding-inline:.6rem}.prefs td{padding:.4rem .3rem}}
