/* Colors mirror packages/design_system/lib/src/tokens.dart. No new branding. */
:root { color-scheme: light dark; --paper:#f2f0e8; --surface:#fffef8; --ink:#151714; --muted:#5a5d56; --line:#c8c6bc; --green:#00d65a; --danger:#aa1820; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font:1rem/1.5 system-ui, sans-serif; }
main { max-width:90rem; padding:clamp(1rem,3vw,2.5rem); margin:auto; }
h1 { font-size:clamp(1.6rem,4vw,2.5rem); line-height:1.2; margin:.5rem 0; }
h1 span { display:block; font-size:1.1rem; font-weight:500; margin-top:.5rem; }
h2 { font-size:1.2rem; }
h3 { margin:0; font-size:1.1rem; }
p { margin:.5rem 0 1rem; }
.eyebrow { font-size:.9rem; font-weight:800; letter-spacing:.1em; }
.toolbar { display:flex; flex-wrap:wrap; gap:.6rem; margin:1.5rem 0; }
button { min-height:3rem; padding:.6rem 1rem; border:1px solid var(--line); border-radius:1rem; background:var(--surface); color:var(--ink); font:inherit; cursor:pointer; }
button:disabled { opacity:.5; cursor:default; }
button:focus-visible, summary:focus-visible { outline:3px solid var(--ink); outline-offset:3px; }
#today { background:var(--green); color:#151714; border-color:transparent; font-weight:650; }
.week { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr)); gap:1rem; }
.day { min-width:0; background:var(--surface); border:1px solid var(--line); border-radius:1.5rem; padding:1.2rem; }
.day.today { border:2px solid var(--ink); }
.day header { display:flex; flex-wrap:wrap; gap:.5rem; justify-content:space-between; border-bottom:1px solid var(--line); padding-bottom:.75rem; }
.course { padding:1rem 0; overflow-wrap:anywhere; border-bottom:1px solid var(--line); }
.course:last-child { border-bottom:0; padding-bottom:0; }
.course strong { display:block; margin:.25rem 0; }
.badge { display:inline-block; border-radius:.5rem; padding:.15rem .5rem; border:1px solid currentColor; font-size:.9rem; font-weight:650; }
.cancelled { color:var(--danger); }
.cancelled strong { text-decoration:line-through; }
details { margin-top:.5rem; } summary { min-height:2.75rem; padding:.5rem 0; cursor:pointer; }
details p { white-space:pre-wrap; }
.hint, #status, .empty { color:var(--muted); }
.hint { margin-top:1.5rem; }
#status.error { color:var(--danger); font-weight:600; }
@media(prefers-color-scheme:dark) { :root { --paper:#151714; --surface:#242722; --ink:#fffef8; --muted:#c8c6bc; --line:#60645b; --danger:#ffb3b5; } }
@media print { .toolbar { display:none; } .week { grid-template-columns:repeat(2,1fr); } .day { break-inside:avoid; } }
