
/* =========== RESET & BASE =========== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

body{
  font-family:'Segoe UI','Inter',system-ui,-apple-system,sans-serif;
  background:#0f0f0f;
  color:#e8e8f0;
  line-height:1.6;
  overflow-x:hidden;
   /* cursor:none; */
  animation:pageLoad 1s ease-out both;
}
@keyframes pageLoad{
  from{opacity:0;transform:scale(.985)}
  to{opacity:1;transform:scale(1)}
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button,input,textarea{font:inherit;color:inherit}

/* =========== ANIMATED GRADIENT BG =========== */
.bg-gradient{
  position:fixed;inset:0;z-index:-3;
  background:linear-gradient(125deg,#0f0f0f,#15102a,#0f1a2e,#1a0f24,#0f0f0f);
  background-size:400% 400%;
  animation:bgShift 22s ease infinite;
}
@keyframes bgShift{
  0%{background-position:0% 50%}
  50%{background-position:100% 50%}
  100%{background-position:0% 50%}
}
.bg-orbs{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none}
.orb{
  position:absolute;border-radius:50%;filter:blur(80px);opacity:.35;
  animation:floatOrb 18s ease-in-out infinite;
}
.orb.o1{width:420px;height:420px;background:#7c3aed;top:-100px;left:-100px}
.orb.o2{width:380px;height:380px;background:#3b82f6;top:40%;right:-120px;animation-delay:-6s}
.orb.o3{width:340px;height:340px;background:#ec4899;bottom:-120px;left:30%;animation-delay:-12s}
@keyframes floatOrb{
  0%,100%{transform:translate(0,0) scale(1)}
  50%{transform:translate(40px,-30px) scale(1.08)}
}
#particles{position:fixed;inset:0;z-index:-1;pointer-events:none}

/* =========== CUSTOM CURSOR =========== */
/* .cursor-dot,.cursor-ring{
  position:fixed;top:0;left:0;pointer-events:none;z-index:9999;
  border-radius:50%;transform:translate(-50%,-50%);
}
.cursor-dot{width:8px;height:8px;background:#a78bfa;box-shadow:0 0 10px #a78bfa}
.cursor-ring{
  width:38px;height:38px;border:1.5px solid rgba(167,139,250,.6);
  transition:transform .15s ease,width .2s,height .2s,border-color .2s;
}
.cursor-ring.hover{width:60px;height:60px;border-color:#ec4899}
@media (max-width:768px){.cursor-dot,.cursor-ring{display:none}body{cursor:auto}} */

/* =========== TYPOGRAPHY =========== */
h1,h2,h3{font-weight:700;letter-spacing:-.02em;line-height:1.15}
.gradient-text{
  background:linear-gradient(90deg,#a78bfa,#60a5fa,#f472b6,#a78bfa);
  background-size:200% auto;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:shine 5s linear infinite;
}
@keyframes shine{to{background-position:200% center}}

/* =========== NAVBAR =========== */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  padding:18px 6%;
  display:flex;align-items:center;justify-content:space-between;
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  background:rgba(15,15,15,.55);
  border-bottom:1px solid rgba(255,255,255,.06);
  transition:padding .3s;
}
.nav.scrolled{padding:12px 6%;background:rgba(15,15,15,.78)}
.logo{
  font-weight:800;font-size:1.25rem;letter-spacing:.5px;
}
.nav-links{display:flex;gap:32px;list-style:none}
.nav-links a{
  position:relative;font-size:.95rem;color:#cbd0e0;transition:color .3s;
}
.nav-links a::after{
  content:'';position:absolute;left:0;bottom:-6px;width:100%;height:2px;
  background:linear-gradient(90deg,#a78bfa,#ec4899);
  transform:scaleX(0);transform-origin:right;transition:transform .35s ease;
}
.nav-links a:hover{color:#fff}
.nav-links a:hover::after{transform:scaleX(1);transform-origin:left}
.burger{display:none;width:32px;height:32px;flex-direction:column;justify-content:center;gap:6px;background:none;border:0;cursor:pointer}
.burger span{display:block;width:26px;height:2px;background:#e8e8f0;transition:.3s}
.burger.open span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.burger.open span:nth-child(2){opacity:0}
.burger.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}

/* =========== LAYOUT =========== */
section{padding:120px 6% 100px;position:relative}
.container{max-width:1200px;margin:0 auto}
.section-title{
  font-size:clamp(2rem,4vw,2.75rem);
  text-align:center;margin-bottom:14px;
}
.section-sub{text-align:center;color:#9aa0b4;max-width:640px;margin:0 auto 60px;font-size:1rem}

/* =========== HERO =========== */
.hero{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  text-align:center;padding-top:140px;
}
.hero-inner{max-width:900px;animation:floatY 6s ease-in-out infinite}
@keyframes floatY{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-12px)}
}
.hero h1{
  font-size:clamp(2.5rem,6.5vw,5rem);
  margin-bottom:18px;
  text-shadow:0 0 40px rgba(167,139,250,.25);
}
.hero .subtitle{
  font-size:clamp(1rem,2vw,1.2rem);color:#b8bdd0;margin-bottom:28px;
  font-weight:500;
}
.typing-wrap{
  font-size:clamp(1.05rem,2.2vw,1.4rem);
  color:#e8e8f0;font-weight:600;min-height:2em;margin-bottom:42px;
}
.typing-text{
  background:linear-gradient(90deg,#a78bfa,#60a5fa,#f472b6);
  -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;
}
.caret{display:inline-block;width:3px;height:1em;background:#a78bfa;vertical-align:-3px;margin-left:4px;animation:blink 1s step-end infinite;box-shadow:0 0 8px #a78bfa}
@keyframes blink{50%{opacity:0}}
.btn-row{display:flex;gap:18px;justify-content:center;flex-wrap:wrap}
.btn{
  position:relative;padding:14px 32px;border-radius:50px;border:0;cursor:pointer;
  font-weight:600;font-size:.98rem;letter-spacing:.3px;
  transition:transform .3s ease,box-shadow .3s ease;
  overflow:hidden;
}
.btn-primary{
  background:linear-gradient(90deg,#7c3aed,#3b82f6,#ec4899);
  background-size:200% 100%;color:#fff;
  box-shadow:0 0 25px rgba(124,58,237,.45);
  animation:btnPulse 3s ease-in-out infinite;
}
@keyframes btnPulse{
  0%,100%{box-shadow:0 0 22px rgba(124,58,237,.4)}
  50%{box-shadow:0 0 38px rgba(236,72,153,.55)}
}
.btn-primary:hover{transform:translateY(-3px) scale(1.04);background-position:100% 0;box-shadow:0 0 45px rgba(236,72,153,.6)}
.btn-ghost{
  background:rgba(255,255,255,.04);color:#e8e8f0;
  border:1px solid rgba(167,139,250,.4);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.btn-ghost:hover{transform:translateY(-3px) scale(1.04);border-color:#ec4899;box-shadow:0 0 25px rgba(236,72,153,.35)}

/* =========== WAVE DIVIDER =========== */
.wave{display:block;width:100%;height:80px;margin-top:-1px}

/* =========== ABOUT =========== */
.about-grid{
  display:grid;grid-template-columns:1fr 1.4fr;gap:60px;align-items:center;
}
.about-img-wrap{
  position:relative;justify-self:center;
  width:280px;height:280px;border-radius:50%;
  padding:4px;
  background:linear-gradient(135deg,#a78bfa,#60a5fa,#ec4899);
  background-size:200% 200%;
  animation:borderFlow 6s linear infinite;
  box-shadow:0 0 50px rgba(124,58,237,.4);
  transition:transform .4s;
}
/* soft premium "fire" aura — conic gradient that orbits the frame */
.about-img-wrap::before,
.about-img-wrap::after{
  content:'';position:absolute;inset:-14px;border-radius:50%;
  background:conic-gradient(from 0deg,
    rgba(255,170,80,0) 0%,
    rgba(255,170,80,.55) 12%,
    rgba(236,72,153,.55) 28%,
    rgba(167,139,250,.55) 48%,
    rgba(96,165,250,.45) 65%,
    rgba(255,170,80,.55) 85%,
    rgba(255,170,80,0) 100%);
  filter:blur(18px);
  opacity:0;transition:opacity .6s ease;
  z-index:-1;pointer-events:none;
  animation:fireSpin 7s linear infinite;
}
.about-img-wrap::after{
  inset:-22px;filter:blur(28px);
  animation-duration:11s;animation-direction:reverse;
}
.about-img-wrap:hover{
  transform:scale(1.06);
  box-shadow:0 0 80px rgba(255,140,80,.45),0 0 140px rgba(236,72,153,.35),0 0 60px rgba(167,139,250,.4);
}
.about-img-wrap:hover::before{opacity:.95}
.about-img-wrap:hover::after{opacity:.7}
@keyframes borderFlow{to{background-position:220% 0}}
@keyframes fireSpin{to{transform:rotate(360deg)}}
.about-img{
  width:100%;height:100%;border-radius:50%;
  background:#0f1428;
  overflow:hidden;display:block;
  box-shadow:inset 0 0 30px rgba(0,0,0,.55);
}
.about-img img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s ease, filter .6s ease;
}
.about-img-wrap:hover .about-img img{
  transform:scale(1.08);
  filter:saturate(1.15) brightness(1.05);
}
.about-text p{color:#c5c9d8;margin-bottom:16px;font-size:1.02rem}
.about-text p strong{color:#fff;font-weight:600}


/* =========== SKILLS =========== */
.skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px}
.skill-group h3{
  font-size:1.3rem;margin-bottom:24px;color:#fff;
  display:flex;align-items:center;gap:10px;
}
.skill-group h3::before{
  content:'';width:6px;height:24px;border-radius:3px;
  background:linear-gradient(180deg,#a78bfa,#ec4899);
}
.skill{margin-bottom:20px}
.skill-head{display:flex;justify-content:space-between;margin-bottom:8px;font-size:.92rem;color:#cbd0e0}
.bar{
  position:relative;height:10px;border-radius:5px;
  background:rgba(255,255,255,.06);overflow:hidden;
  border:1px solid rgba(255,255,255,.05);
}
.bar-fill{
  position:relative;height:100%;width:0;border-radius:5px;
  background:linear-gradient(90deg,#7c3aed,#3b82f6,#ec4899);
  box-shadow:0 0 12px rgba(124,58,237,.6);
  transition:width 1.6s cubic-bezier(.2,.8,.2,1);
  overflow:hidden;
}
.bar-fill::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);
  transform:translateX(-100%);
  animation:stripe 2.4s linear infinite;
}
@keyframes stripe{to{transform:translateX(100%)}}

/* =========== PROJECTS =========== */
.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:28px}
.card{
  position:relative;padding:28px;border-radius:18px;
  background:rgba(255,255,255,.035);
  border:1px solid rgba(255,255,255,.07);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  transition:transform .35s ease,box-shadow .35s ease,border-color .35s;
  transform-style:preserve-3d;
  overflow:hidden;
}
.card::before{
  content:'';position:absolute;inset:-1px;border-radius:18px;padding:1px;
  background:linear-gradient(135deg,rgba(167,139,250,.6),rgba(236,72,153,.6),rgba(96,165,250,.6));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  opacity:0;transition:opacity .4s;pointer-events:none;
}
.card:hover{transform:translateY(-10px);box-shadow:0 20px 50px rgba(124,58,237,.35)}
.card:hover::before{opacity:1}
.card h3{font-size:1.2rem;margin-bottom:10px;color:#fff}
.card p{color:#a8aec2;font-size:.93rem;margin-bottom:16px;min-height:70px}
.tech-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.tag{
  font-size:.72rem;padding:5px 11px;border-radius:50px;
  background:rgba(167,139,250,.12);color:#c4b5fd;
  border:1px solid rgba(167,139,250,.25);
}
.card-actions{display:flex;gap:10px}
.mini-btn{
  flex:1;text-align:center;padding:10px;border-radius:10px;font-size:.85rem;font-weight:600;
  transition:.3s;
}
.mini-btn.gh{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#e8e8f0}
.mini-btn.gh:hover{background:rgba(255,255,255,.12);transform:translateY(-2px)}
.mini-btn.live{
  background:linear-gradient(90deg,#7c3aed,#ec4899);color:#fff;
  box-shadow:0 0 18px rgba(236,72,153,.35);
}
.mini-btn.live:hover{transform:translateY(-2px);box-shadow:0 0 28px rgba(236,72,153,.55)}

/* =========== VISION =========== */
.vision{position:relative;text-align:center}
.vision::before{
  content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:600px;height:600px;border-radius:50%;
  background:radial-gradient(circle,rgba(124,58,237,.2),transparent 65%);
  animation:pulseGlow 6s ease-in-out infinite;z-index:-1;
}
@keyframes pulseGlow{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.6}50%{transform:translate(-50%,-50%) scale(1.15);opacity:1}}
.vision-text{max-width:780px;margin:0 auto;color:#c5c9d8;font-size:1.08rem;line-height:1.8}
.vision-text p{margin-bottom:18px}

/* =========== CONTACT =========== */
.contact-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:50px;align-items:start}
.contact-info p{color:#b0b5c8;margin-bottom:18px}
.contact-info a.email{
  display:inline-block;font-weight:600;color:#fff;
  background:linear-gradient(90deg,#a78bfa,#ec4899);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  border-bottom:1px solid rgba(167,139,250,.4);padding-bottom:2px;
}
.socials{display:flex;gap:14px;margin-top:24px}
.social{
  width:46px;height:46px;border-radius:12px;
  display:grid;place-items:center;position:relative;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);
  transition:.3s;color:#cbd0e0;
}
.social:hover{transform:translateY(-4px);background:linear-gradient(135deg,#7c3aed,#ec4899);color:#fff;box-shadow:0 0 20px rgba(124,58,237,.5);border-color:transparent}
.social.soon{cursor:not-allowed;opacity:.75}
.social.soon::after{
  content:'Coming Soon';position:absolute;bottom:-30px;left:50%;
  transform:translateX(-50%) translateY(-4px);
  background:rgba(15,15,25,.95);color:#fff;font-size:.7rem;
  padding:4px 8px;border-radius:6px;white-space:nowrap;
  border:1px solid rgba(236,72,153,.4);
  opacity:0;pointer-events:none;transition:.25s;
}
.social.soon:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}
.contact-form{
  padding:32px;border-radius:18px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
}
.field{margin-bottom:18px;position:relative}
.field input,.field textarea{
  width:100%;padding:14px 16px;border-radius:10px;
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.1);
  outline:none;color:#fff;transition:.3s;font-size:.95rem;
  resize:vertical;
}
.field textarea{min-height:130px}
.field input:focus,.field textarea:focus{
  border-color:#a78bfa;
  box-shadow:0 0 0 3px rgba(167,139,250,.18),0 0 22px rgba(124,58,237,.25);
  background:rgba(255,255,255,.05);
}
.field .err{color:#f87171;font-size:.78rem;margin-top:6px;display:none}
.field.invalid input,.field.invalid textarea{border-color:#f87171}
.field.invalid .err{display:block}
.form-success{
  margin-top:14px;padding:12px 16px;border-radius:10px;
  background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.35);
  color:#86efac;font-size:.9rem;display:none;
  animation:fadeUp .5s ease both;
}
.form-success.show{display:block}
.form-status{
  margin-top:14px;padding:12px 16px;border-radius:10px;
  font-size:.9rem;display:none;animation:fadeUp .45s ease both;
}
.form-status.show{display:block}
.form-status.ok{background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.4);color:#86efac;box-shadow:0 0 24px rgba(74,222,128,.25)}
.form-status.err{background:rgba(248,113,113,.08);border:1px solid rgba(248,113,113,.4);color:#fca5a5}
.contact-form.success{box-shadow:0 0 0 1px rgba(74,222,128,.45),0 0 40px rgba(74,222,128,.35);border-color:rgba(74,222,128,.4);transition:box-shadow .5s, border-color .5s}
@keyframes shake{
  10%,90%{transform:translateX(-2px)}
  20%,80%{transform:translateX(4px)}
  30%,50%,70%{transform:translateX(-8px)}
  40%,60%{transform:translateX(8px)}
}
.contact-form.shake{animation:shake .55s cubic-bezier(.36,.07,.19,.97) both}
.field .err{animation:fadeUp .3s ease both}
.btn[disabled]{opacity:.75;cursor:not-allowed}
.spinner{
  width:16px;height:16px;border-radius:50%;
  border:2px solid rgba(255,255,255,.35);border-top-color:#fff;
  display:inline-block;vertical-align:-3px;margin-right:8px;
  animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}


/* =========== FOOTER =========== */
footer{
  position:relative;text-align:center;padding:36px 6%;
  color:#8a90a4;font-size:.88rem;
  border-top:1px solid rgba(255,255,255,.06);
}
footer::before{
  content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:60%;height:1px;
  background:linear-gradient(90deg,transparent,#a78bfa,#ec4899,transparent);
  box-shadow:0 0 12px rgba(167,139,250,.5);
}

/* =========== REVEAL ANIMATION =========== */
.reveal{opacity:0;transform:translateY(40px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:translateY(0)}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

/* =========== RESPONSIVE =========== */
@media (max-width:900px){
  .about-grid,.contact-grid,.skills-grid{grid-template-columns:1fr;gap:40px}
  .about-img-wrap{width:220px;height:220px}
}
@media (max-width:768px){
  section{padding:90px 5% 70px}
  .nav-links{
    position:fixed;top:0;right:-100%;width:75%;height:100vh;
    background:rgba(15,15,15,.96);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);
    flex-direction:column;justify-content:center;align-items:center;gap:30px;
    transition:right .4s cubic-bezier(.7,0,.3,1);
    border-left:1px solid rgba(255,255,255,.08);
  }
  .nav-links.open{right:0}
  .nav-links a{font-size:1.15rem}
  .burger{display:flex}
}
