UI: brand background image + Pirulen font for PROSERVE wordmark

Window background
-----------------
Brush.Bg.Window is now pure #000000 (was a slightly blue-tinted dark).
The previous tint added value to the bitmap overlay, washing out the
image's bright spots. With pure black behind, the 50% overlay sits
cleanly on top.

Cards / sidebar / footer keep a faint blue tint (#161B23, #0E1218,
#050709) so the chrome reads as cool/dark while the body shows the
hardware texture clearly through the gaps.

Background image
----------------
Resources/Background.png (the engraved ASTERION VR wordmark on dark
metal) is now an embedded WPF Resource on the App project. MainWindow
draws it as the first child of the root grid, RowSpan=3, Stretch=
UniformToFill, Opacity=0.5, IsHitTestVisible=False so it never steals
clicks. It shows behind the body's empty regions; the cards' solid
backgrounds cover it where readability matters.

Pirulen wordmark
----------------
Resources/pirulen.otf (the user-supplied OpenType font) is embedded as
a Resource and exposed via Theme.xaml's Font.Brand FontFamily resource
using the standard pack URI form (#Pirulen). The top bar replaces the
plain "PROSERVE Launcher" with a horizontal stack: PROSERVE in 22pt
Pirulen + a smaller "Launcher" label in secondary text. The brand
typeface is reusable elsewhere via {StaticResource Font.Brand}.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-02 08:57:49 +02:00
parent 973a1e78ba
commit 2c79a5111e
7 changed files with 34 additions and 10 deletions

View File

@@ -4,15 +4,19 @@
<BooleanToVisibilityConverter x:Key="BoolToVisibility" />
<!-- Custom font Pirulen pour les titres de marque -->
<FontFamily x:Key="Font.Brand">pack://application:,,,/Resources/#Pirulen</FontFamily>
<!-- Inverse bool : utilisé pour griser un bouton pendant qu'une opération est en cours -->
<res:InverseBoolConverter x:Key="InverseBoolToBool" />
<!-- Epic Games inspired dark palette -->
<SolidColorBrush x:Key="Brush.Bg.Window" Color="#1B1B1F" />
<SolidColorBrush x:Key="Brush.Bg.Sidebar" Color="#202024" />
<SolidColorBrush x:Key="Brush.Bg.Card" Color="#26262B" />
<SolidColorBrush x:Key="Brush.Bg.Footer" Color="#0F0F12" />
<SolidColorBrush x:Key="Brush.Border" Color="#37373D" />
<!-- Fond fenêtre : noir pur pour ne pas délaver le bitmap overlay -->
<SolidColorBrush x:Key="Brush.Bg.Window" Color="#000000" />
<!-- Cards & sidebar : très légère teinte bleutée pour le contraste -->
<SolidColorBrush x:Key="Brush.Bg.Sidebar" Color="#0E1218" />
<SolidColorBrush x:Key="Brush.Bg.Card" Color="#161B23" />
<SolidColorBrush x:Key="Brush.Bg.Footer" Color="#050709" />
<SolidColorBrush x:Key="Brush.Border" Color="#2A2F3A" />
<SolidColorBrush x:Key="Brush.Text.Primary" Color="#F2F2F2" />
<SolidColorBrush x:Key="Brush.Text.Secondary" Color="#A0A0A8" />
<SolidColorBrush x:Key="Brush.Accent" Color="#0078D4" />