Lemonade logo Lemonade Theme

Maintaining the design

Tokens first

Pages never contain raw hex values or pixel sizes. If something needs a value that doesn't exist, add a token to theme.css and define it for dark, gray and light in the same change.

Rules

RuleDetail
One control heightButtons, inputs and selects use --control-default (36px). Use .btn-sm or .btn-lg only in dense tables or primary page actions.
One control radius--radius-control for anything interactive. Containers use the same radius. Don't introduce a new radius for a single component.
Named text stylesUse .text-title, .text-label and the rest. A new size needs a new named style, not an inline font-size.
Spacing scale0.5, 0.75, 1, 1.5rem. Page sections stack at 1.5rem (space-y-6). Label to field is 0.5rem.
Neutral by defaultColor is for meaning: primary action, destructive, status. Layout and decoration stay gray.
Every stateInteractive elements need hover, :focus-visible and disabled. Inputs also need aria-invalid. Use the shared control classes and don't restyle states per component.
FeedbackThe result of a form is a one-line .form-message under the form row: red for errors, green for success. If the result is already visible where the user acted (an Approved badge on a GIF, a new row in the audit log), add nothing. Toasts are only for events the user didn't trigger on this page.
Reduced motionTransitions go through motion-control and turn off under prefers-reduced-motion. Only animate color, shadow, opacity and 1px translates.
CopySentence case. Button labels are a verb and a noun: "Search Project", "Delete User". Placeholders show an example ("e.g. LEMONADE-1234").

Before merging

CheckHow
ThemesSwitch through dark, gray and light in the header.
Mobile390px wide: no horizontal scroll, nav collapses to the select, inputs are 16px.
KeyboardTab through the page. Every control shows a focus ring and the order follows the layout.
ContrastBody text 4.5:1, muted text and borders on controls 3:1 against their background.
No one-offsSearch the diff for style=, hex colors and new class names that duplicate an existing one.