.cursor-dot,
.cursor-ring{
  position:fixed;
  top:0;
  left:0;
  z-index:100;
  pointer-events:none;
  transform:translate(-50%,-50%);
}
.cursor-dot{
  width:7px;
  height:7px;
  background:var(--cyan);
  box-shadow:0 0 18px var(--cyan),0 0 34px var(--cyan);
  mix-blend-mode:screen;
}
.cursor-ring{
  width:34px;
  height:34px;
  border:1px solid rgba(4,234,255,.72);
  box-shadow:0 0 18px rgba(4,234,255,.28);
  mix-blend-mode:exclusion;
  transition:width .22s ease,height .22s ease,border-color .22s ease,background .22s ease,box-shadow .22s ease,border-radius .22s ease;
}
.cursor-ring.is-hovering{
  width:54px;
  height:54px;
  border-color:var(--magenta);
  background:rgba(217,0,255,.08);
  box-shadow:0 0 26px rgba(217,0,255,.45);
}
.cursor-ring.cursor-nav{
  width:46px;
  height:46px;
  border-width:1px;
  border-color:rgba(125,247,255,.9);
  background:rgba(4,234,255,.04);
}
.cursor-ring.cursor-project{
  width:74px;
  height:74px;
  border-color:var(--green);
  border-radius:4px;
  background:
    linear-gradient(transparent 48%,rgba(57,255,106,.22) 50%,transparent 52%),
    rgba(57,255,106,.04);
  box-shadow:0 0 32px rgba(57,255,106,.42);
}
.cursor-ring.cursor-project::after{
  content:"SCAN";
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  color:var(--green);
  font-family:var(--font-tech);
  font-size:8px;
  letter-spacing:.12em;
  transform:scale(.9);
}
.cursor-ring.cursor-contact{
  width:58px;
  height:58px;
  border-color:var(--magenta);
  background:rgba(217,0,255,.12);
  box-shadow:0 0 32px rgba(217,0,255,.5);
}
.cursor-ripple{
  position:fixed;
  z-index:99;
  width:20px;
  height:20px;
  pointer-events:none;
  border:1px solid var(--cyan);
  box-shadow:0 0 24px rgba(4,234,255,.55);
  transform:translate(-50%,-50%) scale(.4);
  animation:cursor-ripple .62s ease-out forwards;
  mix-blend-mode:screen;
}

.hero-section::before{
  content:"";
  position:absolute;
  inset:8vh 8vw auto auto;
  width:2px;
  height:2px;
  border-radius:50%;
  background:rgba(125,247,255,.38);
  box-shadow:
    -52vw 8vh 0 rgba(4,234,255,.22),
    -38vw 42vh 0 rgba(217,0,255,.18),
    -18vw 18vh 0 rgba(57,255,106,.2),
    -6vw 56vh 0 rgba(125,247,255,.2),
    -70vw 62vh 0 rgba(217,0,255,.16);
  animation:particle-drift 9s linear infinite;
  pointer-events:none;
}

.reveal{
  opacity:0;
  transform:translateY(34px);
  filter:blur(8px);
  transition:opacity .72s ease,transform .72s ease,filter .72s ease;
}
.reveal-up{
  transform:translateY(-34px);
}
.reveal.is-visible{
  opacity:1;
  transform:translateY(0);
  filter:blur(0);
}
.reveal-up.is-visible{
  transform:translateY(0);
}
.project-card.reveal,
.skill-card.reveal,
.timeline-item.reveal,
.education-grid .reveal{
  transition-delay:var(--delay,0ms);
}

.glitch-title{
  position:relative;
  animation:soft-flicker 4s infinite steps(2,end);
}
.glitch-title::before,
.glitch-title::after{
  content:attr(data-text);
  position:absolute;
  left:0;
  top:0;
  width:100%;
  overflow:hidden;
  opacity:.34;
  pointer-events:none;
}
.glitch-title::before{
  color:var(--magenta);
  transform:translate(2px,-1px);
  clip-path:polygon(0 0,100% 0,100% 38%,0 38%);
  animation:glitch-top 2.8s infinite linear alternate-reverse;
}
.glitch-title::after{
  color:var(--cyan);
  transform:translate(-2px,1px);
  clip-path:polygon(0 62%,100% 62%,100% 100%,0 100%);
  animation:glitch-bottom 3.2s infinite linear alternate-reverse;
}

