// Offres.jsx — grille des 3 offres réelles (catalogue TheB2ATeK). const offresStyles = { section: { padding: '96px 0', background: 'var(--paper-200)', position: 'relative', overflow: 'hidden' }, pattern: { position: 'absolute', inset: 0, backgroundImage: 'url("08_assets-marque/design-system/assets/section-offres-background.jpeg")', backgroundSize: 'cover', backgroundPosition: 'center', opacity: 0.10, pointerEvents: 'none', }, container: { position: 'relative' }, header: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 64, alignItems: 'end', marginBottom: 56, }, h2: { fontFamily: "'Space Grotesk', sans-serif", fontWeight: 600, fontSize: 'clamp(36px, 4.2vw, 58px)', lineHeight: 1.05, letterSpacing: '-0.022em', margin: 0, color: 'var(--ink-900)', }, intro: { fontSize: 18, lineHeight: 1.55, color: 'var(--mist-700)', }, grid: { display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 20, }, card: { background: '#fff', border: '1px solid var(--ink-900)', padding: 28, minHeight: 360, flex: 1, display: 'flex', flexDirection: 'column', gap: 16, boxShadow: 'var(--shadow-hard)', transition: 'transform 220ms var(--ease), box-shadow 220ms var(--ease)', }, cardDark: { background: 'var(--ink-900)', color: 'var(--paper)', border: '1px solid var(--ink-900)', padding: 28, minHeight: 360, flex: 1, display: 'flex', flexDirection: 'column', gap: 16, boxShadow: '4px 4px 0 0 var(--amber-500)', transition: 'transform 220ms var(--ease), box-shadow 220ms var(--ease)', }, badge: { alignSelf: 'flex-start', fontFamily: "'JetBrains Mono', monospace", fontSize: 10, letterSpacing: '0.1em', textTransform: 'uppercase', padding: '4px 8px', border: '1px solid currentColor', }, title: { fontFamily: "'Space Grotesk', sans-serif", fontSize: 22, fontWeight: 600, letterSpacing: '-0.01em', margin: 0, color: 'inherit', }, body: { fontSize: 14.5, lineHeight: 1.6, color: 'var(--mist-700)', margin: 0, }, bodyDark: { color: 'var(--mist-200)' }, list: { listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: 8, }, listItem: { display: 'flex', alignItems: 'flex-start', gap: 8, fontSize: 13.5, lineHeight: 1.5, }, footer: { marginTop: 'auto', paddingTop: 16, borderTop: '1px solid rgba(42, 26, 7,.08)', display: 'flex', justifyContent: 'space-between', alignItems: 'center', fontFamily: "'JetBrains Mono', monospace", fontSize: 11, letterSpacing: '0.08em', textTransform: 'uppercase', color: 'var(--mist-500)', }, footerDark: { borderTopColor: 'rgba(246,244,238,.10)', color: 'var(--mist-200)', }, accent: { color: 'var(--blue-700)' }, accentDark: { color: 'var(--amber-500)' }, detailsLink: { alignSelf: 'flex-end', display: 'inline-flex', alignItems: 'center', gap: 4, marginTop: 4, padding: '8px 0', minHeight: 44, fontFamily: "'JetBrains Mono', monospace", fontSize: 12.5, letterSpacing: '0.04em', textDecoration: 'none', }, parcours: { marginTop: 48, padding: '20px 24px', border: '1px dashed rgba(42, 26, 7,.25)', background: 'rgba(255,255,255,.5)', fontFamily: "'JetBrains Mono', monospace", fontSize: 12.5, letterSpacing: '0.04em', color: 'var(--mist-700)', display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 10, }, parcoursArrow: { color: 'var(--amber-500)' }, }; const OFFRES = [ { id: 'generateur', icon: 'sparkles', badge: '★ Offre phare', title: 'Générateur de propositions & devis IA', body: "Vos propositions, prêtes en 40 minutes au lieu de 4 jours — à votre image, chiffrées sans erreur, prêtes à signer.", items: [ 'Formulaire ou brief en langage naturel', 'Rédaction personnalisée par IA (Claude)', 'Calcul automatique des montants et taxes', 'PDF à votre charte, prêt à envoyer', ], metric: '4 j → 40 min', label: 'PROPOSITIONS', }, { id: 'support', icon: 'message-square', badge: 'Disponibilité continue', title: 'Agent service-client 24/7', body: "Un opérateur senior à vos côtés 24/7, sans le salaire senior. Répond aux questions courantes, qualifie, escalade au bon moment.", items: [ 'Branché sur votre site, courriel ou messagerie', 'Formé sur vos documents (FAQ, tarifs, politiques)', 'Escalade intelligente vers vos équipes', 'Tableau de bord des conversations', ], metric: '24/7', label: 'SUPPORT', dark: true, }, { id: 'automatisation', icon: 'workflow', badge: 'Impact prouvé', title: 'Automatisation back-office', body: "Quarante heures récupérées, chaque mois — mesurées. On automatise les tâches manuelles répétitives qui ralentissent votre équipe.", items: [ 'Audit des processus répétitifs', 'Automatisations sur mesure (relances, docs, synchros)', 'Agents qui exécutent les tâches de bout en bout', 'Rapport mensuel d\'heures économisées', ], metric: '40 h / mois', label: 'BACK-OFFICE', }, ]; // La vignette elle-même n'est plus un lien (conserve juste l'animation de // survol) — seul le lien « Détails… » en bas à droite mène à la page de // détail de l'offre (09_site-web/offres/{id}.html). const OffreCard = ({ offre }) => { const [hover, setHover] = React.useState(false); const isDark = offre.dark; const base = isDark ? offresStyles.cardDark : offresStyles.card; const hoverShadow = isDark ? '6px 6px 0 0 var(--amber-500)' : '6px 6px 0 0 var(--blue-700)'; const accentColor = isDark ? 'var(--amber-500)' : 'var(--blue-700)'; return (
setHover(true)} onMouseLeave={() => setHover(false)} id={offre.id} > {offre.badge}

{offre.title}

{offre.body}

{offre.label} {offre.metric}
Détails…
); }; const Offres = () => (

// 01 — Le catalogue

Trois offres. Un objectif : vous redonner du temps.

On ne vend pas une plateforme. On construit l'agent dont votre entreprise a besoin, on l'intègre dans vos outils, et vous repartez avec le code source — vous gardez les clés.

{OFFRES.map((o, i) => (
))}
Pilote Générateur de propositions Agent support (abonnement) Automatisation back-office
); window.Offres = Offres;