From b057f179d698af3edba52aa6c6cc0e456f5baf93 Mon Sep 17 00:00:00 2001 From: MartinBraquet Date: Fri, 1 May 2026 13:11:52 +0200 Subject: [PATCH] Update button styles, text classes, and French translations for consistency and clarity --- backend/email/emails/share-compass.tsx | 2 +- common/messages/de.json | 24 +- common/messages/fr.json | 28 +- common/src/socials.ts | 4 +- web/components/buttons/button.tsx | 4 +- web/components/buttons/copy-link-button.tsx | 8 +- web/components/buttons/general-button.tsx | 16 +- web/components/widgets/title.tsx | 2 +- web/pages/about.tsx | 556 ++++++++++++-------- web/styles/globals.css | 38 +- 10 files changed, 400 insertions(+), 282 deletions(-) diff --git a/backend/email/emails/share-compass.tsx b/backend/email/emails/share-compass.tsx index ea69f965..96bcf07a 100644 --- a/backend/email/emails/share-compass.tsx +++ b/backend/email/emails/share-compass.tsx @@ -25,7 +25,7 @@ export const ShareCompassEmail = ({ const name = toUser.name.split(' ')[0] const t = createT(locale) - const profileShareUrl = getXShareProfileUrl(toUser.username, t) + const profileShareUrl = getXShareProfileUrl(t, toUser.username) return ( diff --git a/common/messages/de.json b/common/messages/de.json index a11e2c6d..15f70a19 100644 --- a/common/messages/de.json +++ b/common/messages/de.json @@ -9,7 +9,7 @@ "about.block.democratic.suffix": " garantieren.", "about.block.democratic.title": "Demokratisch", "about.block.free.text": "Kein Abonnement. Keine Bezahlschranke. Keine Werbung.", - "about.block.free.title": "Kostenlos", + "about.block.free.title": "Völlig kostenlos", "about.block.keyword.text": "\"Meditation\", \"Wandern\", \"Neurowissenschaften\", \"Nietzsche\". Greifen Sie auf jedes Profil zu und finden Sie Ihre Nische.", "about.block.keyword.title": "Suche nach Schlüsselwörtern", "about.block.mission.text": "Unsere einzige Mission ist es, mehr authentische menschliche Beziehungen zu schaffen, und jede Entscheidung muss diesem Ziel dienen.", @@ -25,27 +25,31 @@ "about.block.transparent.title": "Transparenz", "about.block.vision.text": "Compass ist für menschliche Beziehungen das, was Linux, Wikipedia und Firefox für Software und Wissen sind: ein öffentliches Gut, das von den Menschen, die es nutzen, für das Wohl aller aufgebaut wird.", "about.block.vision.title": "Vision", - "about.dev.button": "Code ansehen", + "about.dev.button": "Code ansehen →", "about.dev.text": "Der vollständige Quellcode und Anleitungen sind auf GitHub verfügbar.", "about.dev.title": "Die App entwickeln", - "about.donate.button": "Spendenoptionen", - "about.donate.text": "Unterstützen Sie unsere gemeinnützige Infrastruktur.", + "about.donate.button": "Spendenoptionen →", + "about.donate.text": "Unterstützen Sie unsere gemeinnützige Infrastruktur. Jeder Beitrag hält die Lichter an.", "about.donate.title": "Spenden", - "about.final.text": "Vielen Dank für die Unterstützung unserer Mission!", + "about.final.text": "Der beste Weg, Compass wachsen zu lassen, ist Mundpropaganda. Vielen Dank für die Unterstützung unserer Mission.", "about.final.title": "Erzählen Sie Ihren Freunden und Ihrer Familie davon", "about.help.title": "Compass helfen", - "about.join.button": "Discord beitreten", - "about.join.text": "Lassen Sie uns die Plattform gemeinsam gestalten.", + "about.join.button": "Discord beitreten →", + "about.join.text": "Lassen Sie uns die Plattform gemeinsam gestalten. Teilen Sie Ideen, geben Sie Feedback, treffen Sie andere Builder.", "about.join.title": "Der Community beitreten", "about.seo.description": "Über Compass", "about.seo.title": "Über uns", "about.settings.copied": "Kopiert!", "about.settings.copy_info": "Infos kopieren", - "about.subtitle": "Finden Sie Ihre Leute ganz einfach.", - "about.suggestions.button": "Hier vorschlagen", - "about.suggestions.text": "Machen Sie Vorschläge oder teilen Sie uns mit, dass Sie über dieses Formular helfen möchten!", + "about.subtitle": "Finden Sie Ihre Leute ganz einfach — basierend auf wer sie sind, nicht wie sie aussehen.", + "about.suggestions.button": "Hier vorschlagen →", + "about.suggestions.text": "Machen Sie Vorschläge oder lassen Sie uns wissen, dass Sie durch dieses Formular helfen möchten. Jede Idee zählt.", "about.suggestions.title": "Vorschläge machen oder beitragen", "about.title": "Warum Compass wählen?", + "about.copy_link": " Link kopieren", + "about.eyebrow": "Über Compass", + "about.features.label": "Was uns unterscheidet", + "about.help.label": "Helfen Sie Compass zu wachsen", "add_photos.add_description": "Beschreibung hinzufügen", "add_photos.profile_picture_hint": "Das hervorgehobene Bild ist Ihr Profilbild", "answers.add.error_create": "Fehler beim Erstellen der Kompatibilitätsfrage. Erneut versuchen?", diff --git a/common/messages/fr.json b/common/messages/fr.json index 14b5861d..b8fcc44c 100644 --- a/common/messages/fr.json +++ b/common/messages/fr.json @@ -9,7 +9,7 @@ "about.block.democratic.suffix": ".", "about.block.democratic.title": "Démocratique", "about.block.free.text": "Sans abonnement. Sans paywall. Sans publicité.", - "about.block.free.title": "Gratuit", + "about.block.free.title": "Complètement gratuit", "about.block.keyword.text": "\"Méditation\", \"Randonnée\", \"Neurosciences\", \"Nietzsche\". Accédez à n'importe quel profil et trouvez votre niche.", "about.block.keyword.title": "Recherche par mots-clés", "about.block.mission.text": "Notre unique mission est de créer plus de relations humaines authentiques, et chaque décision doit servir cet objectif.", @@ -25,27 +25,31 @@ "about.block.transparent.title": "Transparence", "about.block.vision.text": "Compass est aux relations humaines ce que Linux, Wikipédia et Firefox sont aux logiciels et au savoir : un bien public construit par les personnes qui l'utilisent, pour le bien de tous.", "about.block.vision.title": "Vision", - "about.dev.button": "Voir le code", + "about.dev.button": "Voir le code →", "about.dev.text": "Le code source complet et les instructions sont disponibles sur GitHub.", "about.dev.title": "Développer l'application", - "about.donate.button": "Options de don", - "about.donate.text": "Soutenez notre infrastructure à but non lucratif.", + "about.donate.button": "Options de don →", + "about.donate.text": "Soutiens notre infrastructure à but non lucratif. Chaque contribution permet de faire tourner les serveurs.", "about.donate.title": "Faire un don", - "about.final.text": "Merci de soutenir notre mission !", - "about.final.title": "Parlez-en à vos amis et votre famille", - "about.help.title": "Aidez Compass", - "about.join.button": "Rejoindre le Discord", - "about.join.text": "Façonnons la plateforme ensemble.", + "about.final.text": "Le meilleur moyen de faire grandir Compass est le bouche-à-oreille. Merci de soutenir notre mission.", + "about.final.title": "Parles-en à tes amis et ta famille", + "about.help.title": "Aide Compass", + "about.join.button": "Rejoindre le Discord →", + "about.join.text": "Façonnons la plateforme ensemble. Partage des idées, donne ton avis, rencontre d'autres personnes.", "about.join.title": "Rejoindre la communauté", "about.seo.description": "À propos de Compass", "about.seo.title": "À propos", "about.settings.copied": "Copié !", "about.settings.copy_info": "Copier les infos", - "about.subtitle": "Trouvez vos personnes en toute simplicité.", - "about.suggestions.button": "Suggérer ici", - "about.suggestions.text": "Faites des suggestions ou dites-nous que vous voulez aider via ce formulaire !", + "about.subtitle": "Trouve tes personnes en toute simplicité — selon qui ils sont, pas selon leur apparence.", + "about.suggestions.button": "Suggérer ici →", + "about.suggestions.text": "Donne des suggestions ou fais-nous savoir que tu souhaites aider via ce formulaire. Chaque idée compte.", "about.suggestions.title": "Faire des suggestions ou contribuer", "about.title": "Pourquoi choisir Compass ?", + "about.copy_link": " Copier le lien", + "about.eyebrow": "À propos de Compass", + "about.features.label": "Ce qui nous différencie", + "about.help.label": "Aide Compass à grandir", "add_photos.add_description": "Ajouter une description", "add_photos.profile_picture_hint": "L'image mise en surbrillance est votre photo de profil", "answers.add.error_create": "Erreur lors de la création de la question de compatibilité. Réessayez ?", diff --git a/common/src/socials.ts b/common/src/socials.ts index d2b0a251..fa9e6102 100644 --- a/common/src/socials.ts +++ b/common/src/socials.ts @@ -123,8 +123,8 @@ export const PLATFORM_LABELS: {[key in Site]: string} = { } export function getXShareProfileUrl( - username: string, t: (key: string, fallback: string, vars?: Record) => string, + username?: string, ) { const encodedText = encodeURIComponent( t( @@ -132,7 +132,7 @@ export function getXShareProfileUrl( "There's a free, open-source alternative to dating and networking apps.\nNo swipes. No ads. No algorithms. Just search for people who share your values.", ) + '\n@compassmeet', ) - const encodedUrl = encodeURIComponent(`${DEPLOYED_WEB_URL}/${username}`) + const encodedUrl = encodeURIComponent(`${DEPLOYED_WEB_URL}/${username || ''}`) return `https://x.com/intent/tweet?text=${encodedText}&url=${encodedUrl}` } diff --git a/web/components/buttons/button.tsx b/web/components/buttons/button.tsx index 4941f801..2aad0318 100644 --- a/web/components/buttons/button.tsx +++ b/web/components/buttons/button.tsx @@ -35,9 +35,9 @@ const sizeClasses = { export const baseButtonClasses = 'font-md inline-flex items-center justify-center rounded-md ring-inset transition-colors disabled:cursor-not-allowed text-center' -const solid = 'disabled:bg-ink-300 text-white' +const solid = 'disabled:bg-canvas-200 text-white' export const outline = - 'ring-1 ring-current ring-ink-300 disabled:ring-ink-300 disabled:text-ink-300 disabled:bg-inherit' + 'ring-1 ring-current ring-canvas-200 disabled:ring-canvas-200 disabled:text-canvas-200 disabled:bg-inherit' const gradient = [solid, 'bg-gradient-to-r hover:saturate-150 disabled:bg-none'] export function buttonClass(size: SizeType, color: ColorType) { diff --git a/web/components/buttons/copy-link-button.tsx b/web/components/buttons/copy-link-button.tsx index 94b3daa3..a2bc2c02 100644 --- a/web/components/buttons/copy-link-button.tsx +++ b/web/components/buttons/copy-link-button.tsx @@ -13,7 +13,7 @@ import {Tooltip} from '../widgets/tooltip' export function CopyLinkOrShareButton(props: { url: string - eventTrackingName: string // was type ShareEventName — why?? + eventTrackingName?: string // was type ShareEventName — why?? tooltip?: string className?: string iconClassName?: string @@ -49,7 +49,7 @@ export function CopyLinkOrShareButton(props: { onClick={onClick} className={clsx( className, - 'text-primary-700 hover:text-primary-800', + 'text-primary-700 hover:text-primary-800 gap-2', isSuccess && 'duration-[25ms]', )} disabled={!url} @@ -199,12 +199,12 @@ export const shareOnLinkedIn = (profileUrl: string) => { window.open(shareUrl, '_blank', 'noopener,noreferrer') } -export const ShareProfileOnXButton = (props: {username: string; className?: string}) => { +export const ShareProfileOnXButton = (props: {username?: string; className?: string}) => { const {username, className} = props const t = useT() return ( - ) diff --git a/web/components/buttons/general-button.tsx b/web/components/buttons/general-button.tsx index dbd30da1..f36f29b0 100644 --- a/web/components/buttons/general-button.tsx +++ b/web/components/buttons/general-button.tsx @@ -1,15 +1,19 @@ +import clsx from 'clsx' import Link from 'next/link' -export const GeneralButton = (props: {url: string; content: string}) => { - const {url, content} = props +export const GeneralButton = (props: {url: string; content: string; color?: string}) => { + const {url, content, color} = props return ( -
+
diff --git a/web/components/widgets/title.tsx b/web/components/widgets/title.tsx index 2268845d..245fec28 100644 --- a/web/components/widgets/title.tsx +++ b/web/components/widgets/title.tsx @@ -4,7 +4,7 @@ import {ReactNode} from 'react' export function Title(props: {className?: string; children?: ReactNode}) { const {className, children} = props return ( -

+

{children}

) diff --git a/web/pages/about.tsx b/web/pages/about.tsx index b8f28661..64cb64e1 100644 --- a/web/pages/about.tsx +++ b/web/pages/about.tsx @@ -1,247 +1,359 @@ +import clsx from 'clsx' import {discordLink, formLink, githubRepo} from 'common/constants' +import {DEPLOYED_WEB_URL} from 'common/envs/constants' import Link from 'next/link' import {ReactNode} from 'react' +import {CopyLinkOrShareButton, ShareProfileOnXButton} from 'web/components/buttons/copy-link-button' import {GeneralButton} from 'web/components/buttons/general-button' import {PageBase} from 'web/components/page-base' import {SEO} from 'web/components/SEO' import {useT} from 'web/lib/locale' -export const AboutBlock = (props: {text: ReactNode; title: string}) => { - const {text, title} = props +// ─── Types ──────────────────────────────────────────────────────────────────── + +interface FeatureCardProps { + icon: string + title: string + text: ReactNode +} + +interface HelpCardProps { + icon: string + title: string + text: ReactNode + buttonLabel: string + buttonUrl: string + buttonPrimary?: boolean + id?: string +} + +// ─── Feature Card ───────────────────────────────────────────────────────────── + +function FeatureCard({icon, title, text}: FeatureCardProps) { return ( -
-

{title}

-

{text}

-
+
+
+ {icon} +
+

{title}

+

{text}

+
) } +// ─── Full-width Feature Card ────────────────────────────────────────────────── + +function FeatureCardWide({icon, title, text}: FeatureCardProps) { + return ( +
+
+ {icon} +
+
+

{title}

+

{text}

+
+
+ ) +} + +// ─── Help Card ──────────────────────────────────────────────────────────────── + +function HelpCard({icon, title, text, buttonLabel, buttonUrl, buttonPrimary, id}: HelpCardProps) { + return ( +
+
+ {icon} +
+

+ {title} +

+

{text}

+
+ +
+
+ ) +} + +// ─── Section Label ──────────────────────────────────────────────────────────── + +function SectionLabel({children}: {children: ReactNode}) { + return ( +
+ + {children} + +
+
+ ) +} + +// ─── Share Strip ────────────────────────────────────────────────────────────── + +function ShareStrip({title, text}: {title: string; text: string}) { + const t = useT() + return ( +
+
+

📣 {title}

+

{text}

+
+
+ {/*// */} + {/*// ${*/} + {/*// primary*/} + {/*// ? 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600'*/} + {/*// : 'bg-white/[0.06] text-canvas-200 border-white/10 hover:bg-white/[0.12] hover:text-canvas-50'*/} + {/*// }*/} + + +
+
+ ) +} + +// ─── Divider ────────────────────────────────────────────────────────────────── + +function Divider() { + return ( +
+ ) +} + +// ─── Page ───────────────────────────────────────────────────────────────────── + export default function About() { const t = useT() + + const features: (FeatureCardProps & {wide?: boolean})[] = [ + { + icon: '🔍', + title: t('about.block.keyword.title', 'Keyword Search the Database'), + text: t( + 'about.block.keyword.text', + '"Meditation", "Hiking", "Neuroscience", "Nietzsche". Access any profile and get niche.', + ), + }, + { + icon: '🔔', + title: t('about.block.notify.title', 'Get Notified About Searches'), + text: t( + 'about.block.notify.text', + "No need to constantly check the app! We'll contact you when new users fit your searches.", + ), + }, + { + icon: '🎭', + title: t('about.block.personality.title', 'Personality-Centered'), + text: t('about.block.personality.text', 'Values and interests first, photos are secondary.'), + }, + { + icon: '🎁', + title: t('about.block.free.title', 'Completely Free'), + text: t('about.block.free.text', 'Subscription-free. Paywall-free. Ad-free.'), + }, + { + icon: '🗳️', + title: t('about.block.democratic.title', 'Democratic'), + text: ( + + {t('about.block.democratic.prefix', 'Governed and ')} + + {t('about.block.democratic.link_voted', 'voted')} + + {t( + 'about.block.democratic.middle', + ' by the community, while ensuring no drift through our ', + )} + + {t('about.block.democratic.link_constitution', 'constitution')} + + {t('about.block.democratic.suffix', '.')} + + ), + }, + { + icon: '🎯', + title: t('about.block.mission.title', 'One Mission'), + text: t( + 'about.block.mission.text', + 'Our only mission is to create more genuine human connections, and every decision must serve that goal.', + ), + }, + { + icon: '🌍', + title: t('about.block.vision.title', 'Vision'), + text: t( + 'about.block.vision.text', + 'Compass is to human connection what Linux, Wikipedia, and Firefox are to software and knowledge: a public good built by the people who use it, for the benefit of everyone.', + ), + wide: true, + }, + ] + + const helpCards: HelpCardProps[] = [ + { + icon: '💡', + id: 'give-suggestions-or-contribute', + title: t('about.suggestions.title', 'Give Suggestions or Contribute'), + text: t( + 'about.suggestions.text', + 'Give suggestions or let us know you want to help through this form. Every idea matters.', + ), + buttonLabel: t('about.suggestions.button', 'Suggest Here →'), + buttonUrl: formLink, + // buttonPrimary: true, + }, + { + icon: '💻', + id: 'share', + title: t('about.dev.title', 'Develop the App'), + text: t( + 'about.dev.text', + 'The full source code and instructions are available on GitHub. PRs welcome.', + ), + buttonLabel: t('about.dev.button', 'View Code →'), + buttonUrl: githubRepo, + }, + { + icon: '💬', + id: 'join-chats', + title: t('about.join.title', 'Join the Community'), + text: t( + 'about.join.text', + "Let's shape the platform together. Share ideas, give feedback, meet other builders.", + ), + buttonLabel: t('about.join.button', 'Join the Discord →'), + buttonUrl: discordLink, + }, + { + icon: '❤️', + id: 'donate', + title: t('about.donate.title', 'Donate'), + text: t( + 'about.donate.text', + 'Support our not-for-profit infrastructure. Every contribution keeps the lights on.', + ), + buttonLabel: t('about.donate.button', 'Donation Options →'), + buttonUrl: '/support', + }, + ] + return ( -
-
-
-
-

