There is nothing wrong with your locators, I managed to login with them after a small change in your code.
"Element is not attached to the Page Document" also known as StaleElementReference exception means that although the element is found it's no longer attached to the DOM at the moment you want to interact with it. The main reason for this is a (partly) refresh of the page.
When you move the Thread.Sleep one line back, so before the line with "WebElement elPass = ....." , your code will wait till that part of the page is refreshed before searching for the password field and Selenium will have no problems anymore to interact with this password field.
Find here a code solution I tested with succes :
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Question49574195
{
public static void main(String[] args) throws InterruptedException
{
System.setProperty("webdriver.chrome.driver", "c:/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://mail.google.com/mail");
WebElement elLogin = driver.findElement(By.cssSelector("input#identifierId"));
elLogin.sendKeys("youremailadress");
WebElement elClick = driver.findElement(By.xpath("//content/span[contains(text(),'Next')]"));
elClick.click();
Thread.sleep(3000);
WebElement elPass = (driver.findElement(By.cssSelector("input.whsOnd.zHQkBf")));
elPass.sendKeys("yourpassword");
WebDriverWait wait = new WebDriverWait(driver, 15);
WebElement next = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//content/span[contains(text(),'Next')]")));
next.click();
}}