/* ==========================================================================
   /kalendarz-nauczyciela/ (page-kalendarz-nauczyciela.php) - ładowane tylko na tej stronie.
   Wspólne elementy (sekcje, tabele, FAQ, karty odliczania, przyciski PDF) - main.css (.kal-odl-*, .kal-druk__pobierz).
   ========================================================================== */

.kal-kn {
  --kn-akcent: #2F4A7A;
  --kn-akcent-tlo: #E8EDF6;
  --kn-nauka: #2E7D5B;
  --kn-nauka-tlo: #E5F3EC;
  --kn-ferie: #A6873B;
  --kn-ferie-tlo: #F6EFDC;
  --kn-wolne-tlo: #F3E6E6;
}

/* ---------- Kafle na górze ---------- */
.kal-kn-odp { margin: 8px 0 20px; }
.kal-kn-kafle {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.kal-kn-kafel {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px 18px;
  background: var(--kal-paper-raised);
  border: 1px solid var(--kal-line);
  border-top: 5px solid var(--kn-akcent);
  border-radius: 10px;
}
.kal-kn-kafel--pdf { background: var(--kn-akcent-tlo); border-color: var(--kn-akcent); }
.kal-kn-kafel__etykieta {
  font-family: var(--kal-font-mono);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--kn-akcent);
}
.kal-kn-kafel__liczba {
  font-family: var(--kal-font-display);
  font-size: 2.5rem;
  font-weight: 700;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
  color: var(--kal-navy);
  text-decoration: none;
}
.kal-kn-kafel__liczba small { font-size: 1.05rem; font-weight: 600; }
a.kal-kn-kafel__liczba { color: var(--kn-akcent); }
a.kal-kn-kafel__liczba:hover { text-decoration: underline; text-underline-offset: 4px; }
.kal-kn-kafel__opis { font-size: 0.88rem; line-height: 1.4; color: var(--kal-ink-soft); }

@media (max-width: 900px) {
  .kal-kn-kafle { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .kal-kn-kafle { gap: 8px; }
  .kal-kn-kafel { padding: 12px 14px; }
  .kal-kn-kafel__liczba { font-size: 1.9rem; }
}

/* ---------- Generator ---------- */
.kal-kn-form {
  display: flex;
  flex-direction: column;
  gap: 18px;
  margin-top: 16px;
  padding: 20px;
  background: var(--kal-paper-raised);
  border: 1px solid var(--kal-line);
  border-radius: 10px;
}
.kal-kn-form__ustawienia {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}
@media (max-width: 1100px) { .kal-kn-form__ustawienia { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) {
  .kal-kn-form { padding: 14px; }
  .kal-kn-form__ustawienia { grid-template-columns: minmax(0, 1fr); }
}

.kal-kn-grupa {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.kal-kn-grupa legend {
  padding: 0 0 6px;
  font-family: var(--kal-font-mono);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--kal-brass);
}
.kal-kn-grupa legend small { font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--kal-ink-soft); }

.kal-kn-pole {
  display: flex;
  flex-direction: column;
  gap: 5px;
  font-size: 0.8rem;
  color: var(--kal-ink-soft);
}
.kal-kn-pole select,
.kal-kn-pole input[type="text"],
.kal-kn-czesc__ile select {
  width: 100%;
  min-width: 0;
  padding: 8px;
  font-family: var(--kal-font-body);
  font-size: 0.95rem;
  color: var(--kal-ink);
  background: #fff;
  border: 1px solid var(--kal-line);
  border-radius: var(--kal-radius);
}
.kal-kn-pole select:focus,
.kal-kn-pole input[type="text"]:focus,
.kal-kn-czesc__ile select:focus { outline: 2px solid var(--kn-akcent); outline-offset: 1px; }

.kal-kn-opcje { display: flex; flex-wrap: wrap; gap: 6px; }
.kal-kn-radio {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  font-size: 0.88rem;
  background: #fff;
  border: 1px solid var(--kal-line);
  border-radius: 999px;
  cursor: pointer;
}
.kal-kn-radio:has(input:checked) { border-color: var(--kn-akcent); background: var(--kn-akcent-tlo); }
.kal-kn-radio input { margin: 0; accent-color: var(--kn-akcent); }
.kal-kn-paleta i { display: inline-block; width: 12px; height: 12px; margin-right: 5px; vertical-align: -1px; border-radius: 50%; }

.kal-kn-uwaga {
  margin: 0;
  padding: 8px 10px;
  font-size: 0.82rem;
  line-height: 1.45;
  color: #6E5A24;
  background: var(--kn-ferie-tlo);
  border-radius: 6px;
}

/* Części kalendarza - karty z miniaturą strony */
.kal-kn-czesci__lista {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr));
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.kal-kn-czesc {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  background: #fff;
  border: 1px solid var(--kal-line);
  border-radius: 8px;
}
.kal-kn-czesc:has(input[type="checkbox"]:checked) { border-color: var(--kn-akcent); box-shadow: inset 3px 0 0 var(--kn-akcent); }
.kal-kn-czesc__etykieta { display: grid; grid-template-columns: auto auto 1fr; align-items: start; gap: 10px; cursor: pointer; }
.kal-kn-czesc__etykieta input { margin: 4px 0 0; accent-color: var(--kn-akcent); }
.kal-kn-czesc__tekst { display: flex; flex-direction: column; gap: 2px; font-size: 0.82rem; line-height: 1.4; color: var(--kal-ink-soft); }
.kal-kn-czesc__tekst strong { font-size: 0.92rem; color: var(--kal-navy); }
.kal-kn-czesc__strony { font-style: normal; font-size: 0.74rem; font-weight: 600; color: var(--kn-akcent); }
.kal-kn-czesc__ile { display: flex; align-items: center; gap: 8px; margin-left: 30px; font-size: 0.8rem; color: var(--kal-ink-soft); }
.kal-kn-czesc__ile select { width: auto; padding: 4px 6px; font-size: 0.85rem; }
.kal-kn-czesc:not(:has(input[type="checkbox"]:checked)) .kal-kn-czesc__ile { display: none; }
.kal-kn-czesc:not(:has(input[type="checkbox"]:checked)) .kal-kn-mini { opacity: 0.45; }

