From 72453d0eabee9fe5b96abe55f920a0d7947f7887 Mon Sep 17 00:00:00 2001 From: Zane V <102631678+ZaneThePython@users.noreply.github.com> Date: Tue, 23 Sep 2025 21:18:33 -0400 Subject: [PATCH] Add files via upload --- Zane.jpg | Bin 0 -> 30137 bytes index.html | 47 ++ script.js | 1208 ++++++++++++++++++++++++++++++++++++++++++++++++++++ styles.css | 837 ++++++++++++++++++++++++++++++++++++ 4 files changed, 2092 insertions(+) create mode 100644 Zane.jpg create mode 100644 index.html create mode 100644 script.js create mode 100644 styles.css diff --git a/Zane.jpg b/Zane.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98d799e030887ba34d50b87b1e295899cc776aa5 GIT binary patch literal 30137 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%0A7Z>76c*^hLQH#9{R5 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..c8e84eb --- /dev/null +++ b/index.html @@ -0,0 +1,47 @@ + + + + + + ZaneDev + + + + + + + +
+ +
+
+ Zane's Profile Picture +
+

ZaneDev

+

Certified Epik Guy

+
+ + +
+

Bored guy who likes to make random stuff.

+
+ + + + + +
+

*Note* This website is not FDA approved

