/* ═══════════════════════════════════════════════════════════
   fanway-ai-public.css
   Layout PUBLICZNYCH stron /zestawy-online/ i /zestaw-online/ — celowo
   OSOBNY plik od fanway-ai.css (który zawiera style SILNIKÓW zadań,
   wspólnych z backendem nauczyciela — te zostają tam, bo to jeden silnik
   z jednym stylem, nie "kod strony"). Tu tylko rzeczy które NIE ISTNIEJĄ
   nigdzie indziej: nagłówek publiczny, pigułki filtrów, poziome karty
   galerii.

   Kolory/rozmiary filtrów i odznak dopasowane 1:1 do fanway-ai-ebooks.css
   (dostarczony przez użytkownika) — te same zmienne wizualne co reszta
   fanway.tv (:root w tamtym pliku: --faie-accent-red/--faie-badge-*),
   przepisane tu jawnie (nie importujemy cudzego pliku, żeby zachować
   pełną niezależność — patrz zasada oddzielenia frontend/backend).
   Architektura dropdown zostaje WŁASNA (custom div, nie natywny <select>
   jak tam) — user prosił o dopasowanie koloru/czcionki, nie o zmianę
   mechaniki; natywny select nie pozwoliłby pokazać aktualnie wybranej
   wartości wprost w tekście przycisku pigułki tak jak teraz.

   Paginacja (.fai-pagination/.fai-page-btn/.fai-page-num-btn) CELOWO
   reużywa istniejące klasy z fanway-ai.css (ten plik i tak jest zawsze
   ładowany, komponent jest neutralny/generyczny, nie "kod backendu") —
   jedyne miejsce w tym pliku gdzie świadomie NIE duplikujemy.
═══════════════════════════════════════════════════════════ */

.fai-public-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 24px 16px 60px;
}

.fai-public-header {
  margin-bottom: 20px;
}
.fai-public-title {
  font-size: 28px;
  font-weight: 700;
  color: #fff;
  margin: 0;
}

/* ── Filtry — pigułki czerwone z rozwijanym menu. Wartości (kolor,
   padding, font-weight, promień) 1:1 z .faie-filter select w
   fanway-ai-ebooks.css. ── */
.fai-gallery-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 24px;
}
.fai-filter-pill {
  position: relative;
}
.fai-filter-btn {
  background-color: #e6332c;
  color: #ffffff;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 24px;
  padding: 12px 36px 12px 20px;
  font-size: 14px;
  font-weight: 600;
  font-family: inherit !important; /* wymusza dziedziczenie z <body> zamiast ewentualnej font-family narzuconej przez motyw na <button> */
  text-transform: none !important; /* przeciwstawia się globalnemu text-transform:uppercase na <button> narzuconemu przez motyw strony (dodane !important na wypadek gdyby ten globalny styl motywu też go używał) — referencyjna strona używa <select>, który nie jest tym dotknięty */
  cursor: pointer;
  white-space: nowrap;
  min-width: 180px;
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 16px;
}
.fai-filter-btn:hover { opacity: 0.9; }
/* Stan otwartego dropdown — klasa dodawana/usuwana przez JS (patrz
   faiFilterSyncActiveClass w fanway-ai-zestawy-online.js), NIE :focus
   (rozjeżdżał się: kliknięcie poza dropdown chowa listę, ale nie usuwa
   fokusu z przycisku, więc kolor zostawałby "przyklejony" po zamknięciu). */
.fai-filter-btn-active {
  background-color: #010001 !important;
}
.fai-filter-current { font-weight: 600; font-family: inherit !important; text-transform: none !important; }

/* Ciemne tło / biały tekst — zgodnie z rzeczywistym wyglądem .faie-filter
   select na fanway.tv/e-ksiazki/ (zweryfikowane na zrzutach ekranu, nie na
   samym pliku CSS — mechanizm tam prawdopodobnie color-scheme:dark w
   głównym pliku motywu, którego nie mamy; tu po prostu odtwarzamy
   identyczny efekt wizualny jawnie, niezależnie od przyczyny). */