.scan-beam{
  animation:scan-project 2.8s ease-in-out infinite;
}
.avatar-grid span{
  animation:grid-pulse 2.2s ease-in-out infinite;
  animation-delay:calc(var(--i,1) * 90ms);
}
.avatar-grid span:nth-child(1){--i:1;}
.avatar-grid span:nth-child(2){--i:2;}
.avatar-grid span:nth-child(3){--i:3;}
.avatar-grid span:nth-child(4){--i:4;}
.avatar-grid span:nth-child(5){--i:5;}
.avatar-grid span:nth-child(6){--i:6;}
.avatar-grid span:nth-child(7){--i:7;}
.avatar-grid span:nth-child(8){--i:8;}
.avatar-grid span:nth-child(9){--i:9;}
.avatar-grid span:nth-child(10){--i:10;}
.avatar-grid span:nth-child(11){--i:11;}
.avatar-grid span:nth-child(12){--i:12;}

.box-one{animation:target-jitter 2s infinite steps(2,end);}
.box-two{animation:target-jitter 2.4s infinite steps(2,end) reverse;}
.data-line{animation:data-pulse 1.8s ease-in-out infinite;}
.line-two{animation-delay:.18s;}
.line-three{animation-delay:.36s;}
.road-line{animation:road-flow 3.8s linear infinite;}

