function AuthLoadingView(){
  return(
    <div style={{
      position:'fixed',inset:0,
      background:'var(--void)',
      display:'flex',alignItems:'center',justifyContent:'center',
      fontFamily:"'Space Mono','Consolas',monospace",
      fontSize:'var(--type-label)',
      color:'var(--text-secondary)',
      letterSpacing:'.1em',
      textTransform:'uppercase'
    }}>
      AUTHENTICATING...
    </div>
  );
}

function LoginView({onLogin}){
  const[email,setEmail]=useState('');
  const[password,setPassword]=useState('');
  const[error,setError]=useState(null);
  const[loading,setLoading]=useState(false);

  function handleSubmit(e){
    e.preventDefault();
    if(!fbauth||loading)return;
    setError(null);
    setLoading(true);
    fbauth.signInWithEmailAndPassword(email,password)
      .then(function(cred){onLogin(cred.user)})
      .catch(function(err){
        setLoading(false);
        switch(err.code){
          case'auth/invalid-email':setError('INVALID EMAIL FORMAT');break;
          case'auth/user-not-found':case'auth/wrong-password':setError('INVALID CREDENTIALS');break;
          case'auth/invalid-credential':setError('INVALID CREDENTIALS');break;
          case'auth/too-many-requests':setError('TOO MANY ATTEMPTS. TRY LATER.');break;
          default:setError('AUTH FAILED: '+err.code);
        }
      });
  }

  return(
    <div style={{
      position:'fixed',inset:0,
      background:'var(--void)',
      display:'flex',flexDirection:'column',
      alignItems:'center',justifyContent:'center',
      gap:'var(--space-05)',
      fontFamily:"'Space Mono','Consolas',monospace"
    }}>
      <div>
        <a href="/" style={{textDecoration:'none'}}><div className="D hp" style={{fontSize:'clamp(32px,8vw,64px)',marginBottom:8,textAlign:'center'}}>LINECONIC</div></a>
        <div className="D hs" style={{fontSize:'clamp(12px,3vw,20px)',letterSpacing:'.2em',textAlign:'center'}}>OPERATOR LOGIN</div>
      </div>
      <form onSubmit={handleSubmit} style={{
        display:'flex',flexDirection:'column',
        gap:'var(--space-03)',
        width:'100%',maxWidth:360,
        padding:'0 var(--space-04)'
      }}>
        <input
          type="email"
          className="login-input"
          value={email}
          onChange={function(e){setEmail(e.target.value)}}
          placeholder="EMAIL"
          autoComplete="email"
          required
          style={{
            background:'var(--surface-02)',
            border:'1px solid var(--border-subtle)',
            color:'var(--text-primary)',
            fontFamily:"'Space Mono',monospace",
            fontSize:'var(--type-label)',
            letterSpacing:'.05em',
            padding:'12px 16px',
            outline:'none',
            width:'100%',
            textTransform:'none'
          }}
          onFocus={function(e){e.target.style.borderColor='var(--signal)';e.target.style.boxShadow='0 0 12px rgba(255,0,127,.3)'}}
          onBlur={function(e){e.target.style.borderColor='var(--border-subtle)';e.target.style.boxShadow='none'}}
        />
        <input
          type="password"
          className="login-input"
          value={password}
          onChange={function(e){setPassword(e.target.value)}}
          placeholder="PASSWORD"
          autoComplete="current-password"
          required
          style={{
            background:'var(--surface-02)',
            border:'1px solid var(--border-subtle)',
            color:'var(--text-primary)',
            fontFamily:"'Space Mono',monospace",
            fontSize:'var(--type-label)',
            letterSpacing:'.05em',
            padding:'12px 16px',
            outline:'none',
            width:'100%'
          }}
          onFocus={function(e){e.target.style.borderColor='var(--signal)';e.target.style.boxShadow='0 0 12px rgba(255,0,127,.3)'}}
          onBlur={function(e){e.target.style.borderColor='var(--border-subtle)';e.target.style.boxShadow='none'}}
        />
        <button type="submit" disabled={loading} style={{
          background:loading?'var(--surface-03)':'var(--signal)',
          border:'none',
          color:loading?'var(--text-disabled)':'var(--void)',
          fontFamily:"'Space Mono',monospace",
          fontSize:'var(--type-label)',
          fontWeight:700,
          letterSpacing:'.1em',
          textTransform:'uppercase',
          padding:'14px 24px',
          cursor:loading?'wait':'pointer',
          boxShadow:loading?'none':'var(--glow-signal)',
          transition:'all .15s'
        }}>
          {loading?'SIGNING IN...':'SIGN IN'}
        </button>
        {error&&<div style={{
          color:'var(--signal)',
          fontSize:'var(--type-meta)',
          letterSpacing:'.06em',
          textAlign:'center',
          textShadow:'0 0 8px rgba(255,0,127,.5)'
        }}>{error}</div>}
      </form>
    </div>
  );
}
