Bereit für Open Source?
diff --git a/src/components/about/AboutCTA.tsx b/src/components/about/AboutCTA.tsx
index edd71cd0b..fbfd00efa 100644
--- a/src/components/about/AboutCTA.tsx
+++ b/src/components/about/AboutCTA.tsx
@@ -18,7 +18,7 @@ interface AboutCTAProps {
export default function AboutCTA({ title, description, buttonText, href }: AboutCTAProps) {
return (
-
+
{title}
diff --git a/src/components/admin/HirnChat.tsx b/src/components/admin/HirnChat.tsx
index cff4f24da..7200a8b76 100644
--- a/src/components/admin/HirnChat.tsx
+++ b/src/components/admin/HirnChat.tsx
@@ -258,7 +258,7 @@ export function HirnChat({ sessionId, onSessionChange, compact = false }: HirnCh
diff --git a/src/components/admin/protocols/ProtocolProgressStrip.tsx b/src/components/admin/protocols/ProtocolProgressStrip.tsx
index 30826164b..4d28e60be 100644
--- a/src/components/admin/protocols/ProtocolProgressStrip.tsx
+++ b/src/components/admin/protocols/ProtocolProgressStrip.tsx
@@ -20,7 +20,7 @@ const SHORT_LABELS: Record
= {
const STATE_CONFIG = {
done: {
icon: CheckCircle2,
- dotClass: 'bg-action text-white',
+ dotClass: 'bg-action text-action-text',
labelClass: 'text-action',
lineClass: 'bg-action',
},
diff --git a/src/components/admin/service-form/ProcessSection.tsx b/src/components/admin/service-form/ProcessSection.tsx
index 6f6ddbe1f..68f57eb37 100644
--- a/src/components/admin/service-form/ProcessSection.tsx
+++ b/src/components/admin/service-form/ProcessSection.tsx
@@ -25,7 +25,7 @@ export function ProcessSection({ steps, onAdd, onUpdate, onRemove }: ProcessSect
>
-
+
{step.step}
diff --git a/src/components/admin/team/activity/ActivityCard.tsx b/src/components/admin/team/activity/ActivityCard.tsx
index ecb7066ac..c9194a255 100644
--- a/src/components/admin/team/activity/ActivityCard.tsx
+++ b/src/components/admin/team/activity/ActivityCard.tsx
@@ -85,7 +85,7 @@ export function ActivityCard({ activity }: ActivityCardProps) {
{/* Avatar */}
-
+
{/* Content */}
diff --git a/src/components/admin/users/UserTableRow.tsx b/src/components/admin/users/UserTableRow.tsx
index 59f7c48a7..60dfaeb0c 100644
--- a/src/components/admin/users/UserTableRow.tsx
+++ b/src/components/admin/users/UserTableRow.tsx
@@ -70,7 +70,7 @@ function UserInfoCell({
userIsStaff: boolean
}) {
const avatarColor = userIsSuperAdmin || userIsStaff
- ? 'bg-action text-white'
+ ? 'bg-action text-action-text'
: 'bg-surface-overlay text-text-primary'
return (
diff --git a/src/components/auth/UserMenu.tsx b/src/components/auth/UserMenu.tsx
index 3c5e4d273..c607cef1b 100644
--- a/src/components/auth/UserMenu.tsx
+++ b/src/components/auth/UserMenu.tsx
@@ -157,7 +157,7 @@ export function UserMenu() {
unoptimized
/>
) : (
-
+
{initials}
)}
@@ -194,7 +194,7 @@ export function UserMenu() {
unoptimized
/>
) : (
-
+
{initials}
)}
diff --git a/src/components/blog/BlogComments.tsx b/src/components/blog/BlogComments.tsx
index db3cf3cb5..69005ee85 100644
--- a/src/components/blog/BlogComments.tsx
+++ b/src/components/blog/BlogComments.tsx
@@ -126,7 +126,7 @@ export default function BlogComments({ slug }: { slug: string }) {
{c.authorImage ? (

) : (
-
+
{initials(c.authorName)}
)}
diff --git a/src/components/decisions/voting/OptionCard.tsx b/src/components/decisions/voting/OptionCard.tsx
index 1e9f868ec..14c65504f 100644
--- a/src/components/decisions/voting/OptionCard.tsx
+++ b/src/components/decisions/voting/OptionCard.tsx
@@ -41,7 +41,7 @@ export function OptionCard({
className="object-contain p-2"
/>
{selected && (
-
+
diff --git a/src/components/deliverables/DeliverableChat.tsx b/src/components/deliverables/DeliverableChat.tsx
index 701a1054f..13076c5aa 100644
--- a/src/components/deliverables/DeliverableChat.tsx
+++ b/src/components/deliverables/DeliverableChat.tsx
@@ -74,7 +74,7 @@ export default function DeliverableChat({
diff --git a/src/components/hirn/HirnChatPanel.tsx b/src/components/hirn/HirnChatPanel.tsx
index acbb3ab27..c01a9d752 100644
--- a/src/components/hirn/HirnChatPanel.tsx
+++ b/src/components/hirn/HirnChatPanel.tsx
@@ -200,7 +200,7 @@ export function HirnChatPanel({ isOpen, onClose, context, pathname, isAuthentica
{t('loginCta')}
@@ -245,7 +245,7 @@ export function HirnChatPanel({ isOpen, onClose, context, pathname, isAuthentica
diff --git a/src/components/it-hilfe/detail/ConfirmReviewCard.tsx b/src/components/it-hilfe/detail/ConfirmReviewCard.tsx
index cc6821210..b1143f584 100644
--- a/src/components/it-hilfe/detail/ConfirmReviewCard.tsx
+++ b/src/components/it-hilfe/detail/ConfirmReviewCard.tsx
@@ -129,7 +129,7 @@ export function ConfirmReviewCard({
variant="outline"
className={`flex-1 py-3 px-4 min-h-touch font-medium border-2 ${
recommended === true
- ? 'bg-action text-white border-action'
+ ? 'bg-action text-action-text border-action'
: 'bg-surface-base text-text-secondary border-default hover:border-action'
}`}
>
diff --git a/src/components/layout/MobileMenu.tsx b/src/components/layout/MobileMenu.tsx
index 818b489fb..adfc0443d 100644
--- a/src/components/layout/MobileMenu.tsx
+++ b/src/components/layout/MobileMenu.tsx
@@ -330,7 +330,7 @@ export function MobileMenu({
{/* User Info */}
-
+
{session.user.name
?.split(' ')
.map((n) => n[0])
diff --git a/src/components/layout/Section.tsx b/src/components/layout/Section.tsx
index 143d2be81..6ab0b86a3 100644
--- a/src/components/layout/Section.tsx
+++ b/src/components/layout/Section.tsx
@@ -36,7 +36,7 @@ const densityClass: Record
= {
const toneClass: Record = {
surface: 'bg-surface-base',
tinted: 'bg-surface-raised',
- inverse: 'bg-action text-white',
+ inverse: 'bg-action text-action-text',
}
export function Section({
diff --git a/src/components/marketplace/OrderStatusTimeline.tsx b/src/components/marketplace/OrderStatusTimeline.tsx
index bd1eee4a0..81871a57e 100644
--- a/src/components/marketplace/OrderStatusTimeline.tsx
+++ b/src/components/marketplace/OrderStatusTimeline.tsx
@@ -89,7 +89,7 @@ export function OrderStatusTimeline({
{reached
diff --git a/src/components/messages/ConversationList.tsx b/src/components/messages/ConversationList.tsx
index e10f9f6e7..33e58a4cd 100644
--- a/src/components/messages/ConversationList.tsx
+++ b/src/components/messages/ConversationList.tsx
@@ -91,7 +91,7 @@ export default function ConversationList({ conversations, selectedId, onSelect }
{conv.last_message_preview || t('noMessage')}
{conv.unread_count > 0 && (
-
+
{conv.unread_count}
)}
diff --git a/src/components/messages/MessageThread.tsx b/src/components/messages/MessageThread.tsx
index 112ec1ec7..9df96d5e7 100644
--- a/src/components/messages/MessageThread.tsx
+++ b/src/components/messages/MessageThread.tsx
@@ -167,7 +167,7 @@ export default function MessageThread({
diff --git a/src/components/messaging/MessageSidebar.tsx b/src/components/messaging/MessageSidebar.tsx
index c7f69d054..9c754321f 100644
--- a/src/components/messaging/MessageSidebar.tsx
+++ b/src/components/messaging/MessageSidebar.tsx
@@ -196,7 +196,7 @@ export function MessageSidebar({ isOpen, onClose, initialConversationId }: Messa
{conversation.type}
{conversation.unread_count > 0 && (
-
+
{conversation.unread_count}
)}
@@ -247,7 +247,7 @@ export function MessageSidebar({ isOpen, onClose, initialConversationId }: Messa
diff --git a/src/components/services/ServiceProcess.tsx b/src/components/services/ServiceProcess.tsx
index 048074980..6822683c4 100644
--- a/src/components/services/ServiceProcess.tsx
+++ b/src/components/services/ServiceProcess.tsx
@@ -21,7 +21,7 @@ export default function ServiceProcessSection({ process }: ServiceProcessProps)
{process.map((step, index) => (
-
+
{step.step}
{step.title}
diff --git a/src/components/ui/LocaleSwitcher.tsx b/src/components/ui/LocaleSwitcher.tsx
index 4be29d9f1..71914e3f9 100644
--- a/src/components/ui/LocaleSwitcher.tsx
+++ b/src/components/ui/LocaleSwitcher.tsx
@@ -89,7 +89,7 @@ export function LocaleSwitcher({ className, openUpward = false, inline = false,
'min-h-touch flex items-center gap-1.5 px-3 py-2 rounded-lg text-sm font-medium transition-colors',
'focus:outline-hidden focus-visible:ring-2 focus-visible:ring-action',
active
- ? 'bg-action text-white'
+ ? 'bg-action text-action-text'
: 'bg-surface-raised text-text-secondary hover:bg-surface-base',
isPending && 'opacity-50 cursor-wait',
)}
diff --git a/src/components/ui/Logo.tsx b/src/components/ui/Logo.tsx
index 5d95f6c1c..d75ef320c 100644
--- a/src/components/ui/Logo.tsx
+++ b/src/components/ui/Logo.tsx
@@ -39,14 +39,16 @@ export function Logo({ className, href = '/', showText = true }: LogoProps) {
aria-hidden="true"
className="h-9 w-9 shrink-0 transition-transform duration-200 group-hover:scale-105 sm:h-11 sm:w-11"
fill="none"
- stroke="var(--color-primary-600)"
+ stroke="var(--color-action)"
strokeWidth={EVIG_MARK.strokeWidth}
strokeLinecap="round"
strokeLinejoin="round"
>
- {EVIG_MARK.paths.map((d) => (
-
- ))}
+
+ {EVIG_MARK.paths.map((d) => (
+
+ ))}
+
{showText && (
diff --git a/src/components/workshops/WorkshopRegistrationForm.tsx b/src/components/workshops/WorkshopRegistrationForm.tsx
index 32caf935c..daad3d548 100644
--- a/src/components/workshops/WorkshopRegistrationForm.tsx
+++ b/src/components/workshops/WorkshopRegistrationForm.tsx
@@ -236,7 +236,7 @@ export default function WorkshopRegistrationForm({ workshop, instance }: Worksho
diff --git a/src/config/brand.ts b/src/config/brand.ts
index 0c0b51a20..4129f93db 100644
--- a/src/config/brand.ts
+++ b/src/config/brand.ts
@@ -1,20 +1,22 @@
/**
* Brand geometry — SINGLE SOURCE OF TRUTH for the evig "eternal loop" mark.
*
- * The Möbius/infinity mark (evig = "eternal" + the circular-reuse loop) is drawn
- * from these two stroked paths on a 0 0 64 64 canvas. Everything that renders the
- * mark — the component, the OG share card, and the favicon/OG/panel raster
- * generators — reads it from HERE. Change the mark once, and every surface follows.
+ * The refined eternal loop (evig = "eternal" + the circular-reuse loop) is a
+ * single-stroke closed infinity, tilted -8°. Everything that renders the mark —
+ * the component, the /vision manifesto, the OG share card, and the
+ * favicon/OG/panel raster generators — reads it from HERE. Change the mark once,
+ * and every surface follows.
*
- * The brand green comes from the design-token SSOT (`--color-primary-600` in
- * globals.css); components reference that token, never a hardcoded hex.
+ * The mark colour comes from the design-token SSOT (`--color-action` /
+ * `--accent-action` — Ion Lime); components reference that token, never a hex.
*/
export const EVIG_MARK = {
viewBox: '0 0 64 64',
- strokeWidth: 9,
- /** Two continuous strands; the left loop's gap is the Möbius over/under twist. */
+ strokeWidth: 7,
+ /** Slight tilt gives the loop motion; renderers wrap the paths in this transform. */
+ transform: 'rotate(-8 32 32)',
+ /** One continuous closed infinity stroke. */
paths: [
- 'M30 30 C23 20 10 22 10 32 C10 42 23 44 30 34',
- 'M27 35 C33 25 41 21 46 21 C55 21 55 34 49 39 C43 43 35 43 30 34 C28 31 27 30 26 29',
+ 'M32 32 C24 19 12 19 12 32 C12 45 24 45 32 32 C40 19 52 19 52 32 C52 45 40 45 32 32',
],
} as const
diff --git a/src/config/ui-colors.ts b/src/config/ui-colors.ts
index 1eb17aa75..1eaa245c1 100644
--- a/src/config/ui-colors.ts
+++ b/src/config/ui-colors.ts
@@ -60,7 +60,7 @@ export const DEFAULT_CATEGORY_COLOR = UI_COLOR_PALETTE[0]
export const OG_IMAGE_COLORS = {
backgroundGradient: 'linear-gradient(135deg, #0a0a0a 0%, #0d1512 55%, #0a0a0a 100%)',
heading: '#ffffff',
- accent: '#22c55e',
+ accent: '#B6F531',
body: '#a3a3a3',
meta: '#6b7280',
} as const
@@ -82,7 +82,7 @@ export const ELEMENT_SELECTION_COLORS = {
/** Feedback scope accent colors */
export const FEEDBACK_SCOPE_COLORS = {
site: '#7c3aed',
- page: '#16a34a',
+ page: '#4d7c0f',
element: '#2563eb',
} as const
@@ -95,7 +95,7 @@ export const GLOBAL_ERROR_COLORS = {
pageBg: '#f9fafb',
heading: '#111827',
body: '#4b5563',
- primary: '#16a34a',
+ primary: '#4d7c0f',
white: '#fff',
secondaryText: '#374151',
border: '#d1d5db',
@@ -108,7 +108,7 @@ export const EMAIL_INLINE_COLORS = {
/** Standalone newsletter-confirmation HTML cannot consume CSS variables. */
export const NEWSLETTER_CONFIRMATION_COLORS = {
- success: '#22c55e',
+ success: '#4d7c0f',
error: '#dc2626',
body: '#333333',
page: '#fafafa',
diff --git a/src/db/schema/content.ts b/src/db/schema/content.ts
index 8de63e6a0..a29fb021f 100644
--- a/src/db/schema/content.ts
+++ b/src/db/schema/content.ts
@@ -10,7 +10,7 @@ export const blogCategories = pgTable('blog_categories', {
slug: text('slug').notNull().unique(),
name: text('name').notNull(),
description: text('description'),
- color: text('color').default('#16a34a'),
+ color: text('color').default('#4d7c0f'),
sortOrder: integer('sort_order').default(0),
createdAt: timestamp('created_at', { withTimezone: true, mode: 'string' }).defaultNow(),
updatedAt: timestamp('updated_at', { withTimezone: true, mode: 'string' }).defaultNow(),
diff --git a/src/lib/admin-ui.ts b/src/lib/admin-ui.ts
index d8e91470e..512a6a7d6 100644
--- a/src/lib/admin-ui.ts
+++ b/src/lib/admin-ui.ts
@@ -188,7 +188,7 @@ export const adminInteractive = {
/** Unread notification row tint */
unreadTint: 'bg-action-muted/50',
/** Active team member avatar */
- avatarActive: 'bg-action text-white',
+ avatarActive: 'bg-action text-action-text',
/** Inactive team member avatar — readable initials on dark admin chrome */
avatarInactive: 'bg-surface-overlay text-text-secondary',
} as const
diff --git a/src/lib/design-system.ts b/src/lib/design-system.ts
index 1eb3089c3..dfb3e7531 100644
--- a/src/lib/design-system.ts
+++ b/src/lib/design-system.ts
@@ -209,9 +209,9 @@ export function getStatusColors(status: keyof typeof statusColors) {
*/
export const buttonVariants = {
primary: {
- bg: 'bg-action',
- hover: 'hover:bg-action-hover',
- text: 'text-action-text',
+ bg: 'bg-action-strong',
+ hover: 'hover:opacity-90',
+ text: 'text-action-strong-text',
border: 'border-transparent',
},
secondary: {
diff --git a/src/lib/email/templates/base-styles.ts b/src/lib/email/templates/base-styles.ts
index e449a6e8a..774c065d9 100644
--- a/src/lib/email/templates/base-styles.ts
+++ b/src/lib/email/templates/base-styles.ts
@@ -10,18 +10,18 @@ export const BASE_STYLES = `
body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
.container { max-width: 600px; margin: 0 auto; padding: 20px; }
.header { padding: 20px; text-align: center; color: white; }
- .header-green { background-color: #22c55e; }
+ .header-green { background-color: #4d7c0f; }
.header-red { background-color: #dc2626; }
.header-orange { background-color: #f59e0b; }
.header-blue { background-color: #3b82f6; }
.header-purple { background-color: #8b5cf6; }
.content { padding: 30px 20px; background-color: #f9f9f9; }
.button { display: inline-block; padding: 12px 24px; color: white; text-decoration: none; border-radius: 5px; margin: 20px 0; }
- .button-green { background-color: #22c55e; }
+ .button-green { background-color: #4d7c0f; }
.button-orange { background-color: #f59e0b; }
.button-blue { background-color: #3b82f6; }
.button-purple { background-color: #8b5cf6; }
- .code { font-size: 32px; font-weight: bold; letter-spacing: 8px; color: #22c55e; background-color: #f0fdf4; padding: 20px; text-align: center; border-radius: 8px; margin: 20px 0; }
+ .code { font-size: 32px; font-weight: bold; letter-spacing: 8px; color: #4d7c0f; background-color: #f7fee7; padding: 20px; text-align: center; border-radius: 8px; margin: 20px 0; }
.footer { padding: 20px; text-align: center; color: #666; font-size: 12px; }
.highlight-box { background-color: #fef3c7; padding: 15px; border-radius: 5px; margin: 15px 0; }
`;
diff --git a/src/lib/email/templates/donation-dropoff.ts b/src/lib/email/templates/donation-dropoff.ts
index 7bf675ebe..5005c65fd 100644
--- a/src/lib/email/templates/donation-dropoff.ts
+++ b/src/lib/email/templates/donation-dropoff.ts
@@ -58,10 +58,10 @@ export const donationDropoffNotification = (fields: DropoffFields): EmailContent
${optionalRow('Bevorzugter Termin', eDate)}
Geräte:
-
+
${eDevicesHtml}
- ${eNotesHtml ? `
Anmerkungen:
${eNotesHtml}
` : ''}
+ ${eNotesHtml ? `
Anmerkungen:
${eNotesHtml}
` : ''}
Direkt antworten
@@ -91,7 +91,7 @@ export const donationDropoffConfirmation = (fields: DropoffFields): EmailContent
vielen Dank, dass du ${ORG.name} Geräte spenden möchtest! Wir haben deine Anmeldung erhalten.
${dateLine}
Du hast angegeben:
-
+
${eDevicesHtml}
diff --git a/src/lib/email/templates/inquiry.ts b/src/lib/email/templates/inquiry.ts
index 594582360..3fd8bba75 100644
--- a/src/lib/email/templates/inquiry.ts
+++ b/src/lib/email/templates/inquiry.ts
@@ -38,7 +38,7 @@ export const inquiryNotification = (
| E-Mail | ${eEmail} |
Nachricht:
-
+
${eMessageHtml}
diff --git a/src/lib/email/templates/it-hilfe.ts b/src/lib/email/templates/it-hilfe.ts
index 1c3d776c4..0abd76cda 100644
--- a/src/lib/email/templates/it-hilfe.ts
+++ b/src/lib/email/templates/it-hilfe.ts
@@ -56,7 +56,7 @@ export const itHilfeRequestConfirmation = (
` : ''}
-
+
Über ${ORG.name}
Wir sind ein Schweizer Verein für nachhaltige IT. Reparieren statt Wegwerfen ist unser Motto.
@@ -158,7 +158,7 @@ export const itHilfeAnonymousRequestClaim = (
Dieser Link ist 7 Tage gültig. Falls er abgelaufen ist, kannst du auf der Anmeldeseite "Passwort vergessen" wählen und einen neuen Link anfordern.
-
+
Was passiert als Nächstes?
Sobald dein Konto aktiviert ist, siehst du eingehende Angebote von Technikern aus der Community. Du entscheidest, welches Angebot du annimmst.
@@ -245,7 +245,7 @@ export const helperNewMatchingRequest = (
Deine passenden Fähigkeiten:
- ${matchingSkillNames.map(skill => `${escapeHtml(skill)}`).join('')}
+ ${matchingSkillNames.map(skill => `${escapeHtml(skill)}`).join('')}
Anfrage ansehen & Angebot machen
diff --git a/src/lib/email/templates/marketplace.ts b/src/lib/email/templates/marketplace.ts
index c824b2ed8..8cd10e7e8 100644
--- a/src/lib/email/templates/marketplace.ts
+++ b/src/lib/email/templates/marketplace.ts
@@ -56,7 +56,7 @@ export function listingPublishedConfirmation(data: ListingPublishedData): { subj
Hallo ${escapeHtml(data.recipientName)},
Dein Inserat "${escapeHtml(data.listingTitle)}" wurde erfolgreich veröffentlicht und ist jetzt im Marketplace sichtbar.
-
+
Inserat ansehen
@@ -111,7 +111,7 @@ export function newListingQuestion(data: NewListingQuestionData): { subject: str
${escapeHtml(data.questionPreview)}
-
+
Jetzt antworten
@@ -177,7 +177,7 @@ export function orderConfirmationBuyer(data: OrderConfirmationBuyerData): { subj
-
+
Bestellung ansehen
@@ -203,12 +203,12 @@ export function newOrderNotificationSeller(data: NewOrderNotificationSellerData)
${escapeHtml(data.buyerName)} hat dein Inserat "${escapeHtml(data.listingTitle)}" bestellt.
- | Deine Auszahlung | ${escapeHtml(data.payoutAmountChf)} |
+ | Deine Auszahlung | ${escapeHtml(data.payoutAmountChf)} |
| Lieferart | ${escapeHtml(data.deliveryMethod)} |
-
+
Bestellung verwalten
@@ -237,7 +237,7 @@ export function orderStatusUpdate(data: OrderStatusUpdateData): { subject: strin
${data.actionHint ? `
${escapeHtml(data.actionHint)}
` : ''}
-
+
Bestellung ansehen
@@ -284,7 +284,7 @@ export function orderReceiptConfirmed(data: OrderReceiptConfirmedData): { subjec
Der Käufer hat den Erhalt von "${escapeHtml(data.listingTitle)}" bestätigt. Die Zahlung wurde freigegeben und wird dir in Kürze ausbezahlt.
Bestellnummer: ${escapeHtml(data.orderNumber)}
-
+
Bestellung ansehen
@@ -308,7 +308,7 @@ export function orderReviewPrompt(data: OrderReviewPromptData): { subject: strin
Hallo ${escapeHtml(data.recipientName)},
Wir hoffen, du bist zufrieden mit "${escapeHtml(data.listingTitle)}". Deine Bewertung hilft anderen Käuferinnen und Käufern bei der Entscheidung und unterstützt verantwortungsvolle Verkäufer.
-
+
Jetzt bewerten
@@ -341,7 +341,7 @@ export function orderReviewReceived(data: OrderReviewReceivedData): { subject: s
${escapeHtml(data.content)}
-
+
Bewertung ansehen
@@ -367,7 +367,7 @@ export function listingReviewNotification(data: ListingReviewData): { subject: s
${data.rating} von 5 Sternen
-
+
Bewertung ansehen
diff --git a/src/lib/email/templates/projects.ts b/src/lib/email/templates/projects.ts
index eb6245936..884be5655 100644
--- a/src/lib/email/templates/projects.ts
+++ b/src/lib/email/templates/projects.ts
@@ -47,7 +47,7 @@ export const projectContributionNotification = (
| Organisation | ${eOrg} |
Nachricht:
-
+
${eMessageHtml}
diff --git a/src/lib/email/templates/referral.ts b/src/lib/email/templates/referral.ts
index 6b86b3a6d..c38ee03a5 100644
--- a/src/lib/email/templates/referral.ts
+++ b/src/lib/email/templates/referral.ts
@@ -16,10 +16,10 @@ export const referralInvitation = (inviterName: string, referralUrl: string): Em
Einladung zu ${ORG.name}
@@ -87,9 +87,9 @@ export const referralCouponReceived = (
Dein Gutschein
diff --git a/src/lib/invoices/pdf-template.ts b/src/lib/invoices/pdf-template.ts
index 8d33f8a3d..07a466648 100644
--- a/src/lib/invoices/pdf-template.ts
+++ b/src/lib/invoices/pdf-template.ts
@@ -115,10 +115,10 @@ function generateInvoiceHTML(invoice: InvoiceData): string {
align-items: flex-start;
margin-bottom: 40px;
padding-bottom: 20px;
- border-bottom: 2px solid #16a34a;
+ border-bottom: 2px solid #4d7c0f;
}
.company-info h1 {
- color: #16a34a;
+ color: #4d7c0f;
margin: 0;
font-size: 28px;
}
@@ -127,7 +127,7 @@ function generateInvoiceHTML(invoice: InvoiceData): string {
}
.invoice-details h2 {
margin: 0 0 10px 0;
- color: #16a34a;
+ color: #4d7c0f;
}
.customer-info {
margin-bottom: 30px;