/* ============================================
   Crypto AI Analyst — Design System
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

/* --- Design Tokens --- */
:root {
  /* Background */
  --bg-primary: #07070f;
  --bg-secondary: #0d0d1a;
  --bg-card: rgba(15, 15, 35, 0.65);
  --bg-card-hover: rgba(20, 20, 50, 0.75);
  --bg-metric: rgba(255, 255, 255, 0.03);
  --bg-metric-hover: rgba(255, 255, 255, 0.06);
  --bg-table-row-hover: rgba(255, 255, 255, 0.02);

  /* Borders */
  --border-card: rgba(255, 255, 255, 0.06);
  --border-subtle: rgba(255, 255, 255, 0.04);
  --border-section: rgba(255, 255, 255, 0.08);

  /* Text */
  --text-primary: #e2e8f0;
  --text-secondary: #64748b;
  --text-heading: #f1f5f9;
  --text-muted: #475569;

  /* Signals */
  --signal-buy-strong: #00e5a0;
  --signal-buy-strong-glow: rgba(0, 229, 160, 0.25);
  --signal-buy: #34d399;
  --signal-buy-glow: rgba(52, 211, 153, 0.2);
  --signal-sell-strong: #f43f5e;
  --signal-sell-strong-glow: rgba(244, 63, 94, 0.25);
  --signal-sell: #fb7185;
  --signal-sell-glow: rgba(251, 113, 133, 0.2);
  --signal-wait: #64748b;
  --signal-wait-glow: rgba(100, 116, 139, 0.15);

  /* Trends */
  --trend-up: #34d399;
  --trend-down: #fb7185;

  /* RSI */
  --rsi-normal: #34d399;
  --rsi-caution: #fbbf24;
  --rsi-extreme: #f43f5e;

  /* Sentiment */
  --sentiment-positive: #34d399;
  --sentiment-neutral: #94a3b8;
  --sentiment-negative: #fb7185;

  /* Spacing */
  --space-2xs: 0.125rem;
  --space-xs: 0.25rem;
  --space-sm: 0.5rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;
  --space-2xl: 3rem;
  --space-3xl: 4rem;

  /* Radius */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  --radius-pill: 9999px;

  /* Typography */
  --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-size-xs: 0.6875rem;
  --font-size-sm: 0.75rem;
  --font-size-base: 0.875rem;
  --font-size-md: 1rem;
  --font-size-lg: 1.25rem;
  --font-size-xl: 1.5rem;
  --font-size-2xl: 2rem;

  /* Effects */
  --blur-card: 24px;
  --shadow-card: 0 4px 24px rgba(0, 0, 0, 0.3);
  --shadow-card-hover: 0 8px 40px rgba(0, 0, 0, 0.4);
  --transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-spring: 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* --- Reset & Base --- */
*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--font-family);
  background-color: var(--bg-primary);
  color: var(--text-primary);
  line-height: 1.6;
  min-height: 100vh;
  position: relative;
  overflow-x: hidden;
}

/* Subtle background pattern */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background:
    radial-gradient(ellipse 80% 50% at 50% -20%, rgba(0, 229, 160, 0.06), transparent),
    radial-gradient(ellipse 60% 40% at 80% 100%, rgba(99, 102, 241, 0.04), transparent);
  pointer-events: none;
  z-index: 0;
}

/* Custom scrollbar */
::-webkit-scrollbar {
  width: 6px;
}
::-webkit-scrollbar-track {
  background: var(--bg-primary);
}
::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.1);
  border-radius: var(--radius-pill);
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.18);
}

/* --- Header --- */
.header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(7, 7, 15, 0.8);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--border-card);
}

.header-content {
  max-width: 1200px;
  margin: 0 auto;
  padding: var(--space-lg) var(--space-xl);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-md);
}

.header-title {
  font-size: var(--font-size-xl);
  font-weight: 800;
  color: var(--text-heading);
  letter-spacing: -0.03em;
}

.header-meta {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

/* Pulsing live dot */
.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--signal-buy-strong);
  box-shadow: 0 0 8px var(--signal-buy-strong-glow);
  animation: pulse-dot 2s ease-in-out infinite;
}

@keyframes pulse-dot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(0.85); }
}

/* --- Summary Bar --- */
.summary-bar {
  max-width: 1200px;
  margin: var(--space-xl) auto 0;
  padding: 0 var(--space-xl);
  display: flex;
  gap: var(--space-md);
  flex-wrap: wrap;
}

.summary-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  padding: var(--space-xs) var(--space-md);
  background: var(--bg-metric);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-pill);
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  font-weight: 500;
}

.summary-chip .count {
  font-weight: 700;
  color: var(--text-heading);
}

