/* ============================================================
   Noe Harness — auth stylesheet (login.html)

   Mirrors the tokens from css/styles.css (and template.html) so
   the auth screen reads as one brand: near-black surfaces, IBM
   Plex type, 1px hairlines, sharp corners, inverse selection,
   restrained mono labels (ADR-0007). If the shared palette
   changes, update this file too.

   Section map:
     tokens / base / stage / card / brand rail / form panel /
     submit + foot / back link / toast / responsive / reduced motion
   ============================================================ */

:root{
  --bg:#090909;
  --panel:#0d0d0d;
  --panel-2:#101010;
  --panel-3:#131313;
  --text:#ededed;
  --muted:#999;
  --faint:#666;
  --line:#252525;
  --line-strong:#3a3a3a;
  --accent:#fff;
  --error:#e06c5f;
  --ok:#7bc86c;
  --font:'IBM Plex Sans',Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,monospace;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font);
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
::selection{background:#eee;color:#080808}
:focus-visible{outline:1px solid #888;outline-offset:2px}
[hidden]{display:none!important}

/* ---------- stage ---------- */
/* Full-viewport centering; a barely-there radial keeps the flat
   black from feeling dead without breaking the palette. */
.auth-stage{
  min-height:100vh;min-height:100dvh;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:14px;padding:32px 16px;
  background:
    radial-gradient(ellipse 100% 55% at 50% -12%,rgba(255,255,255,.026),transparent 62%),
    var(--bg);
}

/* ---------- card ---------- */
/* Two columns: brand rail (echoes the app's 264px sidebar) + form
   panel (echoes the settings modal). Sharp corners, hairline border. */
.auth-card{
  width:min(760px,100%);
  background:var(--panel);
  border:1px solid var(--line-strong);
  display:grid;grid-template-columns:248px 1fr;
}

/* ---- brand rail ---- */
.auth-brand{
  background:var(--panel-2);
  border-right:1px solid var(--line);
  padding:28px 24px 20px;
  display:flex;flex-direction:column;gap:18px;
}
.brand{
  display:flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:12px;letter-spacing:.08em;
}
.brand-mark{height:24px;width:auto;display:block;object-fit:contain;flex-shrink:0}
.auth-tagline{margin:0;font-size:12px;line-height:1.65;color:var(--muted)}
.auth-status{
  margin-top:auto;padding-top:16px;border-top:1px solid var(--line);
  display:flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:8px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--faint);
}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0}
.auth-status .dot{background:#555}

/* ---- form panel ---- */
.auth-panel{padding:34px 36px 26px;display:flex;flex-direction:column}
.eyebrow{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:9px}
.auth-title{margin:0 0 24px;font-family:var(--mono);font-size:26px;font-weight:500;letter-spacing:-.04em}

.field{display:flex;flex-direction:column;gap:7px;margin-bottom:4px}
.field>label{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.field-wrap{position:relative}
.field-wrap input{padding-right:64px}

input{
  width:100%;background:#0a0a0a;border:1px solid var(--line-strong);
  font-family:var(--mono);font-size:13px;color:var(--text);
  padding:12px 13px;transition:border-color .18s ease;
}
input::placeholder{color:#4a4a4a}
input:focus{outline:none;border-color:#777}
.field.invalid input{border-color:var(--error)}
.field.invalid input:focus{border-color:var(--error)}
.field-err{min-height:14px;margin:0;font-size:11px;line-height:1.4;color:var(--error)}

.pass-toggle{
  position:absolute;top:1px;right:1px;bottom:1px;
  padding:0 12px;border-left:1px solid var(--line);
  font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;color:var(--faint);
  transition:color .18s ease;
}
.pass-toggle:hover{color:var(--text)}

/* ---- submit + foot ---- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--line-strong);padding:12px 14px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;
  transition:transform .18s ease,border-color .18s ease,
    background-color .18s ease,color .18s ease;
}
.btn.primary{background:#eee;color:#090909;border-color:#eee;width:100%;margin-top:14px}
.btn.primary:hover:not(:disabled){background:#fff}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.5;cursor:wait;transform:none}

.auth-foot{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:18px;padding-top:16px;border-top:1px solid var(--line);
}
.auth-link{
  font-family:var(--mono);font-size:9px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--faint);
  transition:color .18s ease;
}
.auth-link:hover{color:var(--text)}

/* ---- under-card link ---- */
.back-link{
  font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:#4a4a4a;
  transition:color .18s ease;
}
.back-link:hover{color:var(--muted)}

/* ---------- toast ---------- */
/* Same transient-notification pattern as the chat workspace (app.js). */
.toast{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:200;
  background:var(--panel-3);border:1px solid var(--line-strong);color:var(--text);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;
  padding:11px 16px;max-width:90vw;
}
.toast.error{border-color:var(--error);color:var(--error)}

/* ---------- responsive ---------- */
/* 640px: the rail stacks above the form as a compact header. */
@media(max-width:640px){
  .auth-card{grid-template-columns:1fr}
  .auth-brand{
    flex-direction:row;align-items:center;gap:14px;
    border-right:0;border-bottom:1px solid var(--line);
    padding:18px 22px;
  }
  .auth-tagline{display:none}
  .auth-status{margin-top:0;padding-top:0;border-top:0;margin-left:auto}
  .auth-panel{padding:26px 22px 20px}
}

/* ---------- reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}
