Box Virtual
Brandbook

German Cargo. Simulated on vAMSYS.

BOX Virtual ist die virtuelle AeroLogic — Cargo-Gelb, Slate und die Boeing 777F. Dieses Brandbook definiert Logo, Farben, Typografie und alle Anwendungen der Marke.

Stand August 2026Gilt für alle KanäleFamilie LH · LX · BOX
Kapitel 01

Die Marke

BOX Virtual simuliert AeroLogic — das Joint Venture von DHL Express und Lufthansa Cargo. Eine Flotte, ein Muster, eine Mission: Fracht, pünktlich, weltweit. Die Marke ist so klar wie ihr Vorbild — hell, technisch, auf den Punkt.

BOX / 3SICAO / IATA — Funkrufzeichen „German Cargo“
28× 777Feine Flotte, ein Muster — Boeing 777 Freighter
LEJ + FRAHeimatbasis Leipzig/Halle · Zweitbasis Frankfurt
seit 2009Vorbild fliegt seit Juni 2009

Tonalität

Präzise, ruhig, operativ. Kurze Sätze, Fakten vor Adjektiven. Cargo-Vokabular ist willkommen (Manifest, Rotation, Nightshift), aber nie aufgesetzt. Englisch für Claims und Headlines, Deutsch oder Englisch im Fließtext — konsistent pro Kanal.

Zwei Register. Das oben gilt für Headlines auf den Grafiken und für Texte auf der Website. Social-Captions sind kurz, direkt und offen begeistert — echte Freude am Hobby, Fragen ans Publikum, die Screenshots der Community im Mittelpunkt. Operativ im Bild, menschlich im Text. Verbindliche Referenz sind die captionExamples in design-tokens/box.json.

Abgrenzung

BOX Virtual ist ein Fan-Projekt und nicht mit AeroLogic affiliiert — der Hinweis steht in jedem Footer und jedem Profil. Innerhalb der Familie ist BOX die Gelb-Marke: LH trägt Navy, LX trägt Rot, BOX trägt Cargo-Gelb.

Kapitel 03

Farben

Cargo-Gelb auf viel Weiß — dazu Slate aus der Wortmarke und Tarmac für die Nacht. Klick kopiert den Hex-Wert.

Cargo Yellow#FFCC00
Slate#3E474B
Ink#212529
Tarmac#14181B
Fog#F2F4F5
Line#E2E6E8
Muted#6A767C
Tarmac 2#1C2226

Do

  • Auf Gelb steht immer Ink — nie Weiß (Kontrast 1,6:1)
  • Primär-Button: Ink-Fläche, gelber Text · Sekundär: Gelb-Fläche, Ink-Text
  • Ein dominantes Gelb-Element pro Ansicht

Don't

  • Kein Blau, kein Rot — das gehört LH und LX
  • Gelb nie als Fließtextfarbe auf Weiß
  • Slate nicht als UI-Grau missbrauchen — dafür Fog/Line/Muted
Kapitel 04

Typografie

Eine Schrift, alle Gewichte: Mulish — dieselbe Schrift wie beim Vorbild, frei lizenziert (SIL OFL 1.1) und deshalb komplett im Repo. Hierarchie entsteht über Gewicht, Größe und Versalien.

Always on time,
every time.
Headline · Mulish 800 · UPPERCASE · Tracking 0.02em · Zeilenhöhe 1.05
Eine Flotte, ein Muster
Sektions-Headline · Mulish 800 · Mixed Case
Sub-Headline und Labels in Mulish 600
Sub · Mulish 600 · Slate
Fließtext in Mulish 400, nie unter 15 px, Zeilenhöhe 1.65. Zahlen und Codes (BOX, 3S, D-AALA) profitieren von den offenen Formen der Mulish.
Body · Mulish 400 · Ink

Regeln

  • Große Headlines (Hero, Cover, Kapitel): immer UPPERCASE, 800
  • Keine zweite Schrift, keine Lufthansa-Fonts — BOX steht typografisch auf eigenen Füßen
  • Labels/Eyebrows: 800, Versalien, Tracking 0.22–0.34em
  • Kein Google-Fonts-CDN — Mulish immer selbst hosten (DSGVO)
Kapitel 05

Grafikelemente

Fünf Elemente, ein Winkel: Alles Diagonale im System steht bei 12° — dem Winkel der Wortmarke.

1 · Der Slash — Marker vor Headlines, Aufzählungen, als Staffel (100 % / 45 % / 18 % Deckkraft)
Frankfurt Friday Freight
2 · Cargo-Band — gelbes 12°-Band als Titelträger auf Fotos, läuft links aus dem Bild. Bewusst schmal: Bauhöhe ≤ 15 % der Bildhöhe — das Foto ist der Held, das Band trägt nur den Titel.
Nightshift
3 · ULD-Grid — feines Raster (72 px, Line-Dark) auf Tarmac-Flächen, Deckkraft ≤ 35 %
BOX · German CargoMTOW 347 t
4 · Stencil-Tags — Fracht-Labels: 1,5 px Rahmen, 800, Versalien, Tracking 0.22em
BOX Tail
5 · Der Tail — das Original-Tail der echten BOX-Livery (tail_box.png), unverändert einsetzen
Tail-Wasserzeichen — Höhe 68 % der Bildhöhe, Deckkraft 7 %, unten rechts, ~45 % laufen aus dem Bild
Kapitel 06

