# Asset Architecture

Source assets live under `assets/`. Generated copies under `output/` should be treated as build output.

## Styles

- `assets/styles/themes/`: design tokens and theme variables.
- `assets/styles/base/`: global HTML element defaults.
- `assets/styles/layout/`: site shell and page layout primitives.
- `assets/styles/components/`: reusable component styles.
- `assets/styles/pages/`: page-specific styles.
- `assets/styles/features/`: optional feature styles.
- `assets/styles/utilities/`: responsive and utility rules.
- `assets/styles/vendor/`: third-party CSS copied into the site.

The legacy top-level CSS files are compatibility manifests that import from these folders. Prefer editing the modular files.

## Scripts

- `assets/scripts/core/`: framework-free domain logic.
- `assets/scripts/application/`: use-case orchestration.
- `assets/scripts/adapters/`: browser, storage, network, and external-service adapters.
- `assets/scripts/ui/`: DOM presentation behaviour.
- `assets/scripts/pages/`: page-specific applications.
- `assets/scripts/features/`: optional site features.
- `assets/scripts/vendor/`: third-party libraries copied into the site.

The Emacs build manifest in `lisp/build-assets.el` loads modular script paths directly. Top-level script files remain as legacy loaders for older hand-written references.

## Boundaries

Keep core logic independent from the DOM, storage, network, and generated Org HTML. UI modules may read and write the DOM. Adapters isolate browser APIs and external services. Page scripts should compose these pieces without becoming shared dependencies.

Avatar image support has been removed. Do not add files under `assets/avatars/` or references to `/assets/avatars/`.
