diff --git a/pitch-deck/app/pitch-print/[versionId]/_components/PrintIntroSlides.tsx b/pitch-deck/app/pitch-print/[versionId]/_components/PrintIntroSlides.tsx index 66ddd43..d9d6c7f 100644 --- a/pitch-deck/app/pitch-print/[versionId]/_components/PrintIntroSlides.tsx +++ b/pitch-deck/app/pitch-print/[versionId]/_components/PrintIntroSlides.tsx @@ -30,20 +30,16 @@ export function PrintCoverPage({ company, funding, lang, versionName }: { compan [de ? 'Standort' : 'HQ', company?.hq_city || 'Bodman'], ] + const MONO_FONT = "'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace" + return (
-
- {/* - The .print-page class in print.css forces flex-direction: column !important, - which would collapse a horizontal flex split. We sidestep that by putting a - single full-size grid container as the only child — the column-flex parent - has just one item so direction no longer matters. - */} +
- {/* LEFT INDIGO BLOCK */} + {/* LEFT VIOLET BLOCK */}
-
+
{de ? 'Investor Brief' : 'Investor Brief'}
-
+
{de ? 'DSGVO-konforme KI-Plattform für kontinuierliche Code-Security und automatisierte Compliance. Souverän gehostet, integriert in europäische Workflows.' @@ -65,27 +61,27 @@ export function PrintCoverPage({ company, funding, lang, versionName }: { compan
{/* Mid stats */} -
-
{de ? 'Auf einen Blick' : 'At a glance'}
-
- {de ? '25 000 + atomare Prüfaspekte' : '25 000 + atomic audit aspects'}
- {de ? '380 + Regularien · 10 Branchen' : '380 + regulations · 10 industries'}
- {de ? '500 K + Lines of Code · 45 Container' : '500 K + lines of code · 45 containers'}
- {de ? '100 % EU-Hosting · BSI Cloud DE' : '100 % EU hosting · BSI cloud DE'} +
+
{de ? 'Auf einen Blick' : 'At a glance'}
+
+ {de ? '25 000+ atomare Prüfaspekte' : '25 000+ atomic audit aspects'}
+ {de ? '380+ Regularien · 10 Branchen' : '380+ regulations · 10 industries'}
+ {de ? '500K+ Lines of Code · 45 Container' : '500K+ lines of code · 45 containers'}
+ {de ? '100% EU-Hosting · BSI Cloud DE' : '100% EU hosting · BSI cloud DE'}
{/* Footer */}
-
{versionName}
-
{de ? 'Vertraulich · Nur Investoren' : 'Confidential · Investors only'}
+
{versionName}
+
{de ? 'Vertraulich · Nur Investoren' : 'Confidential · Investors only'}
- {/* RIGHT WHITE PANE */} -
+ {/* RIGHT (violet-tinted dotted bg from .print-page-bg) PANE */} +
-
+
{instrument} · Q4 2026

@@ -99,18 +95,18 @@ export function PrintCoverPage({ company, funding, lang, versionName }: { compan {/* Key terms */}
-
+
{de ? 'Key Terms' : 'Key terms'}
{coverTerms.map(([label, val]) => (
-
{label}
-
{val}
+
{label}
+
{val}
))}
-
+
{de ? 'Gründerteam Benjamin Bönisch (CEO) und Sharang Parnerkar (CTO). Markeneintragung DPMA · EUIPO-Anmeldung in Bearbeitung · GmbH-Gründung August 2026.' : 'Founding team Benjamin Bönisch (CEO) and Sharang Parnerkar (CTO). Trademark DPMA registered · EUIPO filing in progress · GmbH incorporation August 2026.'} diff --git a/pitch-deck/app/pitch-print/[versionId]/_components/PrintLayout.tsx b/pitch-deck/app/pitch-print/[versionId]/_components/PrintLayout.tsx index 0d308f8..6cf1c09 100644 --- a/pitch-deck/app/pitch-print/[versionId]/_components/PrintLayout.tsx +++ b/pitch-deck/app/pitch-print/[versionId]/_components/PrintLayout.tsx @@ -2,21 +2,41 @@ import React from 'react' /* ===== DESIGN TOKENS ===== */ +/** + * Adapted from Claude Design tokens (light theme). + * Primary accent = violet (#7c3aed). The names `indigo*` are kept as aliases + * so existing slide files don't need to be touched — the *values* now resolve + * to the violet palette. New code can use the explicit `violet*` names. + */ export const COLORS = { - slate900: '#0f172a', - slate800: '#1e293b', - slate700: '#334155', - slate600: '#475569', - slate500: '#64748b', - slate400: '#94a3b8', - slate300: '#cbd5e1', - slate200: '#e2e8f0', - slate100: '#f1f5f9', - slate50: '#f8fafc', - indigo700: '#4338ca', - indigo600: '#4f46e5', - indigo500: '#6366f1', - indigo50: '#eef2ff', + // Body text — deep purple-tinted instead of pure slate + slate900: '#1a0f34', + slate800: '#2a1f4a', + slate700: 'rgba(26,15,52,.88)', + slate600: 'rgba(26,15,52,.72)', + slate500: 'rgba(26,15,52,.60)', + slate400: 'rgba(26,15,52,.46)', + slate300: 'rgba(26,15,52,.28)', + slate200: 'rgba(26,15,52,.14)', + slate100: 'rgba(26,15,52,.06)', + slate50: 'rgba(26,15,52,.03)', + // Violet palette (new primary accent) + violet900: '#3b0e7a', + violet800: '#5b21b6', + violet700: '#6d28d9', + violet600: '#7c3aed', + violet500: '#8b5cf6', + violet400: '#a78bfa', + violet300: '#c4b5fd', + violet200: '#ddd6fe', + violet100: '#ede9fe', + violet50: '#f5f3ff', + // Legacy `indigo*` aliases — kept so existing slide code compiles unchanged + indigo700: '#6d28d9', + indigo600: '#7c3aed', + indigo500: '#8b5cf6', + indigo50: '#f5f3ff', + // Functional accents emerald700: '#047857', emerald600: '#059669', emerald50: '#ecfdf5', @@ -26,16 +46,17 @@ export const COLORS = { amber700: '#b45309', amber600: '#d97706', amber50: '#fffbeb', - // legacy aliases for migrating callers - dark: '#0f172a', - med: '#334155', - light: '#64748b', - border: '#e2e8f0', - indigo: '#4f46e5', - indigoLight: '#eef2ff', + // Legacy aliases used by some callers + dark: '#1a0f34', + med: 'rgba(26,15,52,.88)', + light: 'rgba(26,15,52,.60)', + border: 'rgba(26,15,52,.14)', + indigo: '#7c3aed', + indigoLight: '#f5f3ff', } -const FONT = "'Plus Jakarta Sans', 'Inter', system-ui, -apple-system, sans-serif" +const FONT = "'Inter', 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif" +const MONO_FONT = "'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace" /* ===== PAGE WRAPPER ===== */ @@ -54,10 +75,9 @@ interface PageProps { export function Page({ kicker, section, title, subtitle, pageNum, totalPages, versionName, children, footnote }: PageProps) { return (
-
- {/* TITLE BLOCK */} -
+ {/* TITLE BLOCK — left-rule preserved */} +
+
- + {kicker} · {section} - - BreakPilot · {versionName} + + BreakPilot · ComplAI
-

+

{title}

{subtitle && ( -

+

{subtitle}

)} + {/* Subtle violet accent gradient bar — echo of the Claude Design feel */} +
@@ -103,10 +126,10 @@ export function Page({ kicker, section, title, subtitle, pageNum, totalPages, ve
)} - {/* FOOTER */} -
- BreakPilot · {versionName} - CONFIDENTIAL + {/* FOOTER — JetBrains Mono caps to match Claude Design */} +
+ BreakPilot · ComplAI + {versionName} {String(pageNum).padStart(2, '0')} / {String(totalPages).padStart(2, '0')}
diff --git a/pitch-deck/app/pitch-print/print.css b/pitch-deck/app/pitch-print/print.css index 0712054..5897fe1 100644 --- a/pitch-deck/app/pitch-print/print.css +++ b/pitch-deck/app/pitch-print/print.css @@ -1,9 +1,30 @@ +/* Fonts: Inter (body/headings) + JetBrains Mono (kickers, tickers, page numbers). + Plus Jakarta Sans is still loaded by globals.css; we don't need it for print. */ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap'); + /* Named page — must be outside @media print */ @page slide-page { size: A4 landscape; margin: 0; } +/* + * Page background: violet-tinted radial gradient with a faint dotted-grid + * overlay (printed via two layered background-images on .print-page). + * + * The radial mimics Claude Design's `radial-gradient(ellipse at 50% 12%, #fff 0%, #f5efff 55%, #ebdfff 100%)`. + * The dots are a tiny SVG repeat tile at 24px pitch, ~6% slate, so the grid is + * just barely visible — same role as the dot-grid in the design reference. + */ +.print-page-bg { + background-color: #ffffff; + background-image: + url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='1' cy='1' r='0.6' fill='%23a78bfa' fill-opacity='0.18'/%3E%3C/svg%3E"), + radial-gradient(ellipse at 50% 8%, #ffffff 0%, #f5efff 55%, #ebdfff 100%); + background-repeat: repeat, no-repeat; + background-size: 24px 24px, cover; +} + @media screen { body { background: #d1d5db; } } @@ -14,20 +35,15 @@ margin: 0; } - /* - * globals.css sets html,body { height:100%; overflow:hidden; background:#0a0a1a }. - * In print mode that clips all content to one viewport height and renders a black - * background. Override everything here. - */ html, body { height: auto !important; min-height: 0 !important; overflow: visible !important; background: #ffffff !important; - color: #0f172a !important; + color: #1a0f34 !important; margin: 0 !important; padding: 0 !important; - font-family: 'Plus Jakarta Sans', 'Inter', system-ui, -apple-system, sans-serif !important; + font-family: 'Inter', 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif !important; -webkit-print-color-adjust: exact; -moz-print-color-adjust: exact; print-color-adjust: exact; @@ -43,13 +59,10 @@ margin: 0 !important; display: block !important; overflow: visible !important; - font-family: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif !important; + font-family: 'Inter', system-ui, sans-serif !important; } - /* - * Block wrapper: carries the height AND the page break. - * height:210mm on display:block is reliable in both Chrome and Firefox. - */ + /* Block wrapper carries the height + page break. */ .print-page-break { page: slide-page; display: block !important; @@ -75,24 +88,29 @@ overflow: hidden !important; margin: 0 !important; box-shadow: none !important; - background: #ffffff !important; - font-family: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif !important; - color: #0f172a !important; + font-family: 'Inter', system-ui, sans-serif !important; + color: #1a0f34 !important; -webkit-print-color-adjust: exact; -moz-print-color-adjust: exact; print-color-adjust: exact; } - /* Tabular numerals everywhere — institutional research aesthetic */ - .print-page table, - .print-page .num, - .print-page .kpi { + /* Tabular numerals everywhere */ + .print-page table, .print-page .num, .print-page .kpi { font-variant-numeric: tabular-nums; } + + /* Mono utility — for kickers, page numbers, tickers, code-style tags */ + .print-mono { + font-family: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace !important; + } } -/* Screen preview: apply Plus Jakarta Sans to print pages even on screen */ +/* Screen preview: same fonts, applied to print-page on screen too */ .print-page, .print-page-break { - font-family: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif; + font-family: 'Inter', system-ui, sans-serif; font-variant-numeric: tabular-nums; } +.print-mono { + font-family: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace; +}