/* --- Container & Grid --- */
.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: var(--space-xl);
  position: relative;
  z-index: 1;
}

.cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 520px), 1fr));
  gap: var(--space-xl);
}

/* --- Coin Card --- */
.coin-card {
  background: var(--bg-card);
  backdrop-filter: blur(var(--blur-card));
  -webkit-backdrop-filter: blur(var(--blur-card));
  border: 1px solid var(--border-card);
  border-radius: var(--radius-xl);
  padding: var(--space-xl);
  transition:
    background var(--transition-base),
    border-color var(--transition-base),
    box-shadow var(--transition-base),
    transform var(--transition-base);
  position: relative;
  overflow: hidden;

  /* Entry animation */
  opacity: 0;
  transform: translateY(24px);
  animation: card-enter 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.coin-card:hover {
  background: var(--bg-card-hover);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: var(--shadow-card-hover);
  transform: translateY(-2px);
}

/* Colored top accent line */
.coin-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: var(--space-xl);
  right: var(--space-xl);
  height: 2px;
  border-radius: 0 0 2px 2px;
  background: var(--card-accent, var(--signal-wait));
  opacity: 0.7;
  transition: opacity var(--transition-base);
}

.coin-card:hover::before {
  opacity: 1;
}

/* Staggered animation */
.coin-card:nth-child(1) { animation-delay: 0.05s; }
.coin-card:nth-child(2) { animation-delay: 0.12s; }
.coin-card:nth-child(3) { animation-delay: 0.19s; }
.coin-card:nth-child(4) { animation-delay: 0.26s; }
.coin-card:nth-child(5) { animation-delay: 0.33s; }
.coin-card:nth-child(6) { animation-delay: 0.40s; }
.coin-card:nth-child(7) { animation-delay: 0.47s; }
.coin-card:nth-child(8) { animation-delay: 0.54s; }

@keyframes card-enter {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Card header */
.card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
  flex-wrap: wrap;
}

.coin-name {
  font-size: var(--font-size-lg);
  font-weight: 700;
  color: var(--text-heading);
  letter-spacing: -0.02em;
}

.coin-symbol {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  font-weight: 500;
  margin-left: var(--space-sm);
}

/* Signal badge */
.signal-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  border-radius: var(--radius-pill);
  font-size: var(--font-size-sm);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  white-space: nowrap;
  transition: box-shadow var(--transition-base);
}

.signal-badge--compra-forte {
  background: rgba(0, 229, 160, 0.15);
  color: var(--signal-buy-strong);
  box-shadow: 0 0 16px var(--signal-buy-strong-glow);
}
.signal-badge--comprar {
  background: rgba(52, 211, 153, 0.12);
  color: var(--signal-buy);
  box-shadow: 0 0 12px var(--signal-buy-glow);
}
.signal-badge--venda-forte {
  background: rgba(244, 63, 94, 0.15);
  color: var(--signal-sell-strong);
  box-shadow: 0 0 16px var(--signal-sell-strong-glow);
}
.signal-badge--vender {
  background: rgba(251, 113, 133, 0.12);
  color: var(--signal-sell);
  box-shadow: 0 0 12px var(--signal-sell-glow);
}
.signal-badge--aguardar {
  background: rgba(100, 116, 139, 0.12);
  color: var(--signal-wait);
  box-shadow: 0 0 8px var(--signal-wait-glow);
}

.coin-card:hover .signal-badge--compra-forte {
  box-shadow: 0 0 24px var(--signal-buy-strong-glow);
}
.coin-card:hover .signal-badge--venda-forte {
  box-shadow: 0 0 24px var(--signal-sell-strong-glow);
}

/* Pulse on strong signals */
.signal-badge--compra-forte::before,
.signal-badge--venda-forte::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  animation: pulse-dot 1.8s ease-in-out infinite;
}

/* --- Metrics Row --- */
.metrics-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-sm);
  margin-bottom: var(--space-lg);
}

.metric-card {
  background: var(--bg-metric);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  text-align: center;
  transition: background var(--transition-base), border-color var(--transition-base);
}

.metric-card:hover {
  background: var(--bg-metric-hover);
  border-color: var(--border-section);
}

.metric-label {
  display: block;
  font-size: var(--font-size-xs);
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: var(--space-xs);
}

.metric-value {
  font-size: var(--font-size-base);
  font-weight: 600;
  color: var(--text-primary);
}

.metric-value--positive { color: var(--sentiment-positive); }
.metric-value--neutral { color: var(--sentiment-neutral); }
.metric-value--negative { color: var(--sentiment-negative); }
.metric-value--up { color: var(--trend-up); }
.metric-value--down { color: var(--trend-down); }

