* { margin: 0; padding: 0; box-sizing: border-box; } :root { --bg: #000000; --surface: #050505; --text: #ffffff; --text-secondary: #808080; --accent: #ffffff; --border: #1a1a1a; --red: #ff0040; } body { font-family: 'Arial', sans-serif; background: var(--bg); color: var(--text); overflow-x: hidden; cursor: none; min-height: 100vh; line-height: 1.6; } .cursor { width: 8px; height: 8px; background: var(--text); position: fixed; pointer-events: none; z-index: 9999; mix-blend-mode: difference; will-change: transform; transition: width 0.2s, height 0.2s; } .cursor.hover { width: 20px; height: 20px; } .start-overlay { position: fixed; inset: 0; background: var(--bg); display: flex; align-items: center; justify-content: center; z-index: 10001; transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .start-overlay.hidden { opacity: 0; pointer-events: none; } .start-text { font-size: 1.2rem; letter-spacing: 0.3em; animation: blink 1.5s infinite; } @keyframes blink { 0%, 50%, 100% { opacity: 1; } 25%, 75% { opacity: 0.3; } } .volume-control { position: fixed; top: 2rem; left: 2rem; display: flex; align-items: center; gap: 1rem; background: rgba(0, 0, 0, 0.9); padding: 0.75rem 1.5rem; border: 1px solid var(--border); z-index: 1000; } .volume-label { font-size: 0.7rem; letter-spacing: 0.2em; color: var(--text-secondary); } .volume-slider { width: 80px; height: 2px; -webkit-appearance: none; appearance: none; background: var(--border); outline: none; } .volume-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 12px; height: 12px; background: var(--text); cursor: none; } .volume-value { font-size: 0.8rem; min-width: 30px; text-align: right; } .loading-screen { position: fixed; inset: 0; background: var(--bg); display: flex; align-items: center; justify-content: center; z-index: 10000; transition: opacity 0.5s ease; } .loading-screen.hidden { opacity: 0; pointer-events: none; } .loading-text { font-size: 0.9rem; letter-spacing: 0.3em; margin-bottom: 1rem; } .loading-progress { width: 200px; height: 1px; background: var(--border); } .progress-bar { height: 100%; background: var(--text); animation: load 1s cubic-bezier(0.4, 0, 0.2, 1); } @keyframes load { from { width: 0; } to { width: 100%; } } .grid-overlay { position: fixed; inset: 0; background-image: linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px); background-size: 50px 50px; pointer-events: none; z-index: 1; } .scan-line { position: fixed; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); animation: scan 8s linear infinite; pointer-events: none; z-index: 3; } @keyframes scan { to { transform: translateY(100vh); } } .binary-rain { position: fixed; inset: 0; pointer-events: none; z-index: 1; opacity: 0.05; } .rain-column { position: absolute; top: -100%; width: 20px; height: 100%; font-family: monospace; font-size: 10px; line-height: 10px; animation: rain-fall 15s linear infinite; } .rain-column:nth-child(1) { left: 10%; animation-delay: 0s; } .rain-column:nth-child(2) { left: 30%; animation-delay: 3s; } .rain-column:nth-child(3) { left: 50%; animation-delay: 6s; } .rain-column:nth-child(4) { left: 70%; animation-delay: 9s; } .rain-column:nth-child(5) { left: 90%; animation-delay: 12s; } .rain-column::before { content: "10110101001110010110101001110010110101001110010110101001110010110101001110010110101001110"; writing-mode: vertical-rl; text-orientation: upright; } @keyframes rain-fall { to { transform: translateY(200%); } } .geometric-container { position: fixed; inset: 0; pointer-events: none; z-index: 2; } .geo-element { position: absolute; border: 1px solid rgba(255, 255, 255, 0.05); } .geo-1 { width: 400px; height: 400px; top: -200px; right: -200px; transform: rotate(45deg); animation: drift 30s linear infinite; } .geo-2 { width: 300px; height: 300px; bottom: -150px; left: -150px; animation: drift 40s linear infinite reverse; } .geo-3 { width: 200px; height: 200px; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(30deg); animation: rotate 60s linear infinite; } .geo-4 { width: 150px; height: 150px; top: 20%; right: 20%; clip-path: polygon(50% 0%, 0% 100%, 100% 100%); animation: float-geo 20s ease-in-out infinite; } .geo-5 { width: 100px; height: 100px; bottom: 30%; left: 15%; border-radius: 50%; animation: pulse-geo 4s ease-in-out infinite; } @keyframes drift { to { transform: rotate(405deg) translateX(50px); } } @keyframes rotate { to { transform: translate(-50%, -50%) rotate(390deg); } } @keyframes float-geo { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(-30px, -50px); } } @keyframes pulse-geo { 0%, 100% { transform: scale(1); opacity: 0.05; } 50% { transform: scale(1.5); opacity: 0.1; } } #particles { position: fixed; inset: 0; pointer-events: none; z-index: 1; } .audio-spectrum { position: fixed; bottom: 2rem; right: 2rem; display: flex; gap: 2px; align-items: flex-end; height: 40px; z-index: 100; } .audio-spectrum span { width: 2px; background: var(--text); opacity: 0.3; transition: height 0.1s ease; } .container { max-width: 1200px; margin: 0 auto; padding: 4rem 2rem; position: relative; z-index: 10; } .header { text-align: center; margin-bottom: 6rem; } .profile-section { display: inline-block; } .profile-frame { position: relative; width: 140px; height: 140px; margin: 0 auto 3rem; } .frame-corner { position: absolute; width: 20px; height: 20px; border: 1px solid var(--text); transition: all 0.3s ease; } .profile-frame:hover .frame-corner { width: 30px; height: 30px; } .frame-corner.tl { top: -10px; left: -10px; border-right: none; border-bottom: none; } .frame-corner.tr { top: -10px; right: -10px; border-left: none; border-bottom: none; } .frame-corner.bl { bottom: -10px; left: -10px; border-right: none; border-top: none; } .frame-corner.br { bottom: -10px; right: -10px; border-left: none; border-top: none; } .profile-glitch-container { position: relative; width: 100%; height: 100%; overflow: hidden; } .profile-image { width: 100%; height: 100%; object-fit: cover; filter: grayscale(100%) contrast(1.2); transition: filter 0.3s ease; } .profile-glitch-layer { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: inherit; opacity: 0; mix-blend-mode: screen; } .profile-frame:hover .profile-image { filter: grayscale(0%) contrast(1.2); animation: glitch-img 0.3s steps(2, end); } .profile-frame:hover .profile-glitch-layer:nth-child(2) { opacity: 0.8; animation: glitch-1 0.3s steps(2, end); } .profile-frame:hover .profile-glitch-layer:nth-child(3) { opacity: 0.8; animation: glitch-2 0.3s steps(2, end); } @keyframes glitch-img { 0%, 100% { transform: translate(0); } 20% { transform: translate(-2px, 2px); } 40% { transform: translate(-2px, -2px); } 60% { transform: translate(2px, 2px); } 80% { transform: translate(2px, -2px); } } @keyframes glitch-1 { 0%, 100% { clip-path: inset(0 0 0 0); transform: translate(0); } 20% { clip-path: inset(20% 0 60% 0); transform: translate(-5px); } 40% { clip-path: inset(50% 0 30% 0); transform: translate(5px); } 60% { clip-path: inset(10% 0 80% 0); transform: translate(-5px); } 80% { clip-path: inset(80% 0 5% 0); transform: translate(5px); } } @keyframes glitch-2 { 0%, 100% { clip-path: inset(0 0 0 0); transform: translate(0); } 20% { clip-path: inset(60% 0 20% 0); transform: translate(5px); } 40% { clip-path: inset(30% 0 50% 0); transform: translate(-5px); } 60% { clip-path: inset(80% 0 10% 0); transform: translate(5px); } 80% { clip-path: inset(5% 0 80% 0); transform: translate(-5px); } } .profile-scanner { position: absolute; top: 0; left: 0; right: 0; height: 2px; background: rgba(255, 0, 64, 0.5); animation: scan-profile 3s linear infinite; opacity: 0; pointer-events: none; } .profile-frame:hover .profile-scanner { opacity: 1; } @keyframes scan-profile { to { transform: translateY(140px); } } .name { font-size: 3rem; font-weight: 300; letter-spacing: 0.2em; margin-bottom: 1rem; position: relative; } .char { display: inline-block; animation: char-float 6s ease-in-out infinite; animation-delay: calc(var(--char-index) * 0.1s); } @keyframes char-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } .name::before { content: attr(data-text); position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.1; transform: translateX(2px) translateY(2px); } .status-line { display: flex; align-items: center; justify-content: center; gap: 1rem; font-size: 0.8rem; letter-spacing: 0.1em; color: var(--text-secondary); } .status-indicator { width: 6px; height: 6px; background: var(--red); animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(255, 0, 64, 0.7); } 50% { opacity: 0.3; box-shadow: 0 0 0 10px rgba(255, 0, 64, 0); } } .navigation { display: flex; justify-content: center; gap: 3rem; margin-bottom: 6rem; position: relative; } .nav-track { position: absolute; top: 50%; left: 10%; right: 10%; height: 1px; background: var(--border); transform: translateY(-50%); z-index: -1; } .nav-btn { background: var(--bg); border: none; color: var(--text-secondary); font-size: 0.8rem; letter-spacing: 0.2em; cursor: none; position: relative; padding: 0.5rem 1rem; transition: all 0.3s ease; } .nav-btn::before { content: ''; position: absolute; inset: 0; border: 1px solid transparent; transition: border-color 0.3s ease; } .nav-btn:hover::before, .nav-btn.active::before { border-color: var(--text); } .nav-btn:hover, .nav-btn.active { color: var(--text); transform: scale(1.05); } .nav-line { position: absolute; bottom: -10px; left: 0; width: 100%; height: 1px; background: var(--text); transform: scaleX(0); transform-origin: left; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .nav-btn.active .nav-line { transform: scaleX(1); } .content-wrapper { min-height: 500px; } .section { display: none; animation: fadeIn 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .section.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .section-header { margin-bottom: 4rem; } .glitch-title { font-size: 2rem; font-weight: 300; letter-spacing: 0.3em; margin-bottom: 1rem; position: relative; display: inline-block; } .glitch-title::before, .glitch-title::after { content: attr(data-text); position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; } .glitch-title:hover::before { opacity: 0.7; animation: glitch-1 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; color: var(--red); } .glitch-title:hover::after { opacity: 0.7; animation: glitch-2 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; color: var(--text-secondary); } .title-line { width: 50px; height: 1px; background: var(--text); animation: expand-line 1s ease-out; } @keyframes expand-line { from { width: 0; } to { width: 50px; } } .about-content { max-width: 800px; margin: 0 auto; } .bio-text { margin-bottom: 4rem; } .typing-text { font-size: 1.1rem; line-height: 1.8; margin-bottom: 1.5rem; color: var(--text-secondary); overflow: hidden; border-right: 2px solid var(--text); white-space: nowrap; animation: typing 3s steps(40, end), blink-caret 0.75s step-end infinite; } .typing-text.delayed { animation-delay: 3s; opacity: 0; animation-fill-mode: forwards; } @keyframes typing { from { width: 0; opacity: 1; } to { width: 100%; opacity: 1; } } @keyframes blink-caret { from, to { border-color: transparent; } 50% { border-color: var(--text); } } .metrics-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; margin-bottom: 3rem; } .metric-card { padding: 2rem; border: 1px solid var(--border); position: relative; overflow: hidden; transition: all 0.3s ease; } .metric-card:hover { transform: translateY(-5px); border-color: var(--text-secondary); } .metric-background { position: absolute; inset: 0; background: linear-gradient(135deg, transparent, rgba(255, 255, 255, 0.02)); opacity: 0; transition: opacity 0.3s ease; } .metric-card:hover .metric-background { opacity: 1; } .metric-value { font-size: 2.5rem; font-weight: 300; margin-bottom: 0.5rem; transition: all 0.3s ease; } .metric-card:hover .metric-value { transform: scale(1.1); } .metric-label { font-size: 0.7rem; letter-spacing: 0.2em; color: var(--text-secondary); margin-bottom: 1rem; } .metric-bar { height: 2px; background: var(--border); position: relative; margin-bottom: 1rem; } .metric-fill { height: 100%; background: var(--text); width: 0; transition: width 2s cubic-bezier(0.4, 0, 0.2, 1); } .metric-card:nth-child(1) .metric-fill { width: 95%; } .metric-card:nth-child(2) .metric-fill { width: 88%; } .metric-card:nth-child(3) .metric-fill { width: 92%; } .metric-card:nth-child(4) .metric-fill { width: 98%; } .metric-graph { width: 100%; height: 30px; opacity: 0.3; } .code-preview { background: var(--surface); border: 1px solid var(--border); overflow: hidden; animation: slide-up 0.6s ease-out; } @keyframes slide-up { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .code-header { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; background: rgba(255, 255, 255, 0.02); border-bottom: 1px solid var(--border); } .code-dot { width: 10px; height: 10px; border-radius: 50%; } .code-dot.red { background: #ff5f57; } .code-dot.yellow { background: #ffbd2e; } .code-dot.green { background: #28ca42; } .code-filename { margin-left: auto; font-size: 0.8rem; color: var(--text-secondary); } .code-content { padding: 1.5rem; font-family: 'Courier New', monospace; font-size: 0.9rem; line-height: 1.6; } .selector { color: #ff5f57; } .property { color: #5ac7fa; } .value { color: #a7ec21; } .expertise-container { display: grid; gap: 4rem; } .skill-matrix { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; } .skill-card { display: grid; grid-template-columns: auto 1fr; gap: 1.5rem; padding: 2rem; border: 1px solid var(--border); position: relative; overflow: hidden; transition: all 0.3s ease; } .skill-card:hover { transform: translateX(10px); border-color: var(--text); } .skill-icon { width: 80px; height: 80px; position: relative; display: flex; align-items: center; justify-content: center; } .icon-bg { position: absolute; inset: 0; border: 1px solid var(--text-secondary); transform: rotate(45deg); transition: all 0.3s ease; } .skill-card:hover .icon-bg { transform: rotate(225deg); border-color: var(--text); } .icon-text { font-size: 0.8rem; font-weight: bold; letter-spacing: 0.1em; z-index: 1; } .skill-details h3 { font-size: 1.2rem; margin-bottom: 0.5rem; } .skill-details p { font-size: 0.9rem; color: var(--text-secondary); margin-bottom: 1rem; } .skill-level { height: 4px; background: var(--border); position: relative; overflow: hidden; } .level-fill { height: 100%; background: var(--text); width: var(--level); transform: translateX(-100%); animation: fill-level 1.5s ease-out forwards; animation-delay: 0.5s; } @keyframes fill-level { to { transform: translateX(0); } } .skill-showcase { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; align-items: stretch; } .showcase-item { text-align: center; display: flex; flex-direction: column; } .showcase-demo { height: 150px; display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; perspective: 1000px; border: 1px solid var(--border); background: var(--surface); position: relative; overflow: hidden; } .showcase-demo::before { content: ''; position: absolute; inset: 0; background: linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.05), transparent); transform: translateX(-100%); transition: transform 0.6s ease; } .showcase-item:hover .showcase-demo::before { transform: translateX(100%); } .demo-cube { width: 60px; height: 60px; position: relative; transform-style: preserve-3d; animation: rotate-cube 10s linear infinite; } .cube-face { position: absolute; width: 60px; height: 60px; border: 1px solid var(--text); background: rgba(255, 255, 255, 0.02); } .cube-face.front { transform: translateZ(30px); } .cube-face.back { transform: rotateY(180deg) translateZ(30px); } .cube-face.right { transform: rotateY(90deg) translateZ(30px); } .cube-face.left { transform: rotateY(-90deg) translateZ(30px); } .cube-face.top { transform: rotateX(90deg) translateZ(30px); } .cube-face.bottom { transform: rotateX(-90deg) translateZ(30px); } @keyframes rotate-cube { to { transform: rotateX(360deg) rotateY(360deg); } } .particle-demo { width: 100%; height: 100%; } .typo-demo { height: 100%; display: flex; align-items: center; justify-content: center; } .morphing-text { font-size: 2rem; font-weight: bold; letter-spacing: 0.2em; animation: morph-text 4s ease-in-out infinite; } @keyframes morph-text { 0%, 100% { filter: blur(0); letter-spacing: 0.2em; } 50% { filter: blur(3px); letter-spacing: 0.5em; } } .showcase-label { font-size: 0.8rem; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.1em; margin-top: auto; } .projects-container { display: grid; gap: 2rem; } .interactive-card { display: grid; grid-template-columns: auto 1fr auto; gap: 2rem; padding: 2rem; border: 1px solid var(--border); position: relative; overflow: hidden; transition: all 0.3s ease; } .interactive-card::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.05), transparent); transition: left 0.6s ease; } .interactive-card:hover::before { left: 100%; } .interactive-card:hover { transform: translateY(-5px); border-color: var(--text); } .project-number { font-size: 3rem; font-weight: 300; color: var(--text-secondary); opacity: 0.3; } .project-title { font-size: 1.5rem; font-weight: 300; margin-bottom: 1rem; } .project-description { color: var(--text-secondary); margin-bottom: 1.5rem; line-height: 1.6; } .project-tech { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 1rem; } .tech-tag { font-size: 0.8rem; padding: 0.25rem 0.75rem; border: 1px solid var(--border); transition: all 0.3s ease; } .tech-tag:hover { border-color: var(--text); transform: translateY(-2px); } .project-features { display: flex; gap: 1rem; font-size: 0.8rem; color: var(--text-secondary); } .feature::before { content: '▪ '; color: var(--red); } .project-preview { width: 200px; height: 150px; border: 1px solid var(--border); position: relative; overflow: hidden; background: var(--surface); } .preview-portfolio { height: 100%; display: flex; flex-direction: column; } .preview-header { padding: 0.25rem 0.5rem; background: rgba(255, 255, 255, 0.05); display: flex; gap: 0.25rem; } .preview-header .dot { width: 4px; height: 4px; border-radius: 50%; background: var(--text-secondary); } .preview-hero { flex: 1; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, rgba(255, 255, 255, 0.05), transparent); } .hero-text { font-size: 0.8rem; font-weight: bold; letter-spacing: 0.2em; opacity: 0.5; animation: fade-in-out 3s ease-in-out infinite; } @keyframes fade-in-out { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.8; } } .preview-nav { display: flex; justify-content: center; gap: 0.5rem; padding: 0.5rem; border-top: 1px solid var(--border); } .preview-nav span { width: 20px; height: 2px; background: var(--text-secondary); opacity: 0.3; } .preview-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.25rem; padding: 0.5rem; } .grid-item { height: 15px; background: var(--border); animation: shimmer 2s ease-in-out infinite; } .grid-item:nth-child(odd) { animation-delay: 0.5s; } @keyframes shimmer { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } } .preview-art-gallery { height: 100%; display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); gap: 0.5rem; padding: 0.5rem; } .art-piece { display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.02); border: 1px solid var(--border); position: relative; overflow: hidden; } .art-piece::before { content: ''; position: absolute; inset: -50%; background: radial-gradient(circle, rgba(255, 255, 255, 0.1), transparent); animation: pulse-art 3s ease-in-out infinite; } .art-piece:nth-child(1)::before { animation-delay: 0s; } .art-piece:nth-child(2)::before { animation-delay: 0.5s; } .art-piece:nth-child(3)::before { animation-delay: 1s; } .art-piece:nth-child(4)::before { animation-delay: 1.5s; } @keyframes pulse-art { 0%, 100% { transform: scale(0.5); opacity: 0; } 50% { transform: scale(1); opacity: 1; } } .circle { width: 20px; height: 20px; border: 1px solid var(--text); border-radius: 50%; animation: rotate 4s linear infinite; } .triangle { width: 0; height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; border-bottom: 20px solid var(--text); animation: rotate 6s linear infinite reverse; } .square { width: 18px; height: 18px; border: 1px solid var(--text); animation: rotate 8s linear infinite; } .hexagon { width: 20px; height: 11px; background: var(--text); position: relative; animation: rotate 10s linear infinite reverse; } .hexagon::before, .hexagon::after { content: ''; position: absolute; width: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; } .hexagon::before { bottom: 100%; border-bottom: 5.5px solid var(--text); } .hexagon::after { top: 100%; border-top: 5.5px solid var(--text); } .preview-landing-page { height: 100%; display: flex; flex-direction: column; } .landing-navbar { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem; border-bottom: 1px solid var(--border); } .logo { width: 20px; height: 4px; background: var(--text); opacity: 0.5; } .menu-items { display: flex; gap: 0.25rem; } .menu-items span { width: 3px; height: 3px; background: var(--text-secondary); opacity: 0.5; } .landing-hero-section { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.5rem; padding: 1rem; background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent); } .hero-title { width: 60%; height: 4px; background: var(--text); opacity: 0.3; animation: slide-in 2s ease-in-out infinite; } .hero-subtitle { width: 40%; height: 2px; background: var(--text-secondary); opacity: 0.3; animation: slide-in 2s ease-in-out infinite; animation-delay: 0.2s; } .hero-cta { width: 30px; height: 10px; background: var(--text); opacity: 0.2; margin-top: 0.5rem; animation: pulse-opacity 2s ease-in-out infinite; } @keyframes slide-in { 0% { transform: translateX(-20px); opacity: 0; } 50% { transform: translateX(0); opacity: 0.5; } 100% { transform: translateX(20px); opacity: 0; } } .landing-features { display: flex; gap: 0.5rem; padding: 0.5rem; border-top: 1px solid var(--border); } .feature-card { flex: 1; height: 20px; background: var(--border); animation: fade-sequence 3s ease-in-out infinite; } .feature-card:nth-child(1) { animation-delay: 0s; } .feature-card:nth-child(2) { animation-delay: 0.3s; } .feature-card:nth-child(3) { animation-delay: 0.6s; } @keyframes fade-sequence { 0%, 100% { opacity: 0.2; } 33% { opacity: 0.6; } } @keyframes pulse-opacity { 0%, 100% { opacity: 0.2; } 50% { opacity: 0.5; } } .connect-container { max-width: 600px; margin: 0 auto; } .connect-grid { display: grid; gap: 1rem; margin-bottom: 3rem; } .magnetic-link { display: grid; grid-template-columns: auto auto 1fr auto; align-items: center; gap: 2rem; padding: 1.5rem 2rem; border: 1px solid var(--border); text-decoration: none; color: inherit; position: relative; overflow: hidden; transition: all 0.3s ease; } .link-bg { position: absolute; inset: 0; background: var(--text); transform: translateX(-100%); transition: transform 0.3s ease; } .magnetic-link:hover .link-bg { transform: translateX(0); } .magnetic-link:hover { color: var(--bg); transform: translateX(10px); } .magnetic-link:hover .link-number, .magnetic-link:hover .link-platform, .magnetic-link:hover .link-handle { color: var(--bg); position: relative; z-index: 1; } .link-number { font-size: 0.8rem; color: var(--text-secondary); font-weight: 300; } .link-content { display: grid; gap: 0.25rem; } .link-platform { font-size: 0.8rem; letter-spacing: 0.2em; color: var(--text-secondary); } .link-handle { font-size: 1.1rem; } .link-arrow { display: flex; align-items: center; gap: 2px; transition: gap 0.3s ease; } .link-arrow span { display: block; width: 15px; height: 1px; background: currentColor; position: relative; } .link-arrow span:last-child::after { content: ''; position: absolute; right: 0; top: 0; width: 5px; height: 1px; background: currentColor; transform: rotate(45deg); transform-origin: right; } .link-arrow span:last-child::before { content: ''; position: absolute; right: 0; top: 0; width: 5px; height: 1px; background: currentColor; transform: rotate(-45deg); transform-origin: right; } .magnetic-link:hover .link-arrow { gap: 6px; } .contact-footer { text-align: center; padding: 2rem; border: 1px solid var(--border); } .footer-text { font-size: 0.9rem; color: var(--text-secondary); margin-bottom: 1rem; } .response-time { display: flex; align-items: center; justify-content: center; gap: 0.5rem; font-size: 0.8rem; color: var(--text-secondary); } .time-dot { width: 6px; height: 6px; background: #00ff00; border-radius: 50%; animation: blink-dot 2s infinite; } @keyframes blink-dot { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } @media (max-width: 768px) { .cursor { display: none; } body { cursor: auto; } .nav-btn { cursor: pointer; } .container { padding: 2rem 1rem; } .name { font-size: 2rem; } .navigation { gap: 1rem; } .metrics-grid { grid-template-columns: 1fr; } .skill-matrix { grid-template-columns: 1fr; } .skill-showcase { grid-template-columns: 1fr; } .interactive-card { grid-template-columns: 1fr; } .project-number { font-size: 2rem; } .project-preview { display: none; } .geometric-container { display: none; } }