:root{--paper: #fbfaf7;--ink: #1f1d1a;--ink-muted: #6f6a62;--chrome: #f1eee8;--line: #d9d4cb;--accent: #2f5d8a;--danger: #a33b2e;--warn: #9a6a2f;--ok: #3b7a4a;--course-slate: #55677a;--course-moss: #56753f;--course-clay: #a05a3c;--course-ochre: #a67c2b;--course-plum: #75517a;--course-teal: #2f7a74;--course-rose: #a4506a;--course-sand: #856f42;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 2rem;--leading: 1.6;--leading-tight: 1.25;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius: .375rem;--radius-lg: .75rem;--tap: 2.75rem;--motion-quick: .12s;--motion-enter: .18s;--motion-exit: .14s;--motion-move: .22s;--motion-settle: .32s;--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-settle: linear(0, .42 20%, .86 42%, 1.03 64%, .99 82%, 1);--shadow: rgb(31 29 26 / 25%);--lift: 0 6px 18px var(--shadow)}@media(prefers-color-scheme:dark){:root{--paper: #16150f;--ink: #e6e1d6;--ink-muted: #8c867a;--chrome: #201e17;--line: #33302a;--accent: #8fb4dc;--danger: #e0715f;--warn: #d9a45b;--ok: #7fbf8c;--course-slate: #9db0c4;--course-moss: #a3c088;--course-clay: #dc9d78;--course-ochre: #d9b969;--course-plum: #c3a0c6;--course-teal: #79c1ba;--course-rose: #dc9aac;--course-sand: #c7b184;--shadow: rgb(0 0 0 / 55%)}}@media(prefers-reduced-motion:reduce){:root{--motion-quick: 1ms;--motion-enter: 1ms;--motion-exit: 1ms;--motion-move: 1ms;--motion-settle: 1ms;--lift: none}button:active:not(:disabled){transform:none}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading)}*,*:before,*:after{box-sizing:border-box}h1,h2,h3{line-height:var(--leading-tight);margin:0 0 var(--space-3)}h1{font-size:var(--text-xl)}h2{font-size:var(--text-lg)}a{color:var(--accent)}button{font:inherit;transition:background-color var(--motion-quick) var(--ease-out),border-color var(--motion-quick) var(--ease-out),color var(--motion-quick) var(--ease-out),transform var(--motion-quick) var(--ease-out)}button:active:not(:disabled){transform:scale(.97)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.6;cursor:default}.head h1{margin:0}.colour-none{background:var(--ink-muted)}.colour-slate{background:var(--course-slate)}.colour-moss{background:var(--course-moss)}.colour-clay{background:var(--course-clay)}.colour-ochre{background:var(--course-ochre)}.colour-plum{background:var(--course-plum)}.colour-teal{background:var(--course-teal)}.colour-rose{background:var(--course-rose)}.colour-sand{background:var(--course-sand)}@keyframes enter-fade{0%{opacity:0}to{opacity:1}}.enter-fade{animation:enter-fade var(--motion-enter) var(--ease-out)}@keyframes enter-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.enter-rise{animation:enter-rise var(--motion-enter) var(--ease-out)}@keyframes enter-sheet{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.enter-sheet{animation:enter-sheet var(--motion-enter) var(--ease-out)}@keyframes enter-dialog{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.enter-dialog{animation:enter-dialog var(--motion-enter) var(--ease-out)}@keyframes leave-fade{0%{opacity:1}to{opacity:0}}.leave-fade{animation:leave-fade var(--motion-exit) var(--ease-in);animation-fill-mode:both}@keyframes leave-sink{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(6px)}}.leave-sink{animation:leave-sink var(--motion-exit) var(--ease-in);animation-fill-mode:both}@keyframes leave-sheet{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(24px)}}.leave-sheet{animation:leave-sheet var(--motion-exit) var(--ease-in);animation-fill-mode:both}@keyframes settle{0%{transform:scale(1.02);box-shadow:var(--lift)}to{transform:scale(1);box-shadow:none}}.settle{animation:settle var(--motion-settle) var(--ease-settle)}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.shake{animation:shake var(--motion-move) var(--ease-out)}@keyframes ripple{0%{box-shadow:0 0 0 0 var(--accent)}to{box-shadow:0 0 0 8px transparent}}.ripple{animation:ripple .6s var(--ease-out)}@media print{.topbar,.tabbar,.offline{display:none}}