/* Miniatury stron PDF (czyste CSS, bez obrazków) */
.kal-kn-mini {
  --l: #C9D0DD;
  --a: var(--kn-akcent);
  position: relative;
  display: block;
  width: 40px;
  height: 54px;
  background-color: #fff;
  border: 1px solid #B9C1CF;
  border-radius: 2px;
  box-shadow: 1px 1px 0 rgba(0, 0, 0, 0.06);
  background-repeat: no-repeat;
}
.kal-kn-mini::before { content: ""; position: absolute; top: 4px; left: 4px; width: 18px; height: 3px; background: var(--a); }
.kal-kn-mini--okladka { background-image: linear-gradient(var(--a), var(--a)); background-size: 100% 40%; }
.kal-kn-mini--okladka::before { top: 30px; background: var(--l); width: 30px; box-shadow: 0 6px 0 var(--l), 0 12px 0 var(--l); }
.kal-kn-mini--rok,
.kal-kn-mini--miesiace {
  background-image: repeating-linear-gradient(90deg, var(--l) 0 1px, transparent 1px 8px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 8px);
  background-position: 4px 11px;
  background-size: 32px 33px;
}
.kal-kn-mini--rok { background-image: repeating-linear-gradient(90deg, var(--l) 0 3px, transparent 3px 5px), repeating-linear-gradient(0deg, var(--l) 0 3px, transparent 3px 5px); background-size: 31px 38px; }
.kal-kn-mini--terminarz,
.kal-kn-mini--notatki,
.kal-kn-mini--kontakty {
  background-image: repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 5px);
  background-position: 4px 11px;
  background-size: 31px 38px;
}
.kal-kn-mini--terminarz { background-image: linear-gradient(90deg, var(--a) 0 6px, transparent 6px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 5px); background-size: 31px 38px; }
.kal-kn-mini--kontakty { background-image: repeating-linear-gradient(90deg, var(--l) 0 1px, transparent 1px 10px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 5px); }
.kal-kn-mini--plan,
.kal-kn-mini--dyzury {
  background-image: repeating-linear-gradient(90deg, var(--l) 0 1px, transparent 1px 6px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 4px);
  background-position: 4px 11px;
  background-size: 31px 17px;
}
.kal-kn-mini--plan { background-image: repeating-linear-gradient(90deg, var(--l) 0 1px, transparent 1px 6px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 4px), repeating-linear-gradient(90deg, var(--l) 0 1px, transparent 1px 6px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 4px); background-position: 4px 11px, 4px 11px, 4px 32px, 4px 32px; background-size: 31px 17px; }
.kal-kn-mini--dyzury { background-image: repeating-linear-gradient(90deg, var(--l) 0 1px, transparent 1px 6px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 4px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 4px); background-position: 4px 11px, 4px 11px, 4px 32px; background-size: 31px 17px; }
.kal-kn-mini--klasy {
  background-image: linear-gradient(90deg, transparent 0 12px, var(--l) 12px 13px, transparent 13px), repeating-linear-gradient(90deg, var(--l) 0 1px, transparent 1px 3px), repeating-linear-gradient(0deg, var(--l) 0 1px, transparent 1px 3px);
  background-position: 4px 11px, 17px 11px, 4px 11px;
  background-size: 31px 38px, 18px 38px, 31px 38px;
}
.kal-kn-mini--tygodnie {
  background-image: repeating-linear-gradient(0deg, transparent 0 6px, var(--l) 6px 7px, transparent 7px 8px), repeating-linear-gradient(90deg, var(--a) 0 1px, transparent 1px 31px);
  background-position: 4px 11px, 12px 11px;
  background-size: 31px 38px, 1px 38px;
}

