/* Login page: reuses the design tokens and form controls from styles.css. */

.login-shell {
  min-height: 100dvh;
  display: grid;
  place-items: center;
  padding: 24px 16px;
  background:
    radial-gradient(60% 50% at 50% 0%, var(--accent-soft), transparent 70%),
    var(--bg);
}

.login-card {
  width: 100%;
  max-width: 400px;
  display: flex;
  flex-direction: column;
  gap: 24px;
  padding: 32px 28px 28px;
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
  animation: view-in var(--t) var(--ease);
}

.login-brand { display: flex; align-items: center; gap: 10px; }
.login-mark { width: 32px; height: 32px; flex: none; }
.login-brand .brand-name { font-size: 18px; }

.login-head { display: flex; flex-direction: column; gap: 6px; }
.login-head h1 { font-size: 24px; font-weight: 600; letter-spacing: -0.025em; line-height: 1.2; }
.login-head p { color: var(--muted); }

.login-form { display: flex; flex-direction: column; gap: 16px; }
.login-form input { height: 42px; }

.login-error {
  padding: 10px 12px;
  font-size: 13px;
  color: var(--danger);
  background: rgba(239, 106, 110, 0.1);
  border: 1px solid rgba(239, 106, 110, 0.3);
  border-radius: var(--r-md);
}

.login-submit { width: 100%; min-height: 42px; font-size: 14px; }
.login-submit .spinner { display: none; }
.login-submit[aria-busy="true"] { cursor: progress; opacity: 0.8; }
.login-submit[aria-busy="true"] .spinner { display: inline-block; }

.spinner {
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.login-foot { font-size: 12.5px; color: var(--muted); text-align: center; }

@media (max-width: 480px) {
  .login-card { padding: 24px 20px 22px; }
}