Bildsprache

Cargo hat die besseren Bilder: Tarmac bei Nacht, Hochlader an der 777F, ULDs im Regen. Keine Kabinen, keine Passagiere — Operation statt Reise.

Motive

777F am Hochlader, Nightshift-Szenen in LEJ, Rollfeld-Perspektiven, Simulator-Screenshots in Golden Hour oder Nacht. Immer mit Kontext — Fracht, Gerät, Bewegung.

Duotone

Für Dark-Templates: Foto in Slate-Duotone (Grauwert → #14181B bis #98A4AA), darüber ein gelbes Element. Nie gelbes Duotone — Gelb bleibt Grafik, nicht Foto.

Screenshots

Simulator-Shots ohne HUD/UI, Horizont gerade, Motiv im rechten Drittel (links liegt Text). Export ≥ 1920 px Breite.

777F im Anflug
Beladung am Tag
Nightshift
Kapitel 07

Social & Event-Templates

Zwei definierte Template-Stile — Slash für Event-Banner und Nightshift für dunkle Posts — plus Focus Airport und Monats-Cover. Alle Vorlagen in echten Pixeln: ../social-templates/templates.html.

Event-Banner · SlashFoto voll, gelbe 12°-Bänder als Titelträger links — jedes Band exakt so lang wie sein Text — Partner-Leiste (vAMSYS, VATSIM, SimBrief) unten. Banner 1800×1200 · Feed 1080×1350 · Story 1080×1920.
Post · NightshiftTarmac-Dunkel mit ULD-Grid, Foto in Slate-Duotone, große gelbe UPPERCASE-Headline. Feed & Story.
Templates in Originalgröße öffnen

Absender-Regeln

  • Profilbild = Square Dark — auf allen Plattformen identisch
  • Jedes Template trägt Logo (weiß) + „box-virtual.com“
  • Partner-Leiste (vAMSYS, VATSIM) nur auf Event-Bannern

Formate

  • Event-Banner 1800×1200 (Discord/Forum)
  • Feed 1080×1350 (IG/FB) · Story/Reel 1080×1920
  • Text-Sicherheitszone Story: oben 250 px, unten 420 px frei

Focus Airport — finale Vorlage

Foto als Held mit den Nightshift-Overlays: umrandetes „FOCUS AIRPORT“, Stadtname in Gelb, ICAO und Monat. Kein Tail — Absender ist das weiße Logo. Pixel-Board: ../social-templates/templates.html.

Focus Airport · Event-Banner1800×1200 — Stadt 140 px, Eyebrow 26 px, Meta 34 px, Logo 84 px, Scrim 5°-Gradient.
Focus Airport · Feed1080×1350 — Stadt 120 px, Eyebrow 24 px, Meta 32 px, Logo 78 px, Scrim 8°-Gradient.

Monats-Cover (Deckblatt)

Gleiche Vorlage wie bei LH und LX, für BOX bewusst reduziert: flacher Tarmac mit ULD-Grid, „FOCUS AIRPORT“ als Wortbild, Monats-Chip und der Swipe-Hinweis im gelben Stencil-Rahmen.

Monats-Cover 1080×1350Deckblatt der monatlichen Focus-Airport-Serie — fester Hintergrund, nur der Monat wechselt.
EbenePosition (1080×1350)Spezifikation
Hintergrundvolle Flächeflacher Tarmac #14181B — kein Foto, kein Motiv
ULD-Gridvolle Fläche90-px-Raster, rgba(255,255,255,.05) — über dem Motiv, unter den Texten
Balken + Eyebrow „BOX VIRTUAL“x72 y72 / y112gelbe Bar 180×18 (skewX −12°), Mulish 800 · 40 px · Versalien · Weiß
„FOCUS“x62, Oberkante y190, Versalhöhe 131 pxMulish 800, gefüllt Weiß — sitzt unter dem Eyebrow, keine Überlappung
„AIRPORT“Spalte x401–469, y372–1058Mulish 300, Weiß, aufrecht vertikal gestapelt, ≈ 98 px pro Buchstabe
{MON}{YY}-Chiprechte Kante x1053, Unterkante y1161Mulish 800 ~100 px, Ink auf #FFCC00, Innenabstand 32 px, skewX −12°
Swipe-Hinweisx72, Unterkante y1278„SWIPE →→→“ im Stencil-Rahmen: 3 px Gelb, Mulish 800 · 30 px · Tracking .24em, Padding 16×30

Reel / Story (9:16) — bewegt

Dasselbe Nightshift-Design, aber getaktet — damit das Overlay in Story oder Reel auf einem Videoclip liegen kann. Der schräge Tarmac-Keil mit gelber Schnittkante ist die bewegte Fassung der Slash-Geste; darunter das ULD-Grid, darüber das weiße Logo. Kein Tail — BOX hat keinen Tail als Absender. Die Loop-Vorschau spielt exakt die Timeline aus der Tabelle.

Focus Airport
EDDF July 2026
Frankfurt
Loop-VorschauSafe Zones eingeblendet: oben 250 px, unten 420 px.
ElementZeit (von 6 s)Effekt
Hintergrund0,0 → 6,0 sKen-Burns-Push + Reveal, Drift-Richtung je Slide anders
Tarmac-Keil0,0 → 0,5 seinblenden — 12°-Schnitt mit gelber Kante, Ansatz bei 50 % Höhe
Weißes Logo (oben links)0,4 → 1,6 seinblenden, bleibt — der Absender. Kein Tail.
ULD-Grid0,6 → 2,8 s6×4-Raster steigt auf und blendet ein; einzelne Zellen gelb gefüllt
Strich (Signature)0,24 → 1,0 sschwebt von links ein, leichtes Überschwingen
„FOCUS AIRPORT“0,6 → 1,8 sTypewriter — Zeichen einzeln, blinkender Cursor
ICAO-Chip1,2 → 3,1 sChip ploppt (Gelb, Ink-Text); 4 Zeichen als Split-Flap
Monat2,0 → 2,9 sTracking-In — Sperrsatz zieht sich zusammen, Blur → scharf
City1,6 → 2,8 sMask-Up-Reveal — Auto-Fit-Text in Cargo-Gelb, ExtraBold
Hold2,8 → 4,8 salles hält lesbar
Exit4,8 → 5,3 sFade + Aufstieg
Swipe5,2 → 6,0 sHintergrund swiped seitlich, Punkte-Pille rückt vor
Outro-Wipe
nur letzter Slide
5,2 → 6,0 sstatt Swipe: der schräge Tarmac-Keil fährt hoch über den letzten Airport, die gelbe Schnittkante läuft voraus
Endbild+0,0 → +2,2 sTarmac + ULD-Grid, BOXV_Logo_White zentriert, darunter ein Strich im 12°-Slash-Winkel. Entfällt, wenn der Outro-Clip outros/box.mp4 vorliegt — der hat Vorrang

Zwei Modi: Focus-Airport-Karussell (ein Slide pro Stadt des Monats) und Story-Overlay (Kategorie + Headline, max. 2 Zeilen). Blur-Extend verankert das Foto oben, damit die untere Zone als Tarmac-Textebene frei bleibt. Export: „● Aufnahme“ schreibt ein .webm; das Social Studio rendert dieselbe Datei headless zu MP4.

Reel-Vorlage öffnen

Platzhalter & Generator

VariableBeispielRegel
{CITY}HONG KONGVersalien, Cargo-Gelb, Mulish 800. Auto-Fit: Breite ≤ Canvas − 2×Rand
{ICAO}VHHH4 Zeichen, Versalien — zusammen mit dem Monat in der Meta-Zeile (Weiß)
{MONTH} {YEAR}JULY 2026englisch, Versalien; auf dem Cover als Chip {MON}{YY} (JUL26)
{PHOTO}min. 2400 px, Motiv-Fokus mittig (übersteht 3:2- und 4:5-Crop)
{TITLE} / {SUB}Frankfurt Friday Freight / Extra Bonus Points!Event-Banner-Bänder: Titel Gelb/Ink, Zusatz Ink/Gelb

Export: PNG, sRGB. Canvas: Event-Banner 1800×1200 (3:2), Feed 1080×1350 (4:5), Story 1080×1920.

Kurzfassung für den Generator

Event-Banner (Slash) = {PHOTO} + 12°-Bänder (Web/Titel/Info/Zusatz, jedes so lang wie sein Text) + Partner-Leiste (vAMSYS · VATSIM · SimBrief) + Logo weiß. · Focus Airport = {PHOTO} + Scrim + Stencil-Eyebrow „FOCUS AIRPORT“ + {CITY} in Gelb + {ICAO} · {MONTH} {YEAR} + Logo weiß — kein Tail. · Monats-Cover = Tarmac + ULD-Grid + FOCUS/AIRPORT-Wortbild + {MON}{YY}-Chip (Ink auf Gelb, skew −12°) + SWIPE-Rahmen. Absender ist immer das weiße BoxVirtual-Logo.

Focus-Generator — Referenzcode

FOCUS_AIRPORT = {
  "brand": "boxv", "design": "nightshift-photo",
  "colors": { "accent": "#FFCC00", "on_accent": "#212529", "scrim_base": [20, 24, 27], "text": "#FFFFFF" },
  "fonts":  { "head": "Mulish-800", "transform": "uppercase" },
  "canvas": { "feed": [1080, 1350], "banner": [1800, 1200] },
  "layers": [
    { "id": "photo",   "fit": "cover", "min_width": 2400, "focus": "center" },
    { "id": "scrim",   "angle_deg": { "feed": 8, "banner": 5 },
      "gradient": [[0.12, 0.94], [0.52, 0.35], [0.78, 0]] },                  # rgba(scrim_base, a)
    { "id": "logo",    "asset": "BOXV_Logo_White.png", "feed": [70, 70, 78], "banner": [84, 76, 84] },
    { "id": "eyebrow", "text": "FOCUS AIRPORT", "style": "stencil",
      "border": "3px accent", "size": { "feed": 24, "banner": 26 },
      "pad": { "feed": [12, 26], "banner": [12, 28] }, "tracking": 0.26, "fill": "accent" },
    { "id": "city",    "text": "{CITY}", "size": { "feed": 120, "banner": 140 },
      "fill": "accent", "line_height": 1.0, "transform": "uppercase" },
    { "id": "meta",    "text": "{ICAO} · {MONTH} {YEAR}", "size": { "feed": 32, "banner": 34 },
      "fill": "#FFFFFF", "tracking": 0.20, "margin_top": { "feed": 26, "banner": 24 } },
    { "id": "block",   "note": "Eyebrow/City/Meta als Block unten links — feed x70/b96, banner x84/b84. KEIN Tail." }
  ],
  "export": { "format": "png", "colorspace": "sRGB" }
}

Discord — ein Bild, ein Text

Discord ist nicht Instagram. Anhänge werden in der Timeline auf rund 550 px skaliert, und Hochformat wird im Raster beschnitten — vom 4:5-Cover blieb nur „AIRPORT" senkrecht stehen, und zehn Briefmarken tippt niemand einzeln an. Der Channel bekommt deshalb ein eigenes Format: eine Übersichtsgrafik im Querformat, 1600 × 1000.

WoDer Discord-Channel der VA, gepostet vom VA-Bot — der Ziel-Channel steht einmalig in den Einstellungen des Event Studios.
WannAutomatisch am Vorabend des Monats um 20:00, dazu der Knopf „③ Push → Discord" für den sofortigen, beliebig wiederholbaren Push (Test oder nach einer Änderung).
AufbauKopfzeile mit Monat und den Landesflaggen in der Reihenfolge der Airports (feste 48 × 32-Box, alle gleich groß), Stadtfotos als Kacheln mit dem Chip im 12°-Slash, Radius 3 px für den ICAO, die drei Slashes unten rechts als Absender-Zeichen, Website unten links.
Variantenmosaic (Fotokacheln, Standard) · board (reine Liste) · split (Markenfläche plus Liste). Je Deployment umstellbar.

Der Text ist für den Channel geschrieben, nicht aus Instagram kopiert: Überschrift, je Airport eine Zeile mit ICAO, Stadt und den Focus-Punkten sowie einer Begründung aus vier bis acht Wörtern. Diese Begründungen schreibt Mistral in einem Aufruf für den ganzen Monat — so unterscheiden sie sich voneinander, statt neunmal derselbe Satzbau zu sein; ICAO, Stadt, Punkte und Struktur bleiben in der Vorlage, das Modell kann also keine Fakten verbiegen. Ohne API-Key oder bei unbrauchbarer Antwort bleibt die schlichte Liste — der Beitrag geht immer raus. Keine Hashtags (im Channel wirkungslos), und der Link steht in spitzen Klammern, damit Discord keine zweite Vorschaukarte unter das Bild hängt.

## ✈️  Focus Airports · September 2026

**6 destinations**, bonus points on every flight — the whole month.

**EDDH** Hamburg · 100 P — river approach right past the Elbe bridges
**LPPT** Lisbon · 100 P — city rooftops and the Tejo on final
**KORD** Chicago · 250 P — dense parallel operations and brisk ATC

Fly to or from any of them and collect. Where are you heading first? 🛫
<https://box-virtual.com>

Profilbild & Social-Media-Assets

Profilbilder sind im Alltag winzig — 32 px als Discord-Icon, 48 px in der X-Timeline. Cargo-Gelb trägt auch in dieser Größe. Ein Bild für alle Kanäle: Discord, Instagram, Facebook, TikTok, YouTube, X.

Profilbild — „one fits all"

BOX Virtual Profilbild
150 px · 80 px · 44 px · und eckig. Die Wortmarke bleibt bis zur Icon-Größe erkennbar.
Datei: BOXV_Avatar.png — volle Wortmarke auf Cargo-Gelb (2000×2000). Gelb ist das lauteste Signal, das BOX hat; in Icon-Größe erkennt man den Kanal daran, nicht an der Schrift.
PlattformAnzeige (⌀)FormUpload
Discord (Server-Icon & Profil)48–100 pxKreis1000×1000 PNG
Instagram320 px (Feed 32 px)Kreis1000×1000 PNG
Facebook (Seite)170 pxKreis1000×1000 PNG
TikTok200 pxKreis1000×1000 PNG
YouTube800 pxKreis1000×1000 PNG
X / Twitter400 px (Timeline 48 px)Kreis1000×1000 PNG
Regeln: Überall dasselbe Bild — Wiedererkennung entsteht durch Konstanz. Das Zeichen sitzt mit Rand im Quadrat, weil Discord, Instagram und X kreisförmig beschneiden. Nie die Wortmarke auf ein Foto setzen, nie das Gelb invertieren.

Banner & Header

Ein durchgehendes Bühnenbild — Tarmac-Verlauf mit Slash-Motiv und ULD-Raster — mit weißer Wortmarke, gelber Akzentlinie und Tagline mittig. Ein Layout, in jedem Kanalformat ausgespielt.

BOX YouTube-Banner
YouTube Channel Art · 2560×1440 (sichere Zone 1546×423 mittig)
BOX Discord-Banner
Discord Server-Banner · 960×540
BOX X-Header
X / Header · 1500×500
FormatPixelSichere ZoneEinsatz
YouTube Channel Art2560×14401546×423 mittigKanal-Header — TV, Desktop und Mobil zeigen je mehr Rand, darum liegen Logo und Tagline in der Zone
Discord Server-Banner960×540vollflächigBoost-Banner, Einladungs-Header
X / Header1500×500Ränder ~60 px, unten links Profilbild-ÜberlappungProfil-Header
Aufbau (von hinten nach vorne): Tarmac-Verlauf → ULD-Raster → 12°-Slash → weiße Wortmarke zentriert → gelbe 4-px-Akzentlinie → Tagline in Versalien. Dateien: social-templates/banners/box_banner_*.png.
Kapitel 08

Anwendungen

Website

box-virtual.com folgt dem AeroLogic-Muster: weiß, Eyebrow-Label über der Sektions-Headline, „At a glance“-Zahlenleiste, Ink-Buttons mit gelbem Text. Versalien bleiben dem Hero vorbehalten — Sektions-Headlines stehen in Mixed Case (Kapitel 04). Referenz-Implementierung im Repo box-website.

Event-Banner

Standard = das Slash-Template. Serien-Events (z. B. Frankfurt Friday Freight) behalten Bandfarben und Position über alle Ausgaben — Wiedererkennung vor Abwechslung.

Discord & Profile

Avatar Square Dark, Banner im Nightshift-Stil. Rollen-/Kanalfarben: Gelb `#FFCC00` für Highlights, sonst neutrale Grautöne.

Kapitel 09

vAMSYS

vAMSYS ist das Crew-System, auf dem der Betrieb läuft — Buchung, Dispatch, PIREPs, Ränge. Es ist eine gemietete Halle, keine eigene: einrichten geht, umbauen nicht. Dieses Kapitel hält fest, was sich dort einrichten lässt, mit welchen Mitteln, und wo die Plattform die Marke stoppt. Alles hier folgt den Regeln der Kapitel 03 bis 05 — dieselbe Marke, fremdes Markup.

Was gebrandet werden kann

Zwei Formulare in Orwell steuern alles: Settings → Design → Logo Settings (vier Logo-Slots plus Login-Hintergründe) und Style Settings (zwölf Farb-Paare plus ein eigenes Stylesheet). Ihre Reichweite ist begrenzt.

OberflächeFarb-PaareEigenes CSSLogos
Phoenix (Piloten)jajaja
Orwell (Staff/HQ)neinneinja
Select-VA-Seiteteilweiseneinja
Pegasus ACARSneinneinja
Ausgehende E-Mailsneinneinja
Orwell bleibt im vAMSYS-Blau — das ist eine Plattformgrenze, kein Umsetzungsfehler. Nachweis: Keine unserer Variablen existiert dort, und --primary-600 steht auf 37, 99, 235. Jede Regel, die nur auf Orwell-Selektoren zielt (z. B. .fi-main), ist toter Code. Deshalb hängt die Markensignatur stattdessen an drei geprüften Phoenix-Ankern — siehe unten.

Drei Hebel, in dieser Reihenfolge

HebelWoReichweite und Haltbarkeit
1 · Die zwölf Farb-PaareStyle Settings, FormularfelderMenü, Topbar, Body, Karten, Tabellenzeilen. Stabil — übersteht Plattform-Updates.
2 · Die Variablen-Rampeneigenes CSS, :rootButtons, Badges, Links, Checkboxen, Ringe, Tabs, Panels, Icons — auf allen Seiten gleichzeitig. Ersetzt dutzende Einzel-Overrides.
3 · Einzelne Selektoreneigenes CSSDer Rest: .dispatch-*, .map-loader-*, hart kodiertes Indigo, Cyan und Violett in den Buchungs-Bundles. Fragil — nach jedem Update nachprüfen.

Von stabil nach fragil. Wer bei 3 anfängt, schreibt dutzende !important-Regeln für etwas, das eine Zeile in 2 erledigt hätte.

Die Rampen — und warum Gelb nicht auf 600 liegt

vAMSYS baut auf Filament auf, und Filament färbt alles über sechs Variablen-Rampen mit je elf Stufen, geschrieben als RGB-Tripel ohne rgb()-Wrapper — nur so funktionieren Tints wie rgba(var(--BOXYellow), .14). Filaments Konvention: 600 ist die Vollton-Fläche, 700 der Hover, 400 Text und Ring im Dunkelmodus.

Filament setzt auf die 600er-Fläche weißen Text. Cargo-Gelb auf 600 wäre damit sofort ein Verstoß — Weiß auf Gelb sind 1,6:1. Die BOX-Rampe ist deshalb umgekehrt gebaut als bei einer gewöhnlichen Marke: unten tragen Ink und Tarmac die Flächen, oben auf 400 sitzt das Cargo-Gelb, wo der Dunkelmodus es für Text, Icons und Ringe abholt. Der gelbe Text auf der Ink-Fläche kommt dann aus unseren eigenen Button-Regeln — genau das AeroLogic-Muster aus Kapitel 03.
RampeStandardBOX VirtualBegründung
--primary-*Indigo50–300 Gelb-Waschungen · 400 = #FFCC00 · 500 = Slate · 600 = Ink #212529 · 700–950 = TarmacFlächen in Ink, die Marke oben, wo der Dunkelmodus sie greift.
--info-*Cyandie komplette Rampe auf Slate, 400 = Muted dunkel #98A4AAAn --info hängen die großen Sekundär-CTAs (ACARS-Downloads, Profil-Statistik). Slate ist das Grau der Marke — so werden sie ruhig, ohne Selektorenjagd.
--gray-*blaustichig (900 = 29,31,45)exakt die BOX-Skala: Fog, Line, Muted, Slate, Line dunkel, Tarmac 2, TarmacBewusst nicht desaturiert — anders als bei LX hat BOX absichtlich kühle Neutrale. Der vAMSYS-Standard ist nur das falsche Kühl.
--success-* --warning-* --danger-*Grün / Amber / RotunangetastetSie tragen Bedeutung quer durch Badges, PIREP-Status und Alerts. Das gilt auch gegen das Brandbook-„kein Rot": Rot als Danger ist eine Statusfarbe, keine Markenfarbe.
Das Amber-Problem — bekannt und bewusst stehen gelassen. Filaments --warning ist Amber #F59E0B und liegt unangenehm nah an Cargo-Gelb #FFCC00. Beide bleiben. Die Trennung läuft über die Form, nicht über die Farbe: Marken-Gelb erscheint als Fläche, Band, Linie und Slash — Warning erscheint als Badge mit Ring. Wer Warning umfärbt, verliert die Semantik. Wer Marken-Gelb als Badge-Füllung einsetzt, erzeugt die Verwechslung selbst.

Gelb im Interface — wohin es darf

Kapitel 03 in einem Satz: Auf Hell ist die Marke Fläche oder Linie, niemals Text; auf Dunkel darf sie auch Text und Icon sein. Die Kontrastwerte aus box.json gelten in vAMSYS unverändert: Ink auf Gelb 10,2:1, Gelb auf Ink 10,2:1, Gelb auf Tarmac 11,6:1 — Gelb auf Weiß 1,5:1, verboten. Das ist genau umgekehrt zu LX, wo Rot auf Dunkel einen helleren Tint brauchte.

ElementHellDunkel
Primär-ButtonInk-Fläche, gelber TextRollen getauscht: gelbe Fläche, Ink-Text
Sekundär (.btn-info)Slate-Fläche, weißer TextTarmac 2, Fog-Text
Ghost / CancelRand Line #E2E6E8Rand Muted dunkel #98A4AA — nicht Line dunkel: #2A3238 auf Tarmac 2 sind 1,2:1, als Haarlinie zwischen Zeilen richtig, als sichtbare Kante eines Bedienelements viel zu wenig (6,3:1 erfüllt die 3:1-Regel)
TabellenkopfFog-Fläche, 3 px gelbe Signallinie darunterTarmac 2, dieselbe gelbe Linie
Kennzahl-Kachel3 px gelbe Linie oben — das eine dominante Gelb-Element des Dashboardsdito
„Ready to dispatch"gelbe Fläche, Ink-Text — das Cargo-Band, das eine dominante Gelb-Element der Dispatch-Seitedito
Zeilen-Aktion (Papierflieger)Ink — Gelb wäre hier Text auf Weiß; die Marke kommt beim Hover als gelbe FlächeGelb
Drei-Punkte-MenüMuted #6A767C, Gelb nur als Hover-TintMuted dunkel #98A4AA
Link im FließtextInk-Text mit gelber Unterlänge — das Slash-Prinzip auf Fließtext übersetztgelber Text (11,6:1)
Aktiver Menüpunktgelber Slash links, 12° geneigt — ein gerader Balken wäre ein LX-Zitatdito
FokusringGelb innen plus Ink-Halo außen — reines Gelb auf Weiß sind 1,5:1 und verfehlen die 3:1-Grenze für Nicht-Text-KontrasteGelb allein trägt; der Halo wird Tarmac und setzt nur ab
Der Dunkelmodus tauscht Primär und Sekundär — bewusst und dokumentiert. Eine Ink-Fläche (#212529) auf Tarmac (#14181B) ist praktisch unsichtbar, also wird der Haupt-CTA im Dunkelmodus zur gelben Fläche mit Ink-Text. Damit bleibt auch dort „ein dominantes Gelb-Element pro Ansicht" erfüllt. Rückgängig: den html.dark-Block in Abschnitt 5 des Stylesheets löschen.

Die zwei Regeln, an denen alles hängt

Regel 1 — Fläche ODER Icon in der Markenfarbe, niemals beides.

Trägt die Fläche die Markenfarbe, erbt das Icon die Textfarbe — nie eine zweite setzen. Wer beides färbt, erzeugt einen einfarbigen Klotz: Bei LX wurde das Drei-Punkte-Menü der Dispatch-Tabelle zum vollen roten Quadrat, die Punkte vorhanden, aber unsichtbar. Deshalb: button.fi-color-primary nur mit :not(.fi-icon-btn), und Icon-only-Buttons bekommen nie eine Fläche.

Regel 2 — custom nie hart färben.

In Filament ist custom kein Synonym für „primary", sondern der generische Platzhalter für jede Farbvariante; die echte Farbe kommt als Inline-Variable (--c-50 … --c-950) am Element an. Immer rgb(var(--c-600, var(--BOXInk))) schreiben. Wer hart färbt, macht Success-, Warning- und Danger-Badges markenfarben — die Statussemantik ist weg.

Spezifität schlägt Reihenfolge. Unser Stylesheet wird als Inline-<style>-Block ausgeliefert, nicht als <link> — seine Position gegenüber Filament ist nicht garantiert. Nachfahren-Selektoren verlieren; button.fi-icon-btn.fi-ac-icon-btn-group (0,2,1) gewinnt. Nie auf die Reihenfolge verlassen.

Form — 4 px und 8 px, und der Slash

Die zwei Radius-Stufen aus Kapitel 03 gelten auch in vAMSYS: 4 px für Chips, Buttons, Inputs und Badges, 8 px für Cards, Sections und Modals. Bewusst weder die 2-px-Kante von LX noch die 14-px-Rundung von LH. Bewusst runde Elemente bleiben rund: Avatare, Toggles, Radio und Checkbox. Und alles Diagonale steht bei 12°--BOXSkew: skewX(-12deg) ist ein Token im Stylesheet, damit kein Winkel je nach Augenmaß entsteht.

Topbar und Sidebar — flach, kein Verlauf

LH und LX tragen einen Drei-Stopp-Verlauf. BOX ist die Ausnahme in der Familie (box.json, gradient.canvas): Die Bühne ist flaches Tarmac. Der Hellmodus ist die Heimat — weiße Topbar, Muted-Items, Ink auf aktiv. Der Dunkelmodus ist Tarmac mit gelben Items. Die Farbwähler können ohnehin nur Volltonfarben; wer einen Verlauf wollte, müsste die vier Background-Felder leer lassen und ihn im CSS über html[data-topbar-color=…] setzen. Wir wollen keinen.

Logo-Slots

Vier Slots, 1800 × 400 px PNG mit Transparenz (SVG wird abgelehnt). Slot 0/1 und 2/3 sind getrennte Uploads — wer nur Phoenix ändert, hat in E-Mails und Orwell weiterhin das alte Logo. Das ist hier der häufigste Fehler. BOXV_Logo.png misst 1779 × 311, wird also mittig auf die 1800 × 400 gesetzt, nie gestreckt.

SlotErscheint inDatei
0Phoenix (hell)BOXV_Logo.png
1Phoenix (dunkel)BOXV_Logo_White.png
2Select-VA-Seite, Pegasus (hell), E-Mails, OrwellBOXV_Logo.png
3Select-VA-Seite, Pegasus (dunkel), Orwell (dunkel)BOXV_Logo_White.png
BGLogin-/Register-Hintergrund1706 × 1600 px, WebP; mehrere möglich, zufällige Auswahl
Das Logo-Handling läuft über die Logo Settings, nie über dieses CSS. Das Zeichen nie umfärben, nie auf Gelb setzen — „Virtual" verschwände; dafür gibt es BOXV_Avatar.png. Und das gelbe „Virtual" auf der weißen Phoenix-Topbar ist kein Bruch der Gelb-auf-Hell-Regel: Eine Wortmarke ist von der Kontrastanforderung ausgenommen. Die Regel gilt für Interface-Text, nicht für die Marke.

Typografie — Mulish darf mit

Hier hat BOX den Vorteil gegenüber LX. Die Lufthansa-Schnitte dürfen nicht weitergegeben werden, das LX-Stylesheet darf deshalb nur einen Stack deklarieren. Mulish steht unter der SIL Open Font License 1.1 und darf mitgeliefert werden — die Marke trägt ihre echte Hausschrift auch in vAMSYS. Kapitel 04 verlangt Selbsthosting (kein Google-Fonts-CDN, DSGVO), und eine data:-URI ist die konsequenteste Form davon: kein Fremdserver, keine IP-Übertragung. Der @font-face-Block steht deshalb am Dateiende, damit der lesbare Teil beim Patchen in der Konsole oben bleibt. Ohne ihn fällt der Stack sauber auf Segoe UI / Arial zurück — nichts bricht.

Die typografische Hierarchie wandert mit: Überschriften 800, die große Seiten-Headline in Versalien, Labels und Tabellenköpfe 800 in Versalien mit Tracking, Fließtext 400. Ein Vorbehalt, teuer gelernt: .fi-ta-text-item-label ist in Filament kein Spaltenkopf, sondern der Inhalt jeder Textzelle. In v1.0.0 stand die Klasse in der Eyebrow-Regel und zog jeden Zellinhalt auf Versalien, 800 und breites Tracking — im schmalen NOTAM-Widget lief die Tabelle dadurch über den rechten Rand.

Die Markensignatur, drei Anker

Wo LX seine Alpen hat, hat BOX zwei Elemente aus Kapitel 05 — als inline-SVG oder CSS-Verlauf in einem ::after, ganz ohne Bild-Upload. Weil die Style Settings nur Phoenix erreichen, hängen sie an drei geprüften Phoenix-Ankern: Dashboard (.page-content:has(.swiper)), leere Zustände (.fi-ta-empty-state) und Map-Loader (.map-loader-modal).

ModusMotivSpezifikation
dunkelULD-Raster1-px-Raster, Teilung 72 px, Line dunkel, Deckkraft ≤ 35 %, von oben per Maske eingeblendet
hellSlash-Staffeldrei Bänder bei 12°, Deckkraft 100 / 45 / 18 %, als Eck-Element: auf dem Dashboard unten rechts, in leeren Zuständen oben rechts
Der erste Entwurf war ein Fehler, den man aufschreiben sollte. Die Slash-Staffel lief über die volle Seitenhöhe und legte einen blassen Schleier über Tabellen und Text — genau die „Gelb als Tapete"-Falle aus Kapitel 03. Jetzt ist sie ein Eck-Element, das man erst beim Hinsehen bemerkt. Drei Technikalitäten: z-index: -1 statt 0, sonst legt sich das Motiv über die Tabellen; innerhalb einer Karte z-index: 0 plus .anker > * { position: relative; z-index: 1 }; und pointer-events: none ist Pflicht. Die Startseite hat keine eigene Body-Klasse — :has(.swiper) trifft sie über das Event-Karussell, das nur dort vorkommt.

Nicht wieder einführen

Gelb als Textfarbe auf Hell. 1,5:1 — der wahrscheinlichste Fehler in diesem Stylesheet. Auf Hell ist Gelb Fläche oder Linie. · Weiß als Textfarbe auf Gelb. 1,6:1 — auf Gelb steht Ink. · button.fi-color-primary ohne :not(.fi-icon-btn). · .text-custom-* / .ring-custom-* / .bg-custom-* auf eine feste Farbe. · --success-*, --warning-*, --danger-* umfärben — auch nicht, weil Amber dem Cargo-Gelb ähnelt. · Ein Drei-Stopp-Verlauf für Topbar oder Sidebar. · Die 2-px-Kante von LX oder die 14-px-Rundung von LH. · Den prefers-reduced-motion-Block entfernen. · Das Logo umfärben oder auf Gelb setzen. · Nicht-ASCII in neuen CSS-Kommentaren — die Upload-Kette hat historisch Mojibake erzeugt.

Bekannte Grenzen

Wartung

Ein CSS-File je VA; ein neuer Upload ersetzt das alte. Die Datei liegt unter https://cdn.vamsys.xyz/stylesheets/<ULID>.css (26 Zeichen, Crockford-Base32), und der ULID wechselt bei jedem Speichern. Die alte Datei bleibt erreichbar — das, und nur das, ist der Weg zurück. Einen Undo-Knopf gibt es nicht: Ein Revert ist immer ein erneuter Upload.

  1. Das Live-CSS vom CDN holen — diese Datei ist die einzige Wahrheit, nie blind eine lokale.
  2. Patchen, den Versionsmarker im Kopfkommentar hochzählen, neue Kommentare ASCII-only halten.
  3. Style Settings öffnen und prüfen, dass im Kopf „BOX VIRTUAL" steht — das Formular sieht für jede VA gleich aus.
  4. Das FilePond-Feld hydrieren (Maus darüber bewegen und warten). Ohne Hydration erscheint der native „Datei auswählen"-Fallback — in diesem Zustand nicht speichern.
  5. Speichern, den neuen ULID und den alten notieren, eine lokale Kopie als box-virtual-vX.Y.Z.css ablegen.
  6. In Hell und Dunkel prüfen: Dashboard, Flight Centre, Buchungskarte, Dispatch-Seite, Buchungsdetail, PIREPs, Leaderboard, Profil, ACARS. Dropdowns wirklich öffnen, und Paginierung, Filter-Chips und Spalten-Umschalter kontrollieren — dort sitzen die unauffälligen Icon-Buttons.
Prüfen heißt ansehen. getComputedStyle liefert für Properties, die unser Stylesheet überschreibt, teils den Vendor-Wert zurück — selbst bei inline !important — und direkt nach dem Injizieren eines <style> ist der Wert einen Frame veraltet. Screenshots sind die Wahrheit. Skript-Audits taugen dazu, zu finden, welche Fremdfarben und Klassennamen existieren — der wichtigste für BOX sucht auf jeder hellen Seite nach gelbem Text und muss leer zurückkommen.
// Gelb auf Hell — muss auf jeder hellen Seite ein leeres Ergebnis liefern
[...document.querySelectorAll('*')].filter(e => {
  const c = getComputedStyle(e);
  return /^rgb\(25[0-5], ?2[0-1][0-9], ?[0-9]{1,2}\)$/.test(c.color)
      && e.innerText && e.innerText.trim().length;
}).map(e => ({ tag: e.tagName, cls: e.className, txt: e.innerText.slice(0,30) }));

Stand

BOX Virtual, ICAO BOX / IATA 3S. Stylesheet v1.0.3, gebaut auf Brandbook v1.8 und design-tokens/box.json, nach dem markenunabhängigen Leitfaden aus der LX-Umsetzung. Der ULID der Live-Datei wird beim Upload protokolliert, zusammen mit dem Vorgänger — dieses Paar ist der Weg zurück.

Kapitel 10

Rechtliches

BOX Virtual ist ein non-kommerzielles Fan- und Community-Projekt und steht in keiner Verbindung zur AeroLogic GmbH, zur DHL Group oder zur Lufthansa Cargo AG.

  • Der Disclaimer „BOX Virtual is a fan project and not affiliated with AeroLogic GmbH, DHL or Lufthansa Cargo“ steht auf jeder Website-Seite (Footer) und in jeder Social-Bio.
  • Kein Verkauf von Merchandise oder Leistungen unter Verwendung der Marken oder Bemalungen.
  • Original-Logos, -Werbemittel und -Fotos des Vorbilds werden nicht verwendet — nur eigene Assets und Sim-Screenshots. Das Tail-Bild zeigt die Livery aus dem Simulator.
  • Die Marken-Nennung „AeroLogic“ bleibt auf den Disclaimer beschränkt — in Texten heißt es „the real BOX“.
  • Mulish ist SIL-OFL-lizenziert und liegt im Repo; es werden keine lizenzpflichtigen Fremd-Fonts verbreitet.

© 2026 Box-Virtual.com · Brandbook Version 1.9 · Fragen an das Team im Discord.

Kopiert