diff --git a/client/src/pages/serverSetup.jsx b/client/src/pages/serverSetup.jsx
index d431568..e2722fd 100644
--- a/client/src/pages/serverSetup.jsx
+++ b/client/src/pages/serverSetup.jsx
@@ -2,24 +2,9 @@
 
 import { Box, Container, Fab, Card, CardContent, Typography, Input } from '@mui/material'
 import GroupAddRounded from '@mui/icons-material/GroupAddRounded'
-import { makeStyles } from '@mui/styles';
 import authManager from '../AuthManager'
 
-const useStyles = makeStyles((theme) => ({
-  root: {
-    '& > *': {
-      //margin: theme.spacing(1),
-    },
-  },
-  wizardCard: {
-    borderRadius: 8,
-    maxWidth: 360,
-    margin: "16px auto"
-  },
-}))
-
 export default function ServerSetup(props) {
-  const classes = useStyles()
   const [password, setPassword] = useState('')
   const [passwordRepeat, setPasswordRepeat] = useState('')
   const [loading, setLoading] = useState(false)
@@ -36,7 +21,7 @@
 
   return (
     <Container className='message-list'>
-      <Card className={classes.wizardCard} disabled={loading}>
+      <Card disabled={loading}>
         <CardContent component="form" onSubmit={handleSubmit}>
           <Typography gutterBottom variant="h5" component="h2">
           Jami Web Node setup
@@ -47,9 +32,8 @@
           </Typography>
 
           <Box style={{ textAlign: 'center', marginTop: 8, marginBottom: 16 }}>
-          <div><Input className={classes.textField} value="admin" name="username" autoComplete="username" disabled /></div>
+          <div><Input value="admin" name="username" autoComplete="username" disabled /></div>
           <div><Input
-            className={classes.textField}
             value={password}
             onChange={e => setPassword(e.target.value)}
             name="password"
@@ -58,7 +42,6 @@
             autoComplete="new-password" />
           </div>
           <div><Input
-            className={classes.textField}
             value={passwordRepeat}
             onChange={e => setPasswordRepeat(e.target.value)}
             name="password"
@@ -69,7 +52,7 @@
           </Box>
           <Box style={{ textAlign: 'center', marginTop: 24 }}>
             <Fab variant='extended' color='primary' type='submit' disabled={!isValid()}>
-              <GroupAddRounded className={classes.extendedIcon} />
+              <GroupAddRounded/>
               Create admin account
             </Fab>
           </Box>