.kal-kn-akcje {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding-top: 14px;
  border-top: 1px solid var(--kal-line);
}
.kal-kn-podsumowanie { flex: 1 1 280px; margin: 0; font-size: 0.92rem; color: var(--kal-ink-soft); }
.kal-kn-akcje .kal-druk__pobierz { width: auto; }
.kal-kn-akcje .kal-druk__pobierz:disabled { opacity: 0.55; cursor: progress; }
@media (max-width: 600px) {
  .kal-kn-akcje .kal-druk__pobierz { flex: 1 1 100%; }
}

/* ---------- Tabele ---------- */
.kal-kn-tabela caption { caption-side: top; padding: 10px 14px; text-align: left; font-size: 0.8rem; color: var(--kal-ink-soft); }
.kal-kn-tabela td { font-variant-numeric: tabular-nums; }
.kal-kn-terminy__kiedy { white-space: nowrap; font-weight: 600; color: var(--kal-navy); }
.kal-kn-terminy td:last-child { font-size: 0.86rem; line-height: 1.5; color: var(--kal-ink-soft); }
.kal-kn-terminy tr { box-shadow: inset 4px 0 0 transparent; }
.kal-kn-terminy tr.kal-kn-terminy--nauka { box-shadow: inset 4px 0 0 var(--kn-nauka); }
.kal-kn-terminy tr.kal-kn-terminy--ferie { box-shadow: inset 4px 0 0 var(--kn-ferie); background: var(--kn-ferie-tlo) !important; }
.kal-kn-terminy tr.kal-kn-terminy--wolne { box-shadow: inset 4px 0 0 #B05A5A; }
.kal-kn-terminy tr.kal-kn-terminy--egzamin { box-shadow: inset 4px 0 0 var(--kn-akcent); }
.kal-kn-terminy tr.kal-kn-terminy--wakacje { box-shadow: inset 4px 0 0 var(--kal-brass-light); }
@media (max-width: 700px) {
  .kal-kn-terminy__kiedy { white-space: normal; min-width: 7.5em; }
  .kal-kn-terminy td:last-child { min-width: 14em; }
}

.kal-kn-polrocza th, .kal-kn-polrocza td { text-align: center; }
.kal-kn-polrocza tbody th[scope="row"] { text-align: left; white-space: nowrap; }
.kal-kn-polrocza tbody th span { display: block; font-size: 0.74rem; font-weight: 400; color: var(--kal-ink-soft); }
.kal-kn-polrocza tr.kal-kn-polrocza__tura th { padding-top: 14px; text-align: left; font-size: 0.82rem; font-weight: 700; color: var(--kn-akcent); background: var(--kn-akcent-tlo); white-space: normal; }
.kal-kn-polrocza tr.kal-kn-polrocza__matura { color: var(--kal-ink-soft); font-size: 0.86rem; }
.kal-kn-polrocza td { font-family: var(--kal-font-display); font-weight: 600; }
.kal-kn-polrocza tbody tr:nth-child(even) { background: transparent; }

/* ---------- Terminarz nauczyciela ---------- */
.kal-kn-terminarz {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(320px, 100%), 1fr));
  gap: 12px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
}
.kal-kn-termin {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 16px;
  background: var(--kal-paper-raised);
  border: 1px solid var(--kal-line);
  border-left: 4px solid var(--kn-akcent);
  border-radius: 8px;
}
.kal-kn-termin__kiedy { font-family: var(--kal-font-mono); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.03em; color: var(--kn-akcent); }
.kal-kn-termin__tytul { font-size: 1rem; color: var(--kal-navy); }
.kal-kn-termin__opis { margin: 0; font-size: 0.88rem; line-height: 1.55; color: var(--kal-ink-soft); }
.kal-kn-termin__podstawa { margin-top: auto; padding-top: 4px; font-size: 0.74rem; color: var(--kal-ink-soft); opacity: 0.8; }

