Torus is a web app for exercise. Primary focus is weightlifting and bodybuilding. It must also work for any other modality (conditioning, mobility, sport work).
Fill these in when the repo has a real toolchain. Until then, prefer small, explicit commands over guessed scripts.
npm run dev or the project's documented equivalent)Adjust if the repo already differs. Match existing layout before inventing a new one.
src/ — Svelte 5 appsrc/lib/ — shared JS modulessrc/lib/components/ — UIstatic/ or public/ — static assetstorus.css — design tokens (canonical color source)Canonical CSS file: torus.css (also documented in torus-palette.html).
Use CSS custom properties. Do not hardcode hex values in components when a token exists.
CSS should be included in the svelte file that it applies to except in cases of some universal things that will apply many things across the project.
--void #09090B — app canvas--iron #141416 — cards, sheets--steel #1C1C20 — elevated surfaces--plate #27272B — inputs, wells--graphite #3F3F46 — borders, dividers--bone #FAFAFA — primary text and numbers--ash #A1A1AA — secondary text, labels--ember #FF5C1A — brand, primary CTA, PRs, active set, rest-timer urgency--forge #C2410C — pressed / darker ember--heat #FFB089 — ember on tinted chips--ember-ink #1A0A00 — text on ember buttons--pulse #2DD4BF — cardio, HR, mobility, non-strength tracks only--ok #4ADE80 — success, logged set--warn #FBBF24 — caution--fail #F43F5E — error, missed set--ok-ink #052E16 — text on ok buttons--bg → --void--surface → --iron--surface-2 → --steel--surface-3 → --plate--border → --graphite--text → --bone--text-muted → --ash--brand → --ember--brand-pressed → --forge--brand-on → --ember-ink--focus → --embertorus.css (.btn-primary, .btn-ghost, .btn-ok, .pill, .pill-ok) before inventing new button styles.--focus (ember), 2px, 2px offset.ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serifui-monospace, SFMono-Regular, Menlo, Consolas, monospace--radius-sm 8px, --radius 12px, --radius-lg 16px--ash.