---
name: Ocean Beach Main Street Association
version: "alpha"
description: "Visual + editorial direction for Ocean Beach Main Street Association. Generated from the Muse reading and AI-derived voice; powers consistent rendering across the Doozer site, AI agents, and future automation."
colors:
  primary:   { value: "#0a3b2c" }
  secondary: { value: "#e8d8a8" }
  accent:    { value: "#c2362b" }
typography:
  body:
    fontFamily: "sans-serif"
    fontWeight: "regular"
  display:
    fontFamily: "sans-serif"
    displayStyle: "standard"
spacing:
  s1: "4px"
  s2: "8px"
  s3: "16px"
  s4: "24px"
  s5: "32px"
  s6: "48px"
rounded:
  card:   "14px"
  button: "999px"
  image:  "18px"
---

# Ocean Beach Main Street Association

## Overview

Ocean Beach's Neighborhood Champion Since Day One

Keeping OB's independent spirit alive on Bacon Street and beyond, one block at a time.

**Ocean Beach Main Street Association** is the organizing force behind one of San Diego's most fiercely individual commercial corridors. Bacon Street and Newport Avenue don't look like every other strip mall in Southern California by accident. That distinctiveness is defended, cultivated, and celebrated here, by locals who actually live and work in the neighborhood.

**Archetype:** `classic`  ·  **Voice:** `professional`  ·  **Pace:** `steady`  ·  **Density:** `medium`

## Colors

The palette is designed to reflect Ocean Beach Main Street Association's character — every token below is a deliberate direction, not extracted noise.

- **Primary** (`{colors.primary}`) — `#0a3b2c` — dominant identity color, used for headers, primary buttons, link emphasis, brand marks.
- **Secondary** (`{colors.secondary}`) — `#e8d8a8` — supporting tone, used for soft backgrounds, dividers, and quiet emphasis.
- **Accent** (`{colors.accent}`) — `#c2362b` — high-contrast attention color, used sparingly for CTAs, badges, and editorial moments.

## Typography

- **Body** (`{typography.body}`) — `sans-serif`, `regular`. Used for paragraph text, lists, captions.
- **Display** (`{typography.display}`) — `sans-serif` in `standard` mode. Used for hero headlines, section titles, and editorial pull-outs.

Set generous line-height (1.6+) for body. Display can run tight (-0.01em letter-spacing) for graphic impact.

## Layout

Default rendering uses the Doozer Muse v3 section pipeline. Sections are addressable units — each one selectable by variant (e.g. `about/alternating`, `services/alternating`, `events/upcoming-list`). The container pattern is:

- Outer: `.container` (max-width 1400px)
- Body prose: `.container-narrow` (max-width 900px) — readability is non-negotiable
- Mobile collapse at 880px and 640px breakpoints

## Shapes

- Cards: `{rounded.card}` (14px) — gentle, signals warmth without softness
- Buttons: `{rounded.button}` (999px / pill) — directional, never timid
- Images: `{rounded.image}` (18px) — generous, frames content as artifact

## Components

Doozer ships a fixed component vocabulary that every business site shares. Each component honors the tokens above. Operators don't choose components — the Muse v3 pipeline composes them per section.

- **Hero** — full-bleed photo, brand-tinted overlay, trust pill (rating + today's hours), large display headline
- **About / Services** — `classic` text-only OR `alternating` (image+text rhythm). Smart photo selection via vision metadata.
- **Why Choose Us** — modern numbered cards (01 / 02 / 03), or icon cards, or photo cards — variant per Muse
- **Events** (`upcoming-list`) — chronological event list with affiliate-wrapped tickets
- **Reviews** — letter-on-gradient avatars (or Google profile photos when available), show-more for long reviews
- **FAQ** — native `<details>` accordion, brand-tinted accent on open
- **Hours of Operation** — live open/closed banner + weekly grid with today highlighted
- **Contact** — embedded map + action cards + Save-to-Contacts vCard + Share button
- **Network footer** — every page declares its position in the Doozer / BerrySmart network

## Do's and Don'ts

### Do
- Treat color tokens as inviolable — `{colors.primary}` is **the** brand color, not a starting suggestion.
- Pair `classic` archetype with the matching decorative hints: (none specified).
- Use `{colors.accent}` only for high-intent surfaces (CTAs, urgency, editorial pull-outs). It should feel rare.
- Preserve readability — body line-length never exceeds ~75 characters.
- Honor the `professional` voice in every line of generated copy. The Muse defines this; don't drift.

### Don't
- Don't introduce colors not in the palette. If a new color is needed, add it via the Muse, not ad-hoc.
- Don't replace Doozer components with custom HTML — the pipeline handles structural variants; new structures belong as variants under `includes/sections/`.
- Don't run banner ads, popups, or interstitials. Per the Mission Charter, affiliate revenue is a side-effect of usefulness, never the primary surface.
- Don't generate content that contradicts verified facts (address, hours, phone, rating). The AI generates voice + emphasis; verified data is sacred.

---

*Generated by [Doozer](https://doozer.work) from the active Muse for `ocean-beach-main-street-association-san-diego-ca.doozer.site`. Format: [Google Labs DESIGN.md](https://github.com/google-labs-code/design.md) (alpha). Refreshes when the Muse, AI content, or brand colors change.*
