:root{--ink:#16181d;--muted:#555b66;--line:#dde1e7;--paper:#fbfbf9;--card:#fff;--accent:#1f4fd1;--overdue:#b3261e;--day:#c2410c;--soon:#a16207;--week:#1f4fd1;--later:#555b66;--radius:.6rem;color-scheme:light}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;padding:0 1rem 4rem;font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}a{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}header.site{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;max-width:48rem;margin:0 auto;padding-block:1rem;display:flex}.brand{letter-spacing:-.02em;color:var(--ink);font-size:1.4rem;font-weight:800;text-decoration:none}.brand span{color:var(--overdue)}header.site nav{gap:1.25rem;display:flex}header.site nav a{color:var(--muted);text-decoration:none}header.site nav a[aria-current=page]{color:var(--ink);text-underline-offset:.3em;font-weight:600;text-decoration:underline}main{max-width:48rem;margin:0 auto}h1{letter-spacing:-.02em;margin:2rem 0 .5rem;font-size:clamp(1.6rem,4vw,2.2rem);line-height:1.15}h2{margin:0;font-size:1rem}.lede{color:var(--muted);max-width:36rem;margin:0}.summary{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.75rem;margin:1.5rem 0;display:grid}.summary div{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.75rem 1rem}.summary dt{color:var(--muted);font-size:.8rem}.summary dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.6rem;font-weight:700}.filters{flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;display:flex}.filters a{border:1px solid var(--line);background:var(--card);color:var(--ink);font-variant-numeric:tabular-nums;border-radius:999px;padding:.25rem .75rem;font-size:.9rem;text-decoration:none}.filters a[aria-current=page]{background:var(--ink);border-color:var(--ink);color:var(--card)}.live,.empty,.error{border-radius:var(--radius);padding:.75rem 1rem}.live{background:#eef3ff;border:1px solid #c7d6ff}.empty{background:var(--card);border:1px dashed var(--line);color:var(--muted)}.error{color:var(--overdue);background:#fdecea;border:1px solid #f5c2bd}.band{--tone:var(--later);margin-bottom:1.75rem}.band-overdue{--tone:var(--overdue)}.band-day{--tone:var(--day)}.band-soon{--tone:var(--soon)}.band-week{--tone:var(--week)}.band h2{color:var(--tone);margin-bottom:.5rem}.count{background:var(--line);min-width:1.5em;color:var(--ink);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 .4em;font-size:.8rem;display:inline-block}.deadlines{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.deadline{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--tone,var(--line));border-radius:var(--radius);grid-template-columns:1fr auto;align-items:center;gap:.25rem 1rem;padding:.75rem 1rem;display:grid}.deadline:target{box-shadow:0 0 0 3px #c7d6ff}.what{flex-wrap:wrap;align-items:baseline;gap:.25rem .6rem;min-width:0;display:flex}.course{letter-spacing:.04em;color:var(--muted);font-size:.8rem;font-weight:700}.title{overflow-wrap:anywhere;font-weight:600}.when{color:var(--muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;grid-column:1;gap:.25rem .75rem;font-size:.9rem;display:flex}.tag{color:var(--tone);font-weight:600}.left{color:var(--ink)}.weight{color:var(--ink);font-weight:700}.actions{grid-area:1/2/span 2;gap:.4rem;display:flex}.actions form{margin:0}button{font:inherit;border:1px solid var(--ink);background:var(--ink);color:var(--card);cursor:pointer;border-radius:.4rem;padding:.35rem .8rem}button.quiet{color:var(--muted);border-color:var(--line);background:0 0}button.primary{background:var(--accent);border-color:var(--accent);align-self:end;padding-inline:1.4rem}.add{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin:2.5rem 0 1.5rem;padding:1.25rem}.add h2{margin-bottom:.75rem}#add-form{flex-wrap:wrap;gap:.75rem;display:flex}.field{flex-direction:column;flex:9rem;gap:.25rem;display:flex}.field.wide{flex:3 14rem}.field.narrow{flex:0 6rem}label{color:var(--muted);font-size:.85rem}input{font:inherit;background:var(--card);color:var(--ink);border:1px solid #b9bfc9;border-radius:.4rem;min-width:0;padding:.45rem .6rem}.done summary{cursor:pointer;margin-bottom:.5rem;list-style-position:inside}.done summary h2{color:var(--muted);display:inline}.is-done .title{color:var(--muted);text-decoration:line-through}.prose{padding-top:1rem}.prose img{max-width:100%;height:auto}@media (width<=34rem){.deadline{grid-template-columns:1fr}.actions{grid-area:auto/1}}
