diff --git a/html/gamehub.ejs b/html/gamehub.ejs index 5f8691cc..8344f4e8 100644 --- a/html/gamehub.ejs +++ b/html/gamehub.ejs @@ -77,28 +77,36 @@ src: url("https://p.poketube.fun/.../robotoflex.ttf"); font-display: swap; } - /* Emoji particle background */ + + /* FULL-PAGE EMOJI GRID */ .emoji-bg { - position: fixed; top:0; left:0; - width:100%; height:100%; - pointer-events:none; - z-index:0; - display:flex; flex-wrap: wrap; align-content:start; - font-size:2rem; + position: fixed; top: 0; left: 0; + width: 100vw; height: 100vh; + display: grid; + /* make a responsive grid of ~25 columns */ + grid-template-columns: repeat(auto-fill, minmax(3rem, 1fr)); + grid-auto-rows: 3rem; + pointer-events: none; + z-index: 0; + font-size: 2.5rem; } .emoji-bg span { - opacity:0.1; - margin:0.3rem; + display: flex; + align-items: center; + justify-content: center; + opacity: 0.08; animation: float var(--dur) ease-in-out infinite alternate; } - .emoji-bg span:nth-child(odd) { --dur:7s; } - .emoji-bg span:nth-child(even){ --dur:10s; } + /* randomize durations a bit */ + .emoji-bg span:nth-child(odd) { --dur: 6s; } + .emoji-bg span:nth-child(even) { --dur: 9s; } @keyframes float { - to { transform: translateY(-25px) rotate(15deg); } + to { transform: translateY(-20px) rotate(15deg); } } + /* Main container */ .wrapper { - position: relative; z-index:1; + position: relative; z-index: 1; max-width: 1000px; margin: 3rem auto; padding: 2rem; background: var(--card-bg); @@ -107,9 +115,9 @@ box-shadow: 0 8px 32px var(--shadow); backdrop-filter: blur(12px); animation: fadeIn 1s ease forwards; - opacity:0; + opacity: 0; } - @keyframes fadeIn { to { opacity:1; } } + @keyframes fadeIn { to { opacity: 1; } } h1 { font-size: 3.5rem; text-align: center; @@ -139,43 +147,35 @@ content: ''; position: absolute; top:0; left:0; width:100%; height:100%; background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.2), transparent 70%); - opacity:0; transition: opacity 0.3s; + opacity: 0; transition: opacity 0.3s; } .game:hover { transform: translateY(-8px) rotate(-1deg); box-shadow: 0 12px 48px var(--shadow); background: var(--card-hover); } - .game:hover::before { - opacity:1; - } + .game:hover::before { opacity: 1; } + .game .icon { font-size: 3rem; margin-bottom: 0.5rem; animation: popIn 0.5s ease forwards; - opacity:0; + opacity: 0; } @keyframes popIn { to { opacity:1; transform: scale(1); } } + .game h2 { font-size: 1.4rem; margin-bottom: 0.3rem; text-shadow: 1px 1px 4px var(--shadow); } - /* Hide unselected game UIs */ - canvas, .board { display:none; } + /* hide game UIs until selected */ + canvas, .board { display: none; }
-