From a7a818823c74dd96b792700154119ab49f6c37d6 Mon Sep 17 00:00:00 2001 From: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:11:47 +0200 Subject: [PATCH 1/2] =?UTF-8?q?feat(identity):=20unify=20evig=20onto=20one?= =?UTF-8?q?=20design=20SSOT=20=E2=80=94=20Obsidian=20&=20Ion=20Lime,=20lig?= =?UTF-8?q?ht=20+=20dark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The site had two brands: green revamp-it chrome + a lime /vision island. This collapses them into ONE token SSOT that looks dope in both themes. - Palette: green -> Ion Lime, preserving the light/dark CONTRAST structure so ~1000 token consumers keep working. Deep lime (#4d7c0f) = readable text/links/ logo in light; electric lime (#B6F531) = dark accent + the new 'strong' CTA fill (electric + ink text) in both modes. Dark surfaces -> obsidian. - Mark: one refined eternal-loop geometry in brand.ts (was two divergent marks); Logo strokes the action token (follows theme); /vision renders the same SSOT. - Fonts: Space Grotesk (display) + Inter (body) + IBM Plex Mono via next/font, with CJK/Cyrillic fallbacks; hero titles + eyebrows now use them. (The app was silently on system fonts — --font-inter was never defined.) - Killed the .theme-vision token island; /vision now inherits global tokens. - Contrast: flipped 46 'bg-action text-white' -> text-action-text (ink on lime) so dark-mode fills are readable; added --color-action-strong token for CTAs. Verified: typecheck, lint (0 errors), test:i18n (16/16); 0 arbitrary hex. Rendered home + /vision + marketplace in BOTH light and dark. Still to finish (no-green-left-behind follow-up): favicons/OG card + email/PDF templates + a few secondary buttons + ui-colors.ts still bake the old green. Co-Authored-By: Claude Opus 4.8 --- public/fonts/vision-ibm-plex-mono-400.woff2 | Bin 7628 -> 0 bytes public/fonts/vision-inter-400.woff2 | Bin 16792 -> 0 bytes public/fonts/vision-inter-600.woff2 | Bin 17936 -> 0 bytes public/fonts/vision-space-grotesk-500.woff2 | Bin 10064 -> 0 bytes public/fonts/vision-space-grotesk-700.woff2 | Bin 9812 -> 0 bytes src/app/[locale]/abos/AbosPageClient.tsx | 4 +- .../[locale]/blog/[slug]/BlogUnavailable.tsx | 2 +- .../sell/MarketplaceSellPageClient.tsx | 2 +- src/app/[locale]/revamped/page.tsx | 4 +- .../services/[service]/repair/page.tsx | 2 +- .../build-your-computer/BuildTool.tsx | 2 +- .../components/RegistrySearch.tsx | 4 +- .../sections/ProcessSection.tsx | 2 +- .../sections/TechnologiesClient.tsx | 2 +- src/app/[locale]/vision/content.tsx | 16 +- .../decisions/new/DecisionTypeSelector.tsx | 2 +- .../admin/erfassung/[id]/factsheet/page.tsx | 2 +- src/app/admin/intake/ChecklistGroup.tsx | 2 +- src/app/admin/presentations/page.tsx | 2 +- src/app/admin/users/[id]/page.tsx | 2 +- src/app/ai-cms/sections/CTASection.tsx | 2 +- src/app/ai-cms/sections/WorkflowSection.tsx | 2 +- src/app/dashboard/orders/page.tsx | 2 +- src/app/globals.css | 154 ++++++++---------- src/app/layout.tsx | 11 +- .../components/CTASection.tsx | 2 +- src/components/about/AboutCTA.tsx | 2 +- src/components/admin/HirnChat.tsx | 2 +- .../admin/protocols/ProtocolProgressStrip.tsx | 2 +- .../admin/service-form/ProcessSection.tsx | 2 +- .../admin/team/activity/ActivityCard.tsx | 2 +- src/components/admin/users/UserTableRow.tsx | 2 +- src/components/auth/UserMenu.tsx | 4 +- src/components/blog/BlogComments.tsx | 2 +- .../decisions/voting/OptionCard.tsx | 2 +- .../deliverables/DeliverableChat.tsx | 2 +- src/components/hirn/HirnChatPanel.tsx | 4 +- .../it-hilfe/detail/ConfirmReviewCard.tsx | 2 +- src/components/layout/MobileMenu.tsx | 2 +- src/components/layout/Section.tsx | 2 +- .../marketplace/OrderStatusTimeline.tsx | 2 +- src/components/messages/ConversationList.tsx | 2 +- src/components/messages/MessageThread.tsx | 2 +- src/components/messaging/MessageSidebar.tsx | 4 +- src/components/services/ServiceProcess.tsx | 2 +- src/components/ui/LocaleSwitcher.tsx | 2 +- src/components/ui/Logo.tsx | 10 +- .../workshops/WorkshopRegistrationForm.tsx | 2 +- src/config/brand.ts | 22 +-- src/lib/admin-ui.ts | 2 +- src/lib/design-system.ts | 6 +- 51 files changed, 151 insertions(+), 160 deletions(-) delete mode 100644 public/fonts/vision-ibm-plex-mono-400.woff2 delete mode 100644 public/fonts/vision-inter-400.woff2 delete mode 100644 public/fonts/vision-inter-600.woff2 delete mode 100644 public/fonts/vision-space-grotesk-500.woff2 delete mode 100644 public/fonts/vision-space-grotesk-700.woff2 diff --git a/public/fonts/vision-ibm-plex-mono-400.woff2 b/public/fonts/vision-ibm-plex-mono-400.woff2 deleted file mode 100644 index 4d1e01c793fc12b34bb85ed08ace4f2ed891c780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7628 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 diff --git a/public/fonts/vision-inter-400.woff2 b/public/fonts/vision-inter-400.woff2 deleted file mode 100644 index dbc5d3ed313a24cf2e8e6ae190c0b0226649c655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16792 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 RV!lya?#Ct;`w8;^000B>V(->guXK?IthAEU%&> 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 HO#%P_>olKq diff --git a/public/fonts/vision-space-grotesk-500.woff2 b/public/fonts/vision-space-grotesk-500.woff2 deleted file mode 100644 index fd12a3b70b97d9adfa3a78a491111682df54925f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10064 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 diff --git a/public/fonts/vision-space-grotesk-700.woff2 b/public/fonts/vision-space-grotesk-700.woff2 deleted file mode 100644 index 10eee174af12fb11337f3259c25caaa28ed059c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9812 zcmV-aCac+ZPew8T0RR91047ub4gdfE0A5G{044eW0ssI200000000000000000000 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 diff --git a/src/app/[locale]/abos/AbosPageClient.tsx b/src/app/[locale]/abos/AbosPageClient.tsx index 89bec95e1..41614c117 100644 --- a/src/app/[locale]/abos/AbosPageClient.tsx +++ b/src/app/[locale]/abos/AbosPageClient.tsx @@ -60,7 +60,7 @@ export default function AbosPageClient() { variant="ghost" onClick={() => setActiveCategory(null)} className={`px-3 py-1.5 rounded-full text-sm font-medium transition-colors ${ - !activeCategory ? 'bg-action text-white' : 'bg-surface-base text-text-secondary hover:bg-surface-raised border' + !activeCategory ? 'bg-action text-action-text' : 'bg-surface-base text-text-secondary hover:bg-surface-raised border' }`} > {t('filterAll')} @@ -73,7 +73,7 @@ export default function AbosPageClient() { variant="ghost" onClick={() => setActiveCategory(cat)} className={`px-3 py-1.5 rounded-full text-sm font-medium transition-colors ${ - activeCategory === cat ? 'bg-action text-white' : 'bg-surface-base text-text-secondary hover:bg-surface-raised border' + activeCategory === cat ? 'bg-action text-action-text' : 'bg-surface-base text-text-secondary hover:bg-surface-raised border' }`} > {/* @ts-expect-error — dynamic category key */} diff --git a/src/app/[locale]/blog/[slug]/BlogUnavailable.tsx b/src/app/[locale]/blog/[slug]/BlogUnavailable.tsx index dba1d2208..b27380649 100644 --- a/src/app/[locale]/blog/[slug]/BlogUnavailable.tsx +++ b/src/app/[locale]/blog/[slug]/BlogUnavailable.tsx @@ -30,7 +30,7 @@ export default function BlogUnavailable({ blogHref = '/blog', loginHref }: Props

Zum Blog diff --git a/src/app/[locale]/marketplace/sell/MarketplaceSellPageClient.tsx b/src/app/[locale]/marketplace/sell/MarketplaceSellPageClient.tsx index 845c976ba..d1a8477d2 100644 --- a/src/app/[locale]/marketplace/sell/MarketplaceSellPageClient.tsx +++ b/src/app/[locale]/marketplace/sell/MarketplaceSellPageClient.tsx @@ -102,7 +102,7 @@ function SellPageContent() { {/* Step indicator */}
- 1 + 1 {t('stepDetails')}
diff --git a/src/app/[locale]/revamped/page.tsx b/src/app/[locale]/revamped/page.tsx index 0a2205865..6fa873927 100644 --- a/src/app/[locale]/revamped/page.tsx +++ b/src/app/[locale]/revamped/page.tsx @@ -120,7 +120,7 @@ export default async function RevampedPage({ params }: RevampedPageProps) { sizes="(max-width: 1024px) 100vw, 50vw" priority /> -
+
REVAMPED @@ -257,7 +257,7 @@ export default async function RevampedPage({ params }: RevampedPageProps) {
CERTIFIED
-
NEW
+
NEW
{t('stickers.sticker3.title')}

{t('stickers.sticker3.body')}

diff --git a/src/app/[locale]/services/[service]/repair/page.tsx b/src/app/[locale]/services/[service]/repair/page.tsx index db5186c01..a3dce29c6 100644 --- a/src/app/[locale]/services/[service]/repair/page.tsx +++ b/src/app/[locale]/services/[service]/repair/page.tsx @@ -80,7 +80,7 @@ export default async function RepairPage({ params }: Props) {
{process.map((step, index) => (
-
+
{index + 1}
{step.title} diff --git a/src/app/[locale]/services/build-your-computer/BuildTool.tsx b/src/app/[locale]/services/build-your-computer/BuildTool.tsx index 58c09148b..0bda07471 100644 --- a/src/app/[locale]/services/build-your-computer/BuildTool.tsx +++ b/src/app/[locale]/services/build-your-computer/BuildTool.tsx @@ -71,7 +71,7 @@ function OptionCard({ ) } -/** Monochrome step indicator — replaces bg-action-text-white circles. */ +/** Monochrome step indicator — replaces bg-action-text-action-text circles. */ function StepDots({ step }: { step: number }) { return (
diff --git a/src/app/[locale]/services/open-source-solutions/components/RegistrySearch.tsx b/src/app/[locale]/services/open-source-solutions/components/RegistrySearch.tsx index e19ed5af8..92381ba26 100644 --- a/src/app/[locale]/services/open-source-solutions/components/RegistrySearch.tsx +++ b/src/app/[locale]/services/open-source-solutions/components/RegistrySearch.tsx @@ -77,7 +77,7 @@ export function RegistrySearch({ alternatives, categories }: RegistrySearchProps className={cn( 'shrink-0 px-4 py-2 rounded-full text-sm font-medium transition-colors', !activeCategoryId - ? 'bg-action text-white' + ? 'bg-action text-action-text' : 'bg-surface-raised text-text-secondary hover:bg-surface-overlay' )} > @@ -91,7 +91,7 @@ export function RegistrySearch({ alternatives, categories }: RegistrySearchProps className={cn( 'shrink-0 px-4 py-2 rounded-full text-sm font-medium transition-colors whitespace-nowrap', activeCategoryId === cat.id - ? 'bg-action text-white' + ? 'bg-action text-action-text' : 'bg-surface-raised text-text-secondary hover:bg-surface-overlay' )} > diff --git a/src/app/[locale]/services/web-design-development/sections/ProcessSection.tsx b/src/app/[locale]/services/web-design-development/sections/ProcessSection.tsx index 52188b655..cc3025b09 100644 --- a/src/app/[locale]/services/web-design-development/sections/ProcessSection.tsx +++ b/src/app/[locale]/services/web-design-development/sections/ProcessSection.tsx @@ -25,7 +25,7 @@ export async function ProcessSection() {
{processSteps.map((phase, index) => (
-
+
{phase.step}
{phase.title} diff --git a/src/app/[locale]/services/web-design-development/sections/TechnologiesClient.tsx b/src/app/[locale]/services/web-design-development/sections/TechnologiesClient.tsx index 0ebf2f339..219d8207b 100644 --- a/src/app/[locale]/services/web-design-development/sections/TechnologiesClient.tsx +++ b/src/app/[locale]/services/web-design-development/sections/TechnologiesClient.tsx @@ -60,7 +60,7 @@ export function TechnologiesClient({ technologies, categories, allLabel, totalCo onClick={() => setSelectedCategory(category)} className={`px-4 py-2 rounded-full text-sm font-medium transition-all duration-300 ${ selectedCategory === category - ? 'bg-action text-white transform scale-105' + ? 'bg-action text-action-text transform scale-105' : 'bg-surface-raised text-text-secondary hover:bg-surface-overlay hover:text-text-primary' }`} > diff --git a/src/app/[locale]/vision/content.tsx b/src/app/[locale]/vision/content.tsx index 1019919f1..5a8fc67e8 100644 --- a/src/app/[locale]/vision/content.tsx +++ b/src/app/[locale]/vision/content.tsx @@ -2,6 +2,7 @@ import { getTranslations } from 'next-intl/server' import { Link } from '@/i18n/navigation' import { ORG } from '@/config/org' import { ROUTES } from '@/config/routes' +import { EVIG_MARK } from '@/config/brand' import type { ReactNode } from 'react' /** @@ -11,14 +12,13 @@ import type { ReactNode } from 'react' * from the scoped `.theme-vision` tokens in globals.css — zero literal hex. */ -// The refined "eternal loop" mark (single-stroke closed infinity, tilted −8°). -const LOOP_D = - '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' +// The mark geometry is the brand SSOT (src/config/brand.ts) — no divergence. +const LOOP_D = EVIG_MARK.paths[0] -function Mark({ className, width = 7 }: { className?: string; width?: number }) { +function Mark({ className, width = EVIG_MARK.strokeWidth }: { className?: string; width?: number }) { return ( -
{conf.icon} diff --git a/src/app/admin/erfassung/[id]/factsheet/page.tsx b/src/app/admin/erfassung/[id]/factsheet/page.tsx index 997b0b3ab..35a1561a9 100644 --- a/src/app/admin/erfassung/[id]/factsheet/page.tsx +++ b/src/app/admin/erfassung/[id]/factsheet/page.tsx @@ -168,7 +168,7 @@ export default function FactSheetPage() {
{/* Green Header Bar */} -
+
diff --git a/src/app/admin/intake/ChecklistGroup.tsx b/src/app/admin/intake/ChecklistGroup.tsx index eb150b004..34e671cb6 100644 --- a/src/app/admin/intake/ChecklistGroup.tsx +++ b/src/app/admin/intake/ChecklistGroup.tsx @@ -148,7 +148,7 @@ export function ChecklistGroup({ group, readOnly = false, pendingItems, onSetRes disabled={saving} className={`h-11 w-11 sm:h-7 sm:w-7 rounded border-2 flex items-center justify-center transition-colors ${ result === CHECKLIST_RESULTS.PASS - ? 'bg-action border-action text-white' + ? 'bg-action border-action text-action-text' : 'border-default hover:border-action' }`} title={CHECKLIST_RESULT_LABELS.pass} diff --git a/src/app/admin/presentations/page.tsx b/src/app/admin/presentations/page.tsx index d96167afc..ea3967b10 100644 --- a/src/app/admin/presentations/page.tsx +++ b/src/app/admin/presentations/page.tsx @@ -61,7 +61,7 @@ export default async function PresentationsPage() {
{steps.map((s) => (
-
+
{s.step}
diff --git a/src/app/dashboard/orders/page.tsx b/src/app/dashboard/orders/page.tsx index 76fbf94b3..7fa151c75 100644 --- a/src/app/dashboard/orders/page.tsx +++ b/src/app/dashboard/orders/page.tsx @@ -142,7 +142,7 @@ export default function DashboardOrdersPage() { size="sm" className={`rounded-full ${ activeTab === tab.key - ? 'bg-action text-white' + ? 'bg-action text-action-text' : 'bg-surface-raised text-text-secondary hover:bg-surface-overlay' }`} > diff --git a/src/app/globals.css b/src/app/globals.css index a85cbaa7c..1f4974699 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -4,6 +4,8 @@ @theme { --font-sans: var(--font-inter), ui-sans-serif, system-ui, sans-serif; + --font-display: var(--font-space-grotesk), var(--font-inter), ui-sans-serif, 'Hiragino Sans', 'Noto Sans JP', 'Noto Sans KR', system-ui, sans-serif; + --font-mono: var(--font-plex-mono), ui-monospace, SFMono-Regular, 'JetBrains Mono', monospace; --color-surface-page: var(--surface-page); --color-surface-base: var(--surface-base); @@ -20,21 +22,27 @@ --color-action-hover: var(--accent-action-hover); --color-action-muted: var(--accent-action-muted); --color-action-text: var(--accent-action-text); + /* "strong" = the electric Ion Lime, for loud CTA fills (buttons). Kept + separate from --color-action so text/links stay the readable deep lime. */ + --color-action-strong: var(--accent-strong); + --color-action-strong-text: var(--accent-strong-text); --color-canvas: var(--surface-page); --color-muted: var(--text-muted); --color-faint: var(--text-muted); - --color-primary-50: #f0fdf4; - --color-primary-100: #dcfce7; - --color-primary-200: #bbf7d0; - --color-primary-300: #86efac; - --color-primary-400: #4ade80; - --color-primary-500: #22c55e; - --color-primary-600: #16a34a; - --color-primary-700: #15803d; - --color-primary-800: #166534; - --color-primary-900: #14532d; + /* evig brand scale — Ion Lime. Deep shades (700-900) stay readable as text / + with white text on fills; 500 is the electric identity lime. */ + --color-primary-50: #f7fee7; + --color-primary-100: #ecfccb; + --color-primary-200: #d9f99d; + --color-primary-300: #bef264; + --color-primary-400: #a3e635; + --color-primary-500: #84cc16; + --color-primary-600: #65a30d; + --color-primary-700: #4d7c0f; + --color-primary-800: #3f6212; + --color-primary-900: #365314; --color-secondary-50: #fff7ed; --color-secondary-100: #ffedd5; @@ -315,8 +323,9 @@ padding-bottom: 3rem; } @utility ui-public-eyebrow { - /* Eyebrow / kicker — small caps label above a title. */ + /* Eyebrow / kicker — small caps mono label above a title. */ @apply text-xs uppercase tracking-[0.18em]; + font-family: var(--font-mono); color: var(--text-tertiary); } @utility ui-public-hero-badge { @@ -326,15 +335,16 @@ color: var(--text-secondary); } @utility ui-public-hero-title { - /* Hero display title — fluid clamp() type, brand display weight + tracking. */ + /* Hero display title — fluid clamp() type, Space Grotesk display face. */ + font-family: var(--font-display); font-size: clamp( var(--hero-title-min), var(--hero-title-fluid), var(--hero-title-max) ); - line-height: 1; - letter-spacing: 0; - @apply font-semibold; + line-height: 1.02; + letter-spacing: -0.03em; + @apply font-bold; color: var(--text-primary); } @utility ui-public-hero-title-fade { @@ -371,12 +381,11 @@ color: var(--text-tertiary); } @utility ui-public-cta { - /* CTA primary — RevampIT green; large tap target; opacity hover. - * Text uses --accent-action-text which flips: white on dark-green (light mode), - * near-black on bright-green (dark mode) — keeps WCAG AA contrast in both. */ + /* CTA primary — electric Ion Lime fill + ink text. Punchy and WCAG-AA in + both light and dark (ink on #B6F531 reads either way). */ @apply inline-flex items-center justify-center rounded-md px-6 py-3 text-sm font-semibold transition-opacity hover:opacity-90 active:opacity-80; - background: var(--accent-action); - color: var(--accent-action-text); + background: var(--accent-strong); + color: var(--accent-strong-text); min-height: 48px; } @utility ui-public-cta-ghost { @@ -570,11 +579,14 @@ * ─────────────────────────────────────────────────────────────────────────── */ @layer base { :root { - /* Primitive palette — raw values, not used directly by components */ - --primitive-green-500: #22c55e; - --primitive-green-600: #16a34a; - --primitive-green-700: #15803d; - --primitive-green-800: #166534; + /* Primitive palette — raw values, not used directly by components. + evig Ion Lime: electric (#B6F531) is the identity pop; the deep shades + are the contrast-safe interactive colours (readable as text on white). */ + --primitive-lime-electric: #B6F531; + --primitive-lime-500: #84cc16; + --primitive-lime-600: #65a30d; + --primitive-lime-700: #4d7c0f; + --primitive-lime-800: #3f6212; --primitive-orange-500: #F7931A; /* ─── Semantic tokens (light) ─────────────────────────────────────── @@ -609,10 +621,12 @@ /* Action accent — RevampIT brand green. The ONLY chromatic color * outside status badges. Used for primary buttons, links, focus * rings, key icons. Everything else stays achromatic. */ - --accent-action: var(--primitive-green-700); /* #15803d — darker for AA as text/links on white */ - --accent-action-hover: var(--primitive-green-800); /* #166534 — darker on hover */ - --accent-action-muted: rgba(22, 163, 74, 0.10); /* subtle fills */ - --accent-action-text: #ffffff; /* text ON action surfaces */ + --accent-action: var(--primitive-lime-700); /* #4d7c0f — deep lime: AA as text/links on white, white text on fills */ + --accent-action-hover: var(--primitive-lime-800); /* #3f6212 — darker on hover */ + --accent-action-muted: rgba(132, 204, 22, 0.12); /* subtle lime fills */ + --accent-action-text: #ffffff; /* text ON action surfaces (deep-lime fill) */ + --accent-strong: var(--primitive-lime-electric);/* #B6F531 — electric CTA fill */ + --accent-strong-text: #0a0a0a; /* ink on electric lime */ /* Fluid display type — single SSOT, used by .ui-public-hero-title */ --hero-title-min: 2.25rem; /* 36px — fits iPhone SE */ @@ -641,23 +655,24 @@ --text-muted: #525252; --text-inverted: #0a0a0a; - /* Surfaces — role-based */ - --surface-page: #0a0a0a; - --surface-base: #131313; - --surface-raised: #1f1f1f; - --surface-overlay: #2a2a2a; + /* Surfaces — role-based (Obsidian) */ + --surface-page: #0A0B0A; + --surface-base: #111311; + --surface-raised: #171A15; + --surface-overlay: #1E221B; /* Borders — role-based */ --border-subtle: rgba(255, 255, 255, 0.06); --border-default: rgba(255, 255, 255, 0.10); --border-strong: rgba(255, 255, 255, 0.24); - /* Action — green stays the brand pulse in dark too, slightly brighter - * so it pops against the near-black surfaces. */ - --accent-action: var(--primitive-green-500); /* #22c55e */ - --accent-action-hover: var(--primitive-green-600); /* #16a34a */ - --accent-action-muted: rgba(34, 197, 94, 0.12); - --accent-action-text: #0a0a0a; /* dark text on bright action */ + /* Action — electric Ion Lime pops against the obsidian surfaces. */ + --accent-action: var(--primitive-lime-electric); /* #B6F531 */ + --accent-action-hover: #a3e635; + --accent-action-muted: rgba(182, 245, 49, 0.14); + --accent-action-text: #0a0a0a; /* ink text on electric lime */ + --accent-strong: var(--primitive-lime-electric); /* #B6F531 — same electric in dark */ + --accent-strong-text: #0a0a0a; } html { @@ -831,7 +846,7 @@ .rich-editor-content h2 { font-size: 1.4rem; font-weight: 700; line-height: 1.3; margin-top: 1.4em; } .rich-editor-content h3 { font-size: 1.15rem; font-weight: 600; line-height: 1.3; margin-top: 1.2em; } .rich-editor-content p { margin: 0; } -.rich-editor-content a { color: var(--primitive-green-600, #16a34a); text-decoration: underline; } +.rich-editor-content a { color: var(--color-action); text-decoration: underline; } .rich-editor-content ul { list-style: disc; padding-left: 1.4em; } .rich-editor-content ol { list-style: decimal; padding-left: 1.4em; } .rich-editor-content li { margin: 0.2em 0; } @@ -856,58 +871,21 @@ } /* ═══════════════════════════════════════════════════════════════════════════ - * evig /vision — scoped "Obsidian & Ion Lime" manifesto theme + * evig /vision — manifesto layout * --------------------------------------------------------------------------- - * A self-contained dark brand surface used ONLY by the /vision route - * (wrapped in `.theme-vision`). It redefines the semantic design tokens for - * its subtree — the rest of the app (green) is untouched. All colour comes - * from tokens; components carry zero literal hex. This is also the beachhead - * for evig's new visual identity; a global retheme remains a separate call. + * /vision uses the GLOBAL design tokens (obsidian/lime, light + dark) — there + * is no separate theme any more. This block only sets the page shell (the route + * bypasses the app chrome and renders its own header/footer) and maps the + * display/body/mono fonts onto the local `--font-v*` aliases the .v-* layout + * classes read. One SSOT: colours from tokens, mark from brand.ts, type from + * the global font vars. * ═══════════════════════════════════════════════════════════════════════════ */ -/* Brand faces — subset (latin + Swiss umlauts), self-hosted, no CDN. */ -@font-face{font-family:'SpaceGroteskVision';font-weight:500;font-style:normal;font-display:swap;src:url('/fonts/vision-space-grotesk-500.woff2') format('woff2');} -@font-face{font-family:'SpaceGroteskVision';font-weight:700;font-style:normal;font-display:swap;src:url('/fonts/vision-space-grotesk-700.woff2') format('woff2');} -@font-face{font-family:'InterVision';font-weight:400;font-style:normal;font-display:swap;src:url('/fonts/vision-inter-400.woff2') format('woff2');} -@font-face{font-family:'InterVision';font-weight:600;font-style:normal;font-display:swap;src:url('/fonts/vision-inter-600.woff2') format('woff2');} -@font-face{font-family:'PlexMonoVision';font-weight:400;font-style:normal;font-display:swap;src:url('/fonts/vision-ibm-plex-mono-400.woff2') format('woff2');} - @layer base { - :root { - /* Obsidian & Ion Lime primitives (raw values live here only) */ - --primitive-obsidian: #0A0B0A; - --primitive-obsidian-raised: #111311; - --primitive-obsidian-over: #171A15; - --primitive-lime: #B6F531; - --primitive-paper: #FAFCF7; - --primitive-mute: #8E968A; - --primitive-ink: #0A0A0A; - } - - /* Scope: everything below inherits obsidian/lime semantic tokens. */ .theme-vision { - --surface-page: var(--primitive-obsidian); - --surface-base: var(--primitive-obsidian-raised); - --surface-raised: var(--primitive-obsidian-raised); - --surface-overlay: var(--primitive-obsidian-over); - - --text-primary: var(--primitive-paper); - --text-secondary: #B7BEB2; - --text-tertiary: var(--primitive-mute); - --text-muted: var(--primitive-mute); - --text-inverted: var(--primitive-ink); - - --accent-action: var(--primitive-lime); - --accent-action-hover: var(--primitive-lime); - --accent-action-text: var(--primitive-ink); - - --border-subtle: rgba(250, 252, 247, 0.08); - --border-default: rgba(182, 245, 49, 0.14); - --border-strong: rgba(182, 245, 49, 0.30); - - --font-vd: 'SpaceGroteskVision', system-ui, sans-serif; - --font-vb: 'InterVision', system-ui, sans-serif; - --font-vm: 'PlexMonoVision', ui-monospace, monospace; + --font-vd: var(--font-display); + --font-vb: var(--font-sans); + --font-vm: var(--font-mono); min-height: 100dvh; background: var(--surface-page); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index a3b28286f..107dd4c14 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,15 @@ import type { Metadata } from "next"; import { getLocale } from "next-intl/server"; +import { Space_Grotesk, Inter, IBM_Plex_Mono } from "next/font/google"; import { Providers } from "@/components/providers/providers"; + +// Brand faces — one SSOT for typography. Space Grotesk = display (headings, +// wordmark), Inter = body, IBM Plex Mono = labels/eyebrows. Space Grotesk is +// latin-only; the CSS font stacks (globals.css @theme) carry CJK/Cyrillic +// system fallbacks for ja/ko, and Inter covers cyrillic for ru. +const display = Space_Grotesk({ subsets: ["latin"], weight: ["500", "700"], variable: "--font-space-grotesk", display: "swap" }); +const sans = Inter({ subsets: ["latin", "latin-ext", "cyrillic"], variable: "--font-inter", display: "swap" }); +const mono = IBM_Plex_Mono({ subsets: ["latin"], weight: ["400", "500"], variable: "--font-plex-mono", display: "swap" }); import { ORG } from "@/config/org"; import { PUBLIC_SITE_URL } from "@/config/urls"; import { auth } from "@/auth"; @@ -42,7 +51,7 @@ export default async function RootLayout({ const locale = await getLocale(); return ( - + {children} diff --git a/src/app/services/open-source-solutions/components/CTASection.tsx b/src/app/services/open-source-solutions/components/CTASection.tsx index 36da77425..a94129659 100644 --- a/src/app/services/open-source-solutions/components/CTASection.tsx +++ b/src/app/services/open-source-solutions/components/CTASection.tsx @@ -15,7 +15,7 @@ import { ORG } from '@/config/org' export function CTASection() { return ( -
+

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/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: { From 75fb2a160863b51b7012e5e64d6af39acb97bac0 Mon Sep 17 00:00:00 2001 From: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:28:27 +0200 Subject: [PATCH 2/2] =?UTF-8?q?feat(identity):=20no=20green=20left=20behin?= =?UTF-8?q?d=20=E2=80=94=20favicons,=20OG,=20emails,=20PDF=20=E2=86=92=20I?= =?UTF-8?q?on=20Lime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Finish the rebrand across every non-CSS surface: - Regenerated favicons (icon.png / apple-icon.png / favicon.ico) with the lime eternal-loop on an obsidian tile; refreshed the referenced public favicon. - OG share card accent → electric lime (ui-colors OG_IMAGE_COLORS.accent). - ui-colors brand greens (feedback page, global-error primary, newsletter success) → lime. Data-viz greens (chart 'positive'/category) kept — green= positive is a UX convention, not brand. - Email templates + invoice PDF: every green hex → lime (deep lime on fills so white text stays readable). - DB default content color → deep lime for new rows. - rich-editor selected-cell highlight fallback → --color-action. Verified: typecheck, lint (0 errors), test:i18n (16/16). OG image + favicon rendered and eyeballed. Co-Authored-By: Claude Opus 4.8 --- public/images/logo/evig-favicon.png | Bin 5786 -> 6554 bytes src/app/apple-icon.png | Bin 3788 -> 4293 bytes src/app/favicon.ico | Bin 1948 -> 2215 bytes src/app/globals.css | 2 +- src/app/icon.png | Bin 15042 -> 16589 bytes src/config/ui-colors.ts | 8 ++++---- src/db/schema/content.ts | 2 +- src/lib/email/templates/base-styles.ts | 6 +++--- src/lib/email/templates/donation-dropoff.ts | 6 +++--- src/lib/email/templates/inquiry.ts | 2 +- src/lib/email/templates/it-hilfe.ts | 6 +++--- src/lib/email/templates/marketplace.ts | 20 ++++++++++---------- src/lib/email/templates/projects.ts | 2 +- src/lib/email/templates/referral.ts | 12 ++++++------ src/lib/invoices/pdf-template.ts | 6 +++--- 15 files changed, 36 insertions(+), 36 deletions(-) diff --git a/public/images/logo/evig-favicon.png b/public/images/logo/evig-favicon.png index 36943db82d3c0cff467feb8bc5d33f1effa3d4d1..35778958e2e4ad6e2eccda08562f2d1d55d1c891 100644 GIT binary patch literal 6554 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 literal 3788 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 Q``=T5`2`yk^}IXbKQPiA3IG5A diff --git a/src/app/favicon.ico b/src/app/favicon.ico index 241ee38de23958fe7903461d4b6085b236b6456a..09d0efb8331ddd3ac252768820a0b2d2635c2ead 100644 GIT binary patch delta 2096 zcmV-02+#MN52q0`000310{{>Z00031AOMX4001@s001B$00031AOOk&006@Q001yB z00031AOIQ!0051VGcJES4gdf<4gt)zp@RSb0Y6DZK~y-6V_;xlVBq57^5Npp7! z^^=R6>puYuQge!ni_4nw$v~vDap4~f6lexx26O>2 zX`cTk&LaPX#JItHc@6&mZClj-uYIZizhZ&%e;z(=+y-b{2>yRx`%3@+wy%a@I-*qi z|J*Cu|L0%T{vTT-`+xICga6(slDG{hn5OuD&Ly4y>P7u>nILWhc=)*gm(N%Jzvj9A|K<&9|K-#mP8SyA`ETeT z{9jaxhj1)#kr9nQDNRTeCS@)zZ?X;G;_`y!NRS~XNyyG8VVVKBEl5G>;BEwy_X8i3 zqX8IyI}QKA)joXZC$R@6DTGpQ2a>=Uf90OTgiOHRG(wI76ST2^`je!y;)YZUY2N0E32) zqOL|7AfV(BXPj;QZ*hxlNeE79??B`(nb;6Q#1z`|PK!$j4iy4;6Cl94!Wi2O41hsH z2};~FWfy??l*+>42$pNTxcViB_udWS%yJ5~g!uO@5Mho(V^N&C-i@a(Coo%79cw0k z=XHF%aR8tFEZFS+`wXfY_YM$^3tWCN;Bb8F8nx!&v{`f*=^mV%q@mo{)6D@*#txCp8?q z7{}^b+7;-0C24zqzSbw_@*`^d03*kLHCN{p&AA&%n>Yc6_SmDGy4Ee{i{r8O0gB@> z>42PB=SYl1tq=rdg}AWv3v&3F2Y}qLDjiTdt#elAR;xZwB` z$mnP~GP0J&XqWH~5ZNn?%f#&np1Gns)@O!PJT<4|*{eDpJQ6jI)BU z06Pu=%(kI}000BbNkl6;?=TkRaMFPc3MMC&eQHigWL_3vEa{)kre{pseIE*mP-UEjqaKJbrsKlh$X8^!28NF-{TQP7L zh$C4vh(4Rc=7~ri0BRYqF$<7IEiho;7-RK%BHWSer$W@#m1HbEbyjUTY$^$#Iv`G zaqwrQCi*`4v3he>d<0aj%#dg8!o51FwyGrzAh9pyhEH@>$a);J{UV@@i0S z*KC`E&Qy-)hf0L|U9Zb=D0v6O{8lJ@vF5WK{exsD5RSCV< zk;3uH6W^pUjm`P77jU?6z%Rbkn``Pmxf=D&)e6PfcW$C)sIv6%NF%>|YiU_EK_?BpsY1o^KcYcTh z&fP81eSb++sxY4RPs{{3)3^|TtWj?~krh_phq!8>pnPe%;ATdh$Z!hLvZ{m7vTKba z9}izGH7L!p^Cvbje{jI9O}UfCv_JR7eh-j8tAp$~nkS5*4H~{zw9x`wLP%2m6K(+DXgJ}VT>P=Y@tM2K3k7l)r%*7_B)~j^lF|*tB*okR;O}+LPFsKo zngQeNq}b~F(%hhLoYicpiU&jN%nDgbn=+pHcdH@G1T4A@t@-Ch{p=w6#djqX~# zZv7fkXYo%B)<^taf;!;TM3(!o79b6OKt16eA#EaE)I?S+c9^<>@&4RKi8)NY;JZ00031AOKnc001@s001B$00031AOLd$0058y001yB z00031AOM*I000A#GcJD%6951U69E94oEQKA0Srk*K~y-6V_;xlVBq57^5Np*I>p7s z^^=Q>>pubf6ROsm0ZH?Jaxf<+X8_26)8rb!#l>}!fk*OEdm2w>lWimfsTgpI=}4zo3&cn9rvpiQ51HJ4J{A=_dc>7W#qN za!UjL3z*9Om+Ex>uedh~?lqiVkm`1UJ6XEd^}phtC7OWWnSG+N+?o7U}lYs;u zlhy$ke+v@;01FcV0GgZ_0006dNklH8#|&TPWRH4 z=3uWp|KB`z<5OE(7DJ9zne}Fasv{*w+S^!W7fZY^D6OASF` z;=!=RLv|2Ah)&vv9(h70eoHA$j(+X9#X}G;7~rQufVPH+dkO(|HC5uiX(s@fa!Q4j zArwO>fpN~F?9~!w=Eex6i0)k|klmW6()$Ng`L;~u4@*>ddWpm-eQ*HdtVO3^-S!;& ze^z?8NcqJop)RQSxJH#P&B(rQ_Qv(W0A$V}=S@A)Ih*q~zQ=Htuia;(I@&*gxiS+t zDt~N{y?KKi7U&VJF;Vco8+~>yc<*JZUjTc3K5#U0>%8}FWMLvEZa$igd{=l<>jErI zr2~*#=m1D7L*;PIKQ~Dq&vj2hM$-89f8Ai88@K-wJPeiKQ-kcSo8;`=kN3iBm(0eL zm+o-GazBWyK4=rVJ)4lD@43fWyE8fXG1Mz2jlGN>Lp~Y#dX=&@C-IbUw#?@AKgEv( z5Zni6Iv0^~(T?17oF$I5xO#<(tCzhp$YSgh*^pzV{pv zg><M1KZEbQ&OmLQoMvl@p+fg-|LR2xcR!?LIiJw!t~u3Fk~FY~c`$t}1nk z*u1|Q;>bbR#v4&J7=+0y$`iMkV87T5-^w`ro8dG_Ym=zz4U|rRB~%B`v*C0y8)3K} z4ZzwV{f%vL!Lu+bOWdCVao|Al1@KHu>r>guY=q&w*?$4s*~5_5FXTktzZr&abpnFj zQal0NtJ1s4oC#&b=V^FejL2F_91Ipu057~kh)bWQ;JDVdSG0o74C(#(q?no;CyFG% zD5PcIyD$cG(DBDweSxgxy)Q@iViVzhJdhOUobM`*0Ar0cjTG-biJiu~EZ=23&qp9Q ztg_Gbq<<7RKV?+}a8zGul@(BZxmEU==Aa{5@QJbZOU*^J&|0#Ec=pVVP6#FemZNU? zRwm@V|8WY|`jA|_{>?DlPX_ZM zuU;F?Akfj}WZJ0QG4rTwCH_r&%v`ehPr#FqQ5nY zX2ts#EIHR|qD=ASzxaFojs}Q82^eFu(Sf$w zM07|Qb_GFbiqFZGG(ZS>Vli>d+MwkDH>H3v_QPN>_)`bn{bkZpBm71|rfGc-SEuo- z24}L~m*5j{K17bqVWAQ1649$P+hkjOh#YINTYMT=>gzVKJ-7HQc(2>YtltNqz{p8X R{%imM002ovPDHLkV1lwxQiK2i diff --git a/src/app/globals.css b/src/app/globals.css index 1f4974699..465295442 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -864,7 +864,7 @@ border: 1px solid var(--color-border); padding: 0.4em 0.6em; text-align: left; min-width: 4em; } .rich-editor-content th { background: var(--color-surface-raised); font-weight: 600; } -.rich-editor-content .selectedCell { background: color-mix(in srgb, var(--color-brand, #16a34a) 12%, transparent); } +.rich-editor-content .selectedCell { background: color-mix(in srgb, var(--color-action) 12%, transparent); } .rich-editor-content:empty::before, .rich-editor-content p.is-editor-empty:first-child::before { content: attr(aria-label); color: var(--color-text-faint); pointer-events: none; float: left; height: 0; diff --git a/src/app/icon.png b/src/app/icon.png index 07a03f02dbb770997f448c622c84b92aef56c86d..b558c2b8dc9427ff8a5aa0ea9fb4207260e9fdff 100644 GIT binary patch literal 16589 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 QQ7Ujj^O8osn$_+91?Sz&2LJ#7 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/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;