update change
39
home.html
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="id">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Login Memory Cards</title>
|
||||||
|
<link rel="stylesheet" href="homestyle.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- Floating Fruits Memory Cards -->
|
||||||
|
<img src="images/fruit1.png" class="fruit f1">
|
||||||
|
<img src="images/fruit2.png" class="fruit f2">
|
||||||
|
<img src="images/fruit3.png" class="fruit f3">
|
||||||
|
<img src="images/fruit4.png" class="fruit f4">
|
||||||
|
<img src="images/fruit5.png" class="fruit f5">
|
||||||
|
<img src="images/fruit6.png" class="fruit f6">
|
||||||
|
<img src="images/fruit7.png" class="fruit f7">
|
||||||
|
<img src="images/fruit8.png" class="fruit f8">
|
||||||
|
<img src="images/fruit9.png" class="fruit f9">
|
||||||
|
<img src="images/fruit10.png" class="fruit f10">
|
||||||
|
|
||||||
|
<!-- HOME / MEMORY SCREEN -->
|
||||||
|
<div class="container memory">
|
||||||
|
<h1 class="title">MEMORY<br>CARDS</h1>
|
||||||
|
|
||||||
|
<button class="btn start" onclick="goToLoginCard()">Start Game</button>
|
||||||
|
|
||||||
|
<div class="or-line">
|
||||||
|
<div class="line"></div>
|
||||||
|
<span>OR</span>
|
||||||
|
<div class="line"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button class="btn how-to-play">❓ Cara bermain</button>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script src="home.js"></script>
|
||||||
|
</html>
|
||||||
8
home.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
function goToLoginCard() {
|
||||||
|
document.querySelector(".memory").classList.add("hidden");
|
||||||
|
document.querySelector(".login-wrapper").classList.remove("hidden");
|
||||||
|
}
|
||||||
|
function goToLoginCard() {
|
||||||
|
window.location.href = "login.html"; // atau page tujuan lain
|
||||||
|
}
|
||||||
|
|
||||||
147
homestyle.css
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
/* === BACKGROUND === */
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: Poppins, Arial, sans-serif;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
/* Pink → Ungu Gradient */
|
||||||
|
background: linear-gradient(135deg, #ff9ed1, #d784ff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === ANIMATED FLOATING FRUITS === */
|
||||||
|
.fruit {
|
||||||
|
position: absolute;
|
||||||
|
width: 95px;
|
||||||
|
opacity: 0.85;
|
||||||
|
animation: float 7s infinite ease-in-out;
|
||||||
|
pointer-events: none; /* supaya tidak ganggu klik */
|
||||||
|
filter: drop-shadow(0 4px 6px rgba(0,0,0,0.12));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Posisi lebih seimbang & tidak menutupi teks */
|
||||||
|
.f1 { top: 6%; left: 12%; animation-delay: .3s; }
|
||||||
|
.f2 { top: 12%; right: 18%; animation-delay: 1.2s; }
|
||||||
|
.f3 { top: 48%; right: 8%; animation-delay: .7s; }
|
||||||
|
.f4 { top: 72%; left: 20%; animation-delay: 1.6s; }
|
||||||
|
.f5 { top: 28%; left: 60%; animation-delay: .5s; }
|
||||||
|
.f6 { top: 68%; right: 22%; animation-delay: 1s; }
|
||||||
|
.f7 { top: 40%; left: 10%; animation-delay: .9s; }
|
||||||
|
.f8 { top: 82%; left: 70%; animation-delay: 1.4s; }
|
||||||
|
.f9 { top: 18%; right: 46%; animation-delay: .6s; }
|
||||||
|
.f10 { top: 80%; right: 10%; animation-delay: 1.8s; }
|
||||||
|
|
||||||
|
/* Smooth floating animation */
|
||||||
|
@keyframes float {
|
||||||
|
0% { transform: translateY(0) rotate(0deg); }
|
||||||
|
50% { transform: translateY(-18px) rotate(6deg); }
|
||||||
|
100% { transform: translateY(0) rotate(0deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes drift {
|
||||||
|
0% { transform: translateX(0); }
|
||||||
|
50% { transform: translateX(22px); }
|
||||||
|
100% { transform: translateX(0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.fruit {
|
||||||
|
width: clamp(70px, 7vw, 105px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === CENTRAL CONTAINER === */
|
||||||
|
.container {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === TITLE WITH GLOW ANIMATION === */
|
||||||
|
.title {
|
||||||
|
font-size: 70px;
|
||||||
|
font-weight: 900;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 0.9;
|
||||||
|
text-shadow:
|
||||||
|
0 0 10px #ab2cff,
|
||||||
|
0 0 25px #ff54de,
|
||||||
|
0 0 35px #a639ff;
|
||||||
|
|
||||||
|
animation: glow 2s infinite alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes glow {
|
||||||
|
0% {
|
||||||
|
text-shadow:
|
||||||
|
0 0 10px #ab2cff,
|
||||||
|
0 0 25px #ff54de,
|
||||||
|
0 0 40px #a639ff;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
text-shadow:
|
||||||
|
0 0 20px #ffb3f9,
|
||||||
|
0 0 45px #ff7df3,
|
||||||
|
0 0 60px #bb5bff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === BUTTONS === */
|
||||||
|
.btn {
|
||||||
|
width: 260px;
|
||||||
|
padding: 18px 0;
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: bold;
|
||||||
|
border: none;
|
||||||
|
border-radius: 40px;
|
||||||
|
cursor: pointer;
|
||||||
|
background: linear-gradient(#ffe08a, #f5c654);
|
||||||
|
box-shadow: 0 6px 0 #c99a00;
|
||||||
|
transition: transform .2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === BUTTON SHAKE ON HOVER === */
|
||||||
|
.btn:hover {
|
||||||
|
animation: shake 0.4s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes shake {
|
||||||
|
0% { transform: translateX(0); }
|
||||||
|
25% { transform: translateX(-3px); }
|
||||||
|
50% { transform: translateX(3px); }
|
||||||
|
75% { transform: translateX(-2px); }
|
||||||
|
100% { transform: translateX(0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* === OR LINE === */
|
||||||
|
.or-line {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 25px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
width: 80px;
|
||||||
|
height: 2px;
|
||||||
|
background: rgba(255,255,255,0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.or-line span {
|
||||||
|
margin: 0 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === HOW TO PLAY === */
|
||||||
|
.how {
|
||||||
|
margin-top: 5px;
|
||||||
|
font-size: 22px;
|
||||||
|
color: #fff;
|
||||||
|
opacity: 0.9;
|
||||||
|
padding: 2px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden { display: none !important;
|
||||||
|
}
|
||||||
BIN
images/fruit1.png
Normal file
|
After Width: | Height: | Size: 195 KiB |
BIN
images/fruit10.png
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
images/fruit2.png
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
images/fruit3.png
Normal file
|
After Width: | Height: | Size: 254 KiB |
BIN
images/fruit4.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
images/fruit5.png
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
images/fruit6.png
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
images/fruit7.png
Normal file
|
After Width: | Height: | Size: 146 KiB |
BIN
images/fruit8.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
images/fruit9.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
32
login.css
@ -60,6 +60,7 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
color: gray;
|
color: gray;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
animation:appear 3s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
@ -76,6 +77,7 @@ input {
|
|||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
input:focus {
|
input:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
border-color: purple;
|
border-color: purple;
|
||||||
@ -191,6 +193,11 @@ input:focus {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes glitter-burst {
|
@keyframes glitter-burst {
|
||||||
0% {
|
0% {
|
||||||
@ -209,3 +216,28 @@ input:focus {
|
|||||||
0% { opacity: 0.2; }
|
0% { opacity: 0.2; }
|
||||||
100% { opacity: 0.55; }
|
100% { opacity: 0.55; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fruit {
|
||||||
|
position: absolute;
|
||||||
|
width: 95px;
|
||||||
|
opacity: .85;
|
||||||
|
animation: float 6s infinite ease-in-out, drift 15s infinite linear;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f1 { top: 8%; left: 10%; animation-delay: .3s; }
|
||||||
|
.f2 { top: 65%; right: 12%; animation-delay: .7s; }
|
||||||
|
.f3 { top: 22%; right: 55%; animation-delay: 1.1s; }
|
||||||
|
.f4 { bottom: 15%; left: 28%; animation-delay: .9s; }
|
||||||
|
|
||||||
|
@keyframes float {
|
||||||
|
0% { transform: translateY(0) rotate(0deg); }
|
||||||
|
50% { transform: translateY(-20px) rotate(6deg); }
|
||||||
|
100% { transform: translateY(0) rotate(0deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes drift {
|
||||||
|
0% { transform: translateX(0); }
|
||||||
|
50% { transform: translateX(15px); }
|
||||||
|
100% { transform: translateX(0); }
|
||||||
|
}
|
||||||
19
login.html
@ -8,7 +8,6 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="min-h-screen flex items-center justify-center p-4 relative overflow-hidden">
|
|
||||||
|
|
||||||
<!-- Animated Background -->
|
<!-- Animated Background -->
|
||||||
<div class="bg-animated">
|
<div class="bg-animated">
|
||||||
@ -45,24 +44,6 @@
|
|||||||
<a href="register.html">Daftar Sekarang</a>
|
<a href="register.html">Daftar Sekarang</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<button class="demo-toggle" onclick="toggleDemo()">Lihat Demo Akun ▼</button>
|
|
||||||
|
|
||||||
<div class="demo-box" id="demoBox">
|
|
||||||
<p><strong>🎮 Demo Akun</strong></p>
|
|
||||||
|
|
||||||
<div class="demo-item">
|
|
||||||
<p><strong>Player:</strong></p>
|
|
||||||
<p>Username: <code>player</code></p>
|
|
||||||
<p>Password: <code>player123</code></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="demo-item">
|
|
||||||
<p><strong>Admin:</strong></p>
|
|
||||||
<p>Username: <code>admin</code></p>
|
|
||||||
<p>Password: <code>admin123</code></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="login.js"></script>
|
<script src="login.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||