# SIGNAL MOTION SYSTEM — BIRO 404
R404_BRAND_SIGNAL_R01 · 2026-08-19 · tokeni: `16_TOKENS/brand-tokens.*` · dokazi: `ident-*.mp4`, `reel-*.mp4`, `signal-demo.html`

## 0. Šta je SIGNAL
Jedna svetlosna čestica sa repom koja **traži, spaja, otkriva i aktivira**. Nije maskota, nije dekoracija, nije "glowing line" provučena kroz sve sekcije. To je fizički sistem sa jednim ponašanjem svuda: na sajtu, u videu, na social vizualima, na dokumentima (statična posledica).

Priča koju uvek priča: **NOT FOUND → SEARCHING → SIGNAL → CONNECTION → LOCK → FOUND.**

## 1. Stanja
| Stanje | HUD etiketa | Vizuelno | Kada |
|---|---|---|---|
| MRAK (OFF) | — | ništa; svet bez signala | sekcije bez događaja |
| SLAB (WEAK) | `SIGNAL 0XX%` | element u čeliku (#2e2d2a), treperi ±25% opacity, 7–23 Hz mešano | pre pronalaska; 404 pre paljenja |
| TRAŽI (SEARCHING) | `SIGNAL 0XX%` | čestica putuje po krivoj, rep 12–18%, iskre oko glave | tokom skrola/putovanja |
| SPAJA (CONNECTING) | `POVEZIVANJE` | grananje na više staza; staze prilaze ciljevima | više ciljeva (radovi, 3 usluge) |
| NAĐENO (FOUND) | `PRONAĐENO` | flash 180ms → cilj prelazi u zlatni gradijent + glow 650ms → settle 900ms; **bela tačka** ostaje u cilju | trenutak pronalaska |
| ZAKLJUČANO (LOCKED) | `100%` | idle puls ±5% na 2400ms; tačka stoji | trajno stanje posle pronalaska |

Prelazi su JEDNOSMERNI unutar jedne sekcije: nikad FOUND → WEAK (pronađeno se ne gasi dok je u viewportu).

## 2. Fizika
- **Putanja**: kubna Bezier kriva; ulazak van ekrana, cilj = tačno središte cilja (npr. centar nule).
- **Brzina**: ease-in-out po celoj stazi (`--ease-io`); nikad konstantna (deluje mehanički); dolazak na cilj = `--ease-out`.
- **Linija**: 1.5px desktop / 1.25px mobile; gradijent glava→rep = gold-hi → gold → gold-deep; rep fade → 0.
- **Glava**: 5–7px poluprečnik, gold-hi; iskre: ≤10 čestica, radius 2–26px oko glave.
- **Glow**: 3 sloja — core 1px gold-hi, mid blur 8px @ 55%, halo blur 32px @ 18% (`--sig-glow`).
- **Aktivacija cilja**: flash 180ms (blur 30px gold-hi @ ≤50%) → gradijent + glow 650ms ease-out → settle 900ms → puls.
- **Grananje**: staza se deli na max 3 kraka; svaki krak tanji (×0.75); spajanje obrnuto.
- **Gustina**: max 60 aktivnih čestica desktop / 24 mobile — performance budžet, ne estetska preporuka.

## 3. Z-dubina (ključno pravilo sistema)
Signal živi u 3 dubinska sloja oko sadržaja (`--z-behind: 5`, sadržaj `10`, `--z-front: 20`):
- **IZA blokova**: default. Signal nestaje iza neprozirnog panela i izlazi na drugoj ivici — to stvara osećaj prostora. Blokovi MORAJU imati neproziran bg (panel/bg-2).
- **ISPRED sadržaja**: samo u prolazu ≤ 900ms, opacity ≤ 0.25 dok je direktno preko teksta; NIKAD preko forme, cene ili CTA.
- **Ulazak u sliku**: signal "ulazi" u hero screenshot rada tako što se z-behind sakrije na ivici slike, a unutar slike se pali FOUND stanje (border/status etiketa) — iluzija prolaska kroz.
- Čitljivost > efekat. Ako se signal i tekst bore, signal gubi.

## 4. Skrol gramatika
- Skrol je **gorivo** signala: progres sekcije → progres staze (scrub, rAF lerp 0.16 — dokazano u SIGNAL home).
- Signal se NE vozi kroz ceo sajt neprekidno. Putuje unutar sekcije-domaćina, nestane (iza bloka / u mrak), pa se **ponovo pojavi** u sledećoj sekciji-domaćinu. Odsustvo = ritam.
- Kad rezultat sedne (FOUND), signal te sekcije STAJE — skrol dalje ne pomera pronađeno.
- Bez scroll-jackinga: nativni skrol, sticky pozornice max 360svh (dokazano), uvek preskočivo.
- Sekcije bez signala pokazuju **posledicu**: upaljen broj, zlatna linija ispod naslova, status etiketa — trag da je signal prošao.

## 5. Mobile gramatika (posebna režija, isti identitet)
- Kraće staze, vertikalne (odozdo ka cilju), bez širokih horizontalnih lukova.
- Manje čestica (≤24), jači pojedinačni događaji: flash i paljenje su glavni utisak, ne putovanje.
- Grananje max 2 kraka.
- HUD etikete manje (12px) ali prisutne — mono sloj je deo identiteta.
- Hero: režirani stage pristup iz SIGNAL home (copy gore u mraku, scena dole).

## 6. Reduced motion
`prefers-reduced-motion: reduce`:
- Bez putovanja, bez čestica, bez pulsa.
- Element odmah u NAĐENO stanju (statični zlatni gradijent + tačka), poster umesto videa.
- Dozvoljene samo opacity/state promene ≤ 250ms.

## 7. Registri (gde koji medij)
| Registar | Tehnika | Upotreba |
|---|---|---|
| CINEMATIC | video (hero 404 scena) | naslovna, najave, reel pozadine |
| GRAPHIC | canvas/CSS 2D signal (ovaj sistem) | sekcije sajta, idents, social |
| STATIC | posledica (upaljen element + tačka + linija) | dokumenta, print, fallback |
Isti tokeni boja/easinga u sva tri — zato se doživljavaju kao jedan svet.

## 8. Anti-patterns (zabranjeno)
1. Zlatna linija kroz svaku sekciju („spaghetti").
2. Signal preko teksta u opacity > 0.25 ili duže od prolaska.
3. Više od jednog aktivnog putovanja u viewportu.
4. Konstantna brzina / linearno putovanje (osim scrub-a vezanog za skrol).
5. FOUND koji se resetuje dok korisnik gleda.
6. Signal kao border/okvir dekoracija na karticama.
7. Puls jači od ±5% ili brži od 2400ms (postaje reklama, ne instrument).
8. Hacker/Matrix/cyberpunk efekti: rain, glitch, scanlines, neon zelena. NE.

## 9. Motion idents (proizvedeni u ovoj rundi)
- `ident-404-1080p.mp4` — 5s: SLAB → TRAŽI (scrub HUD %) → flash → NAĐENO → puls. Brand animacija.
- `ident-logo-1080p.mp4` — 3.5s: aperture nula: tačka doleti → prsten se pali → lockup fade-in. Opening/closing mark.
- `reel-intro-1080x1920.mp4` — 2s vertikalni hook: svetlo <0.9s (prva sekunda pravilo).
- `reel-outro-1080x1920.mp4` — 3s: lockup + linija koja se iscrtava + BIRO404.RS + CTA.
- `static-fallback-404-*.png` — E fallback (poster) za oba formata.
Sva četiri izvedena iz ISTOG koda fizike (`gen_idents.py`) — to je dokaz sistema, ne 4 animacije.