- {t('about.title', 'Why Choose Compass?')} -

-
-
-

- {t('about.subtitle', 'To find your people with ease.')} -

-
-
-
-
-
-
-
- - - - - - - - - - - {t('about.block.democratic.prefix', 'Governed and ')} - {t('about.block.democratic.link_voted', 'voted')} - {t( - 'about.block.democratic.middle', - ' by the community, while ensuring no drift through our ', - )} - - {t('about.block.democratic.link_constitution', 'constitution')} - - {t('about.block.democratic.suffix', '.')} - - } - /> - - - - - - {/**/} - {/* {t('about.block.press.text', 'Explore the latest press stories ')}*/} - {/* {t('about.block.press.link', 'here')}.*/} - {/*}*/} - {/*/>*/} -
-
-
-
-
-

- {t('about.help.title', 'Help Compass')} -

-
-
-
- {t('about.suggestions.title', 'Give Suggestions or Contribute')} -
-

- {t( - 'about.suggestions.text', - 'Give suggestions or let us know you want to help through this form!', - )} -

- -
-
-
- {t('about.dev.title', 'Develop the App')} -
-

- {t( - 'about.dev.text', - 'The full source code and instructions are available on GitHub.', - )} -

- -
-
-
- {t('about.join.title', 'Join the Community')} -
-

