@keyframes menuButtonEntry { from { opacity: 0; transform: translateY(20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .menuButton { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.1rem; padding: 1.5rem 1rem; text-decoration: none; color: var(--fg); width: 150px; height: 150px; cursor: pointer; background: var(--card-bg); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); border: 1.5px solid var(--card-border); box-shadow: var(--card-shadow); border-radius: 24px; transition: all 320ms cubic-bezier(0.25, 1, 0.5, 1); position: relative; overflow: hidden; animation: menuButtonEntry 600ms cubic-bezier(0.34, 1.56, 0.64, 1); will-change: transform, background, border-color; } .menuButton::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent); opacity: 0; transition: opacity 300ms ease; pointer-events: none; border-radius: 24px; } .menuButton:hover::before { opacity: 1; } .menuButton:hover { background: var(--card-hover-bg); border-color: var(--accent-primary); transform: translateY(-6px) scale(1.03); box-shadow: 0 16px 40px rgba(0, 212, 255, 0.15); } .menuButton:active { transform: scale(0.96); transition-duration: 100ms; } /* Icon Container */ .faviconWrapper { width: 56px; height: 56px; border-radius: 16px; display: flex; align-items: center; justify-content: center; background: var(--accent-btn-bg); box-shadow: inset 0 2px 6px rgba(255, 255, 255, 0.08); transition: all 320ms cubic-bezier(0.25, 1, 0.5, 1); position: relative; } .menuButton:hover .faviconWrapper { transform: scale(1.12) rotate(-2deg); background: var(--accent-btn-hover); box-shadow: 0 8px 20px rgba(0, 212, 255, 0.2); } /* Label */ .label { font-size: 0.85rem; font-weight: 700; text-align: center; letter-spacing: -0.01em; color: var(--fg); max-width: 130px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: transform 300ms cubic-bezier(0.25, 1, 0.5, 1); } .menuButton:hover .label { transform: scale(1.05); } /* Responsive */ @media (max-width: 768px) { .menuButton { width: 140px; height: 140px; padding: 1.25rem 0.75rem; gap: 0.9rem; } .faviconWrapper { width: 50px; height: 50px; } .label { font-size: 0.8rem; } } @media (max-width: 480px) { .menuButton { width: 120px; height: 120px; padding: 1rem 0.5rem; gap: 0.7rem; } .faviconWrapper { width: 44px; height: 44px; } .label { font-size: 0.75rem; } }