:root {
  --accent-from: #34d399;
  --accent-to: #059669;
  --accent-glow: 16,185,129;
}

* { font-family: 'Vazirmatn', ui-sans-serif, system-ui, sans-serif; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(var(--accent-glow), 0.10), transparent 60%),
    radial-gradient(900px 500px at 10% 110%, rgba(var(--accent-glow), 0.07), transparent 60%),
    #0a0a0f;
  background-attachment: fixed;
  color: #e5e5ea;
}

.ltr { direction: ltr; unicode-bidi: embed; }

/* accent utilities */
.accent-text {
  background: linear-gradient(120deg, var(--accent-from), var(--accent-to));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.accent-bg { background: linear-gradient(120deg, var(--accent-from), var(--accent-to)); }
.accent-shadow { box-shadow: 0 10px 30px -8px rgba(var(--accent-glow), 0.55); }

/* cards */
.card {
  background: rgba(26, 26, 36, 0.6);
  border: 1px solid rgba(255,255,255,0.08);
  backdrop-filter: blur(6px);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.card:hover {
  border-color: rgba(var(--accent-glow), 0.4);
}
.project-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 40px -18px rgba(var(--accent-glow), 0.5);
}
.social-btn { transition: transform .2s ease, border-color .2s ease, color .2s ease; }
.social-btn:hover { transform: translateY(-4px) scale(1.05); }

.tag {
  background: rgba(var(--accent-glow), 0.12);
  color: var(--accent-from);
  border: 1px solid rgba(var(--accent-glow), 0.25);
}

/* nav */
.nav-blur {
  background: rgba(10, 10, 15, 0.7);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.mono { box-shadow: 0 6px 20px -6px rgba(var(--accent-glow), 0.6); transition: transform .2s; }
.mono:active { transform: scale(0.9) rotate(-8deg); }

/* avatar */
.avatar-ring {
  background: linear-gradient(135deg, var(--accent-from), var(--accent-to));
  box-shadow: 0 0 50px -8px rgba(var(--accent-glow), 0.6);
  animation: floaty 5s ease-in-out infinite;
}
@keyframes floaty {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}

/* background orbs */
.bg-orbs { position: fixed; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.orb { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.35; }
.orb-1 { width: 380px; height: 380px; top: -80px; right: -60px; background: var(--accent-from); animation: drift 18s ease-in-out infinite; }
.orb-2 { width: 300px; height: 300px; bottom: 5%; left: -80px; background: var(--accent-to); animation: drift 22s ease-in-out infinite reverse; }
.orb-3 { width: 250px; height: 250px; top: 45%; left: 50%; background: var(--accent-from); opacity: 0.18; animation: drift 26s ease-in-out infinite; }
@keyframes drift {
  0%,100% { transform: translate(0,0) scale(1); }
  33% { transform: translate(40px,50px) scale(1.1); }
  66% { transform: translate(-30px,20px) scale(0.95); }
}

/* skill fill */
.skill-fill { transition: width 1.3s cubic-bezier(.22,1,.36,1); box-shadow: 0 0 12px rgba(var(--accent-glow),0.5); }

/* reveal on scroll */
.reveal-hidden { opacity: 0; transform: translateY(30px); }
.reveal-in { opacity: 1; transform: translateY(0); transition: opacity .7s ease, transform .7s ease; }

/* load reveal (hero) */
.reveal-load { opacity: 0; animation: loadUp .8s ease forwards; }
@keyframes loadUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

/* toast */
.toast-pop { animation: toastPop .3s cubic-bezier(.34,1.56,.64,1); }
@keyframes toastPop {
  from { opacity: 0; transform: translate(-50%, 20px) scale(.85); }
  to { opacity: 1; transform: translate(-50%, 0) scale(1); }
}

/* confetti */
.confetti {
  position: absolute; top: -30px; font-size: 22px;
  animation: fall 2.4s linear forwards;
}
@keyframes fall {
  to { transform: translateY(110vh) rotate(540deg); opacity: 0; }
}

/* inputs focus ring color */
input:focus, textarea:focus { box-shadow: 0 0 0 2px rgba(var(--accent-glow), 0.5); }

@media (prefers-reduced-motion: reduce) {
  .avatar-ring, .orb, .reveal-load, .animate-bounce { animation: none !important; }
  .reveal-hidden { opacity: 1; transform: none; }
}

/* scrollbar */
::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: #0a0a0f; }
::-webkit-scrollbar-thumb { background: linear-gradient(var(--accent-from), var(--accent-to)); border-radius: 10px; }