scale smoothly with screen size, keeping proportions