OpenAI
Production
activeemmerich@gruber-griesser.com- Password
Invariance / design system
Explore every component in one place. Change the appearance, try the controls, and keep scrolling.
13 sections · 4 styles · one shared systemTokens
General Sans — the site voice
Body text on paper. Weights 400 / 500 / 600.
ui-monospace — numerals 0123456789
The mono uppercase eyebrow label
Motion
Everything is gated on the .motion class — with prefers-reduced-motion content appears instantly.
up
Enters from below.
left
Enters from the left.
right
Enters from the right.
First pane — fades and lifts in.
Apps wrap their routed content once; every navigation gets this entrance.
Exported but not mounted here — it takes over document scrolling (Lenis) and belongs to immersive pages like the marketing site. Sections opt into soft snap points with data-snap.
Primitives
The run finished in session . — opened: —
Loaders
Ten monochrome, single-purpose loaders. Every one inherits its colour from currentColor, so it takes on the ink of whatever surface it sits on.
variant="ring"variant="sweep"variant="wedge"variant="fade-ring"variant="orbit-dots"variant="trail"variant="bars"variant="bounce"variant="squares"variant="equalizer"variant="wave"variant="pulse-bars"ringsweepwedgefade-ringorbit-dotstrailbarsbouncesquaresequalizerwavepulse-barsMarkdown
GFM tables, KaTeX, highlighted code, Mermaid, task lists — the pipeline every chat surface shares.
Kernwahrheit: Der GF hat keine Angst vor „20 Jahre alt" — er hat Angst vor vier
konkreten Risiken. Neutralisiere die, und das Alter wird irrelevant.
| Seine Angst | Dein Instrument | Kosten |
|---|---|---|
| „Was, wenn es leakt?" | Externer Penetrationstest + Security-Audit vor Go-live | 4.500 |
| „Was, wenn er verschwindet?" | Quellcode-Hinterlegung (Escrow) + Exit-Klausel | 900 |
| „Ärger mit dem Garante?" | Compliance-Paket: AVV + TOMs + Informativa (DE/IT) | 1.200 |
| „Wer haftet?" | Cyber-Versicherung + Haftungscap (Art. 1229 CC) | 2.100 |
Das Setup kostet einmalig $8.700, die Wartung $3.400 im Jahr — beides plain text, keine Formel.
Die Bruttomarge ist , und der Kundenwert über die Laufzeit:
def lifetime_value(arpu: float, margin: float, churn: float) -> float:
"""Kundenwert über die Laufzeit."""
if churn <= 0:
raise ValueError("churn muss positiv sein")
return (arpu * margin) / churn
Aufruf mit lifetime_value(89, 0.72, 0.04). Schritte:
Ohne laufende Referenz bleibt jedes Argument Theorie.
Zeugnissezählen nicht.
flowchart LR A[Erstgespräch] --> B{Bedenken?} B -->|Sicherheit| C[Pentest anbieten] B -->|Bus-Faktor| D[Escrow anbieten] C --> E[Angebot] D --> E
Details im Vertragsmuster.
Structure
PageHeader with a description line and right-aligned actions.
Active tab: overview
Section
The site's rhythm: hairline top rule, mono eyebrow, tight title, content below.
Cards
Credentials
Production
activeemmerich@gruber-griesser.cominvariance-prod
rotateclaude@157.173.115.116Empty state
Empty regions always say so — never blank space.
Data
Stat row
Part to whole
Table
| Application | Status | Region | Uptime | Requests |
|---|---|---|---|---|
| invariance-site | Healthy | eu-central | 42d | 128,034 |
| invariance-agents | Healthy | eu-central | 12d | 40,233 |
| invariance-brain | Degraded | eu-central | 3d | 8,112 |
| invariance-mail | Healthy | eu-central | 1d | 953 |
| legacy-gateway | Down | eu-west | — | 0 |
Table — sortable, with row state
| Last run | ||||
|---|---|---|---|---|
| Heartbeat | scout | ok | 4,380 | |
| Nightly digest | ops | ok | 212 | |
| Weekly brief | writer | ok | 18 | |
| Workspace backup | ops | failed | 31 |
Table — dense + empty
The dense table with zero rows renders this instead of a blank grid.
DescriptionList
Forms
Text controls
Choices
Switches
Submit row
Overlays & feedback
Modal & Drawer
Menu
Context menu
Right-click a row, or use its ⋯. The same Menu, opened with an anchor: a point or an element.
Command palette
Tooltip
Toast
Alert — all tones
Neutral
Info
Healthy
Heads up
Failed
Simulated
Auth
Try the shared auth flows with demo credentials.
One account. Every workspace.