= 0.6 ? '#111827' : '#ffffff'; } } $favoriteColor = '#4a90e2'; if ( $activePerson !== null && !empty($activePerson['favoriteColor']) && preg_match('/^#[0-9A-Fa-f]{6}$/', (string) $activePerson['favoriteColor']) ) { $favoriteColor = (string) $activePerson['favoriteColor']; } $themePalette = []; $themePalette['accent'] = $favoriteColor; $themePalette['primary'] = $favoriteColor; $themePalette['primary_hover'] = fhMixHex($favoriteColor, '#000000', 0.12); $themePalette['primary_active'] = fhMixHex($favoriteColor, '#000000', 0.2); $themePalette['primary_subtle'] = fhMixHex($favoriteColor, '#ffffff', 0.86); $themePalette['primary_border'] = fhMixHex($favoriteColor, '#ffffff', 0.64); $themePalette['primary_text'] = fhContrastText($themePalette['primary']); $themePalette['primary_subtle_text'] = fhContrastText($themePalette['primary_subtle']); $themePalette['secondary'] = fhMixHex($favoriteColor, '#ffffff', 0.76); $themePalette['secondary_hover'] = fhMixHex($favoriteColor, '#ffffff', 0.66); $themePalette['secondary_active'] = fhMixHex($favoriteColor, '#ffffff', 0.57); $themePalette['secondary_border'] = fhMixHex($favoriteColor, '#ffffff', 0.5); $themePalette['secondary_text'] = fhContrastText($themePalette['secondary']); $themePalette['tertiary'] = fhMixHex($favoriteColor, '#ffffff', 0.9); $themePalette['tertiary_hover'] = fhMixHex($favoriteColor, '#ffffff', 0.82); $themePalette['tertiary_active'] = fhMixHex($favoriteColor, '#ffffff', 0.73); $themePalette['tertiary_border'] = fhMixHex($favoriteColor, '#ffffff', 0.62); $themePalette['tertiary_text'] = fhContrastText($themePalette['tertiary']); $themePalette['focus_ring'] = fhMixHex($favoriteColor, '#ffffff', 0.35); $themePalette['surface_tint'] = fhMixHex($favoriteColor, '#ffffff', 0.93); $themePalette['header_gradient_end'] = fhMixHex($favoriteColor, '#0f172a', 0.58); $semanticBase = [ 'success' => '#198754', 'warning' => '#f59e0b', 'danger' => '#dc3545', 'info' => '#0ea5e9', ]; foreach ($semanticBase as $key => $baseHex) { $main = fhMixHex($baseHex, $favoriteColor, 0.2); $themePalette[$key] = $main; $themePalette[$key . '_hover'] = fhMixHex($main, '#000000', 0.1); $themePalette[$key . '_active'] = fhMixHex($main, '#000000', 0.18); $themePalette[$key . '_subtle'] = fhMixHex($main, '#ffffff', 0.84); $themePalette[$key . '_border'] = fhMixHex($main, '#ffffff', 0.62); $themePalette[$key . '_text'] = fhContrastText($main); $themePalette[$key . '_subtle_text'] = fhContrastText($themePalette[$key . '_subtle']); } $headerThemeClass = 'header-tone-dark'; if (fhRelativeLuminance($themePalette['primary']) >= 0.62) { $headerThemeClass = 'header-tone-light'; } include 'includes/header.php'; ?>