---
# quotesdb-wlpv
title: Write src/bin/ui/style.css — full stylesheet for all UI pages and components
status: completed
type: task
priority: normal
created_at: 2026-03-10T23:32:05Z
updated_at: 2026-03-10T23:32:12Z
blocked_by:
- quotesdb-wvb8
---
CSS approach resolved in triage 5e3e37: **plain CSS** — a single `src/bin/ui/style.css` file linked from `index.html` via ``.
All UI component tickets use BEM-style class names defined in this file. No CSS-in-Rust crates, no CDN Tailwind.
Write `src/bin/ui/style.css` covering all pages and components in the Yew UI.
BEM-style semantic class names. Blocks and elements use lowercase hyphenated names.
| Component / Page | Block class | Notable element classes |
|---|---|---|
| Global | `body`, `main`, `nav` | — |
| Navigation | `nav` | `nav__link`, `nav__brand` |
| QuoteCard | `quote-card` | `quote-card__text`, `quote-card__author`, `quote-card__meta`, `quote-card__tags`, `quote-card__tag` |
| Home page | `page-home` | `page-home__random`, `page-home__cta` |
| Browse page | `page-browse` | `page-browse__filters`, `page-browse__list` |
| Quote detail page | `page-quote` | `page-quote__actions` |
| Author page | `page-author` | `page-author__header` |
| Submit page | `page-submit` | `page-submit__form`, `page-submit__success` |
| Pagination | `pagination` | `pagination__btn`, `pagination__info` |
| Tag filter | `tag-filter` | `tag-filter__input`, `tag-filter__list`, `tag-filter__tag` |
| Auth modal | `auth-modal` | `auth-modal__overlay`, `auth-modal__dialog`, `auth-modal__input`, `auth-modal__actions` |
| Error display | `error-display` | `error-display__message` |
| Form elements | `form` | `form__field`, `form__label`, `form__input`, `form__textarea`, `form__error` |
| Buttons | `btn` | `btn--primary`, `btn--secondary`, `btn--danger` |
| Auth code reveal | `auth-reveal` | `auth-reveal__code`, `auth-reveal__note` |
| Loading | `loading` | — |
| Empty state | `empty-state` | `empty-state__message` |
- Clean, minimal typography-focused design appropriate for a quotes site.
- Readable body font (system-ui or serif stack for quote text).
- Max-width container centered on page: ~720px for readability.
- Accessible colour contrast (WCAG AA minimum).
- Responsive: readable on mobile without horizontal scroll.
- No external font imports — use system fonts.
- Light theme only (no dark mode required).
In Yew components, use class names as string literals:
```rust
html! {
{ "e.text }
{ "e.author }
}
```
For conditional classes use the `classes!` macro:
```rust
html! {
}
```
After writing the CSS, verify it is picked up by Trunk:
```sh
trunk build
```
Inspect the generated `dist/` directory to confirm the CSS file is bundled.
`style(quotesdb): add UI stylesheet with BEM component classes`