/* ============================================================
   GF Design System — Componentes
   Apps gf_* consomem essas classes. NÃO redefinir.
   ============================================================ */

/* ---------- CARD ---------- */
.gf-card {
  background: var(--gf-branco);
  border: 1px solid var(--gf-cinza-300);
  border-radius: var(--gf-radius-md);
  padding: var(--gf-space-6);
  box-shadow: var(--gf-shadow-sm);
  transition: box-shadow var(--gf-transition-base);
}
.gf-card:hover {
  box-shadow: var(--gf-shadow-md);
}
.gf-card--dark {
  background: var(--gf-azul-escuro);
  color: var(--gf-branco);
  border: none;
}
.gf-card--dark .gf-h1,
.gf-card--dark .gf-h2,
.gf-card--dark .gf-h3 {
  color: var(--gf-branco);
}

/* ---------- KPI TILE ---------- */
.gf-kpi {
  background: var(--gf-branco);
  border: 1px solid var(--gf-cinza-300);
  border-radius: var(--gf-radius-md);
  padding: var(--gf-space-6);
  display: flex;
  flex-direction: column;
  gap: var(--gf-space-2);
}
.gf-kpi__label {
  font-family: var(--gf-font-sans);
  font-size: var(--gf-text-xs);
  font-weight: var(--gf-weight-medium);
  color: var(--gf-cinza-500);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.gf-kpi__value {
  font-family: var(--gf-font-sans);
  font-size: var(--gf-text-3xl);
  font-weight: var(--gf-weight-bold);
  color: var(--gf-azul-escuro);
  line-height: 1;
}
.gf-kpi__value--ouro { color: var(--gf-ouro); }
.gf-kpi__value--azul { color: var(--gf-azul-medio); }
.gf-kpi__trend {
  font-family: var(--gf-font-sans);
  font-size: var(--gf-text-sm);
  font-weight: var(--gf-weight-medium);
}
.gf-kpi__trend--up   { color: var(--gf-success); }
.gf-kpi__trend--down { color: var(--gf-danger); }
.gf-kpi__trend--flat { color: var(--gf-cinza-500); }

/* ---------- BUTTON ---------- */
.gf-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--gf-space-2);
  font-family: var(--gf-font-sans);
  font-size: var(--gf-text-sm);
  font-weight: var(--gf-weight-medium);
  padding: var(--gf-space-3) var(--gf-space-6);
  border-radius: var(--gf-radius-md);
  border: 1px solid transparent;
  cursor: pointer;
  transition: all var(--gf-transition-fast);
  text-decoration: none;
}
.gf-btn--primary {
  background: var(--gf-azul-medio);
  color: var(--gf-branco);
}
.gf-btn--primary:hover {
  background: var(--gf-azul-escuro);
  color: var(--gf-branco);
}
.gf-btn--secondary {
  background: transparent;
  color: var(--gf-azul-medio);
  border-color: var(--gf-azul-medio);
}
.gf-btn--secondary:hover {
  background: var(--gf-azul-medio);
  color: var(--gf-branco);
}
.gf-btn--ghost {
  background: transparent;
  color: var(--gf-azul-medio);
}
.gf-btn--ghost:hover {
  background: var(--gf-cinza-100);
}
.gf-btn--danger {
  background: var(--gf-danger);
  color: var(--gf-branco);
}

/* ---------- BADGE ---------- */
.gf-badge {
  display: inline-block;
  font-family: var(--gf-font-sans);
  font-size: var(--gf-text-xs);
  font-weight: var(--gf-weight-medium);
  padding: var(--gf-space-1) var(--gf-space-3);
  border-radius: var(--gf-radius-pill);
  letter-spacing: 0.02em;
}
.gf-badge--info {
  background: rgba(91, 179, 214, 0.18);
  color: var(--gf-azul-escuro);
}
.gf-badge--success {
  background: rgba(46, 139, 87, 0.18);
  color: #1F5E3A;
}
.gf-badge--warning {
  background: rgba(231, 184, 70, 0.22);
  color: var(--gf-azul-escuro);
}
.gf-badge--danger {
  background: rgba(192, 57, 43, 0.15);
  color: #7A2018;
}

/* ---------- PAGE HEADER ---------- */
.gf-page-header {
  border-bottom: 1px solid var(--gf-cinza-300);
  padding-bottom: var(--gf-space-4);
  margin-bottom: var(--gf-space-8);
}
.gf-page-header__title {
  display: flex;
  align-items: center;
  gap: var(--gf-space-3);
  font-family: var(--gf-font-sans);
  font-size: var(--gf-text-2xl);
  font-weight: var(--gf-weight-bold);
  color: var(--gf-azul-escuro);
  margin: 0;
}
.gf-page-header__subtitle {
  font-family: var(--gf-font-sans);
  font-size: var(--gf-text-sm);
  color: var(--gf-cinza-700);
  margin: var(--gf-space-2) 0 0;
}

/* ---------- DASHBOARD GRID ---------- */
.gf-grid {
  display: grid;
  gap: var(--gf-space-4);
  grid-template-columns: repeat(12, 1fr);
}
.gf-grid > .gf-col-3  { grid-column: span 3; }
.gf-grid > .gf-col-4  { grid-column: span 4; }
.gf-grid > .gf-col-6  { grid-column: span 6; }
.gf-grid > .gf-col-8  { grid-column: span 8; }
.gf-grid > .gf-col-12 { grid-column: span 12; }

@media (max-width: 768px) {
  .gf-grid > [class*='gf-col-'] {
    grid-column: span 12;
  }
}

/* ---------- PALETTE PREVIEW (utility) ---------- */
.gf-swatch {
  display: inline-block;
  width: 80px;
  height: 80px;
  border-radius: var(--gf-radius-md);
  border: 1px solid var(--gf-cinza-300);
}
