diff --git a/templates/macros/bento.html b/templates/macros/bento.html index 3fd8687..1441621 100644 --- a/templates/macros/bento.html +++ b/templates/macros/bento.html @@ -5,11 +5,11 @@ The default is a small inline sparkle SVG to avoid any emoji fallback. #} {% macro bento_card(number, title, description, icon=None, span='1') %} {%- set span_classes = {'1': 'col-span-1', '2': 'sm:col-span-2', '3': 'sm:col-span-2 md:col-span-3'} -%} -{%- set default_icon = '' -%} +{%- set default_icon = '' -%}
- +
- +

{{ title | safe }}

{{ description | safe }}

diff --git a/templates/marketing/fonctionnalites.html b/templates/marketing/fonctionnalites.html index 864b33e..5db8b60 100644 --- a/templates/marketing/fonctionnalites.html +++ b/templates/marketing/fonctionnalites.html @@ -26,12 +26,12 @@ When editing, sync both files. Future refactor: extract to _partials/_bento_features.html. Icon SVGs (heroicons-style outline) are inlined directly because the macro renders `icon | safe`. #} {% from 'macros/bento.html' import bento_card %} - {%- set icon_microphone = '' -%} - {%- set icon_users = '' -%} - {%- set icon_document = '' -%} - {%- set icon_chat = '' -%} - {%- set icon_export = '' -%} - {%- set icon_plug = '' -%} + {%- set icon_microphone = '' -%} + {%- set icon_users = '' -%} + {%- set icon_document = '' -%} + {%- set icon_chat = '' -%} + {%- set icon_export = '' -%} + {%- set icon_plug = '' -%}
{{ bento_card('01', 'Transcription WhisperX', 'Large-v3 fine-tuné FR-CA. Précision 95 %+ sur réunions, dictées, audiences (méthodologie disponible sur demande).', icon_microphone) }} {{ bento_card('02', 'Diarisation 8 locuteurs', 'pyannote sépare automatiquement les intervenants. Identification par embeddings vocaux.', icon_users) }} diff --git a/templates/marketing/landing.html b/templates/marketing/landing.html index 381e978..93af585 100644 --- a/templates/marketing/landing.html +++ b/templates/marketing/landing.html @@ -179,9 +179,6 @@ ('Précision FR-CA', 'WhisperX Large-v3 fine-tuné français québécois. Diarisation pyannote 8 locuteurs. Résumés Mistral 7B local — aucune connexion OpenAI/Google/Microsoft.') ] %}
-

{{ pillar[0] | safe }}

{{ pillar[1] | safe }}

@@ -204,12 +201,12 @@ When editing, sync both files. Future refactor: extract to _partials/_bento_features.html. Icon SVGs (heroicons-style outline) are inlined directly because the macro renders `icon | safe`. #} {% from 'macros/bento.html' import bento_card %} - {%- set icon_microphone = '' -%} - {%- set icon_users = '' -%} - {%- set icon_document = '' -%} - {%- set icon_chat = '' -%} - {%- set icon_export = '' -%} - {%- set icon_plug = '' -%} + {%- set icon_microphone = '' -%} + {%- set icon_users = '' -%} + {%- set icon_document = '' -%} + {%- set icon_chat = '' -%} + {%- set icon_export = '' -%} + {%- set icon_plug = '' -%}
{{ bento_card('01', 'Transcription WhisperX', 'Large-v3 fine-tuné FR-CA. Précision 95 %+ sur réunions, dictées, audiences (méthodologie disponible sur demande).', icon_microphone) }} {{ bento_card('02', 'Diarisation 8 locuteurs', 'pyannote sépare automatiquement les intervenants. Identification par embeddings vocaux.', icon_users) }} @@ -403,10 +400,10 @@ {# 4 conformity pillars — dark cards with grad-bg icon corners (matches Solution pillars style). Icons (heroicons-style outline): map-pin (Québec), scale (Loi 25), building-library (LGGRI), code-bracket (AGPL). #} - {%- set svg_pin = '' -%} - {%- set svg_scale = '' -%} - {%- set svg_building = '' -%} - {%- set svg_code = '' -%} + {%- set svg_pin = '' -%} + {%- set svg_scale = '' -%} + {%- set svg_building = '' -%} + {%- set svg_code = '' -%}
{% for card in [ { @@ -431,7 +428,7 @@ } ] %}
- +

{{ card.title | safe }}

{{ card.desc | safe }}

diff --git a/tests/test_marketing_landing_template.py b/tests/test_marketing_landing_template.py index b20f7b3..8933eac 100644 --- a/tests/test_marketing_landing_template.py +++ b/tests/test_marketing_landing_template.py @@ -261,14 +261,16 @@ def test_bento_has_6_features(): def test_bento_uses_flexihub_styling(): - """Bento uses FlexiHub spec: max-w-[1060px], gap-[1.5px], bg-brand-navy2, /[0.04] watermark.""" + """Bento uses FlexiHub spec: max-w-[1060px], gap-[1.5px], bg-brand-navy2, grad-text watermark.""" client = app.test_client() body = client.get('/').data.decode('utf-8') assert 'max-w-[1060px]' in body, "Missing FlexiHub bento container width 1060px" assert 'gap-[1.5px]' in body, "Missing FlexiHub ultrafin separator gap" assert 'bg-brand-navy2' in body, "Missing dark card background" - assert 'text-white/[0.04]' in body, "Missing FlexiHub watermark opacity" - assert 'grad-bg rounded-none ' in body, "Missing gradient icon corner (V3 brutalist square)" + # Watermark numbers now use grad-text + opacity-20 (brand blue family) instead of barely-visible white/[0.04] + assert 'grad-text opacity-20' in body, "Missing brand-tinted watermark (grad-text opacity-20)" + # Bento icons render directly with text-brand-b1 (no grad-bg backdrop tile) + assert 'text-brand-b1 mb-4' in body, "Missing brand-blue icon color on bento cards" def test_bento_responsive_grid():