/* ============================================================
   Tagora — Componentes compartidos
   Usado por: home, features-unicos, partner, retail, compras
   ============================================================ */

/* ── Glow blobs ─────────────────────────────────────────────
   Posición, tamaño y color quedan inline (varían por instancia).
   El blur se normaliza aquí; usar --sm para blobs pequeños.      */
.glow-blob {
  position: absolute;
  border-radius: 9999px;
  filter: blur(120px);
  pointer-events: none;
}
.glow-blob--sm { filter: blur(50px); }

/* ── Badge pills ─────────────────────────────────────────────
   Chips de etiqueta redondeados. Variantes por acento de color. */
.badge-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.75rem;
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.badge-pill--blue    { background: rgb(59 130 246 / .10); color: #60a5fa; border: 1px solid rgb(59 130 246 / .25); }
.badge-pill--purple  { background: rgb(168 85 247 / .15); color: #c084fc; border: 1px solid rgb(168 85 247 / .20); }
.badge-pill--emerald { background: rgb(16 185 129 / .10); color: #059669; }
.badge-pill--indigo  { background: rgb(99 102 241 / .10); color: #6366f1; }

/* ── Cards ───────────────────────────────────────────────────
   Base compartida. Variante --dark (fondo negro) y --light (blanco). */
.card {
  border-radius: 1.5rem;
  padding: 1.5rem;
  border: 1px solid transparent;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  transition: box-shadow 0.3s, border-color 0.3s;
}
@media (min-width: 768px) {
  .card { padding: 2rem; }
}

.card--dark {
  background: #0f172a;
  color: #fff;
  border-color: #1e293b;
  box-shadow: 0 20px 25px -5px rgb(0 0 0 / .10), 0 8px 10px -6px rgb(0 0 0 / .10);
  position: relative;
  overflow: hidden;
}
.card--dark:hover { box-shadow: 0 25px 50px -12px rgb(0 0 0 / .25); border-color: #334155; }

.card--light {
  background: #fff;
  border-color: #f1f5f9;
  box-shadow: 0 1px 3px 0 rgb(0 0 0 / .05);
}
.card--light:hover { box-shadow: 0 20px 25px -5px rgb(0 0 0 / .10); border-color: rgb(226 232 240 / .80); }

/* Internos de card */
.card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.5rem;
}
.card__header--sm { margin-bottom: 1rem; }

.card__icon {
  width: 1.5rem;
  height: 1.5rem;
  color: #64748b;
  flex-shrink: 0;
  transition: color 0.15s;
}

.card__img-wrap {
  display: flex;
  justify-content: center;
  margin-bottom: 1.5rem;
  position: relative;
}
.card__img-glow {
  position: absolute;
  inset: 0;
  border-radius: 9999px;
  filter: blur(24px);
}
.card__product-img {
  width: 7rem;
  height: 7rem;
  object-fit: contain;
  position: relative;
  z-index: 10;
  filter: drop-shadow(0 25px 25px rgb(0 0 0 / .15));
  transition: transform 0.5s;
}
.card:hover .card__product-img { transform: scale(1.1) translateY(-0.25rem); }

.card__title {
  font-size: 1.5rem;
  font-weight: 800;
  font-family: 'Outfit', 'Inter', sans-serif;
  margin-bottom: 0.75rem;
}
.card--light .card__title { color: #1e293b; }

.card__desc {
  font-size: 0.875rem;
  line-height: 1.625;
  margin-bottom: 2rem;
}
.card--dark  .card__desc { color: #94a3b8; }
.card--light .card__desc { color: #64748b; }

/* ── CTA Buttons ─────────────────────────────────────────────
   Botón de acción principal. Variantes por color de acento.     */
.btn-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  padding: 0.75rem 1.5rem;
  border-radius: 1rem;
  border: none;
  color: #fff;
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  text-align: center;
  cursor: pointer;
  transition: background 0.15s, transform 0.1s;
  box-sizing: border-box;
}
.btn-cta:active { transform: scale(0.97); }

.btn-cta--blue    { background: #2563eb; box-shadow: 0 10px 25px -5px rgb(30  58 138 / .35); }
.btn-cta--blue:hover    { background: #3b82f6; }
.btn-cta--purple  { background: #9333ea; box-shadow: 0 10px 25px -5px rgb(88  28 135 / .35); }
.btn-cta--purple:hover  { background: #a855f7; }
.btn-cta--emerald { background: #059669; box-shadow: 0  4px  6px -1px rgb(16 185 129 / .20); }
.btn-cta--emerald:hover { background: #047857; }
.btn-cta--indigo  { background: #4f46e5; box-shadow: 0  4px  6px -1px rgb(99 102 241 / .20); }
.btn-cta--indigo:hover  { background: #4338ca; }

/* ── Lucide icon sizes ───────────────────────────────────────
   Lucide inyecta SVGs con width/height="24" como atributos HTML.
   !important asegura que el CSS gane sobre esos atributos.       */
.icon-xs { width: 0.75rem !important; height: 0.75rem !important; flex-shrink: 0; display: block; }
.icon-sm { width: 1rem    !important; height: 1rem    !important; flex-shrink: 0; display: block; }
.icon-md { width: 1.5rem  !important; height: 1.5rem  !important; flex-shrink: 0; display: block; }

/* ── Card glass (dark translucent) ──────────────────────────
   Para secciones oscuras. backdrop-blur da profundidad.       */
.card--glass {
  background: rgb(30 41 59 / .30);
  backdrop-filter: blur(12px);
  border-radius: 2rem;
  padding: 2rem;
  border: 1px solid rgb(51 65 85 / .50);
  transition: background 0.3s;
}
.card--glass:hover { background: rgb(30 41 59 / .50); }
.card--glass h3 { font-size: 1.25rem; font-weight: 700; color: #fff; margin: 0 0 0.75rem; }
.card--glass p  { font-size: 0.875rem; color: #94a3b8; line-height: 1.625; margin: 0; }

/* ── Icon box ────────────────────────────────────────────────
   Contenedor cuadrado para un icono Lucide. Color vía estilo
   inline o modifier. Usado dentro de cards de todo tipo.      */
.icon-box {
  width: 3rem; height: 3rem;
  border-radius: 1rem;
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 1.5rem;
  flex-shrink: 0;
}
.icon-box--dark {
  background: #1e293b;
  border: 1px solid #334155;
  box-shadow: inset 0 2px 4px rgb(0 0 0 / .30);
}

/* ── Section inner container ─────────────────────────────────
   Wrapper centrado de ancho máximo. Va dentro de cada section. */
.section-inner {
  max-width: 72rem; margin: 0 auto;
  position: relative; z-index: 10;
  width: 100%;
}

/* ── Grids responsivos ───────────────────────────────────────
   Columnas genéricas usadas en páginas de marketing.          */
.grid-2 { display: grid; grid-template-columns: 1fr; gap: 2rem; }
.grid-3 { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
.grid-4 { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) {
  .grid-2 { grid-template-columns: repeat(2, 1fr); }
  .grid-3 { grid-template-columns: repeat(3, 1fr); }
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .grid-3 { grid-template-columns: repeat(3, 1fr); }
  .grid-4 { grid-template-columns: repeat(4, 1fr); }
}