/* ---------- Kalkulator lekcji ---------- */
.kal-kn-kalk {
  margin: 20px 0 0;
  padding: 18px 20px;
  background: var(--kn-nauka-tlo);
  border: 1px solid #BFE0CF;
  border-radius: 10px;
}
.kal-kn-kalk__tytul { margin: 0 0 4px; font-family: var(--kal-font-display); font-size: 1.05rem; font-weight: 700; color: var(--kn-nauka); }
.kal-kn-kalk__opis { margin: 0 0 12px; font-size: 0.88rem; color: var(--kal-ink-soft); }
.kal-kn-kalk__tura { max-width: 640px; margin-bottom: 12px; }
.kal-kn-kalk__dni { display: flex; flex-wrap: wrap; gap: 10px; }
.kal-kn-kalk__dni label { display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: 0.8rem; font-weight: 600; color: var(--kal-navy); }
.kal-kn-kalk__dni input { width: 4.2em; padding: 8px 6px; font-size: 1rem; text-align: center; border: 1px solid #BFE0CF; border-radius: 6px; background: #fff; }
.kal-kn-kalk__matura { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-size: 0.88rem; cursor: pointer; }
.kal-kn-kalk__matura input { accent-color: var(--kn-nauka); }
.kal-kn-kalk__wynik { display: flex; flex-wrap: wrap; gap: 8px 22px; margin: 14px 0 0; font-size: 0.95rem; }
.kal-kn-kalk__wynik strong { font-family: var(--kal-font-display); font-size: 1.5rem; color: var(--kn-nauka); }

/* ---------- Listy i kroki ---------- */
.kal-kn-podtytul { margin: 28px 0 8px; font-size: 1.05rem; color: var(--kal-navy); }
.kal-kn-lista { margin: 14px 0 0; padding-left: 20px; line-height: 1.6; }
.kal-kn-lista li + li { margin-top: 6px; }
.kal-kn-kroki { margin: 14px 0 0; padding: 0; list-style: none; counter-reset: krok; }
.kal-kn-kroki li {
  position: relative;
  padding: 0 0 14px 44px;
  line-height: 1.6;
  counter-increment: krok;
}
.kal-kn-kroki li::before {
  content: counter(krok);
  position: absolute;
  left: 0;
  top: -2px;
  width: 30px;
  height: 30px;
  font-family: var(--kal-font-display);
  font-weight: 700;
  line-height: 30px;
  text-align: center;
  color: #fff;
  background: var(--kn-akcent);
  border-radius: 50%;
}
.kal-kn-zobacz__lista { margin: 0; padding-left: 20px; line-height: 1.7; }
