website/static/hex-mark.svg
iris d3a55c5631 initial landing scaffold (hyperhive/website MVP)
Tracks hyperhive#502 — landing-only first cut. Static site
generator: Zola (Rust, fits the swarm's stack and the operator's
"sounds exciting" go-ahead on the issue thread).

## Structure

- `flake.nix` — `nix build .#website` produces the dist; `nix
  develop` drops into a shell with zola for `zola serve` live
  reload. No CI runner; the flake is the validation contract.
- `config.toml` — Zola config; base URL `hyperhive.darkest.space`
  per #502. Single-page landing — feeds / search index off.
- `content/_index.md` — landing copy. Editable without touching
  templates so non-engineers can refresh prose.
- `templates/base.html` + `templates/index.html` — base layout +
  landing-specific extension. og:tags + favicon wired through.
- `sass/main.scss` — theme. Catppuccin Mocha palette + the amber
  accent from the swarm's identity hex mark. Self-contained
  (no @import) so the file is reviewable in one place.
- `static/{favicon,hex-mark,hyperhive}.svg` — copies of the
  dashboard's `branding/hyperhive.svg` (hex motif). Used as
  favicon, hero inline, and og:image respectively.

## Theme

Monospace identity throughout — matches dashboard / agent
terminals so the website reads as part of the same family
rather than a separate marketing artifact. Banner glyphs
(`░▒▓█▓▒░`) on the title, dashed dividers, cyan/mauve/amber
accents, glow text-shadow on the hero. Subtle CSS-only pulse
on the hex motif (slow `rotate` on the SVG; speeds up on hover
for a small "noticed" cue).

## Three-column "what's inside"

`the swarm` / `the dashboard` / `the boundary` — quick
orientation for visitors who clicked through from a link
without context. Copy intentionally short; deep dives belong
in /docs (future, not in this MVP).

## Scope drop

Per mara on #502:
- no nav / blog / docs yet — landing only
- no screenshots in MVP, follow via issues in this repo
- public visibility

## Provenance

Scaffolded under `iris/website` because my agent forge token
doesn't carry org-admin to create repos under `hyperhive/`.
Manager confirmed their token doesn't either; mara will do the
org transfer once she gets to it. README documents this.
2026-05-27 10:08:56 +02:00

97 lines
4.9 KiB
XML

