// Dezky landing — brand palette, locked logo geometry, and theme helper. // Ported from the Claude Design handoff (landing-sections.jsx). The marketing // site is self-contained colour-wise: it does NOT consume the app's tokens.css // dark/light variables — it threads a `theme` object through components exactly // like the prototype did, so the handoff stays pixel-faithful. export const C = { carbon: '#0A0A0A', signal: '#D4FF3A', bone: '#F4F3EE', slate: '#3D3D38', fog: '#E6E4DC', paper: '#FAFAF7', ok: '#1F8A5B', warn: '#E89A1F', bad: '#E23030', } as const // Locked Node-mark geometry — the values the user dialled in via Tweaks and // then froze (chat1). Every NodeMark usage in the design passed exactly these. export const LOCKED = { bowlR: 14, stemW: 7, contR: 22, dStyle: 'donut', dotPos: 'corner', dotR: 4, } as const export interface DezkyTheme { bg: string bgAlt: string surface: string surfaceAlt: string border: string borderStrong: string fg: string fgMuted: string fgDim: string invert: string invertFg: string signal: string } export function makeTheme(dark: boolean): DezkyTheme { return dark ? { bg: '#0A0A0A', bgAlt: '#121211', surface: '#171715', surfaceAlt: '#1F1F1C', border: 'rgba(255,255,255,0.08)', borderStrong: 'rgba(255,255,255,0.18)', fg: '#F4F3EE', fgMuted: 'rgba(244,243,238,0.62)', fgDim: 'rgba(244,243,238,0.42)', invert: '#F4F3EE', invertFg: '#0A0A0A', signal: C.signal, } : { bg: C.paper, bgAlt: C.bone, surface: '#FFFFFF', surfaceAlt: C.bone, border: C.fog, borderStrong: 'rgba(10,10,10,0.14)', fg: C.carbon, fgMuted: 'rgba(10,10,10,0.62)', fgDim: 'rgba(10,10,10,0.42)', invert: C.carbon, invertFg: C.bone, signal: C.signal, } } // The destination the nav/login CTA points at. Production is app.dezky.eu; // locally the portal runs at app.dezky.local. export const APP_URL = 'https://app.dezky.local'