diff --git a/src/components/Gameboard/Gameboard.module.css b/src/components/Gameboard/Gameboard.module.css index 25d9f47..7c01428 100644 --- a/src/components/Gameboard/Gameboard.module.css +++ b/src/components/Gameboard/Gameboard.module.css @@ -1,20 +1,82 @@ .winnerContainer { display: flex; flex-direction: column; - padding: 40px; - width: 300px; - height: 250px; + padding: 30px 20px; + width: 90vw; + max-width: 320px; background: radial-gradient(circle, rgba(0, 138, 255, 1) 5%, rgba(9, 9, 121, 1) 81%); color: white; border: 1px solid white; border-radius: 8px; - margin: 20px; + margin: 20px auto; z-index: 2; justify-content: center; text-align: center; cursor: default; + gap: 15px; } + +.winnerContainer > img { + max-width: 80px; + height: auto; + margin: 0 auto; +} + +.winnerContainer > h1 { + font-size: 24px; + margin: 10px 0; + word-break: break-word; +} + .winnerContainer > button { align-self: center; - width: 200px; + width: 100%; + max-width: 180px; + padding: 10px 20px; + font-size: 16px; + background-color: #007bff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.winnerContainer > button:hover { + background-color: #0056b3; +} + +.winnerContainer > button:active { + transform: scale(0.98); +} + +/* Tablet */ +@media (max-width: 1024px) { + .winnerContainer { + padding: 25px 15px; + max-width: 280px; + } + + .winnerContainer > h1 { + font-size: 20px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .winnerContainer { + width: 85vw; + padding: 20px 15px; + max-width: 100%; + } + + .winnerContainer > h1 { + font-size: 18px; + } + + .winnerContainer > button { + max-width: 150px; + font-size: 14px; + padding: 8px 16px; + } } diff --git a/src/components/Gameboard/Map/Map.jsx b/src/components/Gameboard/Map/Map.jsx index fdfd211..f455d8e 100644 --- a/src/components/Gameboard/Map/Map.jsx +++ b/src/components/Gameboard/Map/Map.jsx @@ -6,6 +6,7 @@ import positionMapCoords from '../positions'; import pawnImages from '../../../constants/pawnImages'; import canPawnMove from './canPawnMove'; import getPositionAfterMove from './getPositionAfterMove'; +import styles from './Map.module.css'; const Map = ({ pawns, nowMoving, rolledNumber }) => { const player = useContext(PlayerDataContext); @@ -86,14 +87,16 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => { }, [hintPawn, pawns]); return ( - +
+ +
); }; export default Map; diff --git a/src/components/Gameboard/Map/Map.module.css b/src/components/Gameboard/Map/Map.module.css new file mode 100644 index 0000000..d5d7974 --- /dev/null +++ b/src/components/Gameboard/Map/Map.module.css @@ -0,0 +1,4 @@ +.canvasContainer { + display: flex; + justify-content: center; + align-items: center;\n width: 100%;\n height: 100%;\n padding: 10px;\n box-sizing: border-box;\n}\n\ncanvas.canvas {\n border-radius: 15px;\n border: 2px solid black;\n width: 460px;\n height: 460px;\n max-width: 100%;\n height: auto;\n aspect-ratio: 1 / 1;\n touch-action: none;\n}\n\n/* Tablet (768px - 1024px) */\n@media (max-width: 1024px) {\n .canvasContainer {\n padding: 8px;\n }\n\n canvas.canvas {\n width: 400px;\n max-width: 90vw;\n }\n}\n\n/* Mobile (less than 768px) */\n@media (max-width: 767px) {\n .canvasContainer {\n padding: 5px;\n }\n\n canvas.canvas {\n width: 90vw;\n max-width: 460px;\n }\n}\n\n/* Small Mobile (less than 480px) */\n@media (max-width: 479px) {\n canvas.canvas {\n width: 95vw;\n max-width: 100%;\n }\n}\n \ No newline at end of file diff --git a/src/components/LoginPage/AddServer/AddServer.module.css b/src/components/LoginPage/AddServer/AddServer.module.css index 7c91a94..98a98ca 100644 --- a/src/components/LoginPage/AddServer/AddServer.module.css +++ b/src/components/LoginPage/AddServer/AddServer.module.css @@ -4,12 +4,91 @@ align-items: center; justify-content: center; width: 100%; + gap: 10px; +} + +.formContainer > input, +.formContainer > button { + width: 90%; + max-width: 350px; + padding: 8px 12px; + font-size: 14px; + border: 1px solid white; + border-radius: 4px; + color: white; + background-color: rgba(0, 0, 0, 0.3); + transition: all 0.3s ease; +} + +.formContainer > input::placeholder { + color: rgba(255, 255, 255, 0.7); +} + +.formContainer > input:focus, +.formContainer > button:focus { + outline: none; + border-color: #007bff; + box-shadow: 0 0 5px rgba(0, 123, 255, 0.5); +} + +.formContainer > button { + background-color: #007bff; + cursor: pointer; + font-weight: 600; + margin-top: 5px; +} + +.formContainer > button:hover { + background-color: #0056b3; +} + +.formContainer > button:active { + transform: scale(0.98); } .privateContainer { - margin-left: 10px; + width: 90%; + max-width: 350px; display: flex; flex-direction: row; align-items: center; - width: 100%; + justify-content: space-between; + padding: 5px 10px; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 4px; + border: 1px solid rgba(255, 255, 255, 0.3); +} + +.privateContainer > label { + color: white; + font-weight: 500; + font-size: 14px; +} + +/* Tablet */ +@media (max-width: 1024px) { + .formContainer > input, + .formContainer > button, + .privateContainer { + max-width: 300px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .formContainer { + gap: 8px; + } + + .formContainer > input, + .formContainer > button, + .privateContainer { + max-width: 100%; + font-size: 13px; + } + + .formContainer > input, + .formContainer > button { + padding: 6px 10px; + } } diff --git a/src/components/LoginPage/JoinServer/JoinServer.module.css b/src/components/LoginPage/JoinServer/JoinServer.module.css index c2361bb..55e90a2 100644 --- a/src/components/LoginPage/JoinServer/JoinServer.module.css +++ b/src/components/LoginPage/JoinServer/JoinServer.module.css @@ -1,20 +1,50 @@ .serversTableContainer { display: flex; - overflow: scroll; - height: 500px; + overflow: auto; + max-height: 500px; width: 100%; + -webkit-overflow-scrolling: touch; } + .refresh { display: flex; margin-left: auto; justify-content: center; align-items: center; + min-width: 40px; width: 40px; height: 100%; border: 1px solid white; + padding: 0 5px; + cursor: pointer; } + .refresh > img { width: 20px; height: 20px; cursor: pointer; + transition: transform 0.2s ease; +} + +.refresh > img:hover { + transform: rotate(180deg); +} + +.refresh > img:active { + transform: rotate(180deg) scale(0.9); +} + +/* Tablet */ +@media (max-width: 1024px) { + .serversTableContainer { + max-height: 400px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .serversTableContainer { + max-height: 300px; + width: 100%; + } } diff --git a/src/components/LoginPage/JoinServer/ServersTable/ServersTable.jsx b/src/components/LoginPage/JoinServer/ServersTable/ServersTable.jsx index 8a62ff7..7b65ae7 100644 --- a/src/components/LoginPage/JoinServer/ServersTable/ServersTable.jsx +++ b/src/components/LoginPage/JoinServer/ServersTable/ServersTable.jsx @@ -3,32 +3,34 @@ import styles from './ServersTable.module.css'; const ServerListTable = ({ rooms, handleJoinClick }) => { return ( - - - - - - - - - - - - {rooms.map((room, index) => { - return room.started ? null : ( - - - - - - - - ); - })} - -
Server#/#Status
{room.private ? private : null}{room.name}{`${room.players.length}/4`}{room.isStarted ? 'started' : 'waiting'} - -
+
+ + + + + + + + + + + + {rooms.map((room, index) => { + return room.started ? null : ( + + + + + + + + ); + })} + +
ServerPlayersStatus
{room.private ? private : null}{room.name}{`${room.players.length}/4`}{room.isStarted ? 'started' : 'waiting'} + +
+
); }; diff --git a/src/components/LoginPage/JoinServer/ServersTable/ServersTable.module.css b/src/components/LoginPage/JoinServer/ServersTable/ServersTable.module.css index a176bf8..0dfd90d 100644 --- a/src/components/LoginPage/JoinServer/ServersTable/ServersTable.module.css +++ b/src/components/LoginPage/JoinServer/ServersTable/ServersTable.module.css @@ -1,3 +1,48 @@ +.tableContainer { + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + border-radius: 4px; +} + +.rooms { + border-collapse: collapse; + width: 100%; + height: fit-content; + background-color: #fff; +} + +.rooms > thead > tr { + background-color: #f5f5f5; +} + +.rooms > th { + padding: 10px 8px; + text-align: center; + height: auto; + font-weight: 600; + font-size: 13px; + border-bottom: 2px solid #ddd; + color: #333; +} + +.rooms > thead > tr :nth-child(2) { + text-align: left; +} + +.rooms > tbody > tr > td { + padding: 10px 8px; + text-align: center; + height: auto; + border-bottom: 1px solid #e9e9e9; + font-size: 13px; + color: #333; +} + +.rooms > tbody > tr:hover { + background-color: #fafafa; +} + .roomName { max-width: 150px; overflow: hidden; @@ -5,39 +50,162 @@ white-space: nowrap; text-align: left !important; } -.rooms > thead > tr :nth-child(2) { - text-align: left; -} + .rooms > tbody > tr > td > img { margin-right: 5px; - width: 20px; - height: 20px; -} - -.rooms > th { - padding: 8px; - text-align: center; - height: 50px; -} -.rooms > tbody > tr > td { - padding: 4px; - text-align: center; - height: 50px; -} -.rooms > tbody > tr > td { - max-height: 50px; - height: 10px; -} - -.rooms { - border-collapse: collapse; - width: 100%; - height: fit-content; + width: 18px; + height: 18px; } .lastColumn { width: 70px; } + .firstColumn { width: 40px; } + +.rooms button { + padding: 6px 12px; + background-color: #007bff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 12px; + font-weight: 600; + transition: background-color 0.3s ease; +} + +.rooms button:hover { + background-color: #0056b3; +} + +.rooms button:active { + transform: scale(0.98); +} + +/* Tablet (768px - 1024px) */ +@media (max-width: 1024px) { + .rooms > th, + .rooms > tbody > tr > td { + padding: 8px 6px; + font-size: 12px; + } + + .lastColumn { + width: 60px; + } + + .roomName { + max-width: 120px; + } + + .rooms button { + padding: 5px 10px; + font-size: 11px; + } +} + +/* Mobile (less than 768px) */ +@media (max-width: 767px) { + .tableContainer { + margin: 0 -5px; + border-radius: 0; + } + + .rooms { + display: block; + width: 100%; + } + + .rooms > thead { + display: none; + } + + .rooms > tbody { + display: block; + width: 100%; + } + + .rooms > tbody > tr { + display: block; + border: 1px solid #ddd; + border-radius: 6px; + margin-bottom: 10px; + padding: 12px; + background-color: #fff; + } + + .rooms > tbody > tr:hover { + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + } + + .rooms > tbody > tr > td { + display: grid; + grid-template-columns: 90px 1fr; + align-items: center; + padding: 8px 0; + text-align: right; + border-bottom: 1px solid #f0f0f0; + gap: 10px; + } + + .rooms > tbody > tr > td:last-child { + border-bottom: none; + padding-top: 12px; + padding-bottom: 0; + } + + .rooms > tbody > tr > td:first-child { + display: flex; + align-items: center; + justify-content: flex-start; + padding-bottom: 8px; + grid-template-columns: none; + } + + .rooms > tbody > tr > td:before { + content: attr(data-label); + font-weight: 600; + color: #666; + min-width: 85px; + text-align: left; + font-size: 12px; + } + + .roomName { + max-width: 100%; + text-align: right !important; + white-space: normal; + word-break: break-word; + } + + .roomName:before { + display: none; + } + + .rooms > tbody > tr > td:first-child:before { + display: none; + } + + .lastColumn { + width: 100%; + grid-column: 1 / -1; + } + + .lastColumn button { + width: 100%; + padding: 10px 12px; + font-size: 13px; + } + + .firstColumn { + width: auto; + } + + .rooms > tbody > tr > td > img { + margin-right: 0; + } +} diff --git a/src/components/LoginPage/LoginPage.module.css b/src/components/LoginPage/LoginPage.module.css index b15dd68..5d45977 100644 --- a/src/components/LoginPage/LoginPage.module.css +++ b/src/components/LoginPage/LoginPage.module.css @@ -3,6 +3,27 @@ flex-direction: row; justify-content: center; align-items: flex-start; - height: 50%; + height: 100%; width: 100%; + gap: 20px; + padding: 20px 10px; + overflow: auto; +} + +/* Tablet */ +@media (max-width: 1024px) { + .container { + gap: 15px; + padding: 15px 10px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .container { + flex-direction: column; + gap: 10px; + padding: 10px 5px; + align-items: center; + } } diff --git a/src/components/LoginPage/NameInput/NameInput.module.css b/src/components/LoginPage/NameInput/NameInput.module.css index a55980e..c7c98dc 100644 --- a/src/components/LoginPage/NameInput/NameInput.module.css +++ b/src/components/LoginPage/NameInput/NameInput.module.css @@ -1,20 +1,90 @@ .container { display: flex; flex-direction: column; - padding: 10px 20px 60px 20px; - width: 300px; + padding: 20px 15px; + width: 90vw; + max-width: 340px; background: radial-gradient(circle, rgba(0, 138, 255, 1) 5%, rgba(9, 9, 121, 1) 81%); border: 1px solid white; border-radius: 8px; - margin: 20px; + margin: 20px auto; z-index: 2; + gap: 10px; } + +.container > input { + padding: 10px 12px; + margin-top: 5px; + font-size: 14px; + border: 1px solid white; + border-radius: 4px; + background-color: rgba(0, 0, 0, 0.3); + color: white; + transition: all 0.3s ease; +} + +.container > input::placeholder { + color: rgba(255, 255, 255, 0.7); +} + +.container > input:focus { + outline: none; + border-color: #007bff; + box-shadow: 0 0 5px rgba(0, 123, 255, 0.5); +} + .container > button { margin-top: 5px; + padding: 10px 16px; text-align: center; width: 100px; align-self: center; + font-size: 14px; + font-weight: 600; + background-color: #007bff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s ease; } -.container > input { - margin-top: 10px; + +.container > button:hover { + background-color: #0056b3; +} + +.container > button:active { + transform: scale(0.98); +} + +/* Tablet */ +@media (max-width: 1024px) { + .container { + max-width: 300px; + padding: 18px 12px; + } + + .container > input { + font-size: 13px; + } + + .container > button { + font-size: 13px; + padding: 8px 14px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .container { + width: 85vw; + max-width: 100%; + padding: 15px 12px; + } + + .container > button { + width: 90px; + padding: 8px 12px; + font-size: 12px; + } } diff --git a/src/components/LoginPage/WindowLayout/WindowLayout.module.css b/src/components/LoginPage/WindowLayout/WindowLayout.module.css index ca9f74e..f43ad33 100644 --- a/src/components/LoginPage/WindowLayout/WindowLayout.module.css +++ b/src/components/LoginPage/WindowLayout/WindowLayout.module.css @@ -1,11 +1,12 @@ .container { - margin: 50px; display: flex; flex-direction: column; align-items: center; justify-content: center; - width: 500px; + width: 90vw; + max-width: 500px; color: white; + margin: 10px auto; } .title { @@ -14,19 +15,22 @@ justify-content: center; align-items: center; width: 100%; - height: 40px; + min-height: 40px; border: 1px solid white; border-radius: 2px; transform: scaleX(1.02); box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); - padding-left: 10px; + padding: 0 10px; text-align: center; + gap: 10px; } .title > h1 { width: 100%; margin: 0; padding: 0; + font-size: 20px; + word-break: break-word; } .content { @@ -35,12 +39,47 @@ justify-content: center; align-items: center; width: 100%; - padding-left: 5px; - padding-right: 5px; - padding-top: 10px; + padding: 10px; background-color: rgba(0, 0, 0, 0.5); box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black; + border-radius: 0 0 2px 2px; + gap: 8px; +} + +/* Tablet */ +@media (max-width: 1024px) { + .container { + max-width: 450px; + margin: 8px auto; + } + + .title > h1 { + font-size: 18px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .container { + width: 95vw; + max-width: 100%; + margin: 5px auto; + } + + .title { + min-height: 35px; + padding: 0 8px; + } + + .title > h1 { + font-size: 16px; + } + + .content { + padding: 8px; + gap: 6px; + } } diff --git a/src/components/Navbar/Dice/Dice.module.css b/src/components/Navbar/Dice/Dice.module.css index ce20014..7a027bf 100644 --- a/src/components/Navbar/Dice/Dice.module.css +++ b/src/components/Navbar/Dice/Dice.module.css @@ -1,11 +1,47 @@ .container { - margin-left: 20px; - margin-right: 20px; + display: flex; + align-items: center; + justify-content: center; + margin: 5px 10px; width: 50px; + min-width: 50px; height: 50px; + min-height: 50px; } + .container > img { width: 100%; height: 100%; cursor: pointer; + transition: transform 0.1s ease; +} + +.container > img:hover { + transform: scale(1.05); +} + +.container > img:active { + transform: scale(0.95); +} + +/* Tablet */ +@media (max-width: 1024px) { + .container { + margin: 4px 8px; + width: 45px; + min-width: 45px; + height: 45px; + min-height: 45px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .container { + margin: 3px 6px; + width: 40px; + min-width: 40px; + height: 40px; + min-height: 40px; + } } diff --git a/src/components/Navbar/NameContainer/AnimatedOverlay/AnimatedOverlay.module.css b/src/components/Navbar/NameContainer/AnimatedOverlay/AnimatedOverlay.module.css index 23f87f4..d12d70c 100644 --- a/src/components/Navbar/NameContainer/AnimatedOverlay/AnimatedOverlay.module.css +++ b/src/components/Navbar/NameContainer/AnimatedOverlay/AnimatedOverlay.module.css @@ -7,4 +7,17 @@ opacity: 0.9; animation: timerAnimation 15s linear infinite; transition-duration: 15s; + border-radius: 5px; +} + +@keyframes timerAnimation { + 0% { + box-shadow: 0 0 10px rgba(255, 215, 0, 0.8); + } + 50% { + box-shadow: 0 0 20px rgba(255, 215, 0, 1); + } + 100% { + box-shadow: 0 0 10px rgba(255, 215, 0, 0.8); + } } diff --git a/src/components/Navbar/NameContainer/NameContainer.module.css b/src/components/Navbar/NameContainer/NameContainer.module.css index b5ef2f2..afe132e 100644 --- a/src/components/Navbar/NameContainer/NameContainer.module.css +++ b/src/components/Navbar/NameContainer/NameContainer.module.css @@ -1,13 +1,46 @@ .container { position: relative; - min-width: 100px; - min-height: 50px; display: flex; justify-content: center; align-items: center; + min-width: 80px; + min-height: 50px; + padding: 5px 10px; border: 2px solid white; border-radius: 5px; color: white; font-weight: bold; text-align: center; + font-size: 14px; + transition: all 0.2s ease; + word-break: break-word; + overflow: hidden; +} + +.container > p { + margin: 0; + white-space: normal; + max-width: 100%; +} + +/* Tablet */ +@media (max-width: 1024px) { + .container { + min-width: 70px; + min-height: 45px; + font-size: 13px; + padding: 4px 8px; + border-width: 1.5px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .container { + min-width: 60px; + min-height: 40px; + font-size: 12px; + padding: 3px 6px; + border-width: 1px; + } } diff --git a/src/components/Navbar/Navbar.module.css b/src/components/Navbar/Navbar.module.css index e574f19..250fbfd 100644 --- a/src/components/Navbar/Navbar.module.css +++ b/src/components/Navbar/Navbar.module.css @@ -1,28 +1,47 @@ .playerContainer { display: flex; align-items: center; + justify-content: center; flex-direction: row; + flex-wrap: wrap; width: 100%; + padding: 10px; + gap: 10px; + min-height: 70px; } + .red { - margin-bottom: 50px; - grid-column: 1; - grid-row: 1; + order: 1; } + .yellow { - margin-bottom: 50px; - flex-flow: row-reverse; - grid-column: 2; - grid-row: 1; + order: 2; + flex-direction: row-reverse; } + .blue { - margin-top: 50px; - grid-column: 1; - grid-row: 4; + order: 3; } + .green { - margin-top: 50px; - flex-flow: row-reverse; - grid-column: 2; - grid-row: 4; + order: 4; + flex-direction: row-reverse; +} + +/* Tablet (768px - 1024px) */ +@media (max-width: 1024px) { + .playerContainer { + padding: 8px; + gap: 8px; + min-height: 60px; + } +} + +/* Mobile (less than 768px) */ +@media (max-width: 767px) { + .playerContainer { + padding: 6px; + gap: 6px; + min-height: 50px; + } } diff --git a/src/components/Navbar/ReadyButton/ReadyButton.module.css b/src/components/Navbar/ReadyButton/ReadyButton.module.css index 8656421..e9121c8 100644 --- a/src/components/Navbar/ReadyButton/ReadyButton.module.css +++ b/src/components/Navbar/ReadyButton/ReadyButton.module.css @@ -2,16 +2,54 @@ display: flex; justify-content: center; align-items: center; - margin: 10px; + margin: 8px 5px; flex-direction: column; flex-flow: row-reverse; - background-color: grey; - border-radius: 10px; + background-color: #666; + border-radius: 8px; border: 2px solid white; + padding: 6px 10px; + gap: 6px; + transition: all 0.3s ease; } + +.container:hover { + background-color: #777; +} + .container > label { - margin-left: 10px; - margin-right: 10px; - width: 100px; color: white; + font-weight: 600; + font-size: 13px; + text-align: center; + min-width: 80px; +} + +/* Tablet */ +@media (max-width: 1024px) { + .container { + margin: 6px 4px; + padding: 5px 8px; + gap: 4px; + } + + .container > label { + font-size: 12px; + min-width: 70px; + } +} + +/* Mobile */ +@media (max-width: 767px) { + .container { + margin: 4px 3px; + padding: 4px 6px; + gap: 3px; + border-width: 1px; + } + + .container > label { + font-size: 11px; + min-width: 60px; + } } diff --git a/src/components/Overlay/Overlay.module.css b/src/components/Overlay/Overlay.module.css index 115d2ae..78ea6f1 100644 --- a/src/components/Overlay/Overlay.module.css +++ b/src/components/Overlay/Overlay.module.css @@ -1,5 +1,5 @@ .container { - position: absolute; + position: fixed; display: flex; align-items: center; justify-content: center; @@ -8,6 +8,14 @@ width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); - z-index: 1; + z-index: 100; cursor: pointer; + padding: 20px; + overflow: auto; +} + +@media (max-width: 767px) { + .container { + padding: 10px; + } } diff --git a/src/index.css b/src/index.css index a7f45a9..df790e1 100644 --- a/src/index.css +++ b/src/index.css @@ -1,3 +1,9 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + body { background: radial-gradient( circle, @@ -7,36 +13,53 @@ body { rgba(9, 9, 121, 1) 81% ); overflow: hidden; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + #root { display: flex; justify-content: center; flex-direction: column; height: 100vh; width: 100vw; + overflow: hidden; } canvas { border-radius: 15px; border: 2px solid black; + max-width: 100%; + height: auto; } + .navbar-container { display: flex; flex-direction: row; + flex-wrap: wrap; + gap: 10px; + justify-content: space-around; + width: 100%; } .timer { background-color: darkblue; color: white; position: relative; - bottom: 60px; - left: 82px; border: 1px solid white; - padding: 1px; - width: 30px; - height: 20px; + padding: 4px 8px; + min-width: 40px; + min-height: 24px; border-radius: 5px; + font-size: 12px; + display: flex; + align-items: center; + justify-content: center; } + .overlay { width: 100%; height: 100%; @@ -47,7 +70,16 @@ canvas { animation: timerAnimation 15s linear infinite; transition-duration: 15s; } -#root { + +.container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: 100%; + overflow: auto; +} display: flex; flex-direction: column; align-items: center;