/* --- Section Divider --- */
.section-title {
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-sm);
  padding-bottom: var(--space-xs);
  border-bottom: 1px solid var(--border-subtle);
}

/* --- Timeframe Table --- */
.timeframe-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: var(--space-lg);
  font-size: var(--font-size-base);
}

.timeframe-table th {
  text-align: left;
  font-size: var(--font-size-xs);
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: var(--space-sm) var(--space-sm);
  border-bottom: 1px solid var(--border-section);
}

.timeframe-table td {
  padding: var(--space-sm) var(--space-sm);
  border-bottom: 1px solid var(--border-subtle);
  vertical-align: middle;
  color: var(--text-primary);
  font-weight: 500;
}

.timeframe-table tr:last-child td {
  border-bottom: none;
}

.timeframe-table tr {
  transition: background var(--transition-base);
}

.timeframe-table tbody tr:hover {
  background: var(--bg-table-row-hover);
}

/* Trend indicator */
.trend-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: 600;
  font-size: var(--font-size-sm);
}

.trend-tag--alta { color: var(--trend-up); }
.trend-tag--baixa { color: var(--trend-down); }

.trend-tag::before {
  font-size: 10px;
}
.trend-tag--alta::before { content: '▲'; }
.trend-tag--baixa::before { content: '▼'; }

/* Signal tag in table */
.signal-tag {
  font-weight: 600;
  font-size: var(--font-size-sm);
  padding: 2px 8px;
  border-radius: var(--radius-sm);
}

.signal-tag--comprar {
  color: var(--signal-buy);
  background: rgba(52, 211, 153, 0.1);
}
.signal-tag--vender {
  color: var(--signal-sell);
  background: rgba(251, 113, 133, 0.1);
}
.signal-tag--aguardar {
  color: var(--signal-wait);
  background: rgba(100, 116, 139, 0.08);
}

/* RSI with color coding */
.rsi-value {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

.rsi-value--normal { color: var(--rsi-normal); }
.rsi-value--caution { color: var(--rsi-caution); }
.rsi-value--extreme { color: var(--rsi-extreme); }

/* RSI mini bar */
.rsi-container {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.rsi-bar {
  flex: 1;
  height: 4px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: var(--radius-pill);
  overflow: hidden;
  max-width: 50px;
}

.rsi-bar-fill {
  height: 100%;
  border-radius: var(--radius-pill);
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

/* --- Ichimoku Section --- */
.ichimoku-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-sm);
}

.ichimoku-grid .metric-card:last-child {
  /* Cloud status takes full width if needed */
}

/* Cloud status styling */
.cloud-alta { color: var(--trend-up); }
.cloud-baixa { color: var(--trend-down); }
.cloud-indecisao { color: var(--rsi-caution); }

/* --- Loading State --- */
.loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-lg);
  padding: var(--space-3xl);
  color: var(--text-secondary);
}

.spinner {
  width: 36px;
  height: 36px;
  border: 3px solid var(--border-card);
  border-top-color: var(--signal-buy-strong);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

/* --- Error State --- */
.error {
  text-align: center;
  padding: var(--space-3xl);
  color: var(--text-secondary);
}

.error-icon {
  font-size: 3rem;
  margin-bottom: var(--space-md);
}

.error p {
  font-size: var(--font-size-md);
}

/* --- Empty State --- */
.hidden {
  display: none !important;
}

/* --- Footer --- */
.footer {
  text-align: center;
  padding: var(--space-2xl) var(--space-xl);
  color: var(--text-muted);
  font-size: var(--font-size-sm);
  border-top: 1px solid var(--border-subtle);
  margin-top: var(--space-2xl);
  position: relative;
  z-index: 1;
}

/* --- Responsive --- */
@media (max-width: 768px) {
  .header-content {
    padding: var(--space-md) var(--space-lg);
  }

  .header-title {
    font-size: var(--font-size-lg);
  }

  .container {
    padding: var(--space-lg);
  }

  .summary-bar {
    padding: 0 var(--space-lg);
  }

  .cards-grid {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }

  .coin-card {
    padding: var(--space-lg);
  }

  .metrics-row {
    grid-template-columns: 1fr;
  }

  .ichimoku-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .timeframe-table {
    font-size: var(--font-size-sm);
  }
}

@media (max-width: 480px) {
  .header-content {
    padding: var(--space-md);
  }

  .container {
    padding: var(--space-md);
  }

  .summary-bar {
    padding: 0 var(--space-md);
  }

  .card-header {
    flex-direction: column;
    align-items: flex-start;
  }

  .ichimoku-grid {
    grid-template-columns: 1fr 1fr;
  }
}
