:root {
  --background: 220 43% 97%;
  --foreground: 222 47% 9%;
  --primary: 24 96% 53%;
  --primary-foreground: 0 0% 100%;
  --secondary: 218 38% 90%;
  --muted: 218 25% 86%;
  --muted-foreground: 220 13% 42%;
  --destructive: 350 84% 55%;
  --border: 220 22% 82%;
  --card: 0 0% 100%;
  --chart-buy: #22c55e;
  --chart-sell: #fb7185;
  --chart-wait: #f59e0b;
  --shadow-sm: 0 8px 24px hsl(220 35% 18% / 0.08);
  --shadow-md: 0 16px 44px hsl(220 35% 18% / 0.12);
  --shadow-lg: 0 24px 80px hsl(220 35% 18% / 0.16);
  --transition-fast: 150ms ease;
  --transition-smooth: 280ms cubic-bezier(.2,.8,.2,1);
  --radius-sm: 0.75rem;
  --radius-md: 1rem;
  --radius-lg: 1.5rem;
}

.dark {
  --background: 224 45% 7%;
  --foreground: 210 40% 96%;
  --primary: 28 98% 55%;
  --primary-foreground: 224 45% 7%;
  --secondary: 222 35% 16%;
  --muted: 222 26% 20%;
  --muted-foreground: 216 18% 68%;
  --destructive: 350 88% 62%;
  --border: 222 28% 22%;
  --card: 224 38% 11%;
  --shadow-sm: 0 8px 24px hsl(0 0% 0% / 0.22);
  --shadow-md: 0 16px 44px hsl(0 0% 0% / 0.34);
  --shadow-lg: 0 24px 80px hsl(0 0% 0% / 0.46);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: hsl(var(--background)); }
button { cursor: pointer; }
button:disabled { opacity: 0.65; cursor: wait; }

.orb { position: absolute; width: 20rem; height: 20rem; border-radius: 999px; filter: blur(72px); opacity: 0.28; animation: float 8s ease-in-out infinite; }
.orb-one { top: -6rem; left: -7rem; background: hsl(var(--primary)); }
.orb-two { right: -8rem; bottom: 8rem; background: hsl(183 86% 48%); animation-delay: -3s; }

.signal-card { position: relative; overflow: hidden; background: hsl(var(--card) / 0.78); backdrop-filter: blur(18px); }
.signal-card::before { content: ""; position: absolute; inset: -40% -20% auto auto; width: 18rem; height: 18rem; border-radius: 999px; opacity: 0.2; filter: blur(12px); }
.signal-card > * { position: relative; z-index: 1; }
.signal-buy::before { background: #22c55e; }
.signal-sell::before { background: #fb7185; }
.signal-wait::before { background: #f59e0b; }

.skeleton { background: linear-gradient(90deg, hsl(var(--secondary)) 25%, hsl(var(--muted)) 37%, hsl(var(--secondary)) 63%); background-size: 400% 100%; animation: shimmer 1.35s ease infinite; }

@keyframes shimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }
@keyframes float { 0%, 100% { transform: translate3d(0,0,0) scale(1); } 50% { transform: translate3d(18px, 24px, 0) scale(1.06); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
}
