:root { --bg:#faf9f6; --fg:#1f2328; --muted:#656d76; --card:#fff; --line:#d8dee4; --accent:#1f6feb; --err:#cf222e; }
@media (prefers-color-scheme: dark) {
  :root { --bg:#14171a; --fg:#e6edf3; --muted:#8b949e; --card:#1c2128; --line:#30363d; --accent:#58a6ff; --err:#ff7b72; }
}
* { box-sizing: border-box; }
body { margin:0; font:16px/1.5 system-ui,sans-serif; background:var(--bg); color:var(--fg); }
main { max-width:42rem; margin:0 auto; padding:1.5rem 1rem; }
h1 { font-size:1.5rem; margin:0 0 1rem; }
.card { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:1rem 1.25rem; margin-bottom:1rem; }
label { display:block; margin-bottom:.75rem; font-weight:600; }
input { display:block; width:100%; padding:.5rem; margin-top:.25rem; font:inherit; color:inherit; background:var(--bg); border:1px solid var(--line); border-radius:6px; }
button { font:inherit; padding:.5rem 1rem; border:0; border-radius:6px; background:var(--accent); color:#fff; cursor:pointer; }
button:disabled { opacity:.6; }
button.link { background:none; color:var(--accent); padding:0; }
.error { color:var(--err); min-height:1.5rem; margin:.25rem 0; }
.muted { color:var(--muted); }
nav { display:flex; gap:1rem; justify-content:space-between; align-items:center; margin-bottom:1rem; }
a { color:var(--accent); }
select { font:inherit; color:inherit; background:var(--bg); border:1px solid var(--line); border-radius:6px; padding:.4rem .5rem; margin:.15rem 0; }
input[type=search] { display:inline-block; width:auto; min-width:12rem; margin:.15rem 0; }
table { width:100%; border-collapse:collapse; table-layout:fixed; }
th, td { border:1px solid var(--line); padding:.25rem .35rem; vertical-align:top; font-size:.85rem; height:3.2rem; overflow-wrap:anywhere; }
th { height:auto; text-align:center; color:var(--muted); font-weight:600; }
td.today { outline:2px solid var(--accent); outline-offset:-2px; }
li { margin-bottom:.75rem; }
select { max-width:100%; }
