# BRIK.LOL — Product and Mechanics Brief

BRIK.LOL is a live, shared internet experiment built around one global tower of identical digital plastic blocks. Visitors can inspect the same tower, vote for the block they think should be pulled next, and optionally buy or claim a pull.

## The loop

1. A new tower begins with a complete stack and the first paid pull costs **$1**.
2. A player picks any standing BRIK visible on the front-facing tower.
3. A paid player customizes the BRIK with a color, display name, logo, website and optional social profiles.
4. In production, Stripe Checkout collects the payment. In Test mode, the exact same game flow is simulated without charging.
5. The server calculates the move against the current structural state and the tower's pre-committed fairness seed.
6. If the tower survives, that pulled BRIK becomes a permanent historical branded record.
7. If the tower collapses, the pull is recorded as the Breaker, the tower enters the Graveyard, its fairness secret is revealed, and a fresh tower is created. The Breaker becomes the Founder associated with the next tower.
8. The first paid pull of the new tower returns to **$1**.

## Pricing

The paid price is deterministic: `(number of finalized paid/test pulls in the current tower + 1) × $1`. Production revenue only includes actual Stripe-paid pulls. Free pulls never increase the next paid price.

## Free BRIKs

By default, each 5 finalized paid/test pulls unlocks one global Free BRIK. The administrator can also trigger small Free Drops. A visitor may claim at most one finalized free pull per tower. Free pulls use the same tower outcome engine but contain only a public name and color — no logo or outbound commercial link.

## Voting

Voting is free. Each browser/visitor token has one active vote per tower and can move that vote to another standing BRIK. Vote counts are public and have no direct effect on the physics.

## Tower physics / fairness

All pieces are the same logical size and weight. Branding never changes physics. The V1 outcome engine is intentionally server-authoritative so the same move cannot fall on one phone and survive on another. Risk is derived from block height, position, missing neighbours, nearby holes, accumulated imbalance and the number of blocks already removed. A small deterministic uncertainty remains.

When each tower is born, BRIK generates a random 256-bit secret and publicly stores only `SHA-256(secret)`. The secret is used to derive deterministic per-pull rolls. It is revealed only after the tower collapses. The archived tower also records the physics version and risk multiplier.

The browser animation is presentation only; it does not decide the result.

## Paid BRIK content

- display name
- chosen hex color
- HTTPS/HTTP brand URL
- optional X/Twitter profile
- optional Instagram profile
- optional Facebook profile
- optional additional social URL
- logo image

Uploaded logos are limited by byte size and image dimensions, decoded, resized and re-encoded locally as AVIF. The original upload is discarded; metadata such as EXIF is not retained. SVG is intentionally rejected.

## Social loop

Every finalized move has a permanent public `/play.php?id=...` page. A player can share the result to X/Twitter. Collapse shares use the stronger “I broke the global tower” message; survival shares say the tower is still standing. The homepage also supports the native Web Share API with X as a fallback.

## Likes and private dislikes

The homepage exposes a Like button and the total public like count. The Dislike control is presented as private feedback: it opens a responsive modal with an optional text field. Dislike totals and messages are visible only to authenticated administrators.

## Administration

The admin panel includes: site mode (Test / Production / Paused), pause message, announcements, free-pull cadence, public voting toggle, manual Free Drops, next-tower level count, next-tower risk multiplier, pull/branding moderation, Stripe refund action, tower history, private dislike feedback, test reset, audit logging and optional TOTP/IP allow-list protection. Stripe secrets are never editable in the browser.

## Infrastructure

V1 is PHP + MySQL with vanilla JavaScript/CSS and no persistent application daemon. It is designed to run as a normal CloudPanel PHP site behind Nginx with the document root set to `/public`. Live state is serialized to a small local JSON file and clients poll adaptively; this avoids introducing Redis, Node, a WebSocket service or additional open ports on a VPS that already hosts production services.

## SEO and indexing

Public pages use canonical URLs, title/description metadata, Open Graph/Twitter cards, robots directives, sitemap.xml, semantic HTML and structured data. Admin/API/live/webhook resources are excluded from indexing. No third-party analytics or tracking SDK ships in V1.

## No prize / advertising nature

A paid pull buys a permanent participation/branding record in the project. BRIK does not offer a cash or redeemable prize and does not promise traffic, clicks, impressions, investment value or search ranking.
