.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:border-color .25s,box-shadow .25s,transform .25s;position:relative}.project-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius);background:linear-gradient(135deg,rgba(168,85,247,.05) 0%,transparent 60%);opacity:0;transition:opacity .25s;pointer-events:none}.project-card:hover{border-color:var(--border-hover);box-shadow:0 0 0 1px #a855f726,0 20px 60px #a855f71a;transform:translateY(-3px)}.project-card:hover:before{opacity:1}.card-link{flex:1;display:flex;flex-direction:column;text-decoration:none;color:inherit}.card-image{aspect-ratio:16/9;background:linear-gradient(135deg,#1a1a22,#0e0e14);position:relative;overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}.project-card:hover .card-image img{transform:scale(1.03)}.image-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e1e2a,#13131a);opacity:0;transition:opacity .2s}.image-placeholder.visible{opacity:1}.placeholder-icon{font-size:2.5rem;opacity:.2;background:linear-gradient(135deg,var(--accent),var(--accent-cyan));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.card-content{padding:1.375rem 1.375rem .75rem;flex:1}.card-content h2{font-size:1.1875rem;font-weight:600;margin:0 0 .5rem;letter-spacing:-.01em;color:var(--text);transition:color .2s}.project-card:hover .card-content h2{color:#fff}.description{color:var(--text-muted);font-size:.9rem;margin:0 0 1.125rem;line-height:1.65;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tags{display:flex;flex-wrap:wrap;gap:.4rem}.tag{font-family:JetBrains Mono,monospace;font-size:.7rem;padding:.2rem .55rem;background:#a855f714;color:var(--accent);border:1px solid rgba(168,85,247,.18);border-radius:6px;letter-spacing:.01em;transition:background .2s,border-color .2s}.project-card:hover .tag{background:#a855f724;border-color:#a855f747}.card-actions{padding:1rem 1.375rem 1.375rem;display:flex;gap:.625rem;border-top:1px solid var(--border);margin-top:1rem}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.475rem .875rem;font-size:.8125rem;font-weight:500;border-radius:8px;text-decoration:none;transition:all .2s;font-family:inherit;letter-spacing:.01em}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#9333ea;box-shadow:0 0 16px #a855f766}.btn-ghost{color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{color:var(--text);border-color:#3a3a4a}.app{min-height:100vh;display:flex;flex-direction:column}.hero{padding:6rem 1.5rem 5rem;max-width:1200px;margin:0 auto;width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:3rem}.hero-left{flex:1;min-width:0}.hero-right{flex-shrink:0;display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem}.hero-badge{display:inline-flex;align-items:center;gap:.5rem;font-size:.8125rem;font-weight:500;color:var(--accent-green);background:#34d3991a;border:1px solid rgba(52,211,153,.25);border-radius:100px;padding:.3rem .85rem;margin-bottom:2rem;letter-spacing:.02em}.hero-badge:before{content:"";width:6px;height:6px;background:var(--accent-green);border-radius:50%;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.hero-name{font-size:clamp(3rem,7vw,5.5rem);font-weight:700;line-height:1.05;letter-spacing:-.03em;margin:0 0 .5rem;background:linear-gradient(135deg,#fff,#e2d9f3 30%,#a855f7,#22d3ee);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-role{font-size:clamp(1.1rem,2.5vw,1.5rem);color:var(--text-muted);margin:0 0 1.25rem;font-weight:400;letter-spacing:-.01em}.hero-bio{font-size:1.0625rem;color:var(--text-muted);max-width:480px;margin:0;line-height:1.7}.contact-link{display:inline-flex;align-items:center;gap:.625rem;font-size:.9rem;font-weight:500;text-decoration:none;color:var(--text-muted);padding:.5rem .75rem;border-radius:8px;transition:color .2s,background .2s;white-space:nowrap}.contact-link:hover{color:var(--text);background:#ffffff0d}.contact-link svg{flex-shrink:0;opacity:.7}.contact-link:hover svg{opacity:1}@media(max-width:700px){.hero{flex-direction:column;gap:2.5rem;padding:4rem 1.25rem 3.5rem}.hero-right{flex-direction:row;flex-wrap:wrap;padding-top:0}}.projects-section{flex:1;padding:0 1.5rem 5rem;max-width:1200px;margin:0 auto;width:100%}.section-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.section-title{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted)}.section-line{flex:1;height:1px;background:var(--border)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:1.5rem}.footer{padding:2rem 1.5rem;text-align:center;color:var(--text-muted);font-size:.8125rem;border-top:1px solid var(--border);opacity:.6}:root{--bg: #09090b;--bg-card: #111115;--bg-card-hover: #17171e;--text: #fafafa;--text-muted: #8888a0;--accent: #a855f7;--accent-cyan: #22d3ee;--accent-green: #34d399;--border: #1e1e28;--border-hover: rgba(168, 85, 247, .4);--radius: 14px;--glow: 0 0 60px rgba(168, 85, 247, .12)}*{box-sizing:border-box}body{margin:0;font-family:DM Sans,system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;background-image:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(168,85,247,.12) 0%,transparent 60%)}#root{min-height:100vh}::selection{background:#a855f74d;color:#fff}
