# Olive & Oat UI Style Guide A muted olive system with oat-coloured surfaces, offering an earthy but cleaner alternative to brown. Olive & Oat is calm and practical. Keep the olive muted; brighter yellow-green shades quickly become visually demanding. This system keeps the interface ADHD-friendly by using layered neutral surfaces, one clear primary colour, one quieter secondary colour and very restrained supporting accents. --- ## 1. Core rules - Use neutral backgrounds and surfaces for most of the page. - Reserve the primary colour for the next important action. - Use the secondary colour for optional or supporting actions. - Use spacing and typography before adding colour. - Keep one main task visible at a time. - Avoid decorative motion and unexpected layout changes. - Never communicate status using colour alone. --- ## 2. Light mode | Token | Value | Purpose | |---|---:|---| | `--page` | `#F9F7F0` | Main page background | | `--page-accent` | `#ECE8D9` | Subtle page depth | | `--surface` | `#FFFDF8` | Cards and dialogs | | `--surface-alt` | `#F4F1E5` | Inputs and secondary regions | | `--surface-strong` | `#E3DFCD` | Selected and elevated elements | | `--text` | `#35362B` | Main text | | `--muted` | `#737363` | Secondary text | | `--border` | `#D7D3C1` | Borders and dividers | | `--primary` | `#777B4F` | Main action and brand colour | | `--primary-hover` | `#5D623A` | Primary hover and active state | | `--secondary` | `#DDE6E2` | Secondary action | | `--secondary-hover` | `#CEDBD5` | Secondary hover state | --- ## 3. Dark mode | Token | Value | Purpose | |---|---:|---| | `--page` | `#030401` | Main dark background | | `--page-accent` | `#0A0C05` | Background depth | | `--surface` | `#15170E` | Cards and dialogs | | `--surface-alt` | `#212418` | Inputs and secondary regions | | `--surface-strong` | `#343827` | Selected and elevated elements | | `--text` | `#F5F4EA` | Main text | | `--muted` | `#C4C3B4` | Secondary text | | `--border` | `#505443` | Borders and dividers | | `--primary` | `#A9AD75` | Main action and brand colour | | `--primary-hover` | `#8F945D` | Primary hover and active state | | `--secondary` | `#3E5A57` | Secondary action | | `--secondary-hover` | `#50706C` | Secondary hover state | --- ## 4. Colour roles ### Primary Use the primary colour for grounded primary actions and selected states. Use it on: - the main button - active navigation - selected controls - important links - compact brand marks The primary colour should answer: > What should I do next? ### Secondary Use the secondary colour for cool green-grey controls that prevent the palette becoming too earthy. Use it on: - secondary buttons - optional actions - toolbars - supporting cards - inactive navigation The secondary colour should answer: > What else can I do? ### Supporting accents | Role | Light | Dark | |---|---:|---:| | Accent 1 | `#96966D` | `#BCBD8D` | | Accent 2 | `#6E8B88` | `#82A09D` | | Accent 3 | `#C29A64` | `#CFAD76` | | Success | `#6F8464` | `#9BAF8F` | | Danger | `#A36558` | `#D18E7E` | Use one supporting accent per component whenever possible. Recommended page balance: - **70%** neutral backgrounds and surfaces - **20%** primary and secondary structure - **10%** supporting accents and status colours --- ## 5. Typography ```css --font-body: "Atkinson Hyperlegible", "Segoe UI", Arial, sans-serif; --font-ui: "Lexend", "Segoe UI", Arial, sans-serif; ``` Use **Atkinson Hyperlegible** for paragraphs, instructions, tables and form help. Use **Lexend** for headings, buttons, navigation and labels. Recommended settings: - body text: `18px` - body line-height: `1.6` - paragraphs: no wider than `70ch` - labels and buttons: `16–18px` - left-aligned body text - concise headings - no long all-caps passages --- ## 6. Layout and spacing Use an 8-pixel spacing rhythm. ```text 4px tiny adjustment 8px closely related elements 16px normal component spacing 24px groups inside a section 32px separation between sections 48px+ major page regions ``` Keep one purpose per card. Prefer spacing and surface changes over thick borders or multiple shadows. --- ## 7. Components ### Primary button ```css background: var(--primary); color: var(--on-primary); ``` Use one obvious primary button per task area. ### Secondary button ```css background: var(--secondary); color: var(--on-secondary); ``` Use for optional or reversible actions. ### Inputs ```css background: var(--surface-alt); border: 1px solid var(--border); color: var(--text); ``` On focus: ```css border-color: var(--primary); outline: 3px solid var(--focus); ``` ### Validation - Place the error beside the affected field. - Explain how to fix the problem. - Preserve the user’s entered data. - Use text or an icon as well as colour. --- ## 8. ADHD-friendly interaction rules - Present one main task at a time. - Reduce optional decisions near the primary action. - Keep related controls close together. - Use consistent button placement. - Avoid unexpected layout movement. - Respect `prefers-reduced-motion`. - Keep notifications short and actionable. - Use progressive disclosure for advanced options. --- ## 9. Accessibility checks Before release: - test keyboard navigation - verify visible focus states - check text and button contrast - test at 200% zoom - connect labels to controls - test light and dark modes separately - use semantic HTML before ARIA --- ## 10. Quick tokens ```css :root { --page: #F9F7F0; --surface: #FFFDF8; --surface-alt: #F4F1E5; --text: #35362B; --muted: #737363; --border: #D7D3C1; --primary: #777B4F; --secondary: #DDE6E2; } html[data-theme="dark"] { --page: #030401; --surface: #15170E; --surface-alt: #212418; --text: #F5F4EA; --muted: #C4C3B4; --border: #505443; --primary: #A9AD75; --secondary: #3E5A57; } ``` --- ## 11. Final rule When the interface begins to feel busy, remove emphasis before adding another colour. Neutral surfaces should make the primary action easy to find without demanding constant attention. --- ## Typography sample card Every login demo includes a sample content card so the heading, subheading and paragraph fonts can be compared in a realistic surface. The demos load the fonts through the Google Fonts CSS API: ```css @import url( "https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=Lexend:wght@400;500;600;700&display=swap" ); ``` Recommended use: - **Lexend** for the card heading, subheading, labels and badges - **Atkinson Hyperlegible** for the paragraph and longer reading text Example structure: ```html

Typography sample

A calm and readable card heading

A concise subheading demonstrates Lexend at a smaller interface size.

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

```