# Zealous Collective — Developer guide

## Experience and content
Six pages: home, experience, membership/settings, FAQs, Find Your Rhythm inquiry, privacy. Adults20+. Message: Your own path. A shared rhythm. Individual plans in groups of no more than4. Source of public prices, locations and offer version: site-data.json at repository root; build.py generates HTML and config.js. Keep actual prices/terms in an approved versioned catalog, not ad hoc page overrides. Existing client contracts stay separate.

## Visual system
Forest#193B31, deep#112A23, ivory#F5F2E9, white#FFFDF7, sage#DCE1D3, ink#243D33, muted#5E6D62, gold#A68E64, rule#D4D8C9. Cormorant Garamond display and DM Sans body, with fallbacks.1280px maximum content width,56px desktop gutters,110px major sections. At1100px reduce gutters/gaps; at800px use20px gutters,82px menu header and stacked hero/services/pricing/form. Journey remains2columns, becomes1below380px. Buttons/fields at least50px. Actual HTML text rather than images of text. Respect reduced motion.

## Inquiry contract
Default inquiryEndpoint=null; in-memory preview only. Production: configure an approved HTTPS endpoint (prefer same origin/api/inquiries), implement server validation, staff task and confirmation, then publish accurate privacy terms. Do not put API secrets in the browser. No live booking, payments, CRM, staff interface or clinical record system is included.

POST JSON with Idempotency-Key UUID. Expected durable acceptance response:2xx with {"ok":true,"requestId":"server-id"}. Do not report success merely because a request arrived at a proxy. Return appropriate4xx/5xxon failure. The client keeps values in page memory, prevents concurrent submit and times out after20seconds. It retains the key for identical-payload retries and replaces it when content changes. A timeout may have completed server-side; same-key retry must reconcile that result and avoid duplicate records.

Payload: program(Semi Private),offerVersion,ageBand(20-49/50+),role(self/authorized),authorityConfirmed,goal(optional,max500),locationId(approved catalog ID/guidance),area(max100),days(array ofMon..Sat),flexible(boolean),timeWindow(morning/midday/afternoon/evening/flexible),startWindow(30days/1to3months/planning),contactName(max100),email(max254),contactMethod(email/call/text),phone(max40;required for call/text),contactConsent=true,timezone(America/Denver). At least2distinct valid days or flexible=true. An authorized contact requires authorityConfirmed; adult age eligibility and all permissions must be revalidated server-side. Reject malformed/oversized input, unknown enums and unapproved origins. Do not trust client price, age or role as final screening evidence. Rate/spam controls, access management, retention/deletion and audit logging are mandatory before launch. Keep free-text goals/contact details out of analytics and routine logs.

## Request versus reservation
Every preferred day/time is explicitly a preference. Do not generate fake open seats. Staff review matching/screening first. Use actual provider availability later, backed by server-side atomic capacity checks. backend/schema.sql in the source demonstrates a4seat ceiling with tested SQLite triggers, not a complete backend. See SCALE_PLAYBOOK.md for recurring-series reservations, overlap/credential checks, entitlements, payment reconciliation and opening rules.

## Production acceptance
Keyboard,screen reader,focus/errors,360/390/768/1024/1440px,200%zoom,reduced motion and image crop. Test age under20blocked;50+allowed; authorized-contact checkbox; duplicate day normalization; fewer than2days;flexible override;conditional phone;back/edit;Enter bypass;server error/nonJSON/timeout/retry/double submit. Test real CORS/CSRF/origin policy and response delivery. Static and reference capacity tests do not replace browser or service integration QA.

## Scope, prices and release
Proposed449USD/person/28days,8x50minutes,cap4. Entry45-minute private review and taught home routine; concise check-ins and incorporated reviews.13annual cycles. No clinical/massage/dietitian/home travel/unlimited messaging included. Confirm actual entity, contacts, providers, qualifications, insurance, venue rights, setting, area, tax and cancellation/renewal policies. Keep stagingnoindex until approved; set canonical URLs, redirects and sitemap for final domain. Remove developer link from public navigation if desired. No health or profit guarantee, fake testimonials or credential invention.

## Imagery
collective-studio.pngis AI-generated illustrative photography from the prior Semi Private concept: fictional adults and a coach in a refined studio, cream/olive clothing, natural daylight, individual exercise options, no logos. Not actual clients or premises. Production should approve or replace it with licensed genuine photography and permissions. Fonts load from Google Fonts; self-host approved assets if appropriate.
