@ -1262,7 +1262,9 @@
margin-top: 8px;
margin-top: 8px;
}
}
.login-card {
.login-card {
background: rgba(255, 255, 255, 0.95);
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
padding: 30px;
padding: 30px;
border-radius: 16px;
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
@ -1292,7 +1294,7 @@
position: absolute;
position: absolute;
width: 80px;
width: 80px;
height: 80px;
height: 80px;
transition: transform 0.3s ease;
transition: left 4s ease-in-out, top 4s ease-in-out, transform 0.3s ease;
}
}
.login-monster img {
.login-monster img {
width: 100%;
width: 100%;
@ -11138,6 +11140,7 @@
// Login screen animated monsters background
// Login screen animated monsters background
const loginMonsterAnimations = ['idle', 'attack', 'skill', 'flipy', 'flipz', 'shrink_grow'];
const loginMonsterAnimations = ['idle', 'attack', 'skill', 'flipy', 'flipz', 'shrink_grow'];
let loginMonstersInterval = null;
let loginMonstersInterval = null;
let loginMonstersWanderInterval = null;
async function initLoginMonsters() {
async function initLoginMonsters() {
const container = document.getElementById('loginMonstersBg');
const container = document.getElementById('loginMonstersBg');
@ -11159,8 +11162,8 @@
console.log('Using fallback monster IDs for login screen');
console.log('Using fallback monster IDs for login screen');
}
}
// Create 8-12 monsters at random positions
const numMonsters = 8 + Math.floor(Math.random() * 5 );
// Create 16-24 monsters at random positions
const numMonsters = 16 + Math.floor(Math.random() * 9 );
for (let i = 0; i < numMonsters ; i + + ) {
for (let i = 0; i < numMonsters ; i + + ) {
const monsterId = monsterIds[Math.floor(Math.random() * monsterIds.length)];
const monsterId = monsterIds[Math.floor(Math.random() * monsterIds.length)];
const monster = document.createElement('div');
const monster = document.createElement('div');
@ -11173,9 +11176,21 @@
container.appendChild(monster);
container.appendChild(monster);
}
}
// Start random animations
// Start random animations and wandering
animateLoginMonsters();
animateLoginMonsters();
wanderLoginMonsters();
loginMonstersInterval = setInterval(animateLoginMonsters, 2500);
loginMonstersInterval = setInterval(animateLoginMonsters, 2500);
loginMonstersWanderInterval = setInterval(wanderLoginMonsters, 3000);
}
function wanderLoginMonsters() {
const monsters = document.querySelectorAll('.login-monster');
monsters.forEach(monster => {
// 30% chance to wander each cycle
if (Math.random() > 0.3) return;
monster.style.left = `${Math.random() * 90}%`;
monster.style.top = `${Math.random() * 85}%`;
});
}
}
function animateLoginMonsters() {
function animateLoginMonsters() {
@ -11213,6 +11228,10 @@
clearInterval(loginMonstersInterval);
clearInterval(loginMonstersInterval);
loginMonstersInterval = null;
loginMonstersInterval = null;
}
}
if (loginMonstersWanderInterval) {
clearInterval(loginMonstersWanderInterval);
loginMonstersWanderInterval = null;
}
}
}
// Initialize login monsters when page loads
// Initialize login monsters when page loads