:root { --bg-deep: #0a0a0f; --bg-primary: #12121a; --bg-secondary: #1a1a25; --accent-primary: #8b3a62; --accent-secondary: #5e2a8b; --accent-light: #d4a5c9; --text-primary: #ffffff; --text-secondary: #b8b8c8; --text-muted: #6b6b7b; --glass-bg: rgba(255, 255, 255, 0.03); --glass-border: rgba(255, 255, 255, 0.08); } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Montserrat', sans-serif; background: var(--bg-deep); color: var(--text-primary); min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; position: relative; } .bg-grid { position: fixed; inset: 0; background-image: linear-gradient(rgba(139, 58, 98, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(139, 58, 98, 0.03) 1px, transparent 1px); background-size: 50px 50px; pointer-events: none; } .bg-glow { position: fixed; width: 600px; height: 600px; border-radius: 50%; filter: blur(150px); opacity: 0.15; pointer-events: none; } .bg-glow-1 { top: -200px; left: -200px; background: var(--accent-primary); animation: float 8s ease-in-out infinite; } .bg-glow-2 { bottom: -200px; right: -200px; background: var(--accent-secondary); animation: float 8s ease-in-out infinite reverse; } @keyframes float { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(30px, 30px); } } .particles { position: fixed; inset: 0; pointer-events: none; overflow: hidden; } .particle { position: absolute; width: 4px; height: 4px; background: var(--accent-light); border-radius: 50%; opacity: 0.3; animation: rise 10s linear infinite; } @keyframes rise { 0% { transform: translateY(100vh) scale(0); opacity: 0; } 10% { opacity: 0.3; } 90% { opacity: 0.3; } 100% { transform: translateY(-100vh) scale(1); opacity: 0; } } .container { text-align: center; z-index: 10; padding: 2rem; max-width: 600px; } .error-code { font-size: clamp(8rem, 25vw, 14rem); font-weight: 700; line-height: 1; position: relative; margin-bottom: 1rem; background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary), var(--accent-light)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: glitch 3s infinite; cursor: pointer; user-select: none; transition: transform 0.3s ease, filter 0.3s ease; } .error-code:hover { transform: scale(1.05); filter: brightness(1.2); } .error-code:active { transform: scale(0.98); } .error-code::before, .error-code::after { content: '404'; position: absolute; top: 0; left: 0; right: 0; background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; opacity: 0.8; } .error-code::before { animation: glitch-1 0.3s infinite linear alternate-reverse; clip-path: polygon(0 0, 100% 0, 100% 35%, 0 35%); } .error-code::after { animation: glitch-2 0.3s infinite linear alternate-reverse; clip-path: polygon(0 65%, 100% 65%, 100% 100%, 0 100%); } @keyframes glitch { 0%, 90%, 100% { transform: translate(0); } 92% { transform: translate(-2px, 2px); } 94% { transform: translate(2px, -2px); } 96% { transform: translate(-2px, -2px); } 98% { transform: translate(2px, 2px); } } @keyframes glitch-1 { 0% { transform: translate(0); } 100% { transform: translate(-3px, 1px); } } @keyframes glitch-2 { 0% { transform: translate(0); } 100% { transform: translate(3px, -1px); } } .error-icon { width: 80px; height: 80px; margin: 0 auto 2rem; background: var(--glass-bg); border: 1px solid var(--glass-border); border-radius: 50%; display: flex; align-items: center; justify-content: center; animation: pulse-icon 2s ease-in-out infinite; } .error-icon svg { width: 40px; height: 40px; color: var(--accent-light); } @keyframes pulse-icon { 0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(139, 58, 98, 0.4); } 50% { transform: scale(1.05); box-shadow: 0 0 0 15px rgba(139, 58, 98, 0); } } .error-title { font-size: 1.75rem; font-weight: 600; margin-bottom: 1rem; color: var(--text-primary); } .error-message { font-size: 1rem; color: var(--text-muted); line-height: 1.7; margin-bottom: 2.5rem; } .error-message span { color: var(--accent-light); } .buttons { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; } .btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.875rem 1.75rem; border-radius: 8px; font-size: 0.95rem; font-weight: 600; text-decoration: none; transition: all 0.3s ease; cursor: pointer; border: none; } .btn svg { width: 18px; height: 18px; } .btn-primary { background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); color: white; box-shadow: 0 4px 20px rgba(139, 58, 98, 0.3); } .btn-primary:hover { transform: translateY(-3px); box-shadow: 0 8px 30px rgba(139, 58, 98, 0.4); } .btn-secondary { background: var(--glass-bg); border: 1px solid var(--glass-border); color: var(--text-secondary); } .btn-secondary:hover { background: rgba(255, 255, 255, 0.08); border-color: var(--accent-primary); color: var(--text-primary); } .portal { position: absolute; width: 300px; height: 300px; pointer-events: none; opacity: 0.1; } .portal-left { left: -100px; top: 50%; transform: translateY(-50%); } .portal-right { right: -100px; top: 50%; transform: translateY(-50%); } .portal-ring { position: absolute; inset: 0; border: 2px solid var(--accent-primary); border-radius: 50%; animation: rotate 10s linear infinite; } .portal-ring:nth-child(2) { inset: 20px; border-color: var(--accent-secondary); animation-duration: 8s; animation-direction: reverse; } .portal-ring:nth-child(3) { inset: 40px; border-color: var(--accent-light); animation-duration: 6s; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .footer { position: fixed; bottom: 2rem; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 0.5rem; color: var(--text-muted); font-size: 0.85rem; z-index: 10; } .footer a { color: var(--accent-light); text-decoration: none; transition: color 0.3s ease; } .footer a:hover { color: var(--text-primary); } .logo-mini { font-weight: 700; background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Responsive 404 */ @media (max-width: 768px) { .error-code { font-size: clamp(5rem, 20vw, 8rem); } .error-icon { width: 60px; height: 60px; margin-bottom: 1.5rem; } .error-icon svg { width: 30px; height: 30px; } .error-title { font-size: 1.4rem; } .error-message { font-size: 0.9rem; padding: 0 1rem; } .buttons { flex-direction: column; width: 100%; padding: 0 1rem; } .btn { width: 100%; justify-content: center; padding: 1rem 1.5rem; } .portal { display: none; } .footer { bottom: 1rem; font-size: 0.75rem; } } @media (max-width: 480px) { .container { padding: 1rem; } .error-code { font-size: clamp(4rem, 18vw, 6rem); margin-bottom: 0.5rem; } .error-icon { width: 50px; height: 50px; margin-bottom: 1rem; } .error-icon svg { width: 24px; height: 24px; } .error-title { font-size: 1.2rem; } .error-message { font-size: 0.85rem; margin-bottom: 2rem; } .btn { font-size: 0.9rem; padding: 0.875rem 1.25rem; } } @media (max-height: 600px) { .error-icon { display: none; } .error-code { margin-bottom: 0.5rem; } .error-title { font-size: 1.2rem; margin-bottom: 0.5rem; } .error-message { margin-bottom: 1.5rem; } }