.login-page {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(250, 250, 249, 0.96)),
    #fafaf9;
}

.login-panel {
  width: min(100%, 380px);
  display: grid;
  justify-items: center;
  gap: 26px;
  padding: 42px 34px 34px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: var(--panel);
  box-shadow: 0 24px 70px rgba(15, 23, 42, 0.1);
}

.login-panel .brand-mark {
  --mark-size: 104px;
  --mark-stem-width: 12px;
  --mark-stem-height: 26px;
  --mark-stem-offset: 27px;
  --mark-stem-top: 22px;
  --mark-u-width: 54px;
  --mark-u-height: 48px;
  --mark-u-border: 12px;
  --mark-u-bottom: 22px;
  box-shadow: 0 18px 34px rgba(15, 118, 110, 0.22);
}

.login-form {
  width: 100%;
  display: grid;
  gap: 14px;
}

.login-form label {
  display: block;
}

.login-form button {
  width: 100%;
  min-height: 52px;
  border: 1px solid var(--primary);
  border-radius: 10px;
  padding: 10px 12px;
  background: var(--primary);
  color: #fff;
  font-weight: 800;
}

.login-form button:disabled {
  opacity: 0.65;
}

.form-error {
  margin: 0;
  color: #dc2626;
  font-weight: 700;
}

.login-panel.shake-a {
  animation: login-shake-a 420ms cubic-bezier(0.36, 0.07, 0.19, 0.97);
}

.login-panel.shake-b {
  animation: login-shake-b 420ms cubic-bezier(0.36, 0.07, 0.19, 0.97);
}

@keyframes login-shake-a {
  0%,
  100% {
    transform: translateX(0);
  }

  20%,
  60% {
    transform: translateX(-10px);
  }

  40%,
  80% {
    transform: translateX(10px);
  }
}

@keyframes login-shake-b {
  0%,
  100% {
    transform: translateX(0);
  }

  20%,
  60% {
    transform: translateX(-10px);
  }

  40%,
  80% {
    transform: translateX(10px);
  }
}
