# Favicons & web manifest — setup notes

Portable notes (portable — reuse on any site).

## 1. The icon files (realfavicongenerator.net output)
Drop this set in a static dir. Scrybe uses `/assets/icons/` — **adjust the paths below to wherever you put them**:
- `favicon.ico` — legacy / Windows tab
- `favicon.svg` — modern scalable (dark-mode capable)
- `favicon-96x96.png` — PNG fallback
- `apple-touch-icon.png` — 180×180, iOS home screen
- `web-app-manifest-192x192.png`, `web-app-manifest-512x512.png` — Android / PWA (referenced by the manifest, **not** by `<head>`)

## 2. The `<head>` tags
```html
<link rel="icon" type="image/png" href="/assets/icons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="/assets/icons/favicon.svg">
<link rel="shortcut icon" href="/assets/icons/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#0a0a0f">
```

## 3. Fix the generated `site.webmanifest` — its defaults are WRONG
The zip ships `"name": "MyWebSite"`, **root** icon paths (`/web-app-manifest-…`), and a **white** theme.
Fix all three: real name, icon `src` paths that match where you put the PNGs, and your brand color
(not `#ffffff`). Serve it at **`/site.webmanifest`** (site root):
```json
{
  "name": "Cybercussion",
  "short_name": "Cybercussion",
  "icons": [
    { "src": "/assets/icons/web-app-manifest-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" },
    { "src": "/assets/icons/web-app-manifest-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
  ],
  "theme_color": "#0a0a0f",
  "background_color": "#0a0a0f",
  "display": "standalone"
}
```

## 4. Gotchas
- Manifest icon `src` are **absolute from the site root** and must match where the PNGs actually serve
  (we use `/assets/icons/…`, so the manifest says `/assets/icons/…`, NOT `/…`).
- `theme_color` (manifest) should equal `<meta name="theme-color">`.
- `purpose: "maskable"` is right for the `web-app-manifest-*` PNGs (full-bleed, safe-zone); don't put
  it on icons that have transparent padding (they'd get cropped).
- Delete the placeholder `site.webmanifest` that ships in the icon zip — generate/author your own.

## In Scrybe specifically
- `<head>` tags live in `templates/layout.js`.
- The manifest is **generated from `site.config.json`** by `templates/site/webmanifest.js` → `dist/site.webmanifest`.
  So per-site you only set `title` + `themeColor` in config and the manifest follows — no hand-editing.
- The realfavicongenerator `site.webmanifest` from the zip was **removed** (superseded by the generated one).
