/*
 * KSzkola — planer zajęć, dostępność, plan grupy (B5; 05 §3.5.1, §1.2, §1.4). Dołączany tylko na stronach B5.
 * FullCalendar 7.1 ma style w plikach (skeleton.css + motyw „classic”) — bez wstrzykiwania <style>, więc CSP bez zmian.
 * Tu: zmienne motywu FullCalendar → tokeny KSzkola (jasny i ciemny), paleta 12 barw nauczycieli (PaletaNauczycieli.cs),
 * konflikty (twardy — ramka błędu, miękki — ramka przerywana ostrzeżenia), tła dostępności i dni wolnych w obu motywach.
 */

/* ---------- paleta nauczycieli: jednakowa jasność OKLCH, ≥ 3:1 wobec powierzchni i tła (test PaletaNauczycieliTests) ---------- */
.ksz-kolor-0 { --ksz-kolor-nauczyciela: #B4514C; }
.ksz-kolor-1 { --ksz-kolor-nauczyciela: #AD5C15; }
.ksz-kolor-2 { --ksz-kolor-nauczyciela: #976C00; }
.ksz-kolor-3 { --ksz-kolor-nauczyciela: #6B7F09; }
.ksz-kolor-4 { --ksz-kolor-nauczyciela: #2D8949; }
.ksz-kolor-5 { --ksz-kolor-nauczyciela: #008C77; }
.ksz-kolor-6 { --ksz-kolor-nauczyciela: #008998; }
.ksz-kolor-7 { --ksz-kolor-nauczyciela: #007EB5; }
.ksz-kolor-8 { --ksz-kolor-nauczyciela: #4573C0; }
.ksz-kolor-9 { --ksz-kolor-nauczyciela: #7565BB; }
.ksz-kolor-10 { --ksz-kolor-nauczyciela: #9558A3; }
.ksz-kolor-11 { --ksz-kolor-nauczyciela: #AB517F; }
[data-bs-theme=dark] .ksz-kolor-0 { --ksz-kolor-nauczyciela: #F4928A; }
[data-bs-theme=dark] .ksz-kolor-1 { --ksz-kolor-nauczyciela: #EC9C63; }
[data-bs-theme=dark] .ksz-kolor-2 { --ksz-kolor-nauczyciela: #D4AB4F; }
[data-bs-theme=dark] .ksz-kolor-3 { --ksz-kolor-nauczyciela: #A7BC61; }
[data-bs-theme=dark] .ksz-kolor-4 { --ksz-kolor-nauczyciela: #76C788; }
[data-bs-theme=dark] .ksz-kolor-5 { --ksz-kolor-nauczyciela: #42CAB4; }
[data-bs-theme=dark] .ksz-kolor-6 { --ksz-kolor-nauczyciela: #31C7D5; }
[data-bs-theme=dark] .ksz-kolor-7 { --ksz-kolor-nauczyciela: #5ABDF2; }
[data-bs-theme=dark] .ksz-kolor-8 { --ksz-kolor-nauczyciela: #84B2FD; }
[data-bs-theme=dark] .ksz-kolor-9 { --ksz-kolor-nauczyciela: #B0A4F8; }
[data-bs-theme=dark] .ksz-kolor-10 { --ksz-kolor-nauczyciela: #D398E0; }
[data-bs-theme=dark] .ksz-kolor-11 { --ksz-kolor-nauczyciela: #EA91BC; }

.ksz-kolor-kropka {
  display: inline-block;
  flex: none;
  width: .75rem;
  height: .75rem;
  margin-right: .25rem;
  border-radius: 50%;
  background: var(--ksz-kolor-nauczyciela, var(--ksz-ramka-pola));
  vertical-align: -.05em;
}

/* ---------- tła: dostępność, poza dostępnością, dzień wolny (osobne wartości dla trybu ciemnego — 05 §1.4) ---------- */
:root {
  --ksz-planer-dostepny: rgba(27, 127, 71, .13);
  --ksz-planer-kreska: rgba(26, 31, 38, .09);
  --ksz-planer-wolne: rgba(138, 83, 0, .16);
}
[data-bs-theme=dark] {
  --ksz-planer-dostepny: rgba(76, 195, 138, .16);
  --ksz-planer-kreska: rgba(231, 234, 238, .08);
  --ksz-planer-wolne: rgba(240, 180, 90, .16);
}
.ksz-tlo-dostepny { background: var(--ksz-planer-dostepny) !important; opacity: 1 !important; }
.ksz-tlo-niedostepny {
  background: repeating-linear-gradient(45deg, var(--ksz-planer-kreska) 0 5px, transparent 5px 11px) !important;
  opacity: 1 !important;
}
.ksz-tlo-wolne {
  background: repeating-linear-gradient(-45deg, var(--ksz-planer-wolne) 0 6px, transparent 6px 12px) !important;
  opacity: 1 !important;
}

/* ---------- FullCalendar (motyw classic) → tokeny KSzkola ---------- */
.ksz-planer-siatka,
.ksz-dostepnosc-siatka {
  --fc-classic-background: var(--ksz-powierzchnia);
  --fc-classic-foreground: var(--ksz-tekst);
  --fc-classic-muted-foreground: var(--ksz-tekst-2);
  --fc-classic-faint-foreground: var(--ksz-tekst-2);
  --fc-classic-border: var(--ksz-ramka);
  --fc-classic-strong-border: var(--ksz-ramka-pola);
  --fc-classic-faint: rgba(var(--ksz-tekst-rgb), .03);
  --fc-classic-muted: rgba(var(--ksz-tekst-rgb), .06);
  --fc-classic-strong: rgba(var(--ksz-tekst-rgb), .12);
  --fc-classic-today: rgba(var(--ksz-akcent-rgb), .06);
  --fc-classic-now: var(--ksz-blad);
  --fc-classic-highlight: rgba(var(--ksz-akcent-rgb), .18);
  --fc-classic-primary: var(--ksz-akcent-tlo);
  --fc-classic-primary-foreground: var(--ksz-na-akcencie);
  --fc-classic-event: var(--ksz-powierzchnia-2);
  --fc-classic-event-contrast: var(--ksz-tekst);
  --fc-classic-background-event: transparent;
  --fc-classic-background-event-opacity: 100%;
  font-size: .875rem;
  color: var(--ksz-tekst);
}

.ksz-planer-siatka {
  border: 1px solid var(--ksz-ramka);
  border-radius: var(--bs-border-radius-lg);
  background: var(--ksz-powierzchnia);
  padding: .5rem;
}

/* Zajęcia: pasek wg nauczyciela, treść w kolorach neutralnych (czytelność). */
.ksz-planer-siatka .ksz-zajecia {
  border: 1px solid var(--ksz-ramka) !important;
  border-left: 4px solid var(--ksz-kolor-nauczyciela) !important;
  border-radius: 4px;
  background: var(--ksz-powierzchnia-2) !important;
  color: var(--ksz-tekst) !important;
  box-shadow: 0 0 0 1px var(--ksz-powierzchnia);
  cursor: pointer;
  overflow: hidden;
}
.ksz-planer-siatka .ksz-zajecia * { color: inherit; }
.ksz-planer-siatka .ksz-zajecia:focus-visible {
  outline: 2px solid var(--ksz-fokus);
  outline-offset: 2px;
  box-shadow: 0 0 0 2px var(--ksz-powierzchnia);
  z-index: 5;
}
.ksz-zajecia-godzina,
.ksz-zajecia-grupa,
.ksz-zajecia-meta,
.ksz-zajecia-konflikt {
  display: block;
  padding: 0 .25rem;
  overflow: hidden;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ksz-zajecia-tresc { display: block; min-width: 0; width: 100%; overflow: hidden; }
.ksz-zajecia-godzina { display: flex; gap: .2rem; align-items: center; font-variant-numeric: tabular-nums; }
.ksz-zajecia-godzina .ksz-ikona { flex: none; width: .85em; height: .85em; }
.ksz-zajecia-grupa { font-weight: 600; }
.ksz-zajecia-meta { color: var(--ksz-tekst-2) !important; font-size: .8125rem; }
.ksz-zajecia-konflikt { font-size: .75rem; white-space: normal; }

.ksz-planer-siatka .ksz-zajecia--twardy {
  border: 2px solid var(--ksz-blad) !important;
  border-left: 5px solid var(--ksz-blad) !important;
  background: var(--ksz-blad-tlo) !important;
}
.ksz-planer-siatka .ksz-zajecia--twardy .ksz-zajecia-konflikt,
.ksz-planer-siatka .ksz-zajecia--twardy .ksz-zajecia-godzina .ksz-ikona { color: var(--ksz-blad) !important; }
.ksz-planer-siatka .ksz-zajecia--miekki {
  border: 2px dashed var(--ksz-ostrzezenie) !important;
  border-left: 5px solid var(--ksz-kolor-nauczyciela) !important;
}
.ksz-planer-siatka .ksz-zajecia--miekki .ksz-zajecia-konflikt { color: var(--ksz-ostrzezenie) !important; }
.ksz-planer-siatka .ksz-zajecia--odwolane {
  border-style: dotted !important;
  background: var(--ksz-powierzchnia) !important;
}
.ksz-planer-siatka .ksz-zajecia--odwolane .ksz-zajecia-grupa { font-weight: 400; }
.ksz-planer-siatka .ksz-dzien-wolny {
  border: 1px solid var(--ksz-ostrzezenie-ramka) !important;
  background: var(--ksz-ostrzezenie-tlo) !important;
  color: var(--ksz-ostrzezenie) !important;
  font-weight: 600;
}
[data-bs-theme=dark] .ksz-planer-siatka .ksz-dzien-wolny { background: rgba(240, 180, 90, .14) !important; }

/* Widok dnia: kilka kalendarzy obok siebie w jednym przewijanym kontenerze (wspólna oś czasu — P-105 (a)). */
.ksz-planer-siatka--kolumny { overflow-x: auto; }
.ksz-planer-kolumny { display: flex; gap: .5rem; min-width: min-content; }
.ksz-planer-kolumna { flex: 1 0 13rem; min-width: 13rem; }
.ksz-planer-kolumna-naglowek {
  display: flex;
  gap: .25rem;
  align-items: center;
  position: sticky;
  top: 0;
  z-index: 3;
  margin: 0 0 .25rem;
  padding: .375rem .5rem;
  border-bottom: 1px solid var(--ksz-ramka);
  background: var(--ksz-powierzchnia);
  font-size: .875rem;
  font-weight: 600;
}

/* ---------- układ strony planera ---------- */
.ksz-planer-widoki { margin-bottom: .75rem; }
.ksz-planer-widoki .nav { gap: .25rem; flex-wrap: wrap; }
.ksz-planer-pasek { align-items: flex-end; }
.ksz-planer-nawigacja { display: flex; flex: 1 1 100%; flex-wrap: wrap; gap: .5rem; align-items: center; }
.ksz-planer-zakres { margin: 0 0 0 .5rem; font-size: 1.0625rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.ksz-planer-pasek .ksz-pole { flex: 1 1 11rem; margin-bottom: 0; }
.ksz-planer-przelaczniki { display: flex; flex-wrap: wrap; gap: .25rem 1rem; padding-bottom: .4rem; }
.ksz-planer-przelaczniki .form-check { margin-bottom: 0; }

.ksz-planer-uklad { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
@media (min-width: 1600px) {
  .ksz-planer-uklad { grid-template-columns: minmax(0, 1fr) 20rem; }
}
@media (min-width: 992px) and (max-width: 1599.98px) {
  /* Panel konfliktów pod siatką — siatka dostaje całą szerokość. */
  .ksz-planer-bok { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); gap: 1rem; align-items: start; }
  .ksz-planer-bok .ksz-planer-kto-moze { margin-top: 0 !important; }
}
/* Tydzień „wszyscy nauczyciele” — zajęcia obok siebie potrzebują szerokości; siatka przewija się poziomo (TabelaDanych). */
.ksz-planer-siatka--gesta { overflow-x: auto; }
.ksz-planer-siatka--gesta .ksz-planer-kalendarz { min-width: 1200px; }
.ksz-planer-glowna { min-width: 0; }
.ksz-planer-bok { min-width: 0; }

.ksz-planer-komunikat { display: none; }
.ksz-planer-komunikat--widoczny {
  display: block;
  margin-bottom: .75rem;
  padding: .5rem .75rem;
  border: 1px solid var(--ksz-blad-ramka);
  border-left: 4px solid var(--ksz-blad);
  border-radius: var(--bs-border-radius);
  background: var(--ksz-blad-tlo);
  color: var(--ksz-tekst);
}

/* ZAŁOŻENIE P-306: edycja od 1280 px (03 §6.6) — węziej siatka i okno tylko do podglądu, z komunikatem. */
@media (min-width: 1280px) {
  .ksz-planer-tylko-waski { display: none !important; }
}

/* Lista: widok „Lista” albo telefon przy domyślnym widoku (siatka ustępuje liście). */
.ksz-planer-lista { display: none; }
.ksz-planer-lista--widok { display: block; }
.ksz-planer-lista-dzien + .ksz-planer-lista-dzien { margin-top: 1rem; }
.ksz-planer-lista-tytul { margin-bottom: .75rem; }
.ksz-wiersz-odwolany td { color: var(--ksz-tekst-2); }
@media (max-width: 767.98px) {
  .ksz-planer--domyslny .ksz-planer-siatka { display: none; }
  .ksz-planer--domyslny .ksz-planer-lista { display: block; }
}

.ksz-planer-legenda { margin-top: 1rem; }
.ksz-planer-legenda-lista { display: flex; flex-wrap: wrap; gap: .375rem 1.25rem; padding: 0; margin: 0; list-style: none; font-size: .875rem; }
.ksz-planer-legenda-lista > li { display: inline-flex; gap: .375rem; align-items: center; }
.ksz-legenda-probka {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1rem;
  border: 1px solid var(--ksz-ramka);
  border-radius: 3px;
  background-color: var(--ksz-powierzchnia);
}
.ksz-legenda-probka .ksz-ikona { width: .75rem; height: .75rem; }
.ksz-legenda-probka--twardy { border: 2px solid var(--ksz-blad); background: var(--ksz-blad-tlo); color: var(--ksz-blad); }
.ksz-legenda-probka--miekki { border: 2px dashed var(--ksz-ostrzezenie); color: var(--ksz-ostrzezenie); }
.ksz-legenda-probka--odwolane { border-style: dotted; color: var(--ksz-tekst-2); }

.ksz-planer-konflikty-lista { padding: 0; margin: 0; list-style: none; }
.ksz-planer-konflikty-lista > li { padding: .5rem 0; border-top: 1px solid var(--ksz-ramka); }
.ksz-planer-konflikt-przycisk { padding: 0; text-align: left; font-weight: 600; }
.ksz-planer-konflikt-opis { display: flex; flex-wrap: wrap; gap: .25rem .5rem; align-items: baseline; margin-top: .25rem; }
.ksz-planer-kto-lista { padding: 0; margin: 0; list-style: none; }
.ksz-planer-kto-lista > li { display: flex; gap: .5rem; align-items: center; justify-content: space-between; padding: .25rem 0; }

/* ---------- okno zajęć ---------- */
.ksz-okno-fakty { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: .5rem 1rem; margin-bottom: 1rem; }
.ksz-okno-fakty dt { color: var(--ksz-tekst-2); font-size: .8125rem; font-weight: 400; }
.ksz-okno-fakty dd { margin: 0; }
.ksz-okno-fakty-szeroki { grid-column: 1 / -1; }
.ksz-podpowiedz-ostrzezenie { color: var(--ksz-ostrzezenie); }

/* ---------- dostępność (E-PLN-02) ---------- */
.ksz-dostepnosc-siatka {
  border: 1px solid var(--ksz-ramka);
  border-radius: var(--bs-border-radius-lg);
  background: var(--ksz-powierzchnia);
  padding: .5rem;
}
.ksz-dostepnosc-siatka .ksz-przedzial {
  border: 1px solid var(--ksz-sukces-ramka) !important;
  border-left: 4px solid var(--ksz-sukces) !important;
  background: var(--ksz-sukces-tlo) !important;
  color: var(--ksz-tekst) !important;
  cursor: pointer;
}
[data-bs-theme=dark] .ksz-dostepnosc-siatka .ksz-przedzial { background: rgba(76, 195, 138, .16) !important; }
.ksz-dostepnosc-siatka .ksz-przedzial * { color: inherit; }
.ksz-dostepnosc-siatka .ksz-przedzial:focus-visible { outline: 2px solid var(--ksz-fokus); outline-offset: 2px; }
.ksz-dostepnosc-siatka .ksz-nakladka {
  border: 1px solid var(--ksz-ramka-pola) !important;
  border-left: 4px solid var(--ksz-kolor-nauczyciela, var(--ksz-ramka-pola)) !important;
  background: rgba(var(--ksz-powierzchnia-rgb), .92) !important;
  color: var(--ksz-tekst) !important;
  pointer-events: none;
}
.ksz-dostepnosc-siatka .ksz-nakladka--poza {
  border: 2px dashed var(--ksz-ostrzezenie) !important;
}
.ksz-dostepnosc-siatka .ksz-nakladka * { color: inherit; }

.ksz-legenda-probka--dostepnosc { border: 1px solid var(--ksz-sukces-ramka); border-left: 4px solid var(--ksz-sukces); background: var(--ksz-sukces-tlo); }
.ksz-dostepnosc-telefon { display: none; }
@media (max-width: 767.98px) {
  .ksz-dostepnosc-siatka { display: none; }
  .ksz-dostepnosc-telefon { display: block; }
}

/* ---------- plan zajęć grupy (E-PLZ-01) ---------- */
.ksz-plan-podsumowanie { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.ksz-kafelek-mini {
  display: inline-flex;
  gap: .375rem;
  align-items: baseline;
  padding: .375rem .75rem;
  border: 1px solid var(--ksz-ramka);
  border-radius: var(--bs-border-radius);
  background: var(--ksz-powierzchnia);
  font-variant-numeric: tabular-nums;
}
.ksz-kafelek-mini strong { color: var(--ksz-tekst-2); font-weight: 400; font-size: .875rem; }
.ksz-plan-generowanie { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--ksz-ramka); }
.ksz-plan-generowanie .ksz-pole { flex: 0 1 26rem; margin-bottom: 0; }

/* Tekst „visually-hidden” (position: absolute) w komórkach tabeli przewijanej poziomo wychodzi poza ramkę i poszerza stronę
   na 360 px, jeśli ramka nie jest blokiem zawierającym — poprawka dla stron B5 (do przeniesienia do ksz-komponenty.css). */
.ksz-tabela-ramka { position: relative; }

/* Lista zajęć na telefonie — wiersze jako karty (role ARIA tabeli zachowane jawnie w znacznikach). */
@media (max-width: 767.98px) {
  .ksz-tabela-karty thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .ksz-tabela-karty, .ksz-tabela-karty tbody, .ksz-tabela-karty tr, .ksz-tabela-karty td { display: block; width: 100%; }
  .ksz-tabela-karty tr { padding: .5rem .75rem; border-bottom: 1px solid var(--ksz-ramka); }
  .ksz-tabela-karty tr:last-child { border-bottom: 0; }
  .ksz-tabela-karty td { padding: .125rem 0; border: 0; text-align: left !important; }
  .ksz-tabela-karty td.ksz-karta-tytul { display: inline-block; width: auto; margin-right: .5rem; font-weight: 600; }
  .ksz-tabela-karty td[data-etykieta]::before { content: attr(data-etykieta) ": "; color: var(--ksz-tekst-2); }
  .ksz-tabela-karty td .btn { margin-top: .25rem; min-height: 2.75rem; }
}
