When I use :not(::placeholder-shown), :NOT seems to be not working in safari browsers.
If you are not on safari: Below i added a way to use the safari browser with playwright so you can test it yourself.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Form Validation Example</title>
<style>
input:not(:placeholder-shown):invalid {
border-color: crimson;
}
</style>
</head>
<body>
<form>
<input type="email" placeholder="" required>
<button type="submit">Submit</button>
</form>
</body>
</html>`