/* ==========================================================================
   Comegame — games.css
   Slot catalogue: filter pills, live search, result grid, empty state.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. FILTER TOOLBAR
   -------------------------------------------------------------------------- */

.catalogue-bar {
  position: sticky;
  top: var(--header-h);
  z-index: 20;
  display: grid;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
  padding: var(--space-4) 0;
  background: linear-gradient(180deg, rgba(10, 10, 20, 0.96) 70%, rgba(10, 10, 20, 0));
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.filter-row {
  display: flex;
  gap: 0.5rem;
  overflow-x: auto;
  padding-bottom: 0.4rem;
  scrollbar-width: thin;
  scrollbar-color: rgba(77, 140, 255, 0.5) transparent;
  -webkit-overflow-scrolling: touch;
}

.filter-row::-webkit-scrollbar { height: 5px; }
.filter-row::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.04); border-radius: 5px; }
.filter-row::-webkit-scrollbar-thumb { background: rgba(77, 140, 255, 0.5); border-radius: 5px; }

.filter-pill {
  flex: 0 0 auto;
  padding: 0.6rem 1.15rem;
  border-radius: var(--radius-pill);
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  font-family: var(--font-display);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-text-secondary);
  white-space: nowrap;
  cursor: pointer;
  transition: color var(--dur-fast) var(--ease-out),
              background var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out),
              box-shadow var(--dur-fast) var(--ease-out);
}

.filter-pill:hover {
  color: var(--color-text-primary);
  border-color: rgba(77, 140, 255, 0.45);
  background: rgba(46, 107, 255, 0.1);
}

.filter-pill.is-active {
  background: var(--gradient-primary);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 6px 20px rgba(46, 107, 255, 0.35);
}

.filter-pill span {
  margin-left: 0.4rem;
  font-size: var(--fs-xs);
  opacity: 0.65;
}

/* ---- Search field ---- */
.catalogue-tools {
  display: grid;
  gap: var(--space-3);
  align-items: center;
}

.search-field {
  position: relative;
  display: flex;
  align-items: center;
}

.search-field svg {
  position: absolute;
  left: 0.95rem;
  width: 17px;
  height: 17px;
  color: var(--color-text-muted);
  pointer-events: none;
}

.search-field input {
  width: 100%;
  padding: 0.8rem 1rem 0.8rem 2.7rem;
  border-radius: var(--radius-pill);
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: var(--color-text-primary);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
}

.search-field input::placeholder { color: var(--color-text-muted); }

.search-field input:focus {
  outline: none;
  border-color: rgba(77, 140, 255, 0.6);
  box-shadow: 0 0 0 3px rgba(46, 107, 255, 0.16);
}

.result-count {
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

.result-count b { color: var(--color-text-primary); font-family: var(--font-display); }

/* --------------------------------------------------------------------------
   2. GRID STATES
   -------------------------------------------------------------------------- */

.game-grid .game-card {
  animation: cardIn 420ms var(--ease-out) both;
}

@keyframes cardIn {
  from { opacity: 0; transform: translateY(16px) scale(0.97); }
  to   { opacity: 1; transform: none; }
}

.empty-state {
  padding: var(--space-9) var(--space-5);
  text-align: center;
  border-radius: var(--radius-xl);
  background: rgba(23, 23, 40, 0.5);
  border: 1px dashed rgba(255, 255, 255, 0.14);
}

.empty-state__icon {
  display: grid;
  place-items: center;
  width: 64px;
  height: 64px;
  margin: 0 auto var(--space-4);
  border-radius: 20px;
  background: var(--gradient-primary-soft);
  border: 1px solid rgba(77, 140, 255, 0.28);
  color: var(--color-electric-blue-bright);
}

.empty-state__icon svg { width: 28px; height: 28px; }

.empty-state p { margin-bottom: var(--space-5); }

/* --------------------------------------------------------------------------
   3. PROVIDER / EDITORIAL BLOCKS
   -------------------------------------------------------------------------- */

.provider-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.provider-card {
  padding: var(--space-5) var(--space-4);
  text-align: center;
  border-radius: var(--radius-lg);
  background: rgba(23, 23, 40, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.08);
  transition: transform var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}

.provider-card:hover { transform: translateY(-4px); border-color: rgba(77, 140, 255, 0.4); }

.provider-card b {
  display: block;
  font-family: var(--font-display);
  font-size: var(--fs-base);
  color: var(--color-text-primary);
  margin-bottom: 0.2rem;
}

.provider-card span { font-size: var(--fs-xs); color: var(--color-text-muted); }

@media (min-width: 768px) {
  .catalogue-tools { grid-template-columns: 1fr auto; }
  .search-field { min-width: 280px; }
  .provider-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (min-width: 1200px) {
  .provider-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
