[ 'regex' => 'Code may only contain letters, digits, underscores, and hyphens; site codes must start with a lowercase letter or digit.', 'unique' => 'This code is already in use.', ], 'slug' => [ 'regex' => 'Slug may only contain lowercase letters, digits, underscores, and hyphens.', 'unique' => 'This slug is already in use.', ], 'account' => [ 'regex' => 'Account may only contain letters, digits, dots, underscores, and hyphens.', ], 'username' => [ 'regex' => 'Username may only contain letters, digits, dots, underscores, and hyphens.', 'unique' => 'This username is already in use.', ], 'draw_no' => [ 'regex' => 'Draw number must match YYYYMMDD-sequence (e.g. 20260101-001).', ], 'number_4d' => [ 'regex' => 'Number must be exactly 4 digits.', ], 'normalized_number' => [ 'regex' => 'Number must be exactly 4 digits.', 'size' => 'Number must be exactly 4 digits.', ], 'wallet_api_url' => [ 'wallet_api_url' => 'Wallet API URL must be an https public root URL (no localhost, private IP, path, or query).', ], 'amount_delta' => [ 'not_in' => 'Adjustment amount cannot be zero.', ], 'password' => [ 'min' => 'Password must be at least :min characters.', ], 'reason' => [ 'min' => 'Reason must be at least :min characters.', ], 'items' => [ 'size' => ':attribute must contain exactly :size items.', ], ];