.spaceship{
  position:absolute;
  top:0;
  left:0;
  width:80px;
  height:52px;
  pointer-events:none;
  opacity:0;
  z-index:5;
  transform:translate3d(-24vw,-6vh,0) rotate(12deg) scale(.62);
  will-change:transform,opacity;
}
.spaceship__body,
.spaceship__flash,
.spaceship__ring,
.spaceship__glow,
.spaceship__particle{
  position:absolute;
}
.spaceship__body{
  left:20px;
  top:16px;
  width:32px;
  height:11px;
  border-radius:10px 16px 10px 8px;
  background:linear-gradient(92deg,rgba(125,247,255,.2),rgba(125,247,255,.95) 45%,rgba(217,0,255,.95));
  box-shadow:0 0 12px rgba(4,234,255,.5),0 0 24px rgba(217,0,255,.28);
}
.spaceship__body::before,
.spaceship__body::after{
  content:"";
  position:absolute;
  top:50%;
  transform:translateY(-50%);
}
.spaceship__body::before{
  left:-8px;
  width:0;
  height:0;
  border-top:6px solid transparent;
  border-bottom:6px solid transparent;
  border-right:10px solid rgba(125,247,255,.95);
  filter:drop-shadow(0 0 6px rgba(4,234,255,.72));
}
.spaceship__body::after{
  right:-9px;
  width:11px;
  height:4px;
  border-radius:0 9px 9px 0;
  background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(57,255,106,.95));
  box-shadow:0 0 10px rgba(57,255,106,.72);
}
.spaceship__flash,
.spaceship__ring,
.spaceship__glow,
.spaceship__particle{
  left:36px;
  top:22px;
  opacity:0;
  transform:translate3d(-50%,-50%,0) scale(.2);
}
.spaceship__flash{
  width:24px;
  height:24px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,1) 0 24%,rgba(248,255,255,.98) 36%,rgba(125,247,255,.84) 58%,rgba(217,0,255,.56) 76%,transparent 100%);
  box-shadow:0 0 34px rgba(255,255,255,.88),0 0 52px rgba(125,247,255,.74),0 0 72px rgba(217,0,255,.4);
}
.spaceship__ring{
  width:20px;
  height:20px;
  border-radius:50%;
  border:2px solid rgba(125,247,255,.92);
  box-shadow:0 0 12px rgba(125,247,255,.95),0 0 22px rgba(217,0,255,.48);
}
.spaceship__glow{
  width:170px;
  height:170px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.34) 0,rgba(125,247,255,.28) 24%,rgba(125,247,255,.14) 48%,rgba(217,0,255,.15) 66%,transparent 84%);
  filter:blur(4px);
  box-shadow:0 0 90px rgba(125,247,255,.34),0 0 140px rgba(217,0,255,.22);
}
.spaceship__particle{
  width:8px;
  height:8px;
  border-radius:50%;
  background:var(--cyan-soft);
  box-shadow:0 0 14px rgba(125,247,255,.95),0 0 22px rgba(4,234,255,.72);
}
.spaceship__particle--2{background:#ffffff;box-shadow:0 0 14px rgba(255,255,255,.92),0 0 20px rgba(125,247,255,.5);}
.spaceship__particle--3{background:var(--magenta);box-shadow:0 0 14px rgba(217,0,255,.9),0 0 20px rgba(217,0,255,.5);}
.spaceship__particle--4{background:var(--green);box-shadow:0 0 14px rgba(57,255,106,.84),0 0 20px rgba(57,255,106,.44);}
.spaceship__particle--5{background:var(--cyan);box-shadow:0 0 14px rgba(4,234,255,.94),0 0 22px rgba(4,234,255,.52);}
.spaceship__particle--6{background:var(--cyan-soft);box-shadow:0 0 14px rgba(125,247,255,.95),0 0 22px rgba(125,247,255,.52);}
.spaceship__particle--7{background:var(--magenta);box-shadow:0 0 14px rgba(217,0,255,.94),0 0 22px rgba(125,247,255,.42);}

.spaceship-1{
  animation:spaceship-flight-1 18s linear infinite;
}
.spaceship-1 .spaceship__flash{animation:spaceship-flash 18s linear infinite;}
.spaceship-1 .spaceship__ring{animation:spaceship-ring 18s linear infinite;}
.spaceship-1 .spaceship__glow{animation:spaceship-glow 18s linear infinite;}
.spaceship-1 .spaceship__particle--1{animation:spaceship-particle-1 18s linear infinite;}
.spaceship-1 .spaceship__particle--2{animation:spaceship-particle-2 18s linear infinite;}
.spaceship-1 .spaceship__particle--3{animation:spaceship-particle-3 18s linear infinite;}
.spaceship-1 .spaceship__particle--4{animation:spaceship-particle-4 18s linear infinite;}
.spaceship-1 .spaceship__particle--5{animation:spaceship-particle-5 18s linear infinite;}
.spaceship-1 .spaceship__particle--6{animation:spaceship-particle-6 18s linear infinite;}
.spaceship-1 .spaceship__particle--7{animation:spaceship-particle-7 18s linear infinite;}

.spaceship-2{
  animation:spaceship-flight-2 24s linear infinite 8s;
}
.spaceship-2 .spaceship__flash{animation:spaceship-flash 24s linear infinite 8s;}
.spaceship-2 .spaceship__ring{animation:spaceship-ring 24s linear infinite 8s;}
.spaceship-2 .spaceship__glow{animation:spaceship-glow 24s linear infinite 8s;}
.spaceship-2 .spaceship__particle--1{animation:spaceship-particle-1 24s linear infinite 8s;}
.spaceship-2 .spaceship__particle--2{animation:spaceship-particle-2 24s linear infinite 8s;}
.spaceship-2 .spaceship__particle--3{animation:spaceship-particle-3 24s linear infinite 8s;}
.spaceship-2 .spaceship__particle--4{animation:spaceship-particle-4 24s linear infinite 8s;}
.spaceship-2 .spaceship__particle--5{animation:spaceship-particle-5 24s linear infinite 8s;}
.spaceship-2 .spaceship__particle--6{animation:spaceship-particle-6 24s linear infinite 8s;}
.spaceship-2 .spaceship__particle--7{animation:spaceship-particle-7 24s linear infinite 8s;}

.spaceship-3{
  animation:spaceship-flight-3 30s linear infinite 16s;
}
.spaceship-3 .spaceship__flash{animation:spaceship-flash 30s linear infinite 16s;}
.spaceship-3 .spaceship__ring{animation:spaceship-ring 30s linear infinite 16s;}
.spaceship-3 .spaceship__glow{animation:spaceship-glow 30s linear infinite 16s;}
.spaceship-3 .spaceship__particle--1{animation:spaceship-particle-1 30s linear infinite 16s;}
.spaceship-3 .spaceship__particle--2{animation:spaceship-particle-2 30s linear infinite 16s;}
.spaceship-3 .spaceship__particle--3{animation:spaceship-particle-3 30s linear infinite 16s;}
.spaceship-3 .spaceship__particle--4{animation:spaceship-particle-4 30s linear infinite 16s;}
.spaceship-3 .spaceship__particle--5{animation:spaceship-particle-5 30s linear infinite 16s;}
.spaceship-3 .spaceship__particle--6{animation:spaceship-particle-6 30s linear infinite 16s;}
.spaceship-3 .spaceship__particle--7{animation:spaceship-particle-7 30s linear infinite 16s;}

@keyframes cursor-ripple{
  0%{opacity:.9;transform:translate(-50%,-50%) scale(.4);}
  100%{opacity:0;transform:translate(-50%,-50%) scale(4.2);}
}
@keyframes particle-drift{
  0%{opacity:.18;transform:translateY(16px);}
  50%{opacity:.55;}
  100%{opacity:.18;transform:translateY(-34px);}
}
@keyframes moon-pulse{
  0%,100%{box-shadow:0 0 62px rgba(4,234,255,.18),0 0 110px rgba(217,0,255,.08);}
  50%{box-shadow:0 0 84px rgba(4,234,255,.32),0 0 136px rgba(217,0,255,.16);}
}
@keyframes window-flicker{
  0%,16%,100%{opacity:.18;}
  18%,62%{opacity:.86;}
  64%,72%{opacity:.38;}
  74%{opacity:1;}
}
@keyframes scan-orbit{
  0%{transform:rotate(0deg) scale(.96);}
  50%{transform:rotate(180deg) scale(1.02);}
  100%{transform:rotate(360deg) scale(.96);}
}
@keyframes status-blink{
  0%,82%,100%{opacity:1;}
  84%{opacity:.38;}
  88%{opacity:1;}
}
@keyframes soft-flicker{
  0%,92%,100%{opacity:1;}
  93%{opacity:.74;}
  94%{opacity:1;}
  96%{opacity:.88;}
}
@keyframes glitch-top{
  0%{transform:translate(2px,-1px);}
  20%{transform:translate(5px,-2px);}
  22%{transform:translate(-4px,1px);}
  24%,100%{transform:translate(2px,-1px);}
}
@keyframes glitch-bottom{
  0%{transform:translate(-2px,1px);}
  28%{transform:translate(-5px,2px);}
  30%{transform:translate(4px,-1px);}
  32%,100%{transform:translate(-2px,1px);}
}
@keyframes scan-project{
  0%{top:8%;opacity:0;}
  12%{opacity:1;}
  54%{top:88%;opacity:1;}
  70%,100%{top:8%;opacity:0;}
}
@keyframes grid-pulse{
  0%,100%{opacity:.46;transform:scale(1);}
  50%{opacity:1;transform:scale(.92);}
}
@keyframes target-jitter{
  0%,100%{transform:translate(0,0);}
  50%{transform:translate(3px,-2px);}
}
@keyframes data-pulse{
  0%,100%{opacity:.4;transform:scaleX(.76);transform-origin:right;}
  50%{opacity:1;transform:scaleX(1);}
}
@keyframes road-flow{
  0%{transform:translateX(-12%);opacity:.45;}
  50%{opacity:1;}
  100%{transform:translateX(12%);opacity:.45;}
}
@keyframes spaceship-flight-1{
  0%,58%{opacity:0;transform:translate3d(-22vw,-4vh,0) rotate(18deg) scale(.7);}
  63%{opacity:.55;}
  74%{opacity:1;transform:translate3d(22vw,8vh,0) rotate(8deg) scale(.74);}
  84%{opacity:1;transform:translate3d(55vw,20vh,0) rotate(-6deg) scale(.78);}
  90%{opacity:1;transform:translate3d(72vw,30vh,0) rotate(18deg) scale(.82);}
  92%{opacity:.25;transform:translate3d(74vw,32vh,0) rotate(30deg) scale(.24);}
  100%{opacity:0;transform:translate3d(76vw,34vh,0) rotate(30deg) scale(.2);}
}
@keyframes spaceship-flight-2{
  0%,56%{opacity:0;transform:translate3d(112vw,-3vh,0) rotate(-18deg) scale(.56);}
  62%{opacity:.5;}
  74%{opacity:1;transform:translate3d(86vw,9vh,0) rotate(-6deg) scale(.6);}
  84%{opacity:1;transform:translate3d(58vw,19vh,0) rotate(6deg) scale(.64);}
  91%{opacity:1;transform:translate3d(34vw,30vh,0) rotate(20deg) scale(.68);}
  94%{opacity:.25;transform:translate3d(31vw,32vh,0) rotate(34deg) scale(.22);}
  100%{opacity:0;transform:translate3d(28vw,34vh,0) rotate(34deg) scale(.18);}
}
@keyframes spaceship-flight-3{
  0%,58%{opacity:0;transform:translate3d(46vw,-26vh,0) rotate(86deg) scale(.48);}
  64%{opacity:.52;}
  76%{opacity:1;transform:translate3d(44vw,-2vh,0) rotate(54deg) scale(.52);}
  86%{opacity:1;transform:translate3d(39vw,15vh,0) rotate(20deg) scale(.56);}
  91%{opacity:1;transform:translate3d(36vw,27vh,0) rotate(8deg) scale(.6);}
  94%{opacity:.24;transform:translate3d(35vw,30vh,0) rotate(20deg) scale(.2);}
  100%{opacity:0;transform:translate3d(34vw,32vh,0) rotate(20deg) scale(.16);}
}
@keyframes spaceship-flash{
  0%,90.8%{opacity:0;transform:translate3d(-50%,-50%,0) scale(.08);}
  91.45%{opacity:1;transform:translate3d(-50%,-50%,0) scale(1.35);}
  93.2%{opacity:.72;transform:translate3d(-50%,-50%,0) scale(3.8);}
  94.4%{opacity:.28;transform:translate3d(-50%,-50%,0) scale(4.8);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) scale(5.4);}
}
@keyframes spaceship-ring{
  0%,91%{opacity:0;transform:translate3d(-50%,-50%,0) scale(.06);}
  91.8%{opacity:.95;transform:translate3d(-50%,-50%,0) scale(.7);}
  94.2%{opacity:.5;transform:translate3d(-50%,-50%,0) scale(4.8);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) scale(6.2);}
}
@keyframes spaceship-glow{
  0%,90.6%{opacity:0;transform:translate3d(-50%,-50%,0) scale(.24);}
  91.8%{opacity:.82;transform:translate3d(-50%,-50%,0) scale(.9);}
  94.4%{opacity:.42;transform:translate3d(-50%,-50%,0) scale(2.1);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) scale(2.9);}
}
@keyframes spaceship-particle-1{
  0%,90.9%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,0,0) scale(.2);}
  92%{opacity:1;transform:translate3d(-50%,-50%,0) translate3d(-12px,-9px,0) scale(1.05);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(-50px,-30px,0) scale(.24);}
}
@keyframes spaceship-particle-2{
  0%,90.9%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,0,0) scale(.2);}
  92%{opacity:1;transform:translate3d(-50%,-50%,0) translate3d(14px,-11px,0) scale(1.05);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(54px,-34px,0) scale(.24);}
}
@keyframes spaceship-particle-3{
  0%,90.9%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,0,0) scale(.2);}
  92%{opacity:.96;transform:translate3d(-50%,-50%,0) translate3d(-5px,10px,0) scale(1.05);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(-20px,50px,0) scale(.24);}
}
@keyframes spaceship-particle-4{
  0%,90.9%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,0,0) scale(.2);}
  92%{opacity:.96;transform:translate3d(-50%,-50%,0) translate3d(10px,10px,0) scale(1.05);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(38px,44px,0) scale(.24);}
}
@keyframes spaceship-particle-5{
  0%,90.9%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,0,0) scale(.2);}
  92%{opacity:.96;transform:translate3d(-50%,-50%,0) translate3d(0,-12px,0) scale(1.05);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,-54px,0) scale(.24);}
}
@keyframes spaceship-particle-6{
  0%,90.9%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,0,0) scale(.2);}
  92%{opacity:.94;transform:translate3d(-50%,-50%,0) translate3d(-10px,2px,0) scale(1.02);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(-58px,10px,0) scale(.24);}
}
@keyframes spaceship-particle-7{
  0%,90.9%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(0,0,0) scale(.2);}
  92%{opacity:.94;transform:translate3d(-50%,-50%,0) translate3d(12px,2px,0) scale(1.02);}
  94.8%,100%{opacity:0;transform:translate3d(-50%,-50%,0) translate3d(60px,12px,0) scale(.24);}
}
@keyframes sky-drift-pass{
  0%,12%{opacity:0;transform:translate3d(-14vw,0,0) scale(.72);}
  18%{opacity:.18;}
  28%{opacity:.7;transform:translate3d(16vw,-1vh,0) scale(.74);}
  50%{opacity:.9;transform:translate3d(50vw,1vh,0) scale(.76);}
  68%{opacity:.72;transform:translate3d(74vw,-1vh,0) scale(.73);}
  80%{opacity:.08;transform:translate3d(102vw,0,0) scale(.7);}
  100%{opacity:0;transform:translate3d(108vw,0,0) scale(.68);}
}

@media (prefers-reduced-motion:reduce){
  *,
  *::before,
  *::after{
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important;
  }
  .reveal{
    opacity:1;
    transform:none;
    filter:none;
  }
  .reveal-up{
    transform:none;
  }
  .sky-incident,
  .spaceship{display:none;}
  .sky-drift{display:none;}
}

@media (max-width:980px){
  .cursor-dot,
  .cursor-ring{display:none;}
  .spaceship__ring,
  .spaceship__glow{display:none;}
  .spaceship-3,
  .sky-incident--3{display:none;}
}
