# Design Guidelines

## Buttons
- Primary actions must use the **filled button** style.
- Secondary and minor actions must use the **outlined button** style.
- Destructive actions must use the **error-colored filled button**.
- Button text must always be short, action-oriented, and use **sentence case**.
- Maintain sufficient contrast between background and text for accessibility.

## Text Inputs / Form Fields
- Textfields use **outlined** style by default.
- Input labels must be descriptive and placed above the field.
- Placeholder text should not replace labels; use only for contextual hints.
- Error states must include both **red border** and **error message text** below the field.
- Form spacing follows a **vertical 16px** rhythm between fields.

## Typography
- Use consistent text hierarchy: `H1 > H2 > H3 > Body > Caption`.
- Headlines use **bold**, body text uses **regular**.
- Avoid using more than **two font sizes** in the same section unless necessary.
- Never use random font weights; stick to the defined scale.

## Layout & Spacing
- Use a **4px grid system** for spacing and alignment.
- Maintain consistent padding within containers: **16px or 24px** depending on context.
- Align elements using a consistent grid; avoid arbitrary pixel adjustments.
- Keep section spacing consistent: **24px–40px** between major blocks.

## Components
- Reuse existing components before creating new ones.
- Components must keep layout and logic minimal and consistent across pages.
- Interactive states (hover, active, disabled) must be defined and included.
- Keep components responsive; avoid fixed widths unless necessary.

## Colors
- Always use predefined color tokens.
- Primary color is used only for major actions and branding elements.
- Neutral colors are used for backgrounds and general UI components.
- Avoid introducing new hues unless part of the approved token list.
- Maintain at least **WCAG AA** contrast level for text.

## Icons
- Icons must follow a consistent stroke or fill style across the project.
- Use icons only to support text, not replace it (unless universally recognized).
- Spacing between icon and label: **8px**.

## Navigation
- Keep navigation consistent across all pages.
- Highlight the current active state clearly.
- Avoid deep nesting; keep navigation simple and discoverable.

## Responsiveness
- Components must be responsive and adapt to smaller screens.
- Avoid horizontal scrolling; stack components vertically when necessary.
- Maintain tap-friendly area of **至少 44px** for mobile touch targets.

## Accessibility
- All interactive elements must有明顯的 hover、active、focus 狀態。
- Provide alt text for images and icons when needed.
- Do not rely on color alone to convey information.