<svg width="300" height="300" viewBox="0 0 300 300" role="img" xmlns="http://www.w3.org/2000/svg">
<title>HyperHive</title>
<desc>HyperHive icon — hexagonal hive, amber on dark</desc>
<defs>
<clipPath id="clipH"><circle cx="150" cy="150" r="140"/></clipPath>
</defs>
<g clip-path="url(#clipH)">
<rect x="0" y="0" width="300" height="300" fill="#0a0600"/>
<g stroke="#ffb300" stroke-width="0.35" opacity="0.07">
<line x1="0" x2="300" y1="10" y2="10"/> <line x1="0" x2="300" y1="20" y2="20"/>
<line x1="0" x2="300" y1="30" y2="30"/> <line x1="0" x2="300" y1="40" y2="40"/>
<line x1="0" x2="300" y1="50" y2="50"/> <line x1="0" x2="300" y1="60" y2="60"/>
<line x1="0" x2="300" y1="70" y2="70"/> <line x1="0" x2="300" y1="80" y2="80"/>
<line x1="0" x2="300" y1="90" y2="90"/> <line x1="0" x2="300" y1="100" y2="100"/>
<line x1="0" x2="300" y1="110" y2="110"/> <line x1="0" x2="300" y1="120" y2="120"/>
<line x1="0" x2="300" y1="130" y2="130"/> <line x1="0" x2="300" y1="140" y2="140"/>
<line x1="0" x2="300" y1="150" y2="150"/> <line x1="0" x2="300" y1="160" y2="160"/>
<line x1="0" x2="300" y1="170" y2="170"/> <line x1="0" x2="300" y1="180" y2="180"/>
<line x1="0" x2="300" y1="190" y2="190"/> <line x1="0" x2="300" y1="200" y2="200"/>
<line x1="0" x2="300" y1="210" y2="210"/> <line x1="0" x2="300" y1="220" y2="220"/>
<line x1="0" x2="300" y1="230" y2="230"/> <line x1="0" x2="300" y1="240" y2="240"/>
<line x1="0" x2="300" y1="250" y2="250"/> <line x1="0" x2="300" y1="260" y2="260"/>
<line x1="0" x2="300" y1="270" y2="270"/> <line x1="0" x2="300" y1="280" y2="280"/>
</g>
<circle cx="150" cy="150" r="118" fill="none" stroke="#ffb300" stroke-width="1" opacity="0.4"/>
<circle cx="150" cy="150" r="104" fill="none" stroke="#ff8f00" stroke-width="0.5" opacity="0.25" stroke-dasharray="4 6"/>
<!-- RING 2 — 6 between-axis hexes, centered on (150,150) instead of (170,170) -->
<g fill="#0e0800" stroke="#ffb300" stroke-width="0.7" opacity="0.4">
<polygon points="254,105 241,127.5 215,127.5 202,105 215,82.5 241,82.5"/>
<polygon points="98,105 85,127.5 59,127.5 46,105 59,82.5 85,82.5"/>
<polygon points="176,60 163,82.5 137,82.5 124,60 137,37.5 163,37.5"/>
<polygon points="254,195 241,217.5 215,217.5 202,195 215,172.5 241,172.5"/>
<polygon points="98,195 85,217.5 59,217.5 46,195 59,172.5 85,172.5"/>
<polygon points="176,240 163,262.5 137,262.5 124,240 137,217.5 163,217.5"/>
</g>
<!-- RING 1 — 6 hexes -->
<g fill="#150c00" stroke="#ffb300" stroke-width="1.2" opacity="0.8">
<polygon points="228,150 215,172.5 189,172.5 176,150 189,127.5 215,127.5"/>
<polygon points="202,105 189,127.5 163,127.5 150,105 163,82.5 189,82.5"/>
<polygon points="150,105 137,127.5 111,127.5 98,105 111,82.5 137,82.5"/>
<polygon points="124,150 111,172.5 85,172.5 72,150 85,127.5 111,127.5"/>
<polygon points="150,195 137,217.5 111,217.5 98,195 111,172.5 137,172.5"/>
<polygon points="202,195 189,217.5 163,217.5 150,195 163,172.5 189,172.5"/>
</g>
<!-- CENTER hex -->
<polygon points="176,150 163,172.5 137,172.5 124,150 137,127.5 163,127.5"
fill="#1a0f00" stroke="#ffb300" stroke-width="1.8"/>
<!-- connections -->
<g stroke="#ffb300" stroke-width="1" opacity="0.6">
<line x1="176" y1="150" x2="202" y2="150"/>
<line x1="124" y1="150" x2="98" y2="150"/>
<line x1="163" y1="128" x2="176" y2="105"/>
<line x1="137" y1="128" x2="124" y2="105"/>
<line x1="163" y1="173" x2="176" y2="195"/>
<line x1="137" y1="173" x2="124" y2="195"/>
</g>
<!-- CENTER node -->
<circle cx="150" cy="150" r="10" fill="#ffb300" opacity="0.95"/>
<circle cx="150" cy="150" r="5" fill="#0a0600"/>
<!-- ring 1 nodes -->
<g fill="#ff8f00" opacity="0.9">
<circle cx="202" cy="150" r="6"/>
<circle cx="176" cy="105" r="6"/>
<circle cx="124" cy="105" r="6"/>
<circle cx="98" cy="150" r="6"/>
<circle cx="124" cy="195" r="6"/>
<circle cx="176" cy="195" r="6"/>
</g>
<g fill="#0a0600">
<circle cx="202" cy="150" r="2.5"/>
<circle cx="176" cy="105" r="2.5"/>
<circle cx="124" cy="105" r="2.5"/>
<circle cx="98" cy="150" r="2.5"/>
<circle cx="124" cy="195" r="2.5"/>
<circle cx="176" cy="195" r="2.5"/>
</g>
<rect x="0" y="143" width="300" height="2" fill="#ffb300" opacity="0.07"/>
</g>
<circle cx="150" cy="150" r="140" fill="none" stroke="#ffb300" stroke-width="2.5"/>
<circle cx="150" cy="150" r="145" fill="none" stroke="#ff8f00" stroke-width="0.5" opacity="0.4" stroke-dasharray="8 4"/>
<g stroke="#ffb300" stroke-width="1.5" fill="none" opacity="0.8">
<path d="M44,44 L20,44 L20,70"/>
<path d="M256,44 L280,44 L280,70"/>
<path d="M44,256 L20,256 L20,230"/>
<path d="M256,256 L280,256 L280,230"/>
</g>
</svg>