:root{--pink: #ff8ed6;--blue: #7edbff;--dark-bg: #0c0c10;--dark-surface: rgba(255, 255, 255, .05);--light-bg: #f9f7fc;--light-surface: #ffffff;--text-dark: #ffffff;--text-light: #111827;--transition: .4s cubic-bezier(.25,.8,.25,1)}*{margin:0;padding:0;box-sizing:border-box;font-family:Inter,system-ui,sans-serif}body{overflow-x:hidden}body,a,button,.card,.app{cursor:none!important}.project-img-wrapper,.project-img-wrapper *{cursor:none!important;-webkit-user-select:none;user-select:none}.app{display:flex;min-height:100vh;transition:var(--transition);position:relative}.app.dark{background:var(--dark-bg);color:var(--text-dark)}.app:not(.dark){background:var(--light-bg);color:var(--text-light)}.bg-gradient{position:fixed;width:600px;height:600px;background:radial-gradient(circle,var(--pink),transparent 60%);top:-200px;right:-200px;opacity:.15;filter:blur(80px);animation:float 12s ease-in-out infinite alternate;z-index:0}.bg-noise{position:fixed;inset:0;background-image:url(https://grainy-gradients.vercel.app/noise.svg);opacity:.03;z-index:0}@keyframes float{0%{transform:translateY(0)}to{transform:translateY(40px)}}.sidebar{width:260px;height:100vh;position:sticky;top:0;padding:3rem 2rem;display:flex;flex-direction:column;justify-content:space-between;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:10;transition:var(--transition)}.app.dark .sidebar{background:#14141999;border-right:1px solid rgba(255,255,255,.05)}.app:not(.dark) .sidebar{background:#ffffffb3;border-right:1px solid #eee}.sidebar nav{display:flex;flex-direction:column;gap:2.2rem}.sidebar a{font-size:1.15rem;font-weight:800;text-decoration:none;position:relative;transition:var(--transition)}.app.dark .sidebar a{color:#fff}.app:not(.dark) .sidebar a{color:#111}.sidebar a:before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:linear-gradient(90deg,var(--pink),var(--blue));opacity:0;transition:var(--transition)}.sidebar a:hover{transform:translate(8px)}.sidebar a:hover:before{opacity:1}.mode-toggle{padding:1rem 1.2rem;border-radius:40px;border:none;font-weight:800;cursor:pointer;font-size:.95rem;letter-spacing:.5px;transition:var(--transition)}.app.dark .mode-toggle{background:linear-gradient(90deg,var(--pink),var(--blue));color:#111;box-shadow:0 10px 25px #ff8ed666}.app:not(.dark) .mode-toggle{background:#111;color:#fff}.mode-toggle:hover{transform:scale(1.08)}.content{flex:1;padding:7rem 8rem;position:relative;z-index:5}.hero{display:flex;flex-direction:column;align-items:center;text-align:center}.hero h1{font-size:clamp(3rem,6vw,5rem);font-weight:900;letter-spacing:-3px;line-height:1;margin-bottom:2rem}.app.dark .hero h1{background:linear-gradient(90deg,var(--pink),var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.hero .about{font-size:1.4rem;max-width:700px;line-height:1.9;font-weight:500;opacity:.9;margin-top:1rem}.hero .location{margin-top:1.5rem;font-weight:700;letter-spacing:1px;color:var(--blue)}.section{margin-top:9rem;position:relative}.section h2{font-size:2.8rem;font-weight:900;margin-bottom:3.5rem;position:relative}.section h2:after{content:"";position:absolute;bottom:-12px;left:0;width:80px;height:5px;border-radius:4px;background:linear-gradient(90deg,var(--pink),var(--blue))}.card{position:relative;padding:3rem 2.5rem;border-radius:32px;margin-bottom:3rem;-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);transition:transform .35s ease,box-shadow .35s ease,background .35s;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:inset 0 0 15px #ffffff0d,0 6px 20px #0000000d;overflow:hidden}.card:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#7edbff0d,#ff8ed60d);z-index:0;pointer-events:none}.app.dark .card{background:linear-gradient(135deg,#1e1e28d9,#282832b3);border:1px solid rgba(255,255,255,.12)}.app:not(.dark) .card{background:linear-gradient(135deg,#fffffff2,#f5f5facc);border:1px solid #ddd}.card:hover{transform:translateY(-8px) scale(1.02);box-shadow:inset 0 0 15px #ffffff0d,0 12px 25px #0000001f}.card h3{position:relative;font-size:2rem;font-weight:900;margin-bottom:1.2rem;z-index:1;background:linear-gradient(90deg,var(--pink),var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.card h3:after{display:none}.card p{font-size:1.1rem;line-height:1.7;font-weight:600;opacity:.8;text-align:center;z-index:1}.card{border-image:linear-gradient(90deg,var(--pink),var(--blue)) 1}.experience-item{text-align:left;max-width:800px;margin:0 auto 3rem;padding:0;font-size:1.3rem;line-height:2;font-weight:600;color:var(--text-dark);position:relative;transition:transform .4s ease,color .4s ease}.app:not(.dark) .experience-item{color:var(--text-light)}.experience-item:hover h3{background:linear-gradient(90deg,var(--pink),var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent;transform:translate(5px)}.experience-item h3{font-size:2.2rem;font-weight:900;margin-bottom:.5rem}.experience-item .role{font-weight:700;font-size:1.1rem;color:var(--blue);margin-bottom:.8rem}.experience-item:hover{transform:translateY(-5px)}.card a.github-link{display:inline-flex;align-items:center;gap:.5rem;font-weight:600;color:inherit;text-decoration:none;transition:var(--transition)}.card a.github-link svg{width:20px;height:20px;fill:currentColor;transition:transform .3s ease,fill .3s ease}.card a.github-link:hover svg{transform:scale(1.2);fill:var(--pink)}.card a.github-link:hover{text-decoration:underline}.card a.live-link{display:inline-flex;align-items:center;gap:.4rem;margin-top:.5rem;padding:.55rem 1.1rem;border-radius:999px;font-weight:600;color:#0c0c10;text-decoration:none;background:linear-gradient(135deg,var(--pink),var(--blue));box-shadow:0 4px 18px #ff8ed659;transition:var(--transition)}.card a.live-link:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 6px 24px #7edbff73}.coming-soon-tag{display:inline-block;margin-left:.55rem;padding:.18rem .6rem;border-radius:999px;font-size:.65rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;vertical-align:middle;color:var(--blue);border:1px solid var(--blue);background:#7edbff14}.card .coming-soon-btn{display:inline-flex;align-items:center;margin-top:.5rem;padding:.5rem 1.1rem;border-radius:999px;font-weight:600;color:inherit;background:transparent;border:1px dashed currentColor;opacity:.6;cursor:default}@media(max-width:1000px){.sidebar{display:none}.content{padding:4rem 2rem}}.custom-cursor{position:fixed;transform:translate(-50%,-50%);pointer-events:none;font-size:22px;z-index:9999;transition:transform .15s ease,font-size .2s ease}.custom-cursor.cursor-hover{transform:translate(-50%,-50%) scale(1.4)}.experience-item.cursor-hover{cursor:none}.tech-grid{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:2.5rem;padding:1rem 0}.tech-card{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;border-radius:30px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .4s ease,box-shadow .4s ease,background .4s ease,border-color .4s ease;text-align:center;overflow:hidden;border:1px solid transparent}.tech-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,#7edbff40,#ff8ed640);opacity:0;transition:opacity .4s ease;pointer-events:none;z-index:0}.tech-card:hover:before{opacity:1}.tech-card img{width:64px;height:64px;object-fit:contain;margin-bottom:.8rem;z-index:1;transition:transform .4s ease}.tech-card:hover img{transform:translateY(-5px) scale(1.1)}.app.dark .tech-card img[alt=Vercel]{filter:invert(1)}.tech-card p{font-weight:700;font-size:1rem;color:var(--text-dark);z-index:1;transition:color .3s ease}.app.dark .tech-card{background:#14141e8c;border:1px solid rgba(255,255,255,.12)}.app:not(.dark) .tech-card{background:#ffffffe6;border:1px solid #ddd}.tech-card:hover{transform:translateY(-10px) scale(1.06);border-color:#7edbff66;box-shadow:0 15px 35px #00000040,0 0 20px #7edbff33,0 0 30px #ff8ed633}@media(max-width:768px){.tech-card img{width:56px;height:56px}.tech-card p{font-size:.9rem}}@media(max-width:480px){.tech-card{padding:1.5rem;border-radius:22px}}.tech-card.cursor-hover{cursor:none}#contact{display:flex;flex-direction:column;align-items:center;gap:2.5rem;background:linear-gradient(135deg,#7edbff40,#ff8ed640);box-shadow:0 15px 30px #00000040;border-radius:20px;padding:2rem}.project-images{display:flex;gap:1.5rem;margin-top:2rem;flex-wrap:wrap;justify-content:center;perspective:1500px}.project-img-wrapper{position:relative;border-radius:24px;overflow:hidden;cursor:pointer;width:280px;height:180px;transition:transform .5s ease,box-shadow .5s ease;transform-style:preserve-3d}.project-img-wrapper:before{content:"";position:absolute;inset:0;border-radius:24px;padding:2px;background:linear-gradient(135deg,var(--pink),var(--blue));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:destination-out;mask-composite:exclude;pointer-events:none;z-index:1}.project-img-wrapper .overlay{position:absolute;inset:0;background:#00000040;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:1.2rem;text-transform:uppercase;letter-spacing:1px;opacity:0;transition:opacity .35s ease;z-index:2;pointer-events:none}.project-img-wrapper img{width:100%;height:100%;object-fit:cover;border-radius:24px;transition:transform .5s ease,filter .5s ease;display:block;z-index:0}.project-img-wrapper:hover img{transform:scale(1.05) rotateX(4deg) rotateY(3deg);filter:brightness(1.1)}.project-img-wrapper:hover .overlay{opacity:1}.project-img-wrapper:hover{transform:translateY(-12px) rotateX(3deg) rotateY(3deg);box-shadow:0 20px 40px #00000040,0 0 25px #7edbff40,0 0 35px #ff8ed640}@media(max-width:1024px){.project-img-wrapper{width:220px;height:140px}}@media(max-width:600px){.project-img-wrapper{width:180px;height:120px}.project-img-wrapper .overlay{font-size:1rem}}.contact-container{display:flex;gap:1.5rem;justify-content:center;align-items:stretch;flex-wrap:wrap;margin-top:2rem;width:100%}.contact-link{position:relative;display:flex;align-items:center;gap:1.2rem;background:#ffffff0f;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px;padding:1.5rem 1.8rem;text-decoration:none;color:inherit;transition:transform .35s ease,box-shadow .35s ease,background .35s ease,border-color .35s ease;border:1px solid rgba(255,255,255,.12);cursor:pointer;min-width:280px;max-width:340px}.app:not(.dark) .contact-link{background:#fff9;border:1px solid rgba(0,0,0,.08)}.contact-icon{font-size:1.7rem;width:54px;height:54px;display:flex;align-items:center;justify-content:center;border-radius:16px;background:linear-gradient(135deg,#7edbff40,#ff8ed640);flex-shrink:0;transition:transform .4s ease}.contact-text p{font-weight:800;font-size:1.15rem;margin-bottom:.25rem;display:flex;align-items:center;flex-wrap:wrap}.contact-text>span{font-size:.95rem;opacity:.8;word-break:break-all}.contact-link:hover{transform:translateY(-10px) scale(1.04);box-shadow:0 15px 40px #00000040,0 0 25px #7edbff4d,0 0 35px #ff8ed64d;border-color:#7edbff66}.contact-link:hover .contact-icon{transform:rotate(-8deg) scale(1.12)}.contact-link.preferred{border:1px solid rgba(126,219,255,.5);background:linear-gradient(135deg,#7edbff29,#ff8ed629);box-shadow:0 0 22px #7edbff26}.preferred-badge{display:inline-block;margin-left:.5rem;padding:.14rem .55rem;border-radius:999px;font-size:.6rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#0c0c10;background:linear-gradient(135deg,var(--pink),var(--blue))}@media(max-width:768px){.contact-container{flex-direction:column;gap:1.5rem}.contact-link{min-width:unset;max-width:unset;width:85%;padding:1.3rem 1.6rem}.contact-icon{font-size:1.6rem;width:50px;height:50px}.contact-text p{font-size:1.1rem}}.cv-download-btn{position:fixed;bottom:2rem;right:2rem;width:40px;height:40px;background:linear-gradient(135deg,var(--pink),var(--blue));color:#fff;font-size:1.5rem;display:flex;align-items:center;justify-content:center;border-radius:8px;text-decoration:none;cursor:pointer;box-shadow:0 5px 15px #0003;transition:transform .2s ease,box-shadow .2s ease;z-index:50}.cv-download-btn:hover{transform:scale(1.1);box-shadow:0 8px 20px #0000004d}
