html, body { height: 100%; margin: 0; }
    * { box-sizing: border-box; }

    .font-orbitron { font-family: 'Orbitron', sans-serif; }
    .font-rajdhani { font-family: 'Rajdhani', sans-serif; }

    @keyframes glitch1 {
      0%, 100% { clip-path: inset(0 0 90% 0); transform: translate(-2px, 2px); }
      25% { clip-path: inset(30% 0 50% 0); transform: translate(2px, -1px); }
      50% { clip-path: inset(60% 0 20% 0); transform: translate(-1px, 1px); }
      75% { clip-path: inset(10% 0 70% 0); transform: translate(1px, -2px); }
    }

    @keyframes scanline {
      0% { top: -10%; }
      100% { top: 110%; }
    }

    @keyframes fadeUp {
      from { opacity: 0; transform: translateY(30px); }
      to { opacity: 1; transform: translateY(0); }
    }

    @keyframes pulseGlow {
      0%, 100% { box-shadow: 0 0 5px rgba(0, 200, 255, 0.3); }
      50% { box-shadow: 0 0 20px rgba(0, 200, 255, 0.6), 0 0 40px rgba(0, 200, 255, 0.2); }
    }

    @keyframes borderFlow {
      0% { background-position: 0% 50%; }
      100% { background-position: 200% 50%; }
    }

    .animate-fade-up {
      opacity: 0;
      animation: fadeUp 0.7s ease forwards;
    }

    .scanline::after {
      content: '';
      position: absolute;
      left: 0; width: 100%; height: 2px;
      background: rgba(0, 200, 255, 0.08);
      animation: scanline 4s linear infinite;
    }

    .glitch-text {
      position: relative;
    }
    .glitch-text::before {
      content: attr(data-text);
      position: absolute; left: 0; top: 0;
      color: #00c8ff;
      opacity: 0.6;
      animation: glitch1 3s infinite;
    }

    .cyber-card {
      position: relative;
      background: linear-gradient(135deg, rgba(0,200,255,0.05), rgba(0,50,80,0.15));
      border: 1px solid rgba(0,200,255,0.15);
      transition: all 0.3s ease;
    }
    .cyber-card:hover {
      border-color: rgba(0,200,255,0.5);
      animation: pulseGlow 2s ease infinite;
      transform: translateY(-4px);
    }

    .cyber-border {
      position: relative;
    }
    .cyber-border::before {
      content: '';
      position: absolute; inset: 0;
      border: 1px solid transparent;
      background: linear-gradient(90deg, transparent, rgba(0,200,255,0.5), transparent) border-box;
      mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
      mask-composite: exclude;
      animation: borderFlow 3s linear infinite;
      background-size: 200% 100%;
      pointer-events: none;
    }

    .skill-bar-fill {
      transition: width 1.2s ease;
    }

    .grid-bg {
      background-image:
        linear-gradient(rgba(0,200,255,0.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(0,200,255,0.03) 1px, transparent 1px);
      background-size: 40px 40px;
    }

    .nav-link {
      position: relative;
      transition: color 0.3s;
    }
    .nav-link::after {
      content: '';
      position: absolute; bottom: -4px; left: 0;
      width: 0; height: 2px;
      background: #00c8ff;
      transition: width 0.3s;
    }
    .nav-link:hover::after { width: 100%; }

    .section-reveal { opacity: 0; transform: translateY(30px); transition: all 0.7s ease; }
    .section-reveal.visible { opacity: 1; transform: translateY(0); }

    .social-icon {
      transition: all 0.3s ease;
      border: 1px solid rgba(0,200,255,0.2);
    }
    .social-icon:hover {
      border-color: #00c8ff;
      box-shadow: 0 0 15px rgba(0,200,255,0.4);
      transform: translateY(-3px);
    }
.project-btn {
  padding: 10px 18px;
  border: 1px solid rgba(0,200,255,0.4);
  color: #00c8ff;
  font-family: 'Rajdhani', sans-serif;
  font-weight: 600;
  letter-spacing: 1px;
  border-radius: 8px;
  background: rgba(0,200,255,0.05);
  transition: all 0.3s ease;
}


.project-btn:hover {
  background: rgba(0,200,255,0.15);
  border-color: #00c8ff;
  box-shadow: 0 0 15px rgba(0,200,255,0.4);
  transform: translateY(-3px);
}
/* block seret gambar */
img {
  user-select: none;
  -webkit-user-drag: none;
}