@import url('https://fonts.googleapis.com/css2?family=Fredoka+One&family=Open+Sans:wght@400;700&display=swap'); :root { --cartoon-blue: #64B5F6; /* Light Blue */ --cartoon-green: #81C784; /* Light Green */ --cartoon-yellow: #FFD54F; /* Light Yellow */ --cartoon-pink: #F48FB1; /* Light Pink */ --cartoon-purple: #BA68C8; /* Light Purple */ --dark-gray: #333; --medium-gray: #555; --light-gray: #eee; --white: #fff; --text-dark: #333; --text-light: #f5f5f5; --bg-gradient-start: #BBDEFB; /* Lighter Blue */ --bg-gradient-end: #E0F2F7; /* Even Lighter Blue */ --modal-bg: #FFE0B2; /* Light Orange/Cream */ --button-primary: #FFB74D; /* Orange */ --button-secondary: #AED581; /* Green */ --shadow-color: rgba(0, 0, 0, 0.2); --border-color: #795548; /* Brownish */ } * { box-sizing: border-box; } body, html { margin: 0; padding: 0; height: 100%; width: 100%; font-family: 'Open Sans', sans-serif; color: var(--text-dark); overflow: hidden; /* Prevent scrolling on main body */ position: relative; min-height: 100vh; } body::before { content: ''; position: fixed; top: 0px; left: 0px; right: 5px; bottom: 0px; border: 0px solid var(--border-color); border-radius: 15px; box-shadow: 0 4px 10px var(--shadow-color); z-index: 0; } .game-wrapper { position: relative; z-index: 1; width: 100%; display: flex; flex-direction: column; align-items: center; padding: 0px; overflow-y: auto; } .header-content { width: 100%; display: flex; flex-direction: column; align-items: center; padding-top: 2px; position: relative; z-index: 100; } h1 { font-family: 'Fredoka One', cursive; text-align: center; font-size: 50px; color: var(--cartoon-purple); text-shadow: 2px 2px 0px var(--cartoon-pink), 4px 4px 0px rgba(0,0,0,0.1); margin: 0 0 0px 0; line-height: 1; padding-bottom: 5px; letter-spacing: 2px; } marquee { width: 100%; padding: 0px 0; background-color: rgba(255, 255, 255, 0.5); color: red; font-size: 1em; text-align: center; border-top: 2px dashed var(--cartoon-yellow); border-bottom: 2px dashed var(--cartoon-yellow); box-shadow: 0 2px 5px var(--shadow-color); margin-bottom: 0px; border-radius: 8px; } .hamburger-menu { position: fixed; top: 20px; right: 20px; z-index: 10000; background: #222; border: 2px solid gold; border-radius: 50%; cursor: pointer; padding: 10px; display: flex; flex-direction: column; gap: 6px; box-shadow: 0 4px 8px var(--shadow-color); transition: all 0.3s ease; color: #ffff00; /* Kuning terang */ text-shadow: 0 0 10px #ffff00, 0 0 20px red, 0 0 30px red, 0 0 40px red, 0 0 50px red, 0 0 60px red; animation: neon-glow-yellow 1.5s ease-in-out infinite alternate; } @keyframes neon-glow-yellow { from { text-shadow: 0 0 5px #ffff00, 0 0 10px #ffff00, 0 0 15px #ffff00; color: #ffff00; } to { text-shadow: 0 0 15px #ffff00, 0 0 25px #ffff00, 0 0 35px #ffff00, 0 0 45px #ffff00, 0 0 55px #ffff00, 0 0 65px #ffff00; color: red; } } .hamburger-menu .bar { width: 30px; height: 4px; background-color: var(--white); border-radius: 2px; transition: all 0.3s ease; } .hamburger-menu.open { background: var(--cartoon-pink); box-shadow: 0 6px 12px rgba(0,0,0,0.3); } .hamburger-menu.open .bar:nth-child(1) { transform: translateY(10px) rotate(45deg); } .hamburger-menu.open .bar:nth-child(2) { opacity: 0; } .hamburger-menu.open .bar:nth-child(3) { transform: translateY(-10px) rotate(-45deg); } .sidebar-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(5px); z-index: 9999; display: flex; justify-content: center; align-items: center; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } .sidebar-overlay.active { opacity: 1; visibility: visible; } .sidebar-content { background: var(--modal-bg); border: 3px solid var(--border-color); box-shadow: 0 8px 20px var(--shadow-color); border-radius: 20px; padding: 40px 30px; width: 90%; max-width: 500px; transform: scale(0.9); opacity: 0; transition: transform 0.3s ease, opacity 0.3s ease; position: relative; max-height: 90vh; overflow-y: auto; } .sidebar-overlay.active .sidebar-content { transform: scale(1); opacity: 1; } .sidebar-content h2 { font-family: 'Fredoka One', cursive; color: var(--cartoon-purple); text-align: center; margin-bottom: 30px; text-shadow: 1px 1px 0px var(--cartoon-pink); font-size: 2.2em; } .sidebar-nav-btn { display: block; width: 100%; background: var(--button-primary); border: 2px solid var(--border-color); padding: 15px 20px; margin-bottom: 15px; border-radius: 30px; color: var(--white); font-weight: 700; font-size: 1.1em; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 4px 8px var(--shadow-color); text-transform: uppercase; letter-spacing: 1px; text-align: center; text-decoration: none; } .sidebar-nav-btn:hover { background: var(--button-secondary); transform: translateY(-3px) scale(1.01); box-shadow: 0 6px 12px rgba(0,0,0,0.3); } .sidebar-nav-btn i { margin-right: 10px; color: var(--white); } .modal-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); z-index: 1000; justify-content: center; align-items: center; animation: modalFadeIn 0.3s ease-out; backdrop-filter: blur(5px); overflow-y: auto; padding: 20px 0; } .modal-overlay.active { display: flex; } .modal-content { background: var(--modal-bg); padding: 30px; border-radius: 20px; text-align: center; box-shadow: 0 8px 20px var(--shadow-color); color: var(--text-dark); transform: scale(0.9); animation: modalPopUp 0.4s ease-out forwards; border: 3px solid var(--border-color); width: 90%; max-width: 450px; position: relative; margin: auto; } @keyframes modalFadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes modalPopUp { from { transform: scale(0.7); opacity: 0; } to { transform: scale(1); opacity: 1; } } .modal-content h2 { font-family: 'Fredoka One', cursive; color: var(--cartoon-purple); text-shadow: 1px 1px 0px var(--cartoon-pink); margin-bottom: 25px; font-size: 2em; } .modal-content p { font-size: 1.1em; margin-bottom: 20px; color: var(--text-dark); } .modal-content form { display: flex; flex-direction: column; gap: 15px; margin-top: 20px; } .modal-content label { text-align: left; margin-bottom: -10px; font-weight: 700; color: var(--medium-gray); letter-spacing: 0.5px; font-size: 1em; } .modal-content input, .modal-content select { padding: 12px 18px; border-radius: 25px; border: 2px solid var(--cartoon-blue); outline: none; font-size: 1em; background: var(--white); color: var(--text-dark); transition: border-color 0.3s, background 0.3s, box-shadow 0.3s; width: 100%; box-shadow: inset 0 2px 5px rgba(0,0,0,0.1); } .modal-content input:focus, .modal-content select:focus { border-color: var(--cartoon-green); box-shadow: inset 0 2px 5px rgba(0,0,0,0.1), 0 0 8px rgba(129, 199, 132, 0.5); } .modal-content input::placeholder { color: #aaa; opacity: 0.8; } .modal-content button { background: var(--button-primary); border: 2px solid var(--border-color); padding: 15px; border-radius: 30px; color: var(--white); font-weight: 700; font-size: 1.1em; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 4px 8px var(--shadow-color); letter-spacing: 1px; text-transform: uppercase; width: 100%; margin-top: 15px; } .modal-content button:hover { background: var(--button-secondary); transform: translateY(-3px) scale(1.01); box-shadow: 0 6px 12px rgba(0,0,0,0.3); } .modal-content .secondary { background: var(--cartoon-blue); border: 2px solid var(--border-color); box-shadow: 0 3px 6px rgba(0,0,0,0.15); } .modal-content .secondary:hover { background: var(--cartoon-pink); box-shadow: 0 4px 8px rgba(0,0,0,0.2); } .modal-content .modal-buttons { display: flex; justify-content: center; gap: 15px; margin-top: 20px; } .modal-content .modal-buttons button { flex: 1; margin-top: 0; } .modal-content .link-text { color: var(--cartoon-blue); text-decoration: underline; cursor: pointer; font-weight: 600; } #history-content table { width: 100%; border-collapse: collapse; margin-top: 15px; background: var(--white); border: 1px solid var(--border-color); box-shadow: 0 2px 5px var(--shadow-color); border-radius: 8px; overflow: hidden; /* For rounded corners */ } #history-content th, #history-content td { border: 1px solid #ddd; padding: 10px; text-align: left; font-size: 0.9em; color: var(--text-dark); } #history-content th { background: var(--cartoon-blue); color: var(--white); font-family: 'Fredoka One', cursive; font-size: 1em; } .status-pending { color: #FFA500; font-weight: bold; } /* Orange */ .status-approved { color: var(--cartoon-green); font-weight: bold; } /* Green */ .status-rejected { color: #FF4D4D; font-weight: bold; } /* Red */ .empty { text-align: center; font-style: italic; color: #888; } /* Game Specific Styles */ .game-container { display: flex; flex-direction: column; align-items: center; margin-top: 3px; background-color: rgba(255, 255, 255, 0.0); border: 0px solid ; box-shadow: 0 8px 20px var(--shadow-color); border-radius: 10px; padding: 0px; width: 100%; position: relative; flex-grow: 1; overflow: hidden; /* Ensure rounded corners */ } .player-banner { width: 100%; background-color: rgba(255, 255, 255, 0.7); border: 2px solid var(--border-color); box-shadow: inset 0 2px 5px rgba(0,0,0,0.1), 0 4px 8px var(--shadow-color); border-radius: 15px; padding: 10px 10px; margin-bottom: 15px; display: grid; grid-template-columns: 1fr 1fr; /* Two columns */ gap: 0px 1px; /* Adjust gap */ font-size: 0.9em; color: var(--text-dark); } .player-banner p { margin: 0; display: flex; align-items: center; } .player-banner p strong { font-weight: 700; color: var(--medium-gray); margin-right: 5px; } .player-banner span { font-weight: bold; color: var(--dark-gray); border-radius: 5px; } .player-name, #balance { color: var(--dark-gray); text-shadow: 0px 0px 0px var(--cartoon-pink); font-size: 1.1em; background-color: ; width: 100px; } .player-status { color: var(--cartoon-pink); font-weight: bold; } .player-status.login { color: var(--cartoon-green); } .player-status.error { color: #FF4D4D; } .info-item { color: var(--cartoon-blue); } .player-banner p { margin: 0; display: flex; align-items: center; line-height: 1.3; padding: 5px 8px; border-radius: 8px; margin-bottom: 5px; box-shadow: inset 0 1px 3px rgba(0,0,0,0.1); text-align: left; font-size: 0.9em; min-width: 0; } .player-banner p:nth-child(1) { background-color: var(--cartoon-blue); color: var(--white); } .player-banner p:nth-child(2) { background-color: var(--cartoon-green); color: var(--white); } .player-banner p:nth-child(3) { /* Saldo */ background-color: var(--cartoon-pink); /* Contoh warna */ color: var(--white); } .player-banner p:nth-child(4) { /* Kemenangan Sesi */ background-color: var(--cartoon-yellow); /* Contoh warna */ color: var(--dark-gray); /* Sesuaikan warna teks */ } .player-banner p:nth-child(5) { /* Total Kekalahan */ background-color: var(--cartoon-purple); /* Contoh warna */ color: var(--white); } /* Sesuaikan juga warna teks di dalam item */ .player-banner p strong { color: inherit; /* Warisi warna dari parent p */ margin-right: 5px; } .player-banner p span { color: inherit; /* Warisi warna dari parent p */ font-weight: bold; } /* Override warna spesifik jika ada */ .player-status.login { color: var(--white); } /* Pastikan tetap putih di background hijau */ .player-status.error { color: var(--white); } /* Pastikan tetap putih di background merah jika ada */ .player-name, #balance { color: var(--white); /* Sesuaikan agar tetap terlihat di background warna */ text-shadow: none; /* Hapus text-shadow jika mengganggu */ } #gameCanvas { background: #E8F5; /* Very light green */ border: 2px solid black; box-shadow: inset 0 2px 5px rgba(0,0,0,0.1), 0 4px 8px var(--shadow-color); margin-bottom: 0px; display: block; border-radius: 5px; } .controls { display: grid; grid-template-areas: "left rotate right" ". drop ."; gap: 15px; /* Kurangi gap antara tombol */ width: 90%; /* Sesuaikan lebar relatif */ max-width: 300px; /* Batasi lebar maksimum */ margin: 10px auto; /* Pusatkan dan kurangi margin */ margin-bottom: 5px; } .control-btn { background: var(--button-primary); color: var(--black); border: 2px solid black; border-radius: 8px; /* Sudut membulat */ padding: 15px 40px; /* Sesuaikan padding */ font-size: 1.2em; /* Sedikit perkecil ukuran font */ font-weight: bold; cursor: pointer; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2); transition: background-color 0.2s ease, transform 0.1s ease, box-shadow 0.2s ease; display: flex; /* Gunakan flex untuk pusatkan ikon/teks di dalam tombol */ justify-content: center; align-items: center; min-height: 40px; /* Pastikan tinggi minimum */ margin-bottom: 5px; } .control-btn:hover { background: var(--button-secondary); transform: translateY(-3px); box-shadow: 0 6px 12px rgba(0,0,0,0.3); } #moveLeftBtn { grid-area: left; } #rotateBtn { grid-area: rotate; } #moveRightBtn { grid-area: right; } #softDropBtn { grid-area: drop; width: 100%; border-radius: 30px; } .message-area { text-align: center; margin-top: 10px; padding: 10px; border-radius: 8px; font-weight: bold; font-size: 0.8em; min-height: 40px; color: var(--text-dark); background: var(--light-gray); border: 1px solid var(--border-color); box-shadow: inset 0 1px 3px rgba(0,0,0,0.1); } .message-area.info { background: #E3F2FD; color: #2196F3; } /* Light Blue */ .message-area.success { background: #E8F5E9; color: #4CAF50; } /* Light Green */ .message-area.error { background: #FFEBEE; color: #F44336; } /* Light Red */ .balance-animation.animate-gain { animation: gain-anim 0.5s ease-out; } .balance-animation.animate-loss { animation: loss-anim 0.5s ease-out; } @keyframes gain-anim { 0% { color: var(--dark-gray); transform: scale(1); } 50% { color: var(--cartoon-green); transform: scale(1.1); } 100% { color: var(--cartoon-purple); transform: scale(1); } } @keyframes loss-anim { 0% { color: var(--dark-gray); transform: scale(1); } 50% { color: #FF4D4D; transform: scale(0.9); } 100% { color: var(--cartoon-purple); transform: scale(1); } } /* WhatsApp Button */ .whatsapp-button { position: fixed; bottom: 20px; left: 20px; z-index: 1000; background-color: #25D366; border-radius: 50%; padding: 10px; display: flex; justify-content: center; align-items: center; box-shadow: 0 4px 10px rgba(0, 128, 0, 0.4); transition: transform 0.2s ease; border: 2px solid var(--border-color); } .whatsapp-button:hover { transform: scale(1.1); } .whatsapp-button img { width: 40px; height: 40px; } /* Responsive Adjustments */ @media (max-width: 768px) { h1 { font-size: 40px; letter-spacing: 1px; } .game-container { padding: 10px; } .player-banner { gap: 1px; } .hamburger-menu { top: 15px; right: 15px; padding: 8px; } .hamburger-menu .bar { width: 25px; height: 3px; } .sidebar-content { padding: 30px 20px; } .sidebar-content h2 { font-size: 1.8em; } .sidebar-nav-btn { font-size: 1em; padding: 12px 15px; } .modal-content { padding: 20px; max-width: 350px; } .modal-content h2 { font-size: 1.8em; } .modal-content input, .modal-content select { font-size: 0.9em; padding: 10px 15px; } .modal-content button { font-size: 1em; padding: 12px; } .whatsapp-button { bottom: 15px; left: 15px; padding: 8px; } .whatsapp-button img { width: 35px; height: 35px; } } @media (max-width: 480px) { h1 { font-size: 35px; letter-spacing: 0px; } .game-wrapper { padding: 5px; } .player-banner { font-size: 0.5em; padding: 5px 1px; } .hamburger-menu { top: 10px; right: 10px; padding: 6px; } .hamburger-menu .bar { width: 20px; height: 2px; } .sidebar-content { padding: 20px 15px; } .sidebar-content h2 { font-size: 1.5em; } .sidebar-nav-btn { font-size: 0.9em; padding: 10px 12px; } .modal-content { padding: 15px; max-width: 300px; } .modal-content h2 { font-size: 1.5em; } .modal-content input, .modal-content select { font-size: 0.85em; padding: 8px 12px; } .modal-content button { font-size: 0.9em; padding: 10px; } .controls { gap: 8px; max-width: 250px; } .control-btn { padding: 3px 10px; font-size: 1.2em; border-radius: 10px; } .control-btn.drop { font-size: 1.4em; padding: 5px 80px; width: 80px; } } #startButton { display: block; width: auto%; padding: 10px 10px; /* Kurangi padding */ margin: 15px auto; background-color: var(--cta-button-bg); color: black; background: red; border-radius: 5px; border: 1 solid gold; font-size: 1em; font-weight: bold; border: none; border-radius: 12px; cursor: pointer; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); transition: background-color 0.2s ease, transform 0.1s ease; text-align: center; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10; display: none; } #startButton.active { display: block; } *, *::before, *::after{ box-sizing:border-box; } body{ position:relative; margin:0; padding:0; width:100vw; height:100vh; background-image: url('https://vqmfachxnjyxwuavpgds.supabase.co/storage/v1/object/public/zaus//images%20(1).jpeg'); background-size: cover; overflow:hidden; }