Index: components/Alert.jsx
===================================================================
--- components/Alert.jsx	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ components/Alert.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -8,5 +8,5 @@
 
 import { setBlackjack, setStyle } from '../redux/reducers/styleSlice'
-import { setGame } from '../redux/reducers/playerSlice'
+import { setBlackjackGame } from '../redux/reducers/playerSlice'
 
 const Alert = () => {
@@ -30,6 +30,6 @@
             axios.get(`/api/blackjack?action=play_again&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
                 if (res.data?.success && res.data?.game) {
-                    dispatch(setGame({
-                        ...playerState.game,
+                    dispatch(setBlackjackGame({
+                        ...playerState.blackjackGame,
                         status: res.data.game?.status,
                         playerCards: res.data.game?.playerCards,
Index: components/LoginScreen.jsx
===================================================================
--- components/LoginScreen.jsx	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ components/LoginScreen.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -77,6 +77,8 @@
         axios.post(`/api/postgre`, {
             action: 'login',
-            username: styleState.style.loginScreenInfo.username,
-            password: styleState.style.loginScreenInfo.password,
+            username: 'drama',
+            password: 'drama'
+            // username: styleState.style.loginScreenInfo.username,
+            // password: styleState.style.loginScreenInfo.password,
         })
             .then(res => {
Index: components/blackjack/Blackjack.jsx
===================================================================
--- components/blackjack/Blackjack.jsx	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ components/blackjack/Blackjack.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -1,7 +1,7 @@
 import React from 'react'
 
+import Head from 'next/head'
+
 import BlackjackHeader from './BlackjackHeader'
-
-import Head from 'next/head'
 import PlayButtons from '../../components/blackjack/PlayButtons'
 import Cards from '../../components/blackjack/Cards'
@@ -13,5 +13,5 @@
 const Blackjack = () => {
   return (
-    <div className="app" style={{backgroundImage: 'url("/images/blackjack-bg.png")', backgroundPosition: '0% 30%'}}>
+    <div className="app blackjackMainContainer" style={{backgroundImage: 'url("/images/blackjack-bg.png")', backgroundPosition: '0% 30%'}}>
       <Head>
         <title>Caessino - Blackjack</title>
Index: components/blackjack/BlackjackHeader.jsx
===================================================================
--- components/blackjack/BlackjackHeader.jsx	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ components/blackjack/BlackjackHeader.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -10,5 +10,5 @@
 import { useDispatch, useSelector } from 'react-redux'
 
-import { setGame, setPlayer } from '../../redux/reducers/playerSlice'
+import { setBlackjackGame, setPlayer } from '../../redux/reducers/playerSlice'
 import { setBlackjack, setStyle } from '../../redux/reducers/styleSlice'
 
@@ -50,6 +50,6 @@
                 }));
 
-                dispatch(setGame({
-                    ...playerState.game,
+                dispatch(setBlackjackGame({
+                    ...playerState.blackjackGame,
                     status: res.data?.status,
                     playerCards: res.data?.playerCards,
@@ -224,5 +224,5 @@
                             initialBet: {
                                 ...styleState.blackjack.inputControls.initialBet,
-                                chosenCredits: parseInt(postgreRes.data?.credits/2),
+                                chosenCredits: parseInt(res.data?.credits/2),
                             }
                         },
Index: components/blackjack/Cards.jsx
===================================================================
--- components/blackjack/Cards.jsx	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ components/blackjack/Cards.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -22,8 +22,8 @@
   return (
     <div className="blackjackCards">
-      {playerState?.game?.playerCards?.map((card, i) => (
+      {playerState?.blackjackGame?.playerCards?.map((card, i) => (
         <Card key={card} card={card} rotateZ={i*splitCardsMultiplyByInt} pos={{left: playerPos.left+i*splitCardsMultiplyByInt, top: playerPos.top}}/>
       ))}
-      {playerState?.game?.dealerCards?.map((card, i) => (
+      {playerState?.blackjackGame?.dealerCards?.map((card, i) => (
         <Card key={card} card={card} rotateZ={i*splitCardsMultiplyByInt} pos={{left: dealerPos.left+i*splitCardsMultiplyByInt, top: dealerPos.top}}/>
       ))}
Index: components/blackjack/DisplayBet.jsx
===================================================================
--- components/blackjack/DisplayBet.jsx	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ components/blackjack/DisplayBet.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -7,6 +7,6 @@
   const styleState = useSelector(state => state.style);
 
-  let display = parseInt(playerState.game.status.substr(1, 1)) >= 2 ? 'block' : 'none';
-  let displaySideBet = ( parseInt(playerState.game.status.substr(1, 1)) >= 3 && parseInt(styleState.blackjack.inputControls.sideBet.chosenCredits) > 0 ) ? 'block' : 'none';
+  let display = parseInt(playerState.blackjackGame.status.substr(1, 1)) >= 2 ? 'block' : 'none';
+  let displaySideBet = ( parseInt(playerState.blackjackGame.status.substr(1, 1)) >= 3 && parseInt(styleState.blackjack.inputControls.sideBet.chosenCredits) > 0 ) ? 'block' : 'none';
 
   return (
Index: components/blackjack/PlayButtons.jsx
===================================================================
--- components/blackjack/PlayButtons.jsx	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ components/blackjack/PlayButtons.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -4,5 +4,5 @@
 import { AiFillCheckCircle } from 'react-icons/ai'
 
-import { setGame, setPlayer } from '../../redux/reducers/playerSlice';
+import { setBlackjackGame, setPlayer } from '../../redux/reducers/playerSlice';
 import { setBlackjack, setStyle } from '../../redux/reducers/styleSlice';
 
@@ -46,6 +46,6 @@
         axios.get(`/api/blackjack?action=make_initial_bet&session_id=${localStorage.CAESSINO_SESSION_ID}&bet=${styleState.blackjack.inputControls.initialBet.chosenCredits}`).then(res => {
             if (res.data?.success) {
-                dispatch(setGame({
-                    ...playerState.game,
+                dispatch(setBlackjackGame({
+                    ...playerState.blackjackGame,
                     status: res.data?.status,
                 }))
@@ -124,6 +124,6 @@
         const texts = splitTexts(e.target.innerHTML);
 
-        dispatch(setGame({
-            ...playerState.game,
+        dispatch(setBlackjackGame({
+            ...playerState.blackjackGame,
             sideBetName: sideBetName
         }))
@@ -145,8 +145,8 @@
 
     function placeSideBetClicked() {
-        axios.get(`/api/blackjack?action=make_side_bet&session_id=${localStorage.CAESSINO_SESSION_ID}&bet=${styleState.blackjack.inputControls.sideBet.chosenCredits}&betName=${playerState.game.sideBetName}`).then(res => {
-            if (res.data?.success) {
-                dispatch(setGame({
-                    ...playerState.game,
+        axios.get(`/api/blackjack?action=make_side_bet&session_id=${localStorage.CAESSINO_SESSION_ID}&bet=${styleState.blackjack.inputControls.sideBet.chosenCredits}&betName=${playerState.blackjackGame.sideBetName}`).then(res => {
+            if (res.data?.success) {
+                dispatch(setBlackjackGame({
+                    ...playerState.blackjackGame,
                     status: res.data?.status,
                 }))
@@ -201,6 +201,6 @@
         axios.get(`/api/blackjack?action=get_initial_cards&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
             if (res.data?.success) {
-                dispatch(setGame({
-                    ...playerState.game,
+                dispatch(setBlackjackGame({
+                    ...playerState.blackjackGame,
                     status: res.data?.status,
                     playerCards: res.data?.playerCards,
@@ -210,6 +210,6 @@
                 if (res.data?.sideBetOutcome !== '') {
                     if (res.data.sideBetOutcome === 'side_bet_won') {
-                        dispatch(setGame({
-                            ...playerState.game,
+                        dispatch(setBlackjackGame({
+                            ...playerState.blackjackGame,
                             credits: res.data?.credits,
                         }))
@@ -250,6 +250,6 @@
         axios.get(`/api/blackjack?action=hit_a_card&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
             if (res.data?.success) {
-                dispatch(setGame({
-                    ...playerState.game,
+                dispatch(setBlackjackGame({
+                    ...playerState.blackjackGame,
                     status: res.data?.status,
                     playerCards: res.data?.playerCards,
@@ -284,6 +284,6 @@
         axios.get(`/api/blackjack?action=stand&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
             if (res.data?.success) {
-                dispatch(setGame({
-                    ...playerState.game,
+                dispatch(setBlackjackGame({
+                    ...playerState.blackjackGame,
                     status: res.data?.status,
                     playerCards: res.data?.playerCards,
Index: components/poker/Poker.jsx
===================================================================
--- components/poker/Poker.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/poker/Poker.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,28 @@
+import React from 'react'
+
+import Head from 'next/head'
+
+import PokerHeader from './PokerHeader'
+import Loading from '../Loading'
+import Alert from '../Alert'
+import Notification from '../Notification'
+
+const Poker = () => {
+  return (
+    <div className="app pokerMainContainer" style={{backgroundImage: 'url("/images/poker-bg.jpg")'}}>
+      <Head>
+        <title>Caessino - Poker</title>
+      </Head>
+
+      <PokerHeader/>
+
+      <Loading/>
+
+      <Alert/>
+
+      <Notification/>
+    </div>
+  )
+}
+
+export default Poker
Index: components/poker/PokerHeader.jsx
===================================================================
--- components/poker/PokerHeader.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/poker/PokerHeader.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,30 @@
+import React from 'react'
+
+import Link from 'next/link'
+
+import { AiOutlineArrowLeft } from 'react-icons/ai'
+
+import { useDispatch, useSelector } from 'react-redux'
+
+const PokerHeader = () => {
+    const playerState = useSelector(state => state.player);
+    const styleState = useSelector(state => state.style);
+
+    return (
+        <header className="header">
+            <Link href="/" passHref>
+                <h2>
+                    <AiOutlineArrowLeft />
+                </h2>
+            </Link>
+            <nav>
+                <ul>
+                    <li>Hi, {playerState?.player?.displayName}</li>
+                    <li>Balance: ${playerState?.player?.credits}</li>
+                </ul>
+            </nav>
+        </header>
+    )
+}
+
+export default PokerHeader
Index: components/roulette/BetModal.jsx
===================================================================
--- components/roulette/BetModal.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/BetModal.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,89 @@
+import React from 'react'
+
+import { GiTwoCoins } from 'react-icons/gi'
+import { AiOutlineClose } from 'react-icons/ai'
+
+import { useSelector, useDispatch } from 'react-redux'
+import { setRoulette } from '../../redux/reducers/styleSlice';
+
+import axios from 'axios';
+import { setPlayer, setRouletteGame } from '../../redux/reducers/playerSlice';
+
+const BetModal = () => {
+    const dispatch = useDispatch();
+
+    const playerState = useSelector(state => state.player);
+    const styleState = useSelector(state => state.style);
+
+    function chooseBet(e) {
+        dispatch(setRoulette({
+            ...styleState.roulette,
+            inputControls: {
+                ...styleState.roulette.inputControls,
+                bet: {
+                    ...styleState.roulette.inputControls.bet,
+                    chosenCredits: parseInt(e.target.value),
+                }
+            }
+        }));
+    }
+
+    function placeBet() {
+        axios.get(`/api/roulette?action=place_bet&session_id=${localStorage.CAESSINO_SESSION_ID}&betAmount=${styleState.roulette.inputControls.bet.chosenCredits}&whichBets=${styleState.roulette.whichBets.toString()}`).then(res => {
+            if (res.data?.success) {
+                dispatch(setPlayer({
+                    ...playerState.player,
+                    credits: res.data?.credits,
+                }));
+
+                dispatch(setRouletteGame(res.data?.game));
+
+                closeModal(false);
+            }
+        });
+    }
+
+    function closeModal(removeCoin = true) {
+        if (removeCoin) {
+            dispatch(setRoulette({
+                ...styleState.roulette,
+                displays: {
+                  ...styleState.roulette.displays,
+                  betModal: false,
+                },
+                coinPlaced: {
+                  x: 0,
+                  y: 0
+                }
+              }))
+        }
+        else {
+            dispatch(setRoulette({
+                ...styleState.roulette,
+                displays: {
+                    ...styleState.roulette.displays,
+                    betModal: false,
+                }
+            }));
+        }
+    }
+
+    return (
+        <div className="rouletteBetModal" style={{display: styleState.roulette.displays.betModal ? 'flex' : 'none'}}>
+            <p>You have chosen to bet on: <span>{styleState.roulette.whichBets.map((bet, i) => `${bet} `)}</span><br/>Please select the amount you will bet</p>
+            <div>
+                <div>
+                    <input type="range" className="primarySlider" min={0} max={playerState.player.credits} step={1} value={styleState.roulette.inputControls.bet.chosenCredits} onChange={(e) => chooseBet(e)} />
+                    <div style={{marginTop: '15px', marginBottom: '-30px'}}>
+                        <span>${styleState.roulette.inputControls.bet.chosenCredits}</span>
+                    </div>
+                </div>
+                <button style={{marginTop: '50px'}} className="primaryButton" onClick={() => placeBet()}>Place Bet <GiTwoCoins style={{marginTop: '3px', marginBottom: '-3px'}} /></button>
+                <br/>
+                <button style={{position: 'absolute', bottom: '10%', left: '50%', transform: 'translateX(-50%)'}} className="tertiaryButton" onClick={() => closeModal()}>Cancel <AiOutlineClose style={{marginTop: '3px', marginBottom: '-3px'}} /></button>
+            </div>
+        </div>
+    )
+}
+
+export default BetModal
Index: components/roulette/BetsImage.jsx
===================================================================
--- components/roulette/BetsImage.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/BetsImage.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,310 @@
+import React from 'react'
+
+import { useDispatch, useSelector } from 'react-redux';
+import { setRoulette } from '../../redux/reducers/styleSlice';
+
+const BetsImage = () => {
+    const dispatch = useDispatch();
+
+    const playerState = useSelector(state => state.player);
+    const styleState = useSelector(state => state.style);
+
+    function selectWhichBet(e) {
+        const imgRect = document.getElementById('rouletteBetsImg').getBoundingClientRect();
+    
+        const coinOffset = 16;
+    
+        const xOffset = e.clientX - imgRect.x + coinOffset;
+        const yOffset = e.clientY - imgRect.y + coinOffset;
+    
+        const MULTIPLIER = 4;
+    
+        const singleX = imgRect.width / ( 14 * MULTIPLIER );
+        const singleY = imgRect.height / ( 4 * MULTIPLIER );
+    
+        let clicked = getClickedArray(xOffset, singleX, yOffset, singleY);
+
+        if (clicked.length > 0 && playerState.rouletteGame.status.substr(1, 1) === '1') {
+          const playerIdx = playerState.rouletteGame.players.map(e=>e.session_id).indexOf(localStorage.CAESSINO_SESSION_ID);
+          if (playerIdx !== -1 && playerState.rouletteGame.players[playerIdx].status.substr(1, 1) === '1') {
+            openModal(clicked, e);
+          }
+        }
+    }
+
+    function openModal(clicked, e) {
+      dispatch(setRoulette({
+        ...styleState.roulette,
+        whichBets: clicked,
+        displays: {
+          ...styleState.roulette.displays,
+          betModal: true,
+        },
+        coinPlaced: {
+          x: e.clientX + 16,
+          y: e.clientY + 16
+        }
+      }))
+    }
+
+    return (
+        <>
+            <img id="rouletteBetsImg" src="/images/roulette-bets.png" alt="Roulette bets" onClick={(e) => selectWhichBet(e)} style={{zIndex: 10}}/>
+        </>
+    )
+}
+
+
+function getClickedArray(xOffset, singleX, yOffset, singleY) {
+    let clicked = [];
+  
+    if (xOffset < 4 * singleX) {
+      if (yOffset < 3 * 4 * singleY) {
+        clicked = ['0']
+      }
+    }
+    else if (xOffset < 7 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['3']
+      else if (yOffset < 5 * singleY)     clicked = ['3', '2']
+      else if (yOffset < 7 * singleY)     clicked = ['2']
+      else if (yOffset < 8 * singleY)     clicked = ['2', '1']
+      else if (yOffset < 11 * singleY)    clicked = ['1']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['1-12']
+      else if (yOffset < 16 * singleY)    clicked = ['1-18']
+    }
+    else if (xOffset < 9 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['3', '6']
+      else if (yOffset < 5 * singleY)     clicked = ['3', '2', '6', '5']
+      else if (yOffset < 7 * singleY)     clicked = ['2', '5']
+      else if (yOffset < 8 * singleY)     clicked = ['2', '1', '5', '4']
+      else if (yOffset < 11 * singleY)    clicked = ['1', '4']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['1-12']
+      else if (yOffset < 16 * singleY)    clicked = ['1-18']
+    }
+    else if (xOffset < 11 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['6']
+      else if (yOffset < 5 * singleY)     clicked = ['6', '5']
+      else if (yOffset < 7 * singleY)     clicked = ['5']
+      else if (yOffset < 8 * singleY)     clicked = ['5', '4']
+      else if (yOffset < 11 * singleY)    clicked = ['4']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['1-12']
+      else if (yOffset < 16 * singleY)    clicked = ['1-18']
+    }
+    else if (xOffset < 13 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['6', '9']
+      else if (yOffset < 5 * singleY)     clicked = ['6', '5', '9', '8']
+      else if (yOffset < 7 * singleY)     clicked = ['5', '8']
+      else if (yOffset < 8 * singleY)     clicked = ['5', '4', '8', '7']
+      else if (yOffset < 11 * singleY)    clicked = ['4', '7']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['1-12']
+      else if (yOffset < 16 * singleY)    ;
+    }
+    else if (xOffset < 15 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['9']
+      else if (yOffset < 5 * singleY)     clicked = ['9', '8']
+      else if (yOffset < 7 * singleY)     clicked = ['8']
+      else if (yOffset < 8 * singleY)     clicked = ['8', '7']
+      else if (yOffset < 11 * singleY)    clicked = ['7']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['1-12']
+      else if (yOffset < 16 * singleY)    clicked = ['Even']
+    }
+    else if (xOffset < 17 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['9', '12']
+      else if (yOffset < 5 * singleY)     clicked = ['9', '8', '12', '11']
+      else if (yOffset < 7 * singleY)     clicked = ['8', '11']
+      else if (yOffset < 8 * singleY)     clicked = ['8', '7', '11', '10']
+      else if (yOffset < 11 * singleY)    clicked = ['7', '10']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['1-12']
+      else if (yOffset < 16 * singleY)    clicked = ['Even']
+    }
+    else if (xOffset < 19 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['12']
+      else if (yOffset < 5 * singleY)     clicked = ['12', '11']
+      else if (yOffset < 7 * singleY)     clicked = ['11']
+      else if (yOffset < 8 * singleY)     clicked = ['11', '10']
+      else if (yOffset < 11 * singleY)    clicked = ['10']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['1-12']
+      else if (yOffset < 16 * singleY)    clicked = ['Even']
+    }
+    else if (xOffset < 21 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['12', '15']
+      else if (yOffset < 5 * singleY)     clicked = ['12', '11', '15', '14']
+      else if (yOffset < 7 * singleY)     clicked = ['11', '14']
+      else if (yOffset < 8 * singleY)     clicked = ['11', '10', '14', '13']
+      else if (yOffset < 11 * singleY)    clicked = ['10', '13']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    ;
+      else if (yOffset < 16 * singleY)    ;
+    }
+    else if (xOffset < 23 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['15']
+      else if (yOffset < 5 * singleY)     clicked = ['15', '14']
+      else if (yOffset < 7 * singleY)     clicked = ['14']
+      else if (yOffset < 8 * singleY)     clicked = ['14', '13']
+      else if (yOffset < 11 * singleY)    clicked = ['13']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['13-24']
+      else if (yOffset < 16 * singleY)    clicked = ['Red']
+    }
+    else if (xOffset < 25 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['15', '18']
+      else if (yOffset < 5 * singleY)     clicked = ['15', '14', '18', '17']
+      else if (yOffset < 7 * singleY)     clicked = ['14', '17']
+      else if (yOffset < 8 * singleY)     clicked = ['14', '13', '17', '16']
+      else if (yOffset < 11 * singleY)    clicked = ['13', '16']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['13-24']
+      else if (yOffset < 16 * singleY)    clicked = ['Red']
+    }
+    else if (xOffset < 27 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['18']
+      else if (yOffset < 5 * singleY)     clicked = ['18', '17']
+      else if (yOffset < 7 * singleY)     clicked = ['17']
+      else if (yOffset < 8 * singleY)     clicked = ['17', '16']
+      else if (yOffset < 11 * singleY)    clicked = ['16']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['13-24']
+      else if (yOffset < 16 * singleY)    clicked = ['Red']
+    }
+    else if (xOffset < 29 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['18', '21']
+      else if (yOffset < 5 * singleY)     clicked = ['18', '17', '21', '20']
+      else if (yOffset < 7 * singleY)     clicked = ['17', '20']
+      else if (yOffset < 8 * singleY)     clicked = ['17', '16', '20', '19']
+      else if (yOffset < 11 * singleY)    clicked = ['16', '19']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['13-24']
+      else if (yOffset < 16 * singleY)    ;
+    }
+    else if (xOffset < 31 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['21']
+      else if (yOffset < 5 * singleY)     clicked = ['21', '20']
+      else if (yOffset < 7 * singleY)     clicked = ['20']
+      else if (yOffset < 8 * singleY)     clicked = ['20', '19']
+      else if (yOffset < 11 * singleY)    clicked = ['19']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['13-24']
+      else if (yOffset < 16 * singleY)    clicked = ['Black']
+    }
+    else if (xOffset < 33 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['21', '24']
+      else if (yOffset < 5 * singleY)     clicked = ['21', '20', '24', '23']
+      else if (yOffset < 7 * singleY)     clicked = ['20', '23']
+      else if (yOffset < 8 * singleY)     clicked = ['20', '19', '23', '22']
+      else if (yOffset < 11 * singleY)    clicked = ['19', '22']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['13-24']
+      else if (yOffset < 16 * singleY)    clicked = ['Black']
+    }
+    else if (xOffset < 35 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['24']
+      else if (yOffset < 5 * singleY)     clicked = ['24', '23']
+      else if (yOffset < 7 * singleY)     clicked = ['23']
+      else if (yOffset < 8 * singleY)     clicked = ['23', '22']
+      else if (yOffset < 11 * singleY)    clicked = ['22']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['13-24']
+      else if (yOffset < 16 * singleY)    clicked = ['Black']
+    }
+    else if (xOffset < 37 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['24', '27']
+      else if (yOffset < 5 * singleY)     clicked = ['24', '23', '27', '26']
+      else if (yOffset < 7 * singleY)     clicked = ['23', '26']
+      else if (yOffset < 8 * singleY)     clicked = ['23', '22', '26', '25']
+      else if (yOffset < 11 * singleY)    clicked = ['22', '25']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    ;
+      else if (yOffset < 16 * singleY)    ;
+    }
+    else if (xOffset < 39 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['27']
+      else if (yOffset < 5 * singleY)     clicked = ['27', '26']
+      else if (yOffset < 7 * singleY)     clicked = ['26']
+      else if (yOffset < 8 * singleY)     clicked = ['26', '25']
+      else if (yOffset < 11 * singleY)    clicked = ['25']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['25-36']
+      else if (yOffset < 16 * singleY)    clicked = ['Odd']
+    }
+    else if (xOffset < 41 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['27', '30']
+      else if (yOffset < 5 * singleY)     clicked = ['27', '26', '30', '29']
+      else if (yOffset < 7 * singleY)     clicked = ['26', '29']
+      else if (yOffset < 8 * singleY)     clicked = ['26', '25', '29', '28']
+      else if (yOffset < 11 * singleY)    clicked = ['25', '28']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['25-36']
+      else if (yOffset < 16 * singleY)    clicked = ['Odd']
+    }
+    else if (xOffset < 43 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['30']
+      else if (yOffset < 5 * singleY)     clicked = ['30', '29']
+      else if (yOffset < 7 * singleY)     clicked = ['29']
+      else if (yOffset < 8 * singleY)     clicked = ['29', '28']
+      else if (yOffset < 11 * singleY)    clicked = ['28']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['25-36']
+      else if (yOffset < 16 * singleY)    clicked = ['Odd']
+    }
+    else if (xOffset < 45 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['30', '33']
+      else if (yOffset < 5 * singleY)     clicked = ['30', '29', '33', '32']
+      else if (yOffset < 7 * singleY)     clicked = ['29', '32']
+      else if (yOffset < 8 * singleY)     clicked = ['29', '28', '32', '31']
+      else if (yOffset < 11 * singleY)    clicked = ['28', '31']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['25-36']
+      else if (yOffset < 16 * singleY)    ;
+    }
+    else if (xOffset < 47 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['33']
+      else if (yOffset < 5 * singleY)     clicked = ['33', '32']
+      else if (yOffset < 7 * singleY)     clicked = ['32']
+      else if (yOffset < 8 * singleY)     clicked = ['32', '31']
+      else if (yOffset < 11 * singleY)    clicked = ['31']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['25-36']
+      else if (yOffset < 16 * singleY)    clicked = ['19-36']
+    }
+    else if (xOffset < 49 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['33', '36']
+      else if (yOffset < 5 * singleY)     clicked = ['33', '32', '36', '35']
+      else if (yOffset < 7 * singleY)     clicked = ['32', '35']
+      else if (yOffset < 8 * singleY)     clicked = ['32', '31', '35', '34']
+      else if (yOffset < 11 * singleY)    clicked = ['31', '34']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['25-36']
+      else if (yOffset < 16 * singleY)    clicked = ['19-36']
+    }
+    else if (xOffset < 52 * singleX) {
+      if (yOffset < 3 * singleY)          clicked = ['36']
+      else if (yOffset < 5 * singleY)     clicked = ['36', '35']
+      else if (yOffset < 7 * singleY)     clicked = ['35']
+      else if (yOffset < 8 * singleY)     clicked = ['35', '34']
+      else if (yOffset < 11 * singleY)    clicked = ['34']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    clicked = ['25-36']
+      else if (yOffset < 16 * singleY)    clicked = ['19-36']
+    }
+    else {
+      if (yOffset < 3 * singleY)          clicked = ['Remainder0']
+      else if (yOffset < 5 * singleY)     ;
+      else if (yOffset < 7 * singleY)     clicked = ['Remainder2']
+      else if (yOffset < 8 * singleY)     ;
+      else if (yOffset < 11 * singleY)    clicked = ['Remainder1']
+      else if (yOffset < 12 * singleY)    ;
+      else if (yOffset < 14 * singleY)    ;
+      else if (yOffset < 16 * singleY)    ;
+    }
+  
+    return clicked;
+  }
+
+export default BetsImage
Index: components/roulette/CoinOnTable.jsx
===================================================================
--- components/roulette/CoinOnTable.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/CoinOnTable.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,15 @@
+import React from 'react'
+
+import { useSelector } from 'react-redux';
+
+const CoinOnTable = () => {
+    const styleState = useSelector(state => state.style);
+
+    return (
+        <>
+            {styleState.roulette.coinPlaced.x !== 0 && <img id="coinOnTable" src="/gold-coin.cur" alt="Gold coin" style={{zIndex: 20, position: 'absolute', left: `${styleState.roulette.coinPlaced.x}px`, top: `${styleState.roulette.coinPlaced.y}px`, transform: 'translate(-50%, -50%)'}}/>}
+        </>
+    )
+}
+
+export default CoinOnTable
Index: components/roulette/PlayersDisplay.jsx
===================================================================
--- components/roulette/PlayersDisplay.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/PlayersDisplay.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,28 @@
+import React from 'react'
+
+import { useSelector } from 'react-redux'
+
+const PlayersDisplay = () => {
+    const playerState = useSelector(state => state.player);
+
+    return (
+        <div className="roulettePlayersContainer">
+            <div>
+                <p>Online:</p>
+                <hr/>
+                {playerState.rouletteGame?.players.map((player, i) => (
+                    player.status.substr(1, 1) === '1' ? <p key={player + i}>{player.name}</p> : <span key={player + i}></span>
+                ))}
+            </div>
+            <div>
+                <p>Betted:</p>
+                <hr/>
+                {playerState.rouletteGame?.players.map((player, i) => (
+                    player.status.substr(1, 1) === '2' ? <p key={player + i}>{player.name} <span style={{color: '#ead24d'}}>[{player.whichBets.toString()}]</span> ${player.betAmount}</p> : <span key={player + i}></span>
+                ))}
+            </div>
+        </div>
+  )
+}
+
+export default PlayersDisplay
Index: components/roulette/Roulette.jsx
===================================================================
--- components/roulette/Roulette.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/Roulette.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,31 @@
+import React from 'react'
+
+import Head from 'next/head'
+
+import RouletteHeader from './RouletteHeader'
+import Loading from '../Loading'
+import Alert from '../Alert'
+import Notification from '../Notification'
+import Sections from './Sections'
+
+const Roulette = () => {
+  return (
+    <div className="app rouletteMainContainer">
+      <Head>
+        <title>Caessino - Roulette</title>
+      </Head>
+
+      <RouletteHeader/>
+
+      <Sections/>
+
+      <Loading/>
+
+      <Alert/>
+
+      <Notification/>
+    </div>
+  )
+}
+
+export default Roulette
Index: components/roulette/RouletteHeader.jsx
===================================================================
--- components/roulette/RouletteHeader.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/RouletteHeader.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,102 @@
+import React from 'react'
+
+import Link from 'next/link'
+
+import { useRouter } from 'next/router'
+
+import { AiOutlineArrowLeft } from 'react-icons/ai'
+
+import { useEffect } from 'react'
+import { useDispatch, useSelector } from 'react-redux'
+
+import { setRouletteGame, setPlayer } from '../../redux/reducers/playerSlice'
+import { setRoulette, setStyle } from '../../redux/reducers/styleSlice'
+
+import axios from 'axios';
+
+const RouletteHeader = () => {
+    const dispatch = useDispatch();
+
+    const router = useRouter();
+
+    const playerState = useSelector(state => state.player);
+    const styleState = useSelector(state => state.style);
+
+    useEffect(() => {
+        // display loading screen
+        dispatch(setStyle({
+            ...styleState.style,
+            displayLoadingScreen: true,
+        }));
+
+        axios.get(`/api/roulette?action=get_player_info_on_enter&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
+            if (res.data?.success) {
+                dispatch(setPlayer({
+                    ...playerState.player,
+                    displayName: res.data?.displayName,
+                    session_id: res.data?.session_id,
+                    credits: res.data?.credits,
+                }));
+
+                dispatch(setRouletteGame(res.data?.game));
+
+                dispatch(setRoulette({
+                    ...styleState.roulette,
+                    inputControls: {
+                        ...styleState.roulette.inputControls,
+                        bet: {
+                            ...styleState.roulette.inputControls.bet,
+                            chosenCredits: parseInt(res.data?.credits/2),
+                        }
+                    }
+                }));
+
+                dispatch(setStyle({
+                    ...styleState.style,
+                    displayLoadingScreen: false,
+                }))
+
+
+                if (parseInt(res.data?.game.status.toString().substr(1, 1)) == 3) {
+                }
+
+                if (parseInt(res.data?.game.status.toString().substr(1, 1)) == 2) {
+                }
+
+                if (parseInt(res.data?.game.status.toString().substr(1, 1)) == 1) {
+                }
+            }
+            else {
+                dispatch(setStyle({
+                    ...styleState.style,
+                    notification: {
+                        show: true,
+                        text: 'Please login in order to play roulette.',
+                        status: 'error',
+                    },
+                    displayLoadingScreen: false,
+                }))
+
+                router.push('/');
+            }
+        });
+    }, []);
+
+    return (
+        <header className="header">
+            <Link href="/" passHref>
+                <h2>
+                    <AiOutlineArrowLeft />
+                </h2>
+            </Link>
+            <nav>
+                <ul>
+                    <li>Hi, {playerState?.player?.displayName}</li>
+                    <li>Balance: ${playerState?.player?.credits}</li>
+                </ul>
+            </nav>
+        </header>
+    )
+}
+
+export default RouletteHeader
Index: components/roulette/Sections.jsx
===================================================================
--- components/roulette/Sections.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/Sections.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,30 @@
+import React from 'react'
+
+import BetModal from './BetModal';
+import BetsImage from './BetsImage';
+import CoinOnTable from './CoinOnTable';
+import PlayersDisplay from './PlayersDisplay';
+import Timer from './Timer';
+
+const Sections = () => {
+
+  return (
+    <>
+        <p className="rouletteInfoText">Please click on the number(s) you wish to bet on and select the amount you&apos;ll bet.<br/>Then, wait for the timer to go down to 0, and the wheel will spin. Best of luck 🍀</p>
+
+        <BetsImage/>
+
+        <CoinOnTable/>
+
+        <img id="rouletteWheelImg" src="/images/roulette-wheel.png" alt="Roulette wheel"/>
+
+        <PlayersDisplay/>
+
+        <Timer/>
+
+        <BetModal/>
+    </>
+  )
+}
+
+export default Sections
Index: components/roulette/Timer.jsx
===================================================================
--- components/roulette/Timer.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ components/roulette/Timer.jsx	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,44 @@
+import React from 'react'
+
+import { useEffect } from 'react';
+import { useDispatch, useSelector } from 'react-redux'
+import { setRouletteGame } from '../../redux/reducers/playerSlice';
+
+import axios from 'axios';
+
+const Timer = () => {
+    const dispatch = useDispatch();
+
+    const playerState = useSelector(state => state.player);
+
+    useEffect(() => {
+        let interval = setInterval(() => {
+            dispatch(setRouletteGame({
+                ...playerState.rouletteGame,
+                timeToStart: playerState.rouletteGame.timeToStart - 1,
+            }))
+
+            if (playerState.rouletteGame.timeToStart == 0) {
+                
+            }
+        }, 1000);
+
+        return () => clearInterval(interval);
+    }, [dispatch, playerState.rouletteGame.timeToStart, playerState.rouletteGame]);
+
+    function updateTimer() {
+        const timer = playerState.rouletteGame.timeToStart;
+
+        const timeString = (timer < 0 || timer > 90) ? '00:00' : '0' + parseInt(timer/60) + ':' + (timer%60 < 10 ? '0' : '') + (timer%60);
+
+        return timeString;
+    }
+
+    return (
+        <div className="rouletteTimer">
+            <span>{updateTimer()}</span>
+        </div>
+    )
+}
+
+export default Timer
Index: pages/api/blackjack/gameStates.js
===================================================================
--- pages/api/blackjack/gameStates.js	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ pages/api/blackjack/gameStates.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -12,5 +12,5 @@
 export let game = {
   deck: [...deck],
-  status: '_1_room_created',
+  status: '_1_room_created',      // statuses: _1_room_created, _2_made_initial_bet, _3_made_side_bet, _4_cards_on_the_table, _5_game_over
   playerCards: [],
   dealerName: 'Lazar',
Index: pages/api/roulette/index.js
===================================================================
--- pages/api/roulette/index.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
+++ pages/api/roulette/index.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -0,0 +1,114 @@
+import axios from 'axios';
+
+require('dotenv').config();
+
+const COUNTDOWN_FROM = 90;
+const WAIT_BEFORE = 30;
+
+(function() {
+    setInterval(() => {
+
+        game.timeToStart--;
+
+        // 30 seconds is the time to spin and see the results.
+        if (game.timeToStart == 0) {
+            game.timeToStart = COUNTDOWN_FROM + WAIT_BEFORE;
+        }
+
+    }, 1000);
+})();
+
+let game = {
+    status: '_1_ongoing_timer',     // statuses: _1_ongoing_timer, _2_spinning, _3_results
+    timeToStart: COUNTDOWN_FROM,    // in seconds
+    players: [] ,                   // example player -> { session_id, name, whichBet, betAmount, status }  // statuses: _1_no_placed_bet, _2_placed_bet
+}
+
+function addPlayer(session_id, name) {
+    if (game.players.map(e=>e.session_id).indexOf(session_id) === -1) {
+        game.players.push({
+            session_id: session_id,
+            name: name,
+            whichBets: [],
+            betAmount: 0,
+            status: '_1_no_placed_bet',
+        })
+    }
+}
+
+/**
+ * ********************* BEGIN OF REQUEST HANDLER *********************
+ */
+export default async function handler(req, res) {
+    /**
+     * GET method
+     */
+    if (req.method === 'GET') {
+        /**
+         * /---------------------- GET ----------------------/
+         * Place a bet.
+         * @action place_bet
+         * @param session_id
+         * @param betAmount
+         * @param whichBets
+         */
+        if (req.query.action === 'place_bet' && req.query?.session_id && req.query?.betAmount && req.query?.whichBets) {
+            const session_id = req.query.session_id;
+            const playerIdx = game.players.map(e=>e.session_id).indexOf(session_id);
+
+            if (playerIdx !== -1 && game.players[playerIdx].status.substr(1, 1) === '1') {
+                game.players[playerIdx].betAmount = parseInt(req.query.betAmount);
+                game.players[playerIdx].whichBets = req.query.whichBets.split(',');
+                game.players[playerIdx].status = '_2_placed_bet';
+    
+                axios.get(`${process.env.HOME_URL}/api/postgre?action=take_credits&session_id=${session_id}&credits=${req.query.betAmount}`).then(postgreRes => {
+                    if (postgreRes.data?.success) {
+                        res.json({
+                            success: true,
+                            game: game,
+                            credits: postgreRes.data?.credits,
+                        })
+                    }
+                    else {
+                        res.json({
+                            success: false,
+                        })
+                    }
+                });
+            }
+        }
+
+        /**
+         * /---------------------- GET ----------------------/
+         * If the player is not in an existing room, create a room for them.
+         * If they are reconnecting, get the room they were in.
+         * @action get_player_info_on_enter
+         * @param session_id
+         */
+        if (req.query.action === 'get_player_info_on_enter' && req.query?.session_id) {
+            const session_id = req.query.session_id;
+
+            axios.get(`${process.env.HOME_URL}/api/postgre?action=check_if_logged_in&session_id=${session_id}`).then(postgreRes => {
+                if (postgreRes.data?.success) {
+                    addPlayer(session_id, postgreRes.data?.displayName);
+                
+                    res.json({
+                        success: true,
+                        game: game,
+                        displayName: postgreRes.data?.displayName,
+                        session_id: postgreRes.data?.session_id,
+                        credits: postgreRes.data?.credits,
+                    })
+                }
+                else {
+                    res.json({
+                        success: false,
+                    })
+                }
+            });
+        }
+   }
+}
+/**
+ * ********************* END OF REQUEST HANDLER *********************
+ */
Index: pages/games/poker.js
===================================================================
--- pages/games/poker.js	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ pages/games/poker.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -1,18 +1,10 @@
 import React from 'react'
 
-import Header from '../../components/Header'
-import FullwidthText from '../../components/FullwidthText'
-
-import Head from 'next/head'
+import Poker from '../../components/poker/Poker'
 
 const poker = () => {
   return (
     <div className="app">
-      <Head>
-        <title>Caessino - Poker</title>
-      </Head>
-  
-      <Header main="false"/>
-      <FullwidthText title="Poker" subtitle="Under Construction..."/>
+      <Poker/>
     </div>
   )
Index: pages/games/roulette.js
===================================================================
--- pages/games/roulette.js	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ pages/games/roulette.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -1,18 +1,9 @@
 import React from 'react'
-
-import Header from '../../components/Header'
-import FullwidthText from '../../components/FullwidthText'
-
-import Head from 'next/head'
+import Roulette from '../../components/roulette/Roulette'
 
 const roulette = () => {
   return (
     <div className="app">
-      <Head>
-        <title>Caessino - Roulette</title>
-      </Head>
-  
-      <Header main="false"/>
-      <FullwidthText title="Roulette" subtitle="Under Construction..."/>
+      <Roulette/>
     </div>
   )
Index: pages/index.js
===================================================================
--- pages/index.js	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ pages/index.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -21,5 +21,5 @@
 
         <meta name="author" content="ESS" />
-        <meta name="copyright" content="ESS CORP 2022 &copy;" />
+        <meta name="copyright" content="&copy; ESS CORP 2022" />
 
         <title>Caessino</title>
Index: redux/reducers/playerSlice.js
===================================================================
--- redux/reducers/playerSlice.js	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ redux/reducers/playerSlice.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -9,9 +9,14 @@
         credits: 0,
     },
-    game: {
+    blackjackGame: {
+        status: '',
         playerCards: [],
         dealerCards: [],
+        sideBetName: '',
+    },
+    rouletteGame: {
         status: '',
-        sideBetName: '',
+        timeToStart: 0,
+        players: [],
     }
 }
@@ -24,11 +29,14 @@
             state.player = action.payload;
         },
-        setGame: (state, action) => {
-            state.game = action.payload;
+        setBlackjackGame: (state, action) => {
+            state.blackjackGame = action.payload;
+        },
+        setRouletteGame: (state, action) => {
+            state.rouletteGame = action.payload;
         },
     }
 })
 
-export const { setPlayer, setGame } = playerSlice.actions
+export const { setPlayer, setBlackjackGame, setRouletteGame } = playerSlice.actions
 
 export default playerSlice.reducer
Index: redux/reducers/styleSlice.js
===================================================================
--- redux/reducers/styleSlice.js	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ redux/reducers/styleSlice.js	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -80,4 +80,20 @@
             sideBetsPaysText: '',
         }
+    },
+    // roulette
+    roulette: {
+        displays: {
+            betModal: false,
+        },
+        inputControls: {
+            bet: {
+                chosenCredits: 0,
+            },
+        },
+        whichBets: [],
+        coinPlaced: {
+            x: 0,
+            y: 0,
+        }
     }
 }
@@ -92,9 +108,12 @@
         setBlackjack: (state, action) => {
             state.blackjack = action.payload;
+        },
+        setRoulette: (state, action) => {
+            state.roulette = action.payload;
         }
     }
 })
 
-export const { setStyle, setBlackjack } = styleSlice.actions
+export const { setStyle, setBlackjack, setRoulette } = styleSlice.actions
 
 export default styleSlice.reducer
Index: styles/globals.css
===================================================================
--- styles/globals.css	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ styles/globals.css	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -515,4 +515,33 @@
 }
 
+.tertiaryButton {
+  background: -webkit-gradient(linear, left top, right top, from(#484848), to(#6a6a6a));
+  background: linear-gradient(to right, #484848, #6a6a6a);
+  color: white;
+  outline: none;
+  border: none;
+  border-radius: 10px;
+  font-size: 1.5rem;
+  font-weight: bold;
+  padding: 5px 20px;
+  -webkit-box-shadow: 0 5px 25px rgba(0, 0, 0, 0.25);
+          box-shadow: 0 5px 25px rgba(0, 0, 0, 0.25);
+  cursor: pointer;
+  -webkit-transition: all .2s linear;
+  transition: all .2s linear;
+}
+
+.tertiaryButton:hover {
+  background: -webkit-gradient(linear, left top, right top, from(#6e6e6e), to(#a0a0a0));
+  background: linear-gradient(to right, #6e6e6e, #a0a0a0);
+}
+
+.tertiaryButton:active {
+  -webkit-transition: .05s linear;
+  transition: .05s linear;
+  background: -webkit-gradient(linear, left top, right top, from(#484848), to(#6a6a6a));
+  background: linear-gradient(to right, #484848, #6a6a6a);
+}
+
 /**
   * Input Sliders
@@ -589,5 +618,4 @@
 /**
   * File <- Blackjack Main
-  * Components <- PlayButtons, Cards
   */
 .blackjackButtons {
@@ -744,3 +772,108 @@
   color: white;
 }
+
+/**
+  * File <- Roulette Main
+  */
+.rouletteMainContainer {
+  background-color: #006600;
+}
+
+#rouletteBetsImg {
+  position: absolute;
+  top: 65%;
+  left: 59%;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  width: 50vw;
+  height: auto;
+  cursor: url(/gold-coin.cur), auto;
+}
+
+#rouletteWheelImg {
+  position: absolute;
+  top: 60%;
+  left: 18%;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  width: 450px;
+  height: auto;
+}
+
+.rouletteInfoText {
+  position: absolute;
+  top: 15%;
+  width: 100vw;
+  text-align: center;
+  font-size: 1.1rem;
+}
+
+.roulettePlayersContainer {
+  position: absolute;
+  top: 15%;
+  right: 4%;
+  width: 10vw;
+  height: 80vh;
+  -webkit-box-shadow: 0 0 10px rgba(10, 148, 45, 0.25);
+          box-shadow: 0 0 10px rgba(10, 148, 45, 0.25);
+  padding: 1rem;
+  display: -ms-grid;
+  display: grid;
+  -ms-grid-rows: (minmax(0, 1fr))[2];
+      grid-template-rows: repeat(2, minmax(0, 1fr));
+  overflow-x: hidden;
+  overflow-y: scroll;
+}
+
+.roulettePlayersContainer p {
+  word-wrap: break-word;
+  margin-top: .5rem;
+}
+
+.rouletteTimer {
+  position: absolute;
+  top: calc((60% + 450px) / 2);
+  left: calc(18.5%);
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  font-size: 2.5rem;
+  color: black;
+}
+
+.rouletteBetModal {
+  z-index: 20;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  position: fixed;
+  left: 0;
+  top: 0;
+  width: 100vw;
+  height: 100vh;
+  background: #000000c0;
+}
+
+.rouletteBetModal p {
+  margin-bottom: 1rem;
+  padding: 10px 20px;
+  border-radius: 5px;
+  -webkit-transition: all .25s linear;
+  transition: all .25s linear;
+}
+
+.rouletteBetModal p span {
+  font-size: 1.2rem;
+  color: #ead24d;
+}
+
+/**
+  * File <- Poker Main
+  */
 /*# sourceMappingURL=globals.css.map */
Index: styles/globals.css.map
===================================================================
--- styles/globals.css.map	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ styles/globals.css.map	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -1,5 +1,5 @@
 {
     "version": 3,
-    "mappings": "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",
+    "mappings": "AAAA,OAAO,CAAC,6FAAI;AAEZ,AAAA,IAAI;AACJ,IAAI,CAAC;EACH,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EAIT,WAAW,EAAE,mBAAmB;CACjC;;AAED,AAAA,CAAC,CAAC;EACA,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;CACtB;;AAED,AAAA,CAAC,CAAC;EACA,UAAU,EAAE,UAAU;CACvB;;AAGD,AAAA,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;CACV;;AAED,AAAA,IAAI,CAAC;EACH,KAAK,EAAE,KAAK;EAEZ,cAAc,EAAE,GAAG;EAEnB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EAEb,MAAM,EAAE,IAAI;EAEZ,QAAQ,EAAE,MAAM;EAEhB,eAAe,EAAE,KAAK;EACtB,iBAAiB,EAAE,SAAS;EAC5B,mBAAmB,EAAE,MAAM;EAE3B,UAAU,EAAE,MAAM;CACnB;;AAED;;IAEI;AACJ,AAAA,MAAM,AAAA,OAAO,CAAC;EACZ,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,aAAa;EAC9B,WAAW,EAAE,MAAM;EAEnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;CA0CjB;;AAjDD,AASE,MATI,AAAA,OAAO,CASX,KAAK,CAAC;EACJ,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,CAAC;EACf,aAAa,EAAE,IAAI;EAEnB,gBAAgB,EAAE,uBAAuB;EACzC,eAAe,EAAE,KAAK;EAEtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,wBAAwB;EAE1C,MAAM,EAAE,OAAO;CAChB;;AApBH,AAsBE,MAtBI,AAAA,OAAO,CAsBX,EAAE,CAAC;EACD,MAAM,EAAE,OAAO;CAChB;;AAxBH,AA2BI,MA3BE,AAAA,OAAO,CA0BX,GAAG,CACD,EAAE,CAAC;EACD,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,eAAe,EAAE,IAAI;CAStB;;AAvCL,AAgCM,MAhCA,AAAA,OAAO,CA0BX,GAAG,CACD,EAAE,CAKA,EAAE,CAAC;EACD,YAAY,EAAE,IAAI;CAKnB;;AAtCP,AAmCQ,MAnCF,AAAA,OAAO,CA0BX,GAAG,CACD,EAAE,CAKA,EAAE,AAGC,WAAW,CAAC;EACX,YAAY,EAAE,CAAC;CAChB;;AArCT,AA2CQ,MA3CF,AAAA,OAAO,CA0BX,GAAG,AAeA,qBAAqB,CACpB,EAAE,CACA,EAAE,CAAC;EACD,MAAM,EAAE,OAAO;CAChB;;AAMT;;;;IAII;AACJ,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,KAAK;EAEZ,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EAEnB,UAAU,EAAE,IAAI;EAEhB,OAAO,EAAE,aAAa;EAEtB,gBAAgB,EAAE,kBAAiB;CAYpC;;AAxBD,AAcE,cAdY,CAcZ,EAAE,CAAC;EACD,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,MAAM;CAClB;;AAlBH,AAoBE,cApBY,CAoBZ,EAAE,CAAC;EACD,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,OAAO;CACrB;;AAGH;;;;IAII;AACJ,AAAA,MAAM,CAAC;EACL,KAAK,EAAE,KAAK;EAEZ,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EAEnB,OAAO,EAAE,aAAa;EAEtB,gBAAgB,EAAE,kBAAiB;EAEnC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EAET,SAAS,EAAE,gBAAgB;EAE3B,UAAU,EAAE,YAAY;CAiBzB;;AAlCD,AAmBE,MAnBI,CAmBJ,EAAE,CAAC;EACD,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,MAAM;CAClB;;AAvBH,AAyBE,MAzBI,CAyBJ,EAAE,CAAC;EACD,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,OAAO;CACrB;;AA5BH,AA8BE,MA9BI,CA8BJ,MAAM,CAAC;EACL,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,IAAI;CACjB;;AAGH;;;;IAII;AACJ,AAAA,aAAa,CAAC;EACZ,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,IAAI;EACT,KAAK,EAAE,IAAI;EAEX,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,KAAK;EAEjB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,QAAQ;EAsBrB,SAAS,EAAE,IAAI;EAEf,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,IAAI;EAEnB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB;CAC3C;;AAvCD,AAaE,aAbW,CAaX,GAAG,CAAC;EACF,MAAM,EAAE,OAAO;CAChB;;AAfH,AAiBE,aAjBW,GAiBT,GAAG,CAAC;EACJ,IAAI,EAAE,CAAC;EAEP,KAAK,EAAE,IAAI;EAEX,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EAEnB,SAAS,EAAE,MAAM;EAEjB,aAAa,EAAE,MAAM;EAErB,UAAU,EAAE,MAAM;CACnB;;AAUH;;;;IAII;AACJ,AAAA,YAAY,CAAC;EACX,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,eAAe,EAAE,aAAa;EAC9B,WAAW,EAAE,MAAM;EAEnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;CA2EjB;;AAnFD,AAUE,YAVU,CAUV,WAAW,CAAC;EACV,UAAU,EAAE,cAAc;EAC1B,MAAM,EAAE,OAAO;EAEf,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAyDpB;;AA1EH,AAmBI,YAnBQ,CAUV,WAAW,CAST,YAAY,CAAC;EACX,UAAU,EAAE,cAAc;EAE1B,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,CAAC;EAEf,aAAa,EAAE,IAAI;EAEnB,UAAU,EAAE,iDAAiD;EAC7D,OAAO,EAAE,GAAG;EAEZ,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;CASvB;;AAxCL,AAiCM,YAjCM,CAUV,WAAW,CAST,YAAY,CAcV,OAAO,CAAC;EACN,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,GAAG;EACV,eAAe,EAAE,KAAK;EACtB,MAAM,EAAE,IAAI;EACZ,YAAY,EAAE,CAAC;CAChB;;AAvCP,AA0CI,YA1CQ,CAUV,WAAW,CAgCT,EAAE,CAAC;EACD,UAAU,EAAE,cAAc;EAE1B,WAAW,EAAE,OAAO;EACpB,UAAU,EAAE,IAAI;EAEhB,OAAO,EAAE,CAAC;CACX;;AAjDL,AAmDI,YAnDQ,CAUV,WAAW,CAyCT,EAAE,AAAA,QAAQ,CAAC;EACT,KAAK,EAAE,KAAK;EACZ,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,KAAK;EACZ,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,IAAI;EACV,SAAS,EAAE,qBAAqB;EAEhC,SAAS,EAAE,IAAI;EAEf,OAAO,EAAE,EAAE;CACZ;;AA9DL,AAiEM,YAjEM,CAUV,WAAW,AAsDR,MAAM,CACL,YAAY,CAAC;EACX,SAAS,EAAE,UAAU;EACrB,OAAO,EAAE,CAAC;CACX;;AApEP,AAsEM,YAtEM,CAUV,WAAW,AAsDR,MAAM,CAML,EAAE,CAAC;EACD,OAAO,EAAE,CAAC;CACX;;AAxEP,AA8EM,YA9EM,AA4ET,MAAM,CACL,WAAW,CACT,YAAY,CAAC;EACX,OAAO,EAAE,YAAY;CACtB;;AAKP;;IAEI;AACJ,AAAA,WAAW,CAAC;EACV,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EAEP,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EAEb,UAAU,EAAE,2CAA2C;EACvD,KAAK,EAAE,OAAO;CACf;;AAED,AACE,YADU,GACR,GAAG,CAAC;EACJ,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,IAAI;EACV,SAAS,EAAE,qBAAqB;CACjC;;AAGH,AACE,oBADkB,GAChB,GAAG,CAAC;EACJ,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,WAAW;EAElB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAgBpB;;AAzBH,AAWI,oBAXgB,GAChB,GAAG,GAUD,IAAI,CAAC;EACL,aAAa,EAAE,KAAK;EAEpB,SAAS,EAAE,MAAM;CAClB;;AAfL,AAiBI,oBAjBgB,GAChB,GAAG,GAgBD,KAAK,CAAC;EACN,aAAa,EAAE,IAAI;EAEnB,YAAY,EAAE,GAAG;EACjB,aAAa,EAAE,GAAG;EAElB,SAAS,EAAE,IAAI;CAChB;;AAIL,AACE,YADU,CACV,GAAG,CAAC;EACF,MAAM,EAAE,OAAO;EACf,SAAS,EAAE,MAAM;EACjB,KAAK,EAAE,KAAK;CACb;;AALH,AAQI,YARQ,GAOR,GAAG,CACH,EAAE,CAAC;EACD,SAAS,EAAE,MAAM;EACjB,aAAa,EAAE,IAAI;CACpB;;AAXL,AAaI,YAbQ,GAOR,GAAG,CAMH,CAAC,CAAC;EACA,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,aAAa;EAE9B,SAAS,EAAE,MAAM;EACjB,aAAa,EAAE,IAAI;CASpB;;AA3BL,AAoBM,YApBM,GAOR,GAAG,CAMH,CAAC,AAOE,UAAW,CAAA,EAAE,EAAE;EACd,KAAK,EAAE,KAAK;CACb;;AAtBP,AAwBM,YAxBM,GAOR,GAAG,CAMH,CAAC,CAWC,IAAI,CAAC;EACH,WAAW,EAAE,IAAI;CAClB;;AAKP,AACE,oBADkB,CAClB,GAAG,CAAC;EACF,MAAM,EAAE,OAAO;EACf,SAAS,EAAE,MAAM;EACjB,KAAK,EAAE,KAAK;CACb;;AALH,AAQI,oBARgB,GAOhB,GAAG,CACH,EAAE,CAAC;EACD,SAAS,EAAE,MAAM;EACjB,aAAa,EAAE,IAAI;CACpB;;AAXL,AAaI,oBAbgB,GAOhB,GAAG,CAMH,CAAC,CAAC;EACA,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,KAAK;CACb;;AAhBL,AAkBI,oBAlBgB,GAOhB,GAAG,CAWH,MAAM,CAAC;EACL,KAAK,EAAE,IAAI;CACZ;;AAIL,AAAA,YAAY,CAAC;EACX,MAAM,EAAE,OAAO;EAEf,gBAAgB,EAAE,OAAO;EACzB,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,IAAI;EAEnB,KAAK,EAAE,OAAO;EACd,SAAS,EAAE,iBAAiB;EAC5B,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,OAAO;CACxB;;AAED;;IAEI;AACJ,AACE,cADY,CACZ,EAAE,CAAC;EACD,SAAS,EAAE,IAAI;CAChB;;AAGH;;IAEI;AAEJ;;IAEI;AACJ,AAAA,cAAc,CAAC;EACb,UAAU,EAAE,2CAA2C;EACvD,KAAK,EAAE,OAAO;EAEd,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI;EAEnB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,QAAQ;EAEjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB;EAE1C,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,cAAc;CAW3B;;AA1BD,AAiBE,cAjBY,AAiBX,MAAM,CAAC;EACN,SAAS,EAAE,UAAU,CAAC,cAAc;CAErC;;AApBH,AAsBE,cAtBY,AAsBX,OAAO,CAAC;EACP,UAAU,EAAE,WAAW;EACvB,SAAS,EAAE,QAAQ,CAAC,cAAc;CACnC;;AAGH,AAAA,gBAAgB,CAAC;EACf,UAAU,EAAE,2CAA2C;EACvD,KAAK,EAAE,KAAK;EAEZ,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI;EAEnB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,QAAQ;EAEjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB;EAE1C,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,cAAc;CAW3B;;AA1BD,AAiBE,gBAjBc,AAiBb,MAAM,CAAC;EACN,SAAS,EAAE,UAAU,CAAC,cAAc;CAErC;;AApBH,AAsBE,gBAtBc,AAsBb,OAAO,CAAC;EACP,UAAU,EAAE,WAAW;EACvB,SAAS,EAAE,QAAQ,CAAC,cAAc;CACnC;;AAGH,AAAA,eAAe,CAAC;EACd,UAAU,EAAE,2CAA2C;EACvD,KAAK,EAAE,KAAK;EAEZ,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI;EAEnB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,QAAQ;EAEjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB;EAE1C,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,cAAc;CAU3B;;AAzBD,AAiBE,eAjBa,AAiBZ,MAAM,CAAC;EACN,UAAU,EAAE,2CAA2C;CACxD;;AAnBH,AAqBE,eArBa,AAqBZ,OAAO,CAAC;EACP,UAAU,EAAE,WAAW;EACvB,UAAU,EAAE,2CAA2C;CACxD;;AAGH;;IAEI;AACJ,AAAA,cAAc,CAAC;EACb,kBAAkB,EAAE,IAAI;EACxB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,OAAO;EACnB,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,IAAI;EACnB,kBAAkB,EAAE,GAAG;EACvB,UAAU,EAAE,WAAW;EAEvB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB;CAChD;;AAED,AAAA,cAAc,AAAA,MAAM,CAAC;EACnB,OAAO,EAAE,CAAC;CACX;;AAED,AAAA,cAAc,AAAA,sBAAsB,CAAC;EACnC,kBAAkB,EAAE,IAAI;EACxB,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,4BAA4B;EACxC,eAAe,EAAE,OAAO;EACxB,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,OAAO;CAChB;;AAED,AAAA,cAAc,AAAA,kBAAkB,CAAC;EAC/B,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,4BAA4B;EACxC,eAAe,EAAE,OAAO;EACxB,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,OAAO;CAChB;;AAED;;IAEI;AAEJ,WAAW;AACX,AAAA,mBAAmB,CAAC;EAClB,KAAK,EAAE,IAAI;CACZ;;AAED,WAAW;AACX,AAAA,yBAAyB,CAAC;EACxB,UAAU,EAAE,OAAO;CACpB;;AAED,YAAY;AACZ,AAAA,yBAAyB,CAAC;EACxB,UAAU,EAAE,OAAO;CACpB;;AAED,qBAAqB;AACrB,AAAA,yBAAyB,AAAA,MAAM,CAAC;EAC9B,UAAU,EAAE,OAAO;CACpB;;AAED;;IAEI;AACJ,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAElB,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,IAAI;EAET,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;EAEZ,QAAQ,EAAE,MAAM;CAkBjB;;AA3BD,AAWE,iBAXe,GAWb,GAAG,CAAC;EACJ,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EAEnB,UAAU,EAAE,eAAe;CAS5B;;AA1BH,AAmBI,iBAnBa,GAWb,GAAG,GAQD,MAAM,CAAC;EACP,KAAK,EAAE,KAAK;CACb;;AArBL,AAuBI,iBAvBa,GAWb,GAAG,GAYD,MAAM,AAAA,UAAW,CAAA,CAAC,EAAE;EACpB,WAAW,EAAE,IAAI;CAClB;;AAIL,AACE,eADa,CACb,KAAK,CAAC;EACJ,YAAY,EAAE,OAAO;EACrB,MAAM,EAAE,KAAK;EAEb,eAAe,EAAE,OAAO;EAExB,QAAQ,EAAE,QAAQ;EAElB,UAAU,EAAE,eAAe;EAE3B,aAAa,EAAE,IAAI;EAEnB,MAAM,EAAE,eAAe;CACxB;;AAGH,AAAA,oBAAoB,CAAC;EACnB,QAAQ,EAAE,QAAQ;EAElB,SAAS,EAAE,qBAAqB;EAEhC,IAAI,EAAE,IAAI;EACV,GAAG,EAAE,MAAM;CACZ;;AAED,AAAA,uBAAuB,CAAC;EACtB,OAAO,EAAE,EAAE;EAEX,cAAc,EAAE,iBAAiB;EAEjC,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,IAAI;EACV,GAAG,EAAE,IAAI;EAET,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EAEZ,OAAO,EAAE,IAAI;EAEb,SAAS,EAAE,qBAAqB;EAEhC,UAAU,EAAE,+CAA+C;EAE3D,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB;EAE1C,aAAa,EAAE,IAAI;EAEnB,UAAU,EAAE,MAAM;CA0CnB;;AAhED,AAwBE,uBAxBqB,CAwBrB,uBAAuB,CAAC;EAKtB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,KAAK,EAAE,IAAI;CAgCZ;;AA/DH,AAyBI,uBAzBmB,CAwBrB,uBAAuB,AACpB,YAAY,CAAC;EACZ,UAAU,EAAE,KAAK;CAClB;;AA3BL,AAiCI,uBAjCmB,CAwBrB,uBAAuB,CASrB,EAAE,CAAC;EACD,aAAa,EAAE,IAAI;EAEnB,KAAK,EAAE,OAAO;CACf;;AArCL,AAuCI,uBAvCmB,CAwBrB,uBAAuB,GAenB,GAAG,CAAC;EACJ,UAAU,EAAE,IAAI;CAsBjB;;AA9DL,AA0CM,uBA1CiB,CAwBrB,uBAAuB,GAenB,GAAG,CAGH,CAAC,CAAC;EACA,aAAa,EAAE,IAAI;EAEnB,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,GAAG;EAElB,MAAM,EAAE,OAAO;EAEf,UAAU,EAAE,eAAe;CAW5B;;AA7DP,AAoDQ,uBApDe,CAwBrB,uBAAuB,GAenB,GAAG,CAGH,CAAC,CAUC,IAAI,CAAC;EACH,SAAS,EAAE,MAAM;EACjB,KAAK,EAAE,OAAO;CACf;;AAvDT,AAyDQ,uBAzDe,CAwBrB,uBAAuB,GAenB,GAAG,CAGH,CAAC,AAeE,MAAM,CAAC;EACN,KAAK,EAAE,OAAO;EACd,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB;CAC3C;;AAMT,AAAA,oCAAoC,CAAC;EACnC,OAAO,EAAE,EAAE;EAEX,cAAc,EAAE,iBAAiB;EAEjC,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,IAAI;EACV,GAAG,EAAE,IAAI;EAET,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EAEZ,OAAO,EAAE,IAAI;EAEb,SAAS,EAAE,qBAAqB;EAEhC,UAAU,EAAE,+CAA+C;EAE3D,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB;EAE1C,aAAa,EAAE,IAAI;CAepB;;AAnCD,AAsBE,oCAtBkC,CAsBlC,CAAC,CAAC;EACA,aAAa,EAAE,IAAI;EAEnB,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,GAAG;EAElB,UAAU,EAAE,eAAe;CAM5B;;AAlCH,AA8BI,oCA9BgC,CAsBlC,CAAC,CAQC,IAAI,CAAC;EACH,SAAS,EAAE,MAAM;EACjB,KAAK,EAAE,KAAK;CACb;;AAIL;;IAEI;AACJ,AAAA,sBAAsB,CAAC;EACrB,gBAAgB,EAAE,OAAO;CAC1B;;AAED,AAAA,gBAAgB,CAAC;EACf,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EAET,SAAS,EAAE,qBAAqB;EAEhC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EAEZ,MAAM,EAAE,mBAAmB,EAAE,IAAI;CAClC;;AAED,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EAET,SAAS,EAAE,qBAAqB;EAEhC,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;CACb;;AAED,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EAER,KAAK,EAAE,KAAK;EAEZ,UAAU,EAAE,MAAM;EAElB,SAAS,EAAE,MAAM;CAClB;;AAED,AAAA,yBAAyB,CAAC;EACxB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,EAAE;EAET,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EAEZ,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAsB;EAE3C,OAAO,EAAE,IAAI;EAEb,OAAO,EAAE,IAAI;EACb,kBAAkB,EAAE,yBAAyB;EAE7C,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,MAAM;CAMnB;;AAtBD,AAkBE,yBAlBuB,CAkBvB,CAAC,CAAC;EACA,SAAS,EAAE,UAAU;EACrB,UAAU,EAAE,KAAK;CAClB;;AAGH,AAAA,cAAc,CAAC;EACb,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,uBAAuB;EAC5B,IAAI,EAAE,WAAW;EAEjB,SAAS,EAAE,qBAAqB;EAEhC,SAAS,EAAE,MAAM;EAEjB,KAAK,EAAE,KAAK;CACb;;AAED,AAAA,iBAAiB,CAAC;EAChB,OAAO,EAAE,EAAE;EAEX,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EAEnB,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,CAAC;EAEN,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EAEb,UAAU,EAAE,SAAS;CAetB;;AA7BD,AAgBE,iBAhBe,CAgBf,CAAC,CAAC;EACA,aAAa,EAAE,IAAI;EAEnB,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,GAAG;EAElB,UAAU,EAAE,eAAe;CAM5B;;AA5BH,AAwBI,iBAxBa,CAgBf,CAAC,CAQC,IAAI,CAAC;EACH,SAAS,EAAE,MAAM;EACjB,KAAK,EAAE,OAAO;CACf;;AAIL;;IAEI",
     "sources": [
         "globals.scss"
Index: styles/globals.scss
===================================================================
--- styles/globals.scss	(revision 285c3cc6d8962d6a01d8b88f202814829bd63d98)
+++ styles/globals.scss	(revision 9bd09b003e0450668a5ceb182fb4d9dfb5a2d704)
@@ -498,4 +498,31 @@
 }
 
+.tertiaryButton {
+  background: linear-gradient(to right, #484848, #6a6a6a);
+  color: white;
+
+  outline: none;
+  border: none;
+  border-radius: 10px;
+
+  font-size: 1.5rem;
+  font-weight: bold;
+  padding: 5px 20px;
+
+  box-shadow: 0 5px 25px rgba(0, 0, 0, 0.25);
+
+  cursor: pointer;
+  transition: all .2s linear;
+
+  &:hover {
+    background: linear-gradient(to right, #6e6e6e, #a0a0a0);
+  }
+
+  &:active {
+    transition: .05s linear;
+    background: linear-gradient(to right, #484848, #6a6a6a);
+  }
+}
+
 /**
   * Input Sliders
@@ -571,5 +598,4 @@
 /**
   * File <- Blackjack Main
-  * Components <- PlayButtons, Cards
   */
 .blackjackButtons {
@@ -730,2 +756,116 @@
   }
 }
+
+/**
+  * File <- Roulette Main
+  */
+.rouletteMainContainer {
+  background-color: #006600;
+}
+
+#rouletteBetsImg {
+  position: absolute;
+  top: 65%;
+  left: 59%;
+
+  transform: translate(-50%, -50%);
+  
+  width: 50vw;
+  height: auto;
+
+  cursor: url(/gold-coin.cur), auto;
+}
+
+#rouletteWheelImg {
+  position: absolute;
+  top: 60%;
+  left: 18%;
+
+  transform: translate(-50%, -50%);
+  
+  width: 450px;
+  height: auto;
+}
+
+.rouletteInfoText {
+  position: absolute;
+  top: 15%;
+  
+  width: 100vw;
+
+  text-align: center;
+
+  font-size: 1.1rem;
+}
+
+.roulettePlayersContainer {
+  position: absolute;
+  top: 15%;
+  right: 4%;
+  
+  width: 10vw;
+  height: 80vh;
+
+  box-shadow: 0 0 10px rgba(10, 148, 45, .25);
+
+  padding: 1rem;
+
+  display: grid;
+  grid-template-rows: repeat(2, minmax(0, 1fr));
+
+  overflow-x: hidden;
+  overflow-y: scroll;
+
+  p {
+    word-wrap: break-word;
+    margin-top: .5rem;
+  }
+}
+
+.rouletteTimer {
+  position: absolute;
+  top: calc((60% + 450px) / 2);
+  left: calc(18.5%);
+
+  transform: translate(-50%, -50%);
+  
+  font-size: 2.5rem;
+
+  color: black;
+}
+
+.rouletteBetModal {
+  z-index: 20;
+
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+
+  position: fixed;
+  left: 0;
+  top: 0;
+
+  width: 100vw;
+  height: 100vh;
+
+  background: #000000c0;
+
+  p {
+    margin-bottom: 1rem;
+
+    padding: 10px 20px;
+    border-radius: 5px;
+
+    transition: all .25s linear;
+
+    span {
+      font-size: 1.2rem;
+      color: #ead24d;
+    }
+  }
+}
+
+/**
+  * File <- Poker Main
+  */
+