.fai-filter-dropdown {
  display: none;
  position: absolute;
  left: 0;
  top: 46px;
  z-index: 30;
  background: #2b2a33;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 8px;
  box-shadow: 0 6px 20px rgba(0,0,0,.5);
  min-width: 180px;
  max-height: 320px;
  overflow-y: auto;
  padding: 4px 0;
}
.fai-filter-opt {
  display: block;
  width: 100%;
  text-align: left;
  padding: 6px 16px;
  line-height: 1.3;
  background: none;
  border: none;
  color: #ffffff;
  font-size: 14px;
  font-weight: 400 !important; /* wymusza normalną wagę — motyw prawdopodobnie narzuca bold na wszystkie <button> */
  font-family: inherit !important;

  text-transform: none !important; /* jak wyżej */
  cursor: pointer;
}
.fai-filter-opt:hover { background: #52525e; }

/* Dropdown filtra "Typ zadania" — szerszy niż pozostałe dwa (poziom/język
   mają krótkie opcje, nie tego potrzebują), bo nazwy typów zadań bywają
   długie (np. "Assign people to sentences" / "Połącz osoby i wypowiedzi")
   i zawijały się na 2 linie w standardowej szerokości 180px. Sam PRZYCISK
   nagłówka (.fai-filter-btn) zostaje bez zmian — to dotyczy WYŁĄCZNIE
   rozwiniętego menu opcji. */
.fai-filter-pill[data-filter-key="type"] .fai-filter-dropdown {
  min-width: 300px;
}
.fai-filter-pill[data-filter-key="type"] .fai-filter-opt {
  white-space: nowrap;
}

/* ── Karty galerii — POZIOME (nie pionowe jak biblioteka e-booków —
   celowa różnica, ustalona wcześniej), tło = gradient wg TYPU zadania,
   odznaki nałożone na wierzch. Same odznaki: kolory/promień/waga 1:1 z
   .faie-badge i --faie-badge-lang/--faie-badge-level/--faie-badge-genre.
   Rozmiar: 2026-09-14, na życzenie użytkownika, dopasowany do grafik
   /e-ksiazki/ (oryginał 800×1200px, proporcja 2:3) ale OBRÓCONY do
   poziomu (3:2) zamiast pionu — stąd aspect-ratio:3/2 zamiast sztywnej
   wysokości; skaluje się poprawnie przy dowolnej szerokości karty z
   auto-fill grida poniżej, bez osobnych breakpointów tablet/phone jak
   w siatce e-booków (tamta ma stałą liczbę kolumn per breakpoint, ta —
   nie). ── */
.fai-gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 360px));
  gap: 16px;
}
.fai-gallery-card {
  display: block;
  position: relative;
  aspect-ratio: 3 / 2;
  border-radius: 10px;
  overflow: hidden;
  background-color: #1a1a1d;
  background-size: cover;
  background-position: center;
  text-decoration: none;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.fai-gallery-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0,0,0,.4);
}
.fai-gallery-card-badges {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 12px;
  background: linear-gradient(to top, rgba(0,0,0,.75), rgba(0,0,0,0));
}

/* ── Odsłony/lajki — dodane 2026-09-15. Pasek U GÓRY karty (dół jest już
   zajęty przez .fai-gallery-card-badges), lekki styl (bez tła-pigułki jak
   .fai-badge) — tylko ikona + liczba na półprzezroczystym gradiencie, żeby
   nie konkurować wizualnie z kolorowymi odznakami typu/źródła. Ten sam
   pasek jest reużywany na /zestaw-online/ (fanway-ai-online-public.js),
   tam serduszko jest klikalne — stąd .fai-stat-like-btn jako <button>,
   nie <span>, i pointer-events:auto tylko na nim. ── */
.fai-stats-bar {
  position: absolute;
  left: 0; right: 0; top: 0;
  display: flex;
  gap: 14px;
  padding: 10px 12px;
  background: linear-gradient(to bottom, rgba(0,0,0,.65), rgba(0,0,0,0));
  pointer-events: none;
}
.fai-stat {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 600;
  color: #ffffff;
  text-shadow: 0 1px 2px rgba(0,0,0,.6);
}
.fai-stat svg { width: 15px; height: 15px; flex-shrink: 0; }
.fai-heart-icon { fill: none; stroke: currentColor; stroke-width: 2; transition: fill .15s ease, stroke .15s ease; }
.fai-stat-like-btn {
  pointer-events: auto;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: #ffffff;
}
.fai-stat-like-btn-active { color: #ef4444; }
.fai-stat-like-btn-active .fai-heart-icon { fill: #ef4444; stroke: #ef4444; }
.fai-stat-like-btn:disabled { cursor: default; opacity: .7; }
/* Wariant NIE-nakładkowy — używany na /zestaw-online/, gdzie kontener
   odznak (#fai-online-exercise-badges) jest w normalnym przepływie strony
   (position:static), nie nad grafiką jak w galerii — więc .fai-stats-bar
   (position:absolute) by tam nie zadziałał. Te same ikony/kolory, po
   prostu bez pozycjonowania, dosunięte do prawej w tym samym wierszu co
   odznaki język/poziom/typ/źródło. */
.fai-stats-inline {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  margin-left: auto;
  color: #e0e0e0;
}
.fai-stats-inline .fai-stat,
.fai-stats-inline .fai-stat-like-btn { color: inherit; text-shadow: none; }
.fai-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 24px;
  font-size: 11px;
  font-weight: 700;
  color: #ffffff;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.fai-badge-lang  { background-color: #2563eb; } /* --faie-badge-lang */
.fai-badge-level { background-color: #9333ea; } /* --faie-badge-level */
.fai-badge-type  { background-color: #059669; } /* --faie-badge-genre */
.fai-badge-video { background-color: #f59e0b; } /* dodane 2026-09-14 — zadania z naszym wideo (source_type='vod') */
/* Odznaki źródła — dodane 2026-09-15, ten sam styl co .fai-badge-video,
   jedna z czterech pokazywana zawsze wg source_type (patrz JS). */
.fai-badge-youtube { background-color: #dc2626; } /* source_type='youtube' */
.fai-badge-vimeo   { background-color: #0ea5e9; } /* source_type='vimeo' */
.fai-badge-text    { background-color: #64748b; } /* source_type='text' */

@media (max-width: 600px) {
  .fai-public-title { font-size: 22px; }
  .fai-gallery-grid { grid-template-columns: 1fr; }
}