+
+
+ + + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..39d2e7c --- /dev/null +++ b/script.js @@ -0,0 +1,1208 @@ +// DOM Elements +const navButtons = document.querySelectorAll('.nav-button'); +const contentSections = document.querySelectorAll('.content-section'); +const closeButtons = document.querySelectorAll('.close-button'); + +// Initialize the website +document.addEventListener('DOMContentLoaded', function() { + // Add click event listeners to navigation buttons + navButtons.forEach(button => { + button.addEventListener('click', function(e) { + const section = this.getAttribute('data-section'); + if (section) { + e.preventDefault(); + showContentSection(section); + } + // If no data-section, it's a regular link and will navigate normally + }); + }); + + // Add click event listeners to close buttons + closeButtons.forEach(button => { + button.addEventListener('click', function(e) { + e.preventDefault(); + hideAllContentSections(); + }); + }); + + // Add click event listeners to close content sections when clicking outside + contentSections.forEach(section => { + section.addEventListener('click', function(e) { + if (e.target === this) { + hideAllContentSections(); + } + }); + }); + + // Add keyboard support (ESC to close) + document.addEventListener('keydown', function(e) { + if (e.key === 'Escape') { + hideAllContentSections(); + } + }); + + // Add smooth animations on page load + animateOnLoad(); + + // Add skill tag animations + animateSkillTags(); + + // Add project card stagger animations + animateProjectCards(); + + // Add interactive elements + addInteractiveElements(); + + // Add particle effect + createParticleEffect(); + + // Add mouse trail effect + addMouseTrail(); + + // Add easter eggs + addEasterEggs(); + + // Add sound effects + addSoundEffects(); + + // Add matrix rain effect + addMatrixRain(); + + // Add custom cursor + addCustomCursor(); + + // Add typing animation for tagline + addTypingAnimation(); + + // Add interactive background + addInteractiveBackground(); + + // Add more micro-interactions + addMicroInteractions(); + + // Add text effects + addTextEffects(); + + // Add button morphing + addButtonMorphing(); + + // Add scroll effects + addScrollEffects(); + + // Add keyboard interactions + addKeyboardInteractions(); +}); + +// Show specific content section +function showContentSection(sectionName) { + // Hide all content sections first + hideAllContentSections(); + + // Show the requested section + const targetSection = document.getElementById(`${sectionName}-content`); + if (targetSection) { + targetSection.classList.add('active'); + + // Add entrance animation + setTimeout(() => { + targetSection.style.opacity = '1'; + }, 10); + } +} + +// Hide all content sections +function hideAllContentSections() { + contentSections.forEach(section => { + section.classList.remove('active'); + section.style.opacity = '0'; + }); +} + +// Animate elements on page load +function animateOnLoad() { + const avatar = document.querySelector('.avatar'); + const brandName = document.querySelector('.brand-name'); + const navButtons = document.querySelectorAll('.nav-button'); + const disclaimer = document.querySelector('.disclaimer'); + + // Set initial states + avatar.style.opacity = '0'; + avatar.style.transform = 'translateY(30px)'; + brandName.style.opacity = '0'; + brandName.style.transform = 'translateY(30px)'; + navButtons.forEach((button, index) => { + button.style.opacity = '0'; + button.style.transform = 'translateX(30px)'; + button.style.transitionDelay = `${index * 0.1}s`; + }); + disclaimer.style.opacity = '0'; + + // Animate in sequence + setTimeout(() => { + avatar.style.transition = 'all 0.8s ease'; + avatar.style.opacity = '1'; + avatar.style.transform = 'translateY(0)'; + }, 200); + + setTimeout(() => { + brandName.style.transition = 'all 0.8s ease'; + brandName.style.opacity = '1'; + brandName.style.transform = 'translateY(0)'; + }, 400); + + setTimeout(() => { + navButtons.forEach(button => { + button.style.transition = 'all 0.6s ease'; + button.style.opacity = '1'; + button.style.transform = 'translateX(0)'; + }); + }, 600); + + setTimeout(() => { + disclaimer.style.transition = 'all 0.8s ease'; + disclaimer.style.opacity = '1'; + }, 800); +} + +// Add hover effects for interactive elements +document.addEventListener('DOMContentLoaded', function() { + // Enhanced button hover effects + const buttons = document.querySelectorAll('.nav-button, .github-button, .contact-link'); + + buttons.forEach(button => { + button.addEventListener('mouseenter', function() { + this.style.transform = 'translateY(-2px) scale(1.02)'; + }); + + button.addEventListener('mouseleave', function() { + this.style.transform = 'translateY(0) scale(1)'; + }); + }); + + // Avatar hover effect + const avatar = document.querySelector('.avatar'); + if (avatar) { + avatar.addEventListener('mouseenter', function() { + this.style.transform = 'scale(1.05) rotate(2deg)'; + this.style.boxShadow = '0 12px 40px rgba(220, 38, 38, 0.3)'; + }); + + avatar.addEventListener('mouseleave', function() { + this.style.transform = 'scale(1) rotate(0deg)'; + this.style.boxShadow = '0 8px 32px rgba(0, 0, 0, 0.3)'; + }); + } +}); + +// Add smooth scrolling for any internal links +document.addEventListener('DOMContentLoaded', function() { + const links = document.querySelectorAll('a[href^="#"]'); + + links.forEach(link => { + link.addEventListener('click', function(e) { + e.preventDefault(); + const targetId = this.getAttribute('href').substring(1); + const targetElement = document.getElementById(targetId); + + if (targetElement) { + targetElement.scrollIntoView({ + behavior: 'smooth', + block: 'start' + }); + } + }); + }); +}); + +// Add loading animation for external links +document.addEventListener('DOMContentLoaded', function() { + const externalLinks = document.querySelectorAll('a[target="_blank"]'); + + externalLinks.forEach(link => { + link.addEventListener('click', function() { + // Add a subtle loading effect + this.style.opacity = '0.7'; + this.style.transform = 'scale(0.98)'; + + setTimeout(() => { + this.style.opacity = '1'; + this.style.transform = 'scale(1)'; + }, 200); + }); + }); +}); + +// Add parallax effect to the grid background +document.addEventListener('DOMContentLoaded', function() { + const gridBackground = document.querySelector('body::before'); + + window.addEventListener('mousemove', function(e) { + const mouseX = e.clientX / window.innerWidth; + const mouseY = e.clientY / window.innerHeight; + + // Subtle parallax effect + document.body.style.setProperty('--mouse-x', mouseX); + document.body.style.setProperty('--mouse-y', mouseY); + }); +}); + +// Add typing effect for the brand name (optional enhancement) +function typeWriter(element, text, speed = 100) { + let i = 0; + element.innerHTML = ''; + + function type() { + if (i < text.length) { + element.innerHTML += text.charAt(i); + i++; + setTimeout(type, speed); + } + } + + type(); +} + +// Animate skill tags with stagger effect +function animateSkillTags() { + const skillTags = document.querySelectorAll('.skill-tag'); + + skillTags.forEach((tag, index) => { + tag.style.opacity = '0'; + tag.style.transform = 'translateY(20px)'; + + setTimeout(() => { + tag.style.transition = 'all 0.5s ease'; + tag.style.opacity = '1'; + tag.style.transform = 'translateY(0)'; + }, index * 100); + }); +} + +// Animate project cards with stagger effect +function animateProjectCards() { + const projectCards = document.querySelectorAll('.project-card'); + + projectCards.forEach((card, index) => { + card.style.opacity = '0'; + card.style.transform = 'translateY(30px)'; + + setTimeout(() => { + card.style.transition = 'all 0.6s ease'; + card.style.opacity = '1'; + card.style.transform = 'translateY(0)'; + }, index * 150); + }); +} + +// Add intersection observer for scroll animations +function addScrollAnimations() { + const observerOptions = { + threshold: 0.1, + rootMargin: '0px 0px -50px 0px' + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.classList.add('animate-in'); + } + }); + }, observerOptions); + + // Observe all elements that should animate on scroll + const animateElements = document.querySelectorAll('.skill-category, .project-card, .about-section'); + animateElements.forEach(el => observer.observe(el)); +} + +// Enhanced hover effects for project cards +function addProjectCardEffects() { + const projectCards = document.querySelectorAll('.project-card'); + + projectCards.forEach(card => { + card.addEventListener('mouseenter', function() { + this.style.transform = 'translateY(-8px) scale(1.02)'; + this.style.boxShadow = '0 15px 40px rgba(0, 0, 0, 0.4)'; + }); + + card.addEventListener('mouseleave', function() { + this.style.transform = 'translateY(0) scale(1)'; + this.style.boxShadow = '0 10px 30px rgba(0, 0, 0, 0.3)'; + }); + }); +} + +// Add typing effect for the tagline +function addTypingEffect() { + const tagline = document.querySelector('.tagline'); + if (tagline) { + const originalText = tagline.textContent; + tagline.textContent = ''; + + setTimeout(() => { + typeWriter(tagline, originalText, 80); + }, 1500); + } +} + +// Initialize additional features +document.addEventListener('DOMContentLoaded', function() { + addScrollAnimations(); + addProjectCardEffects(); + addTypingEffect(); +}); + +// Add interactive elements +function addInteractiveElements() { + // Add click effect to brand name + const brandName = document.querySelector('.brand-name'); + if (brandName) { + brandName.addEventListener('click', function() { + this.style.animation = 'none'; + setTimeout(() => { + this.style.animation = 'gradientText 3s ease infinite'; + }, 10); + }); + } + + // Add ripple effect to buttons + const buttons = document.querySelectorAll('.nav-button, .contact-link, .project-link'); + buttons.forEach(button => { + button.addEventListener('click', function(e) { + const ripple = document.createElement('span'); + const rect = this.getBoundingClientRect(); + const size = Math.max(rect.width, rect.height); + const x = e.clientX - rect.left - size / 2; + const y = e.clientY - rect.top - size / 2; + + ripple.style.width = ripple.style.height = size + 'px'; + ripple.style.left = x + 'px'; + ripple.style.top = y + 'px'; + ripple.classList.add('ripple'); + + this.appendChild(ripple); + + setTimeout(() => { + ripple.remove(); + }, 600); + }); + }); + + // Add floating animation to skill tags + const skillTags = document.querySelectorAll('.skill-tag'); + skillTags.forEach((tag, index) => { + tag.addEventListener('mouseenter', function() { + this.style.animation = `float 2s ease-in-out infinite`; + }); + + tag.addEventListener('mouseleave', function() { + this.style.animation = 'none'; + }); + }); +} + +// Create particle effect +function createParticleEffect() { + const particleContainer = document.createElement('div'); + particleContainer.style.position = 'fixed'; + particleContainer.style.top = '0'; + particleContainer.style.left = '0'; + particleContainer.style.width = '100%'; + particleContainer.style.height = '100%'; + particleContainer.style.pointerEvents = 'none'; + particleContainer.style.zIndex = '-1'; + document.body.appendChild(particleContainer); + + function createParticle() { + const particle = document.createElement('div'); + particle.style.position = 'absolute'; + particle.style.width = '2px'; + particle.style.height = '2px'; + particle.style.background = '#007acc'; + particle.style.borderRadius = '50%'; + particle.style.opacity = '0.6'; + particle.style.left = Math.random() * 100 + '%'; + particle.style.top = '100%'; + particle.style.animation = `floatUp ${3 + Math.random() * 4}s linear forwards`; + + particleContainer.appendChild(particle); + + setTimeout(() => { + particle.remove(); + }, 7000); + } + + // Add CSS for particle animation + const style = document.createElement('style'); + style.textContent = ` + @keyframes floatUp { + to { + transform: translateY(-100vh); + opacity: 0; + } + } + @keyframes float { + 0%, 100% { transform: translateY(0px); } + 50% { transform: translateY(-10px); } + } + .ripple { + position: absolute; + border-radius: 50%; + background: rgba(0, 122, 204, 0.3); + transform: scale(0); + animation: rippleEffect 0.6s linear; + pointer-events: none; + } + @keyframes rippleEffect { + to { + transform: scale(4); + opacity: 0; + } + } + `; + document.head.appendChild(style); + + // Create particles periodically + setInterval(createParticle, 2000); +} + +// Add mouse trail effect +function addMouseTrail() { + const trail = []; + const trailLength = 20; + + document.addEventListener('mousemove', function(e) { + const dot = document.createElement('div'); + dot.style.position = 'fixed'; + dot.style.width = '4px'; + dot.style.height = '4px'; + dot.style.background = 'rgba(0, 122, 204, 0.8)'; + dot.style.borderRadius = '50%'; + dot.style.left = e.clientX + 'px'; + dot.style.top = e.clientY + 'px'; + dot.style.pointerEvents = 'none'; + dot.style.zIndex = '9999'; + dot.style.transition = 'opacity 0.5s ease'; + + document.body.appendChild(dot); + trail.push(dot); + + if (trail.length > trailLength) { + const oldDot = trail.shift(); + oldDot.style.opacity = '0'; + setTimeout(() => oldDot.remove(), 500); + } + + setTimeout(() => { + if (dot.parentNode) { + dot.style.opacity = '0'; + setTimeout(() => dot.remove(), 500); + } + }, 100); + }); +} + + +// Easter Eggs +function addEasterEggs() { + let clickCount = 0; + const avatar = document.querySelector('.avatar'); + const brandName = document.querySelector('.brand-name'); + + // Konami Code + const konamiCode = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65]; + let konamiIndex = 0; + + document.addEventListener('keydown', function(e) { + if (e.keyCode === konamiCode[konamiIndex]) { + konamiIndex++; + if (konamiIndex === konamiCode.length) { + activateKonamiCode(); + konamiIndex = 0; + } + } else { + konamiIndex = 0; + } + }); + + // Avatar click counter + avatar.addEventListener('click', function() { + clickCount++; + if (clickCount === 5) { + activateAvatarEasterEgg(); + clickCount = 0; + } + }); + + // Brand name secret + brandName.addEventListener('dblclick', function() { + activateBrandEasterEgg(); + }); +} + +function activateKonamiCode() { + const body = document.body; + body.style.animation = 'rainbow 2s ease infinite'; + + // Add rainbow animation + const style = document.createElement('style'); + style.textContent = ` + @keyframes rainbow { + 0% { filter: hue-rotate(0deg); } + 100% { filter: hue-rotate(360deg); } + } + `; + document.head.appendChild(style); + + setTimeout(() => { + body.style.animation = ''; + style.remove(); + }, 5000); + + showNotification('🎉 Konami Code Activated! You found the secret!'); +} + +function activateAvatarEasterEgg() { + const avatar = document.querySelector('.avatar'); + avatar.style.animation = 'spin 1s linear infinite, bounce 0.5s ease infinite'; + + const style = document.createElement('style'); + style.textContent = ` + @keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } + } + @keyframes bounce { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-20px); } + } + `; + document.head.appendChild(style); + + setTimeout(() => { + avatar.style.animation = ''; + style.remove(); + }, 3000); + + showNotification('🔄 Avatar Spin Mode Activated!'); +} + +function activateBrandEasterEgg() { + const brandName = document.querySelector('.brand-name'); + const originalText = brandName.textContent; + + const glitchTexts = ['Z4n3D3v', 'Z@n3D3v', 'ZaneDev', 'ZANE_DEV', 'zanedev']; + let glitchIndex = 0; + + const glitchInterval = setInterval(() => { + brandName.textContent = glitchTexts[glitchIndex]; + glitchIndex = (glitchIndex + 1) % glitchTexts.length; + }, 100); + + setTimeout(() => { + clearInterval(glitchInterval); + brandName.textContent = originalText; + }, 2000); + + showNotification('⚡ Glitch Mode Activated!'); +} + +// Sound Effects +function addSoundEffects() { + const buttons = document.querySelectorAll('.nav-button'); + + buttons.forEach(button => { + button.addEventListener('click', function() { + playSound('click'); + }); + + button.addEventListener('mouseenter', function() { + playSound('hover'); + }); + }); +} + +function playSound(type) { + // Create audio context for sound effects + const audioContext = new (window.AudioContext || window.webkitAudioContext)(); + + if (type === 'click') { + // Click sound + const oscillator = audioContext.createOscillator(); + const gainNode = audioContext.createGain(); + + oscillator.connect(gainNode); + gainNode.connect(audioContext.destination); + + oscillator.frequency.setValueAtTime(800, audioContext.currentTime); + oscillator.frequency.exponentialRampToValueAtTime(400, audioContext.currentTime + 0.1); + + gainNode.gain.setValueAtTime(0.1, audioContext.currentTime); + gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.1); + + oscillator.start(audioContext.currentTime); + oscillator.stop(audioContext.currentTime + 0.1); + } else if (type === 'hover') { + // Hover sound + const oscillator = audioContext.createOscillator(); + const gainNode = audioContext.createGain(); + + oscillator.connect(gainNode); + gainNode.connect(audioContext.destination); + + oscillator.frequency.setValueAtTime(600, audioContext.currentTime); + oscillator.frequency.exponentialRampToValueAtTime(800, audioContext.currentTime + 0.05); + + gainNode.gain.setValueAtTime(0.05, audioContext.currentTime); + gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.05); + + oscillator.start(audioContext.currentTime); + oscillator.stop(audioContext.currentTime + 0.05); + } +} + +// Matrix Rain Effect +function addMatrixRain() { + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + + canvas.style.position = 'fixed'; + canvas.style.top = '0'; + canvas.style.left = '0'; + canvas.style.width = '100%'; + canvas.style.height = '100%'; + canvas.style.pointerEvents = 'none'; + canvas.style.zIndex = '-1'; + canvas.style.opacity = '0.1'; + + document.body.appendChild(canvas); + + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + const matrix = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789@#$%^&*()*&^%+-/~{[|`]}"; + const matrixArray = matrix.split(""); + + const font_size = 10; + const columns = canvas.width / font_size; + + const drops = []; + for (let x = 0; x < columns; x++) { + drops[x] = 1; + } + + function drawMatrix() { + ctx.fillStyle = 'rgba(0, 0, 0, 0.04)'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + + ctx.fillStyle = '#007acc'; + ctx.font = font_size + 'px arial'; + + for (let i = 0; i < drops.length; i++) { + const text = matrixArray[Math.floor(Math.random() * matrixArray.length)]; + ctx.fillText(text, i * font_size, drops[i] * font_size); + + if (drops[i] * font_size > canvas.height && Math.random() > 0.975) { + drops[i] = 0; + } + drops[i]++; + } + } + + setInterval(drawMatrix, 35); + + // Resize handler + window.addEventListener('resize', () => { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + }); +} + +// Custom Cursor +function addCustomCursor() { + const cursor = document.createElement('div'); + cursor.className = 'custom-cursor'; + document.body.appendChild(cursor); + + const trail = document.createElement('div'); + trail.className = 'custom-cursor-trail'; + document.body.appendChild(trail); + + let mouseX = 0, mouseY = 0; + let trailX = 0, trailY = 0; + + document.addEventListener('mousemove', (e) => { + mouseX = e.clientX; + mouseY = e.clientY; + + cursor.style.left = mouseX - 10 + 'px'; + cursor.style.top = mouseY - 10 + 'px'; + }); + + // Smooth trail following + function animateTrail() { + trailX += (mouseX - trailX) * 0.1; + trailY += (mouseY - trailY) * 0.1; + + trail.style.left = trailX - 4 + 'px'; + trail.style.top = trailY - 4 + 'px'; + + requestAnimationFrame(animateTrail); + } + animateTrail(); + + // Hover effects + const interactiveElements = document.querySelectorAll('a, button, .avatar, .brand-name'); + + interactiveElements.forEach(el => { + el.addEventListener('mouseenter', () => { + cursor.style.transform = 'scale(2)'; + cursor.style.background = 'radial-gradient(circle, rgba(255, 107, 107, 0.8) 0%, rgba(255, 107, 107, 0.4) 50%, transparent 100%)'; + }); + + el.addEventListener('mouseleave', () => { + cursor.style.transform = 'scale(1)'; + cursor.style.background = 'radial-gradient(circle, rgba(0, 122, 204, 0.8) 0%, rgba(0, 122, 204, 0.4) 50%, transparent 100%)'; + }); + }); +} + +// Typing Animation for Tagline +function addTypingAnimation() { + const tagline = document.querySelector('.tagline'); + if (tagline) { + const originalText = tagline.textContent; + tagline.textContent = ''; + + setTimeout(() => { + typeWriter(tagline, originalText, 100); + }, 2000); + } +} + +// Interactive Background +function addInteractiveBackground() { + const canvas = document.createElement('canvas'); + canvas.style.position = 'fixed'; + canvas.style.top = '0'; + canvas.style.left = '0'; + canvas.style.width = '100%'; + canvas.style.height = '100%'; + canvas.style.pointerEvents = 'none'; + canvas.style.zIndex = '-2'; + canvas.style.opacity = '0.3'; + + document.body.appendChild(canvas); + + const ctx = canvas.getContext('2d'); + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + const particles = []; + const particleCount = 50; + + class Particle { + constructor() { + this.x = Math.random() * canvas.width; + this.y = Math.random() * canvas.height; + this.vx = (Math.random() - 0.5) * 2; + this.vy = (Math.random() - 0.5) * 2; + this.size = Math.random() * 3 + 1; + this.opacity = Math.random() * 0.5 + 0.2; + } + + update() { + this.x += this.vx; + this.y += this.vy; + + if (this.x < 0 || this.x > canvas.width) this.vx *= -1; + if (this.y < 0 || this.y > canvas.height) this.vy *= -1; + } + + draw() { + ctx.beginPath(); + ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2); + ctx.fillStyle = `rgba(0, 122, 204, ${this.opacity})`; + ctx.fill(); + } + } + + for (let i = 0; i < particleCount; i++) { + particles.push(new Particle()); + } + + function animate() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + + particles.forEach(particle => { + particle.update(); + particle.draw(); + }); + + // Draw connections + particles.forEach((particle, i) => { + particles.slice(i + 1).forEach(otherParticle => { + const dx = particle.x - otherParticle.x; + const dy = particle.y - otherParticle.y; + const distance = Math.sqrt(dx * dx + dy * dy); + + if (distance < 100) { + ctx.beginPath(); + ctx.moveTo(particle.x, particle.y); + ctx.lineTo(otherParticle.x, otherParticle.y); + ctx.strokeStyle = `rgba(0, 122, 204, ${0.1 * (1 - distance / 100)})`; + ctx.lineWidth = 1; + ctx.stroke(); + } + }); + }); + + requestAnimationFrame(animate); + } + + animate(); + + window.addEventListener('resize', () => { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + }); +} + + +// Notification System +function showNotification(message) { + const notification = document.createElement('div'); + notification.style.position = 'fixed'; + notification.style.top = '20px'; + notification.style.right = '20px'; + notification.style.background = 'linear-gradient(135deg, #007acc, #00aaff)'; + notification.style.color = 'white'; + notification.style.padding = '1rem 2rem'; + notification.style.borderRadius = '10px'; + notification.style.boxShadow = '0 10px 30px rgba(0, 122, 204, 0.3)'; + notification.style.zIndex = '10000'; + notification.style.transform = 'translateX(100%)'; + notification.style.transition = 'transform 0.3s ease'; + notification.textContent = message; + + document.body.appendChild(notification); + + setTimeout(() => { + notification.style.transform = 'translateX(0)'; + }, 100); + + setTimeout(() => { + notification.style.transform = 'translateX(100%)'; + setTimeout(() => { + notification.remove(); + }, 300); + }, 3000); +} + +// Micro-Interactions +function addMicroInteractions() { + // Add magnetic effect to buttons + const buttons = document.querySelectorAll('.nav-button'); + + buttons.forEach(button => { + button.addEventListener('mousemove', function(e) { + const rect = this.getBoundingClientRect(); + const x = e.clientX - rect.left - rect.width / 2; + const y = e.clientY - rect.top - rect.height / 2; + + this.style.transform = `translate(${x * 0.1}px, ${y * 0.1}px) scale(1.05)`; + }); + + button.addEventListener('mouseleave', function() { + this.style.transform = 'translate(0, 0) scale(1)'; + }); + }); + + // Add tilt effect to avatar + const avatar = document.querySelector('.avatar'); + if (avatar) { + avatar.addEventListener('mousemove', function(e) { + const rect = this.getBoundingClientRect(); + const x = e.clientX - rect.left - rect.width / 2; + const y = e.clientY - rect.top - rect.height / 2; + + const rotateX = (y / rect.height) * 20; + const rotateY = (x / rect.width) * -20; + + this.style.transform = `perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(1.1)`; + }); + + avatar.addEventListener('mouseleave', function() { + this.style.transform = 'perspective(1000px) rotateX(0deg) rotateY(0deg) scale(1)'; + }); + } + + // Add ripple effect to all clickable elements + const clickableElements = document.querySelectorAll('a, button, .avatar, .brand-name'); + + clickableElements.forEach(element => { + element.addEventListener('click', function(e) { + const ripple = document.createElement('span'); + const rect = this.getBoundingClientRect(); + const size = Math.max(rect.width, rect.height); + const x = e.clientX - rect.left - size / 2; + const y = e.clientY - rect.top - size / 2; + + ripple.style.width = ripple.style.height = size + 'px'; + ripple.style.left = x + 'px'; + ripple.style.top = y + 'px'; + ripple.style.position = 'absolute'; + ripple.style.borderRadius = '50%'; + ripple.style.background = 'rgba(0, 122, 204, 0.3)'; + ripple.style.transform = 'scale(0)'; + ripple.style.animation = 'ripple 0.6s linear'; + ripple.style.pointerEvents = 'none'; + + this.style.position = 'relative'; + this.style.overflow = 'hidden'; + this.appendChild(ripple); + + setTimeout(() => { + ripple.remove(); + }, 600); + }); + }); + + // Add CSS for ripple animation + const style = document.createElement('style'); + style.textContent = ` + @keyframes ripple { + to { + transform: scale(4); + opacity: 0; + } + } + `; + document.head.appendChild(style); +} + +// Text Effects +function addTextEffects() { + const brandName = document.querySelector('.brand-name'); + const tagline = document.querySelector('.tagline'); + const aboutText = document.querySelector('.about-text'); + + // Add letter-by-letter animation to brand name + if (brandName) { + const text = brandName.textContent; + brandName.innerHTML = ''; + + text.split('').forEach((letter, index) => { + const span = document.createElement('span'); + span.textContent = letter === ' ' ? '\u00A0' : letter; + span.style.display = 'inline-block'; + span.style.animation = `letterBounce 0.6s ease forwards`; + span.style.animationDelay = `${index * 0.1}s`; + span.style.opacity = '0'; + brandName.appendChild(span); + }); + } + + // Add hover effect to tagline + if (tagline) { + tagline.addEventListener('mouseenter', function() { + this.style.transform = 'scale(1.1) rotate(1deg)'; + this.style.textShadow = '0 0 20px rgba(0, 122, 204, 0.8)'; + }); + + tagline.addEventListener('mouseleave', function() { + this.style.transform = 'scale(1) rotate(0deg)'; + this.style.textShadow = 'none'; + }); + } + + // Add typewriter effect to about text + if (aboutText) { + const originalText = aboutText.textContent; + aboutText.textContent = ''; + + setTimeout(() => { + typeWriter(aboutText, originalText, 50); + }, 3000); + } + + // Add CSS for letter animation + const style = document.createElement('style'); + style.textContent = ` + @keyframes letterBounce { + 0% { + opacity: 0; + transform: translateY(20px) rotate(10deg); + } + 50% { + transform: translateY(-10px) rotate(-5deg); + } + 100% { + opacity: 1; + transform: translateY(0) rotate(0deg); + } + } + `; + document.head.appendChild(style); +} + +// Button Morphing +function addButtonMorphing() { + const buttons = document.querySelectorAll('.nav-button'); + + buttons.forEach(button => { + // Add loading state + button.addEventListener('click', function(e) { + if (this.href && !this.href.includes('#')) { + e.preventDefault(); + + const originalText = this.textContent; + this.innerHTML = '⟳'; + this.style.pointerEvents = 'none'; + + setTimeout(() => { + window.location.href = this.href; + }, 1000); + } + }); + + // Add pulse effect on focus + button.addEventListener('focus', function() { + this.style.animation = 'pulse 1s ease-in-out infinite'; + }); + + button.addEventListener('blur', function() { + this.style.animation = ''; + }); + }); + + // Add CSS for button effects + const style = document.createElement('style'); + style.textContent = ` + @keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } + } + @keyframes pulse { + 0%, 100% { transform: scale(1); } + 50% { transform: scale(1.05); } + } + `; + document.head.appendChild(style); +} + +// Scroll Effects +function addScrollEffects() { + let ticking = false; + + function updateScrollEffects() { + const scrolled = window.pageYOffset; + const parallax = scrolled * 0.5; + + // Parallax effect on background + document.body.style.setProperty('--scroll', `${parallax}px`); + + // Scale effect on avatar based on scroll + const avatar = document.querySelector('.avatar'); + if (avatar) { + const scale = Math.max(0.8, 1 - scrolled * 0.001); + avatar.style.transform = `scale(${scale})`; + } + + ticking = false; + } + + function requestTick() { + if (!ticking) { + requestAnimationFrame(updateScrollEffects); + ticking = true; + } + } + + window.addEventListener('scroll', requestTick); +} + +// Keyboard Interactions +function addKeyboardInteractions() { + let keySequence = []; + const secretKeys = ['z', 'a', 'n', 'e']; + + document.addEventListener('keydown', function(e) { + keySequence.push(e.key.toLowerCase()); + if (keySequence.length > secretKeys.length) { + keySequence.shift(); + } + + // Check for secret sequence + if (keySequence.join('') === secretKeys.join('')) { + activateSecretMode(); + keySequence = []; + } + + // Add visual feedback for key presses + const keyElement = document.createElement('div'); + keyElement.textContent = e.key.toUpperCase(); + keyElement.style.position = 'fixed'; + keyElement.style.left = Math.random() * window.innerWidth + 'px'; + keyElement.style.top = Math.random() * window.innerHeight + 'px'; + keyElement.style.color = '#007acc'; + keyElement.style.fontSize = '2rem'; + keyElement.style.fontWeight = 'bold'; + keyElement.style.pointerEvents = 'none'; + keyElement.style.zIndex = '10000'; + keyElement.style.animation = 'keyPress 1s ease-out forwards'; + + document.body.appendChild(keyElement); + + setTimeout(() => { + keyElement.remove(); + }, 1000); + }); + + // Add CSS for key press animation + const style = document.createElement('style'); + style.textContent = ` + @keyframes keyPress { + 0% { + opacity: 1; + transform: scale(1) translateY(0); + } + 100% { + opacity: 0; + transform: scale(0.5) translateY(-50px); + } + } + `; + document.head.appendChild(style); +} + +function activateSecretMode() { + const body = document.body; + body.style.animation = 'rainbow 1s ease infinite'; + + const style = document.createElement('style'); + style.textContent = ` + @keyframes rainbow { + 0% { filter: hue-rotate(0deg); } + 100% { filter: hue-rotate(360deg); } + } + `; + document.head.appendChild(style); + + setTimeout(() => { + body.style.animation = ''; + style.remove(); + }, 3000); + + showNotification('🎉 Secret "ZANE" sequence activated!'); +} + +// Uncomment the following lines if you want a typing effect for the brand name +// document.addEventListener('DOMContentLoaded', function() { +// const brandName = document.querySelector('.brand-name'); +// if (brandName) { +// const originalText = brandName.textContent; +// setTimeout(() => { +// typeWriter(brandName, originalText, 150); +// }, 1000); +// } +// }); diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..796d769 --- /dev/null +++ b/styles.css @@ -0,0 +1,837 @@ +/* Reset and base styles */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Inter', sans-serif; + background-color: #1a1a1a; + color: #ffffff; + min-height: 100vh; + overflow-x: hidden; + position: relative; + cursor: none; +} + +/* Custom Cursor */ +.custom-cursor { + position: fixed; + width: 20px; + height: 20px; + background: radial-gradient(circle, rgba(0, 122, 204, 0.8) 0%, rgba(0, 122, 204, 0.4) 50%, transparent 100%); + border-radius: 50%; + pointer-events: none; + z-index: 9999; + transition: transform 0.1s ease; + mix-blend-mode: difference; +} + +.custom-cursor-trail { + position: fixed; + width: 8px; + height: 8px; + background: rgba(0, 122, 204, 0.6); + border-radius: 50%; + pointer-events: none; + z-index: 9998; + transition: all 0.3s ease; +} + +/* Grid background */ +body::before { + content: ''; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-image: + radial-gradient(circle, #333 1px, transparent 1px); + background-size: 30px 30px; + background-position: 0 0, 15px 15px; + opacity: 0.3; + z-index: -1; + pointer-events: none; + animation: gridMove 20s linear infinite; +} + +@keyframes gridMove { + 0% { transform: translate(0, 0); } + 100% { transform: translate(30px, 30px); } +} + +/* Animated gradient background */ +body::after { + content: ''; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: linear-gradient(-45deg, #1a1a1a, #2a2a2a, #1a1a1a, #333); + background-size: 400% 400%; + animation: gradientShift 15s ease infinite; + z-index: -2; + pointer-events: none; +} + +@keyframes gradientShift { + 0% { background-position: 0% 50%; } + 50% { background-position: 100% 50%; } + 100% { background-position: 0% 50%; } +} + +/* Main container */ +.container { + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; + padding: 2rem; +} + +/* Avatar Section */ +.avatar-section { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 3rem; + position: relative; + filter: drop-shadow(0 0 20px rgba(0, 122, 204, 0.3)); +} + +.avatar { + width: 120px; + height: 120px; + border-radius: 50%; + background: linear-gradient(135deg, #2a2a2a, #1a1a1a); + border: 3px solid #333; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 1.5rem; + box-shadow: + 0 8px 32px rgba(0, 0, 0, 0.3), + 0 0 0 0 rgba(0, 122, 204, 0.4), + inset 0 0 20px rgba(0, 122, 204, 0.1); + position: relative; + overflow: hidden; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + cursor: pointer; + transform-style: preserve-3d; +} + +.avatar::before { + content: ''; + position: absolute; + top: -3px; + left: -3px; + right: -3px; + bottom: -3px; + background: linear-gradient(45deg, #007acc, #00aaff, #007acc, #00aaff); + border-radius: 50%; + z-index: -1; + opacity: 0; + transition: opacity 0.3s ease; + animation: rotate 3s linear infinite; +} + +.avatar:hover::before { + opacity: 1; +} + +.avatar:hover { + transform: scale(1.1) rotateY(10deg) rotateX(5deg); + box-shadow: + 0 15px 50px rgba(0, 0, 0, 0.4), + 0 0 30px rgba(0, 122, 204, 0.6), + inset 0 0 30px rgba(0, 122, 204, 0.2); + border-color: #007acc; +} + +@keyframes rotate { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +/* Profile Image */ +.profile-image { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 50%; + animation: slowSpin 60s linear infinite; +} + +@keyframes slowSpin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +/* Brand Name */ +.brand-name { + font-size: 2.5rem; + font-weight: 600; + background: linear-gradient(135deg, #ffffff, #007acc, #00aaff, #ff6b6b, #4ecdc4); + background-size: 300% 300%; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-align: center; + letter-spacing: -0.02em; + margin-bottom: 0.5rem; + animation: gradientText 4s ease infinite, neonPulse 2s ease-in-out infinite alternate; + cursor: pointer; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + text-shadow: + 0 0 5px rgba(0, 122, 204, 0.5), + 0 0 10px rgba(0, 122, 204, 0.3), + 0 0 15px rgba(0, 122, 204, 0.2); + position: relative; +} + +.brand-name:hover { + transform: scale(1.1) rotateX(5deg); + filter: drop-shadow(0 0 20px rgba(0, 122, 204, 0.8)); + text-shadow: + 0 0 10px rgba(0, 122, 204, 0.8), + 0 0 20px rgba(0, 122, 204, 0.6), + 0 0 30px rgba(0, 122, 204, 0.4); +} + +@keyframes gradientText { + 0% { background-position: 0% 50%; } + 50% { background-position: 100% 50%; } + 100% { background-position: 0% 50%; } +} + +@keyframes neonPulse { + 0% { + filter: drop-shadow(0 0 5px rgba(0, 122, 204, 0.5)); + text-shadow: + 0 0 5px rgba(0, 122, 204, 0.5), + 0 0 10px rgba(0, 122, 204, 0.3), + 0 0 15px rgba(0, 122, 204, 0.2); + } + 100% { + filter: drop-shadow(0 0 15px rgba(0, 122, 204, 0.8)); + text-shadow: + 0 0 10px rgba(0, 122, 204, 0.8), + 0 0 20px rgba(0, 122, 204, 0.6), + 0 0 30px rgba(0, 122, 204, 0.4); + } +} + +/* Tagline */ +.tagline { + font-size: 1.1rem; + color: #888; + text-align: center; + font-weight: 400; + margin-bottom: 2rem; + position: relative; + animation: fadeInUp 1s ease 0.8s both; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* About Section */ +.about-section { + max-width: 600px; + text-align: center; + margin-bottom: 3rem; + position: relative; + animation: slideInLeft 1s ease 1s both; +} + +@keyframes slideInLeft { + from { + opacity: 0; + transform: translateX(-30px); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +.about-text { + font-size: 1.1rem; + line-height: 1.7; + color: #ccc; + font-weight: 400; +} + + +/* Navigation */ +.navigation { + display: flex; + flex-direction: column; + gap: 1rem; + position: relative; + align-items: center; + animation: slideInRight 1s ease 1.2s both; +} + +@keyframes slideInRight { + from { + opacity: 0; + transform: translateX(30px); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +.nav-button { + background: linear-gradient(135deg, #2a2a2a, #1a1a1a); + border: 2px solid #333; + border-radius: 12px; + padding: 1rem 2rem; + color: #ffffff; + font-size: 1.1rem; + font-weight: 500; + font-family: 'Inter', sans-serif; + cursor: pointer; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + min-width: 140px; + text-align: center; + position: relative; + overflow: hidden; + text-decoration: none; + display: inline-block; + box-shadow: + 0 4px 15px rgba(0, 0, 0, 0.2), + 0 0 0 0 rgba(0, 122, 204, 0.3); + transform-style: preserve-3d; +} + +.nav-button::after { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(0, 122, 204, 0.3), transparent); + transition: left 0.6s ease; +} + +.nav-button:hover::after { + left: 100%; +} + +.nav-button.active { + background: #333; + border-color: #444; +} + +.nav-button::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); + transition: left 0.5s ease; +} + +.nav-button:hover::before { + left: 100%; +} + +.nav-button:hover { + background: linear-gradient(135deg, #333, #2a2a2a); + border-color: #007acc; + transform: translateY(-5px) scale(1.05) rotateX(5deg); + box-shadow: + 0 15px 40px rgba(0, 122, 204, 0.4), + 0 0 20px rgba(0, 122, 204, 0.6); + text-shadow: 0 0 10px rgba(0, 122, 204, 0.8); +} + +.nav-button:active { + transform: translateY(0); +} + +/* Disclaimer */ +.disclaimer { + position: fixed; + bottom: 2rem; + left: 2rem; + color: #666; + font-size: 0.9rem; + font-style: italic; +} + +.disclaimer p { + margin: 0; +} + +/* Content Sections */ +.content-section { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(26, 26, 26, 0.95); + backdrop-filter: blur(10px); + display: none; + align-items: center; + justify-content: center; + z-index: 1000; + opacity: 0; + transition: opacity 0.3s ease; +} + +.content-section.active { + display: flex; + opacity: 1; +} + +.content-wrapper { + max-width: 800px; + padding: 2rem; + text-align: center; +} + +.content-wrapper h2 { + font-size: 2.5rem; + margin-bottom: 2rem; + color: #ffffff; +} + +.project-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + margin-top: 2rem; +} + +.project-card { + background: #2a2a2a; + border: 2px solid #333; + border-radius: 12px; + padding: 2rem; + transition: all 0.3s ease; +} + +.project-card:hover { + transform: translateY(-5px); + border-color: #444; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); +} + +.project-card h3 { + color: #ffffff; + margin-bottom: 1rem; + font-size: 1.3rem; +} + +.project-card p { + color: #ccc; + line-height: 1.6; +} + +.github-link { + text-decoration: none; + display: inline-block; + margin-top: 2rem; +} + +.github-button { + background: #333; + border: 2px solid #444; + border-radius: 12px; + padding: 1rem 2rem; + color: #ffffff; + font-size: 1.1rem; + font-weight: 500; + cursor: pointer; + transition: all 0.3s ease; + font-family: 'Inter', sans-serif; +} + +.github-button:hover { + background: #444; + border-color: #555; + transform: translateY(-2px); +} + +.contact-info { + margin-top: 2rem; +} + +.contact-methods { + display: flex; + justify-content: center; + gap: 2rem; + margin-top: 2rem; + flex-wrap: wrap; +} + +.contact-link { + color: #ffffff; + text-decoration: none; + padding: 1rem 2rem; + border: 2px solid #333; + border-radius: 12px; + background: #2a2a2a; + transition: all 0.3s ease; + font-weight: 500; +} + +.contact-link:hover { + background: #333; + border-color: #444; + transform: translateY(-2px); +} + +/* Projects Page Specific Styles */ +.projects-main-content { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(26, 26, 26, 0.95); + backdrop-filter: blur(10px); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; + overflow-y: auto; + padding: 2rem 0; +} + +.projects-intro { + color: #ccc; + font-size: 1.2rem; + margin-bottom: 3rem; + text-align: center; +} + +.project-tech { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin: 1rem 0; +} + +.tech-tag { + background: #333; + color: #ffffff; + padding: 0.3rem 0.8rem; + border-radius: 20px; + font-size: 0.8rem; + font-weight: 500; + border: 1px solid #444; +} + +.project-links { + display: flex; + gap: 1rem; + margin-top: 1.5rem; +} + +.project-link { + color: #ffffff; + text-decoration: none; + padding: 0.5rem 1rem; + border: 1px solid #333; + border-radius: 8px; + background: #2a2a2a; + transition: all 0.3s ease; + font-size: 0.9rem; + font-weight: 500; +} + +.project-link:hover { + background: #333; + border-color: #444; + transform: translateY(-1px); +} + +.contact-message { + font-size: 1.5rem; + color: #ffffff; + font-weight: 500; + text-align: center; + margin-top: 2rem; +} + +/* Skills Section */ +.skills-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + margin-top: 2rem; +} + +.skill-category { + background: #2a2a2a; + border: 2px solid #333; + border-radius: 12px; + padding: 2rem; + transition: all 0.3s ease; +} + +.skill-category:hover { + transform: translateY(-5px); + border-color: #444; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); +} + +.skill-category h3 { + color: #ffffff; + margin-bottom: 1.5rem; + font-size: 1.3rem; + text-align: center; +} + +.skill-tags { + display: flex; + flex-wrap: wrap; + gap: 0.8rem; + justify-content: center; +} + +.skill-tag { + background: linear-gradient(135deg, #333, #444); + color: #ffffff; + padding: 0.5rem 1rem; + border-radius: 25px; + font-size: 0.9rem; + font-weight: 500; + border: 1px solid #555; + transition: all 0.3s ease; +} + +.skill-tag:hover { + background: linear-gradient(135deg, #444, #555); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} + +/* Featured Project Styles */ +.project-card.featured { + border: 2px solid #007acc; + background: linear-gradient(135deg, #2a2a2a, #1f1f1f); + position: relative; + overflow: hidden; +} + +.project-card.featured::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 3px; + background: linear-gradient(90deg, #007acc, #00aaff, #007acc); + animation: shimmer 2s infinite; +} + +@keyframes shimmer { + 0% { transform: translateX(-100%); } + 100% { transform: translateX(100%); } +} + +.project-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; +} + +.featured-badge { + background: linear-gradient(135deg, #007acc, #00aaff); + color: #ffffff; + padding: 0.3rem 0.8rem; + border-radius: 15px; + font-size: 0.8rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +/* Close button for content sections */ +.close-button { + position: absolute; + top: 2rem; + right: 2rem; + background: none; + border: none; + color: #666; + font-size: 2rem; + cursor: pointer; + transition: color 0.3s ease; + z-index: 1001; +} + +.close-button:hover { + color: #ffffff; + transform: scale(1.1); +} + +/* Scroll Animation Classes */ +.animate-in { + animation: slideInUp 0.6s ease forwards; +} + +@keyframes slideInUp { + from { + opacity: 0; + transform: translateY(30px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* Enhanced hover effects */ +.project-card { + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +.project-card:hover { + transform: translateY(-8px) scale(1.02); + box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4); +} + +/* Improved tech tag styling */ +.tech-tag { + background: linear-gradient(135deg, #333, #444); + color: #ffffff; + padding: 0.4rem 0.9rem; + border-radius: 20px; + font-size: 0.85rem; + font-weight: 500; + border: 1px solid #444; + transition: all 0.3s ease; + display: inline-block; +} + +.tech-tag:hover { + background: linear-gradient(135deg, #444, #555); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} + + +/* Responsive Design */ +@media (max-width: 768px) { + .container { + padding: 1rem; + } + + .avatar-section { + margin-bottom: 2rem; + } + + .navigation { + align-items: center; + } + + .brand-name { + font-size: 2rem; + } + + .tagline { + font-size: 1rem; + } + + .about-text { + font-size: 1rem; + } + + .nav-button { + min-width: 120px; + padding: 0.8rem 1.5rem; + font-size: 1rem; + } + + .content-wrapper { + padding: 1rem; + } + + .content-wrapper h2 { + font-size: 2rem; + } + + .project-grid { + grid-template-columns: 1fr; + gap: 1rem; + } + + .skills-grid { + grid-template-columns: 1fr; + gap: 1rem; + } + + .contact-methods { + flex-direction: column; + align-items: center; + gap: 1rem; + } + + .disclaimer { + bottom: 1rem; + left: 1rem; + font-size: 0.8rem; + } + + .close-button { + top: 1rem; + right: 1rem; + font-size: 1.5rem; + } +} + +@media (max-width: 480px) { + .avatar { + width: 100px; + height: 100px; + } + + .mug { + width: 50px; + height: 42px; + } + + .mug-body { + width: 42px; + height: 34px; + } + + .brand-name { + font-size: 1.8rem; + } + + .nav-button { + min-width: 100px; + padding: 0.7rem 1.2rem; + font-size: 0.9rem; + } +}