html, body { height: 100%; margin: 0; } body { display: flex; flex-direction: column; } main { flex: 1 0 auto; } footer { flex-shrink: 0; position: sticky; bottom: 0; width: 100%; } .copy-btn { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; background-color: rgba(45, 212, 191, 0.2); border-radius: 4px; transition: all 0.3s ease; z-index: 10; } .copy-btn:hover { background-color: rgba(45, 212, 191, 0.4); } .copy-btn.copied { background-color: rgba(34, 197, 94, 0.4); } .copy-btn.copied svg.clipboard { display: none; } .copy-btn.copied svg.checkmark { display: block; opacity: 1; transform: scale(1); } .copy-btn svg { width: 16px; height: 16px; } .copy-btn svg.clipboard { display: block; } .copy-btn svg.checkmark { display: none; opacity: 0; transform: scale(0.5); transition: all 0.3s ease; } .search-container { max-width: 500px; margin: 0 auto 1.5rem; } .search-input { width: 100%; padding: 0.75rem 1rem; border: 2px solid #2DD4BF; border-radius: 0.5rem; background-color: rgba(255, 255, 255, 0.1); color: white; font-size: 1rem; outline: none; transition: border-color 0.3s ease; } .search-input:focus { border-color: #3B82F6; } .search-input::placeholder { color: rgba(255, 255, 255, 0.5); } .new-server-animation { animation: slideIn 0.5s ease-out forwards; border: 2px solid #2DD4BF; box-shadow: 0 0 10px rgba(45, 212, 191, 0.5); } @keyframes slideIn { 0% { opacity: 0; transform: translateY(20px) scale(0.95); } 100% { opacity: 1; transform: translateY(0) scale(1); } } .particle { position: absolute; width: 10px; height: 10px; background: rgba(255, 200, 100, 0.8); border-radius: 50%; pointer-events: auto; animation: float-up linear infinite; } .large { width: 15px; height: 15px; } .mini-particle { position: absolute; width: 5px; height: 5px; background: rgba(255, 100, 50, 0.9); border-radius: 50%; animation: explode 2s linear forwards; } .glow { box-shadow: 0 0 10px 5px rgba(255, 200, 100, 1); } .fade-out { opacity: 0; transition: opacity 0.5s; } @keyframes float-up { 0% { transform: translateY(0); } 100% { transform: translateY(-100vh); } } @keyframes explode { 0% { transform: translate(0, 0); } 100% { transform: translate(var(--dx), var(--dy)); } }