- {t('about.join.text', "Let's shape the platform together.")} -

-
- - {/**/} - {/* Join on Stoat / Revolt*/} - {/**/} -
-
-
- -

- {t('about.donate.text', 'Support our not-for-profit infrastructure.')} -

-
- - {/**/} - {/* Donate on Patreon*/} - {/**/} - {/**/} - {/* Donate on PayPal*/} - {/**/} - {/**/} - {/* Donate on Ko-fi*/} - {/**/} - {/**/} - {/* Donate on GitHub*/} - {/**/} - {/**/} - {/*GitHub has increased transparency,
but requires an account.*/} - {/*
*/} -
-
-
-
- {t('about.final.title', 'Tell Your Friends and Family')} -
-

- {t('about.final.text', 'Thank you for supporting our mission!')} -

-
-
-
-
+
+ {/* ── Page header ── */} +
+

+ {t('about.eyebrow', 'About Compass')} +

+

+ {t('about.title', 'Why Choose Compass?')} +

+

+ {t( + 'about.subtitle', + 'To find your people with ease — based on who they are, not how they look.', + )} +

+ + {/* ── Features ── */} + {t('about.features.label', 'What makes us different')} + +
+ {features.map((f) => + f.wide ? ( + + ) : ( + + ), + )} +
+ + + + {/* ── Help ── */} + {t('about.help.label', 'Help Compass grow')} + +
+ {helpCards.map((card) => ( + + ))} +
+ + {/* ── Share strip ── */} +
) diff --git a/web/styles/globals.css b/web/styles/globals.css index 1e193c75..06bdeaf3 100644 --- a/web/styles/globals.css +++ b/web/styles/globals.css @@ -105,22 +105,6 @@ /* Green - Accents */ --color-green-500: 107 143 113; /* Accent - Sage Green (#6B8F71) */ - /* Text / Ink Grey Scale */ - /* High Contrast */ - --color-ink-0: 255 255 255; /* white */ - --color-ink-50: 255 255 255; - --color-ink-100: 255 255 255; - --color-ink-200: 255 255 255; - --color-ink-300: 160 160 160; - --color-ink-400: 160 160 160; - /*--color-ink-500: 80 80 80;*/ - --color-ink-600: 0 0 0; - --color-ink-700: 0 0 0; - --color-ink-800: 0 0 0; - /*--color-ink-900: 0 0 0;*/ - --color-ink-950: 0 0 0; - --color-ink-1000: 0 0 0; /* black */ - /* Canvas - Backgrounds & Surfaces */ --color-canvas-0: 255 255 255; /* white */ --color-canvas-25: 242 240 232; @@ -128,11 +112,6 @@ --color-canvas-100: 237 232 224; /* Main Page Background - Warm Beige (#EDE8E0) */ --color-canvas-200: 232 213 188; /* Tags - Light Tan (#E8D5BC) */ --color-canvas-300: 222 203 178; - --color-canvas-400: 160 160 160; - --color-canvas-500: 130 130 130; - --color-canvas-600: 100 100 100; - --color-canvas-700: 75 75 75; - --color-canvas-800: 50 50 50; --color-canvas-900: 68 52 34; /* Sidebar pressed */ --color-canvas-950: 44 36 22; /* Sidebar - Dark Espresso (#2C2416) */ --color-canvas-1000: 44 36 22; /* black */ @@ -150,6 +129,20 @@ --color-primary-900: 71 39 16; /* #472710 */ --color-primary-950: 43 21 8; /* #2B1508 */ + --color-ink-0: 255 255 255; /* white */ + --color-ink-50: 255 255 255; + --color-ink-100: 255 255 255; + --color-ink-200: 255 255 255; + --color-ink-300: 160 160 160; + --color-ink-400: 160 160 160; + /*--color-ink-500: 80 80 80;*/ + --color-ink-600: 0 0 0; + --color-ink-700: 0 0 0; + --color-ink-800: 0 0 0; + /*--color-ink-900: 0 0 0;*/ + --color-ink-950: 0 0 0; + --color-ink-1000: 0 0 0; /* black */ + --color-yes-0: 255 255 255; --color-yes-50: 249 249 249; --color-yes-100: 242 242 242; @@ -248,6 +241,7 @@ --color-canvas-100: 26 22 18; /* Main Page Background (#2C2416) */ --color-canvas-200: 68 52 34; /* UI Elements/Tags */ --color-canvas-300: 78 62 44; + --color-canvas-900: 25 23 20; /* Sidebar pressed */ --color-canvas-950: 15 13 10; /* Deepest depth (Sidebar/Bottom) */ --color-canvas-1000: 247 244 239; /* Deepest depth (Sidebar/Bottom) */ @@ -414,7 +408,7 @@ h4, h5, h6 { /*font-family: 'Inter', sans-serif; !* Clean modern font *!*/ - font-weight: 600; /* Semi-bold for clarity */ + font-weight: 900; /* Semi-bold for clarity */ /*color: #111827; !* Near-black text for readability *!*/ line-height: 1.25; margin-top: 1.5rem;