Making Squared Words The Challenge

Your task is to create a program that takes any given string input, and outputs the input in a squared format. Empty strings should return an empty string.

Examples

Given the input:

golf


Your program should output:

golf
o  l
l  o
flog


Input:

123


Output:

123
2 2
321


Input:

a


Output:

a


Input:

Hello, world!


Output (notice the space between the , and w - the gap is not just a newline):

Hello, world!
e           d
l           l
l           r
o           o
,           w

w           ,
o           o
r           l
l           l
d           e
!dlrow ,olleH


Scoring

This is code-golf, so the shortest answer in each language wins.
Charcoal, 7 5 bytes

θ‖Ｏ↙↘


Try it online! Link is to verbose version of code. Edit: Saved 2 bytes thanks to @CarlosAlejo. Explanation:

θ       Print the input string, making the top row
 ‖Ｏ     Reflect with overlap...
   ↙    ... down and left, to create the left side
    ↘   ... down and right, to create the bottom and right sides


(Multiple directions to the Reflect command run consecutively rather than simultaneously.)