feat(brand): logo officiel DictIA + palette blue/cyan/fuchsia (matche le logo)

Logos officiels installés :
- static/images/dictia-logo.png (28 KB optimisé 256×256)
- static/images/dictia-logo-128.png (10 KB retina)
- static/images/dictia-logo-fullres.png (originaux conservés OG/social)
- static/images/dictia-logo.svg + dictia-logo-nom.svg (cleaned C2PA metadata)
- Header marketing/base.html : <img> 40×40 + wordmark "DictIA" + tagline "Transcription"
- Footer marketing/_footer.html : <img> 36×36 + wordmark
- Favicon mis à jour vers logo PNG

Note : SVG sources sont des PNG base64 wrappés (pas de vrais paths) — PNG utilisé
en production (8× plus léger), SVG conservé pour fallback.

Palette canonique alignée sur le logo :
- brand-b1 : #7c3aed (mauve) → #2563eb (blue-600 vibrant — primary)
- brand-b2 : #a855f7 (mauve clair) → #06b6d4 (cyan-500 — aqua mid)
- brand-b3 : #06b6d4 (aqua) → #c026d3 (fuchsia-600 — magenta accent)
- Gradient signature : linear-gradient(118deg, #2563eb, #06b6d4 52%, #c026d3)
- Box shadow CTA : rgba(37,99,235,0.28/0.42)
- 72 remplacements hex/rgba dans 5 templates marketing/legal + email service

Tests : 81 passed / 3 failed (3 échecs pré-existants /blog + trust-bar phrasing,
non liés à ce changement). 0 régression.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Allison
2026-04-28 15:54:17 -04:00
parent 34d40162b3
commit 575db5e342
20 changed files with 166 additions and 140 deletions

View File

@@ -73,14 +73,20 @@ def test_email_template_uses_dictia_branding():
assert 'Loi' in html and '25' in html, 'Tagline must mention Loi 25'
def test_email_template_header_uses_brand_gradient_not_speakr_blue():
"""Header bg must use DictIA brand color #0062ff (or gradient), not the legacy
Speakr #2563eb."""
def test_email_template_header_uses_brand_gradient():
"""Header bg must use the official DictIA brand gradient (blue → cyan → fuchsia,
matches the official logo). The legacy #0062ff/#00bdd8/#00c896 palette must be gone."""
with app.app_context():
from src.services.email import _get_email_template
html, _ = _get_email_template('x', 'x', 'Test')
assert '#2563eb' not in html, 'Legacy Speakr header color must be removed'
assert '#0062ff' in html, 'DictIA brand blue must be present'
# Legacy palette must be removed
assert '#0062ff' not in html, 'Legacy header color #0062ff must be removed'
assert '#00bdd8' not in html, 'Legacy mid color #00bdd8 must be removed'
assert '#00c896' not in html, 'Legacy end color #00c896 must be removed'
# New official-logo palette must be present
assert '#2563eb' in html, 'DictIA brand blue (#2563eb) must be present'
assert '#06b6d4' in html, 'DictIA brand cyan (#06b6d4) must be present'
assert '#c026d3' in html, 'DictIA brand fuchsia (#c026d3) must be present'
def test_verification_email_subject_is_french_with_dictia():

View File

@@ -110,11 +110,11 @@ def test_hero_has_dual_cta():
def test_hero_has_cosmic_orbs_background():
"""Hero has 3 radial gradient orbs (FlexiHub signature, mauve/aqua palette)."""
"""Hero has 3 radial gradient orbs (FlexiHub signature, blue/aqua palette — matches official DictIA logo)."""
client = app.test_client()
body = client.get('/').data.decode('utf-8')
# Look for the 3 orb opacities (16% mauve, 7% aqua, 11% aqua accent)
assert 'rgba(124,58,237,0.16)' in body, "Missing primary mauve orb"
# Look for the 3 orb opacities (16% blue, 7% aqua, 11% aqua accent)
assert 'rgba(37,99,235,0.16)' in body, "Missing primary blue orb"
assert 'rgba(6,182,212,0.07)' in body, "Missing aqua orb"
assert 'rgba(6,182,212,0.11)' in body, "Missing aqua accent orb"