:root {
  --bg: #0b1120;
  --bg2: #0f172a;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: 'Vazirmatn', system-ui, sans-serif;
  background:
    radial-gradient(circle at 80% -10%, rgba(245, 158, 11, 0.08), transparent 45%),
    radial-gradient(circle at 10% 110%, rgba(245, 158, 11, 0.05), transparent 40%),
    linear-gradient(180deg, #0b1120 0%, #0f172a 100%);
  background-attachment: fixed;
  color: #e2e8f0;
  min-height: 100vh;
}

/* number/mono fields keep Vazirmatn but tabular */
.font-mono { font-family: 'Vazirmatn', monospace; font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: #0f172a; }
::-webkit-scrollbar-thumb { background: #334155; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #475569; }

/* Hero glow */
.hero-glow {
  position: absolute;
  top: -10%;
  right: 20%;
  width: 500px;
  height: 500px;
  background: radial-gradient(circle, rgba(245, 158, 11, 0.15), transparent 70%);
  filter: blur(60px);
  pointer-events: none;
  animation: pulse 6s ease-in-out infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 0.5; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.15); }
}

/* Reveal on load */
.reveal {
  animation: revealUp 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes revealUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Chart float */
.chart-float { animation: float 5s ease-in-out infinite; }
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}
.candle-grow { animation: candleGrow 0.8s cubic-bezier(0.16, 1, 0.3, 1) both; transform-origin: bottom; }
@keyframes candleGrow { from { transform: scaleY(0); } to { transform: scaleY(1); } }

/* Bar chart grow */
.bar-grow { animation: barGrow 0.9s cubic-bezier(0.16, 1, 0.3, 1) both; transform-origin: bottom; }
@keyframes barGrow { from { transform: scaleY(0); opacity: 0; } to { transform: scaleY(1); opacity: 1; } }

/* Donut animate */
.donut-anim { animation: donut 1.2s cubic-bezier(0.16, 1, 0.3, 1) both; }
@keyframes donut { from { stroke-dashoffset: 327; } }

/* Progress bars */
.progress-anim { animation: progGrow 1s cubic-bezier(0.16, 1, 0.3, 1) both; }
@keyframes progGrow { from { width: 0 !important; } }

/* Toast */
.toast-in { animation: toastIn 0.3s cubic-bezier(0.16, 1, 0.3, 1) both; }
@keyframes toastIn { from { opacity: 0; transform: translateY(-16px); } to { opacity: 1; transform: translateY(0); } }

/* Modal */
.modal-in { animation: modalIn 0.25s cubic-bezier(0.16, 1, 0.3, 1) both; }
@keyframes modalIn { from { opacity: 0; transform: scale(0.94) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }

/* prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; }
}

input, select, textarea, button { font-family: inherit; }
select option { background: #0f172a; }