/*
 * Radzioch Business Training, LearnDash UI, uzupelnienia.
 * copy-ai9.4, 16.09.2026. Laczony PO assets/css/learndash-karol.css w
 * kolejce enqueue (functions.php, jdb_enqueue()), zeby moc nadpisywac
 * jego regoly bez podnoszenia specyficznosci ponad to co juz tam jest.
 *
 * Cel: wszystko co NIE jest 1:1 z guide'em Karola (radzioch-learndash-
 * style.css) ląduje tutaj, zeby learndash-karol.css zostal czysty i
 * mozliwy do zweryfikowania linia po linii wobec zrodla. Przyklady z
 * zakresu tego pliku (jeszcze niezbudowane, to robota copy-0hg, nie tej
 * sesji): pasek Telegram na stronie kursu, karta postepu w wierszu/inline
 * zamiast domyslnego ukladu LD, numeracja 00/01/.. akordeonu, kazde
 * dopasowanie do REALNEGO markupu LD odkryte przy budowie widokow (np.
 * etykiety statusu tekstowe, ukrycie zdublowanych natywnych blokow,
 * przesuniecia zwiazane z headerem/paskiem admina, stany rozwiniecia
 * sidebar w Focus Mode).
 *
 * Kazda regula dodana tutaj dostaje komentarz z ta sama zasada
 * specyficznosci co w learndash-karol.css: selektor komponentu LD
 * podbity o jedna klase (powtorzenie ".learndash-wrapper"/".ld-focus"
 * albo inny wzorzec o rownowaznej sile), zeby wygrywal z natywnym ld30
 * niezaleznie od kolejnosci enqueue. `PAMIĘĆ:learndash-specyficznosc-remis-ld30`
 *
 * Pusty celowo w tej sesji (copy-ai9.4): budowa widokow (lista/kurs/
 * lekcja) jest poza zakresem, to copy-0hg. Plik istnieje i jest wpiety
 * (jdb_enqueue()) tak, zeby kolejna sesja mogla od razu dopisywac tutaj,
 * bez zmian w enqueue.
 *
 * copy-0hg.1, 16.09.2026: akordeon modulow (S5 page-briefs/kurs.md). LD
 * Customizer wstrzykuje WLASNY <style> inline w <head> (nie w tym pliku CSS,
 * niewidoczny w zadnym pliku wtyczki na dysku - potwierdzone tylko przez
 * odczyt zywego zrodla strony) z regulami typu
 * ".learndash-wrapper .ld-primary-background{background:#0a0000!important}"
 * (kolor marki Customizera, domyslnie prawie czarny, NIEUSTAWIONY swiadomie
 * przez nikogo w tym projekcie). Guide Karola nie zaklada !important na tych
 * selektorach, wiec przegrywa: przycisk "Rozwin wszystko" renderowal sie
 * jako pelny czarny prostokat bez widocznego tekstu (tekst tez ciemny),
 * pojedyncze przyciski "Rozwin" w wierszach mialy czarny kwadrat zamiast
 * ikony strzalki. Neutralizacja tutaj, nie w learndash-karol.css (P4.4: ten
 * plik ma zostac czysty i 1:1 z guide'em).
 *
 * ZNANA PULAPKA do sprawdzenia przy budowie widoku lekcji (Focus Mode),
 * zanim ktos zgubi na to godzine drugi raz: natywny ld30 (themes/ld30/
 * assets/css/learndash.css, plugin sfwd-lms) dokleja pod ~1024px klase
 * ".ld-focus-sidebar-collapsed" do .ld-focus samoczynnie przez WLASNY
 * JS (main.js LD), wlaczajac off-canvas (przezroczyste tlo, transform,
 * zniknięcie h3/listy nawigacji, wezszy main) - selektory tego stanu maja
 * do 4 klas (".learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed
 * .ld-focus-sidebar"), WIECEJ niz bazowy sidebar w learndash-karol.css
 * (".ld-focus.ld-focus .ld-focus-sidebar", 3 klasy), wiec przy tej
 * szerokosci natywny stan collapsed MOZE wygrac mimo ogolnego podbicia
 * specyficznosci w bazie. Czy sidebar ma sie zwijac czy zostac zawsze
 * widoczny (jak w poprzedniej iteracji, page-briefs/lekcja.md) to decyzja
 * zwiazana z makieta, nie infrastruktura CSS - stad NIE rozstrzygnieta
 * tutaj. Jesli decyzja to "zawsze widoczny", neutralizacja idzie tutaj z
 * ta sama zasada specyficznosci (dopasuj/przebij klasy natywnego stanu).
 */

/* --- Neutralizacja inline !important LD Customizera (patrz komentarz gory pliku) --- */
/*
 * copy-bny follow-up, 17.09.2026: Customizer wstrzykuje TEZ
 * ".learndash-wrapper .ld-primary-color-hover:hover" i
 * ".learndash-wrapper .ld-lesson-item.ld-is-current-lesson
 * .ld-lesson-item-preview-heading/.ld-lesson-title { color:#0a0000
 * !important }" - zywy odczyt <style> w <head>. Na panelu Wariantu B (tlo
 * niemal czarne #0C090B) tekst #0A0000 na hover/current jest praktycznie
 * niewidoczny (Jakub, zrzut 17.09: "Szkolenia" ledwo czytelne). Wczesniejsza
 * neutralizacja ponizej nie obejmowala tej pary selektorow. Specyficznosc:
 * dopisane ".ld-focus-sidebar" (Customizer ma tylko ".learndash-wrapper"),
 * bezpiecznie wygrywa niezaleznie od kolejnosci.
 */
.learndash-wrapper.learndash-wrapper .ld-focus-sidebar .ld-primary-color-hover:hover,
.learndash-wrapper.learndash-wrapper .ld-focus-sidebar .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading,
.learndash-wrapper.learndash-wrapper .ld-focus-sidebar .ld-lesson-item.ld-is-current-lesson .ld-lesson-title {
  color: var(--surface-white) !important;
}
/*
 * Jakub 17.09.2026, drugi zrzut: kolko statusu przy aktywnej lekcji mialo
 * widoczna bordowa/rdzawa obwodke. Customizer: ".ld-course-navigation
 * .ld-lesson-item.ld-is-current-lesson .ld-status-incomplete{border-color:
 * #0a0000!important}" - #0a0000 to ciemna czerwien, nie neutralny czarny,
 * widoczna na niemal-czarnym tle panelu.
 */
.learndash-wrapper.learndash-wrapper .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-status-incomplete {
  border-color: var(--surface-white) !important;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-actions .ld-expand-button.ld-primary-background {
  background: transparent !important;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button .ld-primary-background,
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button .ld-icon-arrow-down {
  background: transparent !important;
  color: inherit !important;
}
.learndash-wrapper.learndash-wrapper .ld-status-icon.ld-status-complete.ld-secondary-background {
  background-color: var(--surface-dark) !important;
}
/* Zakladka "Materialy" (widok lekcji/tematu, .ld-tabs auto-doklejane przez
   ld30 gdy pole materialow jest wypelnione i wlaczone, zero wlasnego
   markupu). Customizer dokleja WLASNY !important na dokladnie te dwa
   miejsca (zywy odczyt <style> w <head>, K1): ".ld-tab.ld-active{color:
   #0a0000!important}" i ".ld-tab.ld-active:after{background:#0a0000
   !important}" - guide Karola (learndash-karol.css .ld-tabs) definiuje
   wine/--accent bez !important, wiec przegrywa niezaleznie od
   specyficznosci. Ten sam mechanizm co reszta tego bloku. */
.learndash-wrapper.learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active {
  color: var(--surface-dark) !important;
}
.learndash-wrapper.learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active::after {
  background: var(--surface-dark) !important;
}

/* --- copy-0hg.2, 16.09.2026: ten sam mechanizm Customizera dotyka TEZ
   widok lekcji. Zrodlo, potwierdzone zywym odczytem <style> w <head>
   (nie configu, K1 lekcje-techniczne.md): regula
   ".ld-button:not(.ld-button-reverse):not(...){background-color:#0a0000
   !important}" trafia w KAZDY .ld-button bez wyjatku scope'u, wiec nasz
   zloty "Nastepna lekcja" (desktop i mobile) i ciemny "Oznacz/Cofnij"
   (kolor Customizera #0a0000 rozjezdza sie nieznacznie z naszym
   tokenem --surface-dark #0C090B) potrzebuja wlasnego !important, nie
   tylko wyzszej specyficznosci. --- */
.ld-focus.ld-focus.ld-focus .ld-button,
.ld-focus.ld-focus.ld-focus input[type="submit"] {
  background-color: var(--surface-dark) !important;
}
.ld-focus.ld-focus.ld-focus .ld-focus-actions .ld-content-action:last-child .ld-button,
.ld-focus.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-next-mobile .ld-button {
  /**
   * .ld-focus-next-mobile .ld-button ma tylko 2 segmenty pod prefiksem,
   * wiec potrzebuje PIECIOKROTNEGO ".ld-focus" (nie potrojonego jak reszta
   * pliku), zeby przebic specyficznosc regoly Customizera na tym samym
   * elemencie: ".learndash-wrapper .ld-button:not(...):not(...):not(...)
   * :not(...)" liczy sie jako 6 segmentow (1 klasa + 1 klasa + 4x :not(),
   * kazdy :not(.klasa) dolicza 1 do specyficznosci). Potrojone .ld-focus
   * dawalo tu 5, poczwórne 6 (REMIS, przegrane bo Customizer laduje sie
   * pozniej w <head>), dopiero 5x .ld-focus + reszta = 7 realnie wygrywa.
   * Zmierzone 16.09.2026: przycisk renderowal sie czarny zamiast zloty na
   * 390px ("NASTEPNA LEKCJA" po spisie lekcji), az do tej poprawki.
   * Sasiedni selektor (.ld-focus-actions .ld-content-action:last-child
   * .ld-button) ma wiecej WLASNYCH segmentow (7 lacznie z samym potrojeniem)
   * i dlatego dzialal od razu bez tej korekty.
   */
  background-color: var(--surface-dark) !important;
}

/* --- Numeracja wierszy (00, 01, 02...), wstrzykniete przez PHP
   (inc/learndash.php, jdb_ld_numer_wiersza). Rodzic .ld-item-list-item-preview
   jest juz flex+align-items:center (learndash-karol.css), numeral to pierwszy
   flex-child przed <a class="ld-item-name">. --- */
.learndash-wrapper.learndash-wrapper .ld-item-list-item .kurs-item-numer {
  color: var(--surface-dark);
  flex: none;
  font-family: var(--font-display);
  font-size: 32px;
  font-style: italic;
  line-height: 1;
  min-width: 44px;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item.ld-is-current-item .kurs-item-numer,
.learndash-wrapper.learndash-wrapper .ld-item-list-item.is-current .kurs-item-numer {
  color: var(--surface-white);
}
@media (max-width: 767px) {
  .learndash-wrapper.learndash-wrapper .ld-item-list-item .kurs-item-numer {
    font-size: 24px;
    min-width: 32px;
  }
}

/* --- Etykieta statusu tekstowa (lekcje plaskie, bez topikow: jdb_ld_status_plaskiej_lekcji)
   -- jezyk wizualny 1:1 z .ld-expand-button .ld-text natywnego (11px/700/
   uppercase/letter-spacing), zeby oba typy wierszy wygladaly spojnie mimo
   innego zrodla (PHP wlasny vs natywny LD). --- */
.learndash-wrapper.learndash-wrapper .kurs-item-status {
  align-items: center;
  color: var(--surface-dark);
  display: inline-flex;
  flex: none;
  font-family: var(--font-text);
  font-size: 11px;
  font-weight: 700;
  gap: var(--space-2);
  letter-spacing: 0.10em;
  text-transform: uppercase;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item.ld-is-current-item .kurs-item-status,
.learndash-wrapper.learndash-wrapper .ld-item-list-item.is-current .kurs-item-status {
  color: var(--surface-white);
}

/* --- Przycisk Rozwin/Zwin PER WIERSZ (lekcje z topikami): Karol'owy box z
   obwodka (learndash-karol.css .ld-expand-button) byl pomyslany dla przycisku
   naglowkowego "ROZWIN WSZYSTKO" (S5, kadr naglowek-rozwin-wszystko.png ma
   widoczna obwodke), NIE dla kazdego wiersza z osobna: kadry wiersz-modulu-*
   pokazuja plaski tekst bez pudelka. Rownowaznik wizualny .kurs-item-status
   wyzej. .ld-item-list-actions (naglowek) NIE jest tym selektorem dotkniety,
   zostaje z obwodka Karola. --- */
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button {
  align-items: center;
  background: transparent;
  border: 0;
  display: inline-flex;
  gap: var(--space-2);
  min-height: 0;
  padding: 0;
  white-space: nowrap;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button:hover {
  background: transparent;
  color: var(--surface-dark);
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item.ld-is-current-item .ld-item-details .ld-expand-button,
.learndash-wrapper.learndash-wrapper .ld-item-list-item.is-current .ld-item-details .ld-expand-button {
  color: var(--surface-white);
}
/* Markup natywny renderuje ikone PRZED tekstem (row.php), makieta pokazuje
   tekst PRZED "+" ("ROZWIN +") - flex order odwraca kolejnosc wizualnie
   bez dotykania core template'u LD. */
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button .ld-icon-arrow-down {
  font-size: 0;
  order: 2;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button .ld-text {
  order: 1;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button .ld-icon-arrow-down::before {
  content: "+";
  font-family: var(--font-text);
  font-size: 15px;
  font-weight: 400;
}
.learndash-wrapper.learndash-wrapper .ld-item-list-item .ld-item-details .ld-expand-button.ld-expanded .ld-icon-arrow-down::before {
  content: "\2212"; /* minus, spojne z "+" gdy rozwiniete */
}

/* --- "Rozwin wszystko" (naglowek sekcji) tylko na desktopie, wymiary.md:
   "mobile NIE ma tego przycisku (sam label)". --- */
@media (max-width: 767px) {
  .learndash-wrapper.learndash-wrapper .ld-item-list-actions .ld-expand-button {
    display: none;
  }
}

/* =========================================================================
   Widok lekcji, Focus Mode (page-briefs/lekcja.md, copy-0hg.2, 16.09.2026)
   ========================================================================= */

/* --- Chowanie natywnych duplikatow wstrzykiwanych przez the_content()
   (learndash_lesson/topic content filters), zywy markup sprawdzony
   16.09.2026 (dump_dom), nie zgadywany z configu (K1 lekcje-techniczne.md):
   - .ld-lesson-status / .ld-topic-status: powtarza nasz wlasny
     .ld-focus-topbar (breadcrumb + status), po angielsku ("Complete").
   - .learndash-shortcode-wrap-ld_navigation-* .ld-content-actions: natywny
     rzad Previous/Mark/Next PRZED naszym wlasnym .ld-focus-actions, tez po
     czesci po angielsku. Selektor scisle do TEJ instancji (wewnatrz
     .learndash-wrapper zagniezdzonego w .ld-lesson-media), zeby nie zgasic
     naszego siostrzanego .ld-focus-actions (ten NIE siedzi w
     .learndash-wrapper). --- */
.ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-lesson-status,
.ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-topic-status {
  display: none;
}
.ld-focus.ld-focus.ld-focus .ld-lesson-media .learndash-wrapper .ld-content-actions {
  display: none;
}
/* Wrapper zagniezdzony przez shortcode LD (learndash_post_ID > .learndash-
   wrapper) zostawia wlasne tlo/margines nawet gdy .ld-lesson-status w nim
   jest schowany wyzej - zerujemy, zeby nie bylo bialej szczeliny nad kartą
   wideo (zmierzone 16.09.2026, pasek #fff ~10px nad wideo na 390px). */
.ld-focus.ld-focus.ld-focus .ld-lesson-media .learndash-wrapper,
.ld-focus.ld-focus.ld-focus .ld-lesson-media .learndash {
  background: transparent;
  margin: 0;
  padding: 0;
}

/* --- Breadcrumb + status (S3), wlasny markup index.php (.ld-focus-topbar/
   .ld-focus-breadcrumb/.ld-focus-status), brak odpowiednika natywnego -
   zero konfliktu specyficznosci, wystarczy prosty prefiks .ld-focus. --- */
.ld-focus.ld-focus.ld-focus .ld-focus-topbar {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  justify-content: space-between;
  margin-bottom: 22px;
}
.ld-focus.ld-focus.ld-focus .ld-focus-breadcrumb {
  color: var(--text-on-light-muted);
  font-family: var(--font-text);
  font-size: 13px;
}
.ld-focus.ld-focus.ld-focus .ld-focus-breadcrumb span:last-child {
  color: var(--surface-dark);
  font-weight: 600;
}
.ld-focus.ld-focus.ld-focus .ld-focus-breadcrumb a {
  color: inherit;
  text-decoration: none;
}
.ld-focus.ld-focus.ld-focus .ld-focus-breadcrumb a:hover,
.ld-focus.ld-focus.ld-focus .ld-focus-breadcrumb a:focus-visible {
  color: var(--surface-dark);
  text-decoration: underline;
}
.ld-focus.ld-focus.ld-focus .ld-focus-status {
  background: var(--surface-dark);
  color: var(--surface-white);
  display: inline-flex;
  flex: none;
  font-family: var(--font-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  padding: 11px 24px;
  text-transform: uppercase;
}
.ld-focus.ld-focus.ld-focus .ld-focus-status--gotowe {
  background: var(--surface-dark);
}

/* --- Karta wideo (S5). Padding+tlo NA .ld-lesson-media (WRAPPER wlasny z
   index.php), NIE na .ld-video ani iframe: .ld-video ma natywna, DZIALAJACA
   technike aspect-ratio z legacy/templates/learndash_lesson_video.min.css
   (body.learndash-embed-responsive .ld-video{height:0;overflow:hidden;
   padding-bottom:56.25%;position:relative} + iframe{position:absolute;
   inset:0;width:100%;height:100%!important}) - NIE dotykac jej wlasnym
   height/aspect-ratio/position, bo to dwie rozne metody tego samego celu i
   gryza sie (zmierzone 16.09.2026: .ld-video zapadalo sie do 0px, bo nasz
   "height:auto" na iframe kasowal percentage-padding-bottow trick zamiast z
   nim wspolpracowac - K1/K6 lekcje-techniczne.md, nie zgadywane z configu).
   Padding+tlo+cien na OSOBNYM wrapperze dziala bezpiecznie, bo nie miesza
   sie z tamta technika. --- */
.ld-focus.ld-focus.ld-focus .ld-lesson-media {
  background: var(--surface-cream);
  box-shadow: var(--shadow-karta);
  /* KOREKTA 16.09.2026 (feedback Jakuba: "wideo na pelna szerokosc bez
     bialych krawedzi"): byl padding clamp(16-28px) dookola, wideo wygladalo
     jak wklejone w ramke zamiast wypelniac karte. Zero - wideo teraz siega
     krawedzi .ld-lesson-media, ten sam jezyk co mobile (linia ~356, tam juz
     bylo "bez wlasnego paddingu"), teraz spojne na obu szerokosciach. */
  padding: 0;
}
.ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-video iframe {
  border: 0;
  box-shadow: none;
  /* KOREKTA 16.09.2026 #2 (Jakub: "dalej jest pasek jasny", mial racje,
     poprzednia diagnoza byla bledna - PRAWDZIWE zrodlo znalezione dopiero
     teraz, swiezym pomiarem getBoundingClientRect() na SAMYM iframe, nie
     na .ld-video). Guide Karola ma OSOBNA regule na sam iframe (nie tylko
     na .ld-video): ".ld-video, .ld-video iframe, ...{margin:30px 0 0}" -
     zerowalem wczesniej margin-top TYLKO na .ld-video (kontener), ale
     iframe jako position:absolute z inset:0 z natywnego ld30 NADAL
     dostawal margin-top:30px z guide'u na SIEBIE, przez co realnie
     renderowal sie 30px NIZEJ niz top:0 by dawalo - zmierzone zywo:
     .ld-video.y=484 ale iframe.y=514, dokladnie +30. To samo wyjasnia
     30px "zwisu" pod spodem po zdjeciu overflow:hidden wczesniej. */
  margin-top: 0;
}
/* KOREKTA 16.09.2026 (feedback Jakuba: "usun jeszcze ten pasek bialy na
   dole" - i taki sam byl u gory, tylko nie zglszony). Zrodlo zmierzone
   zywo: natywny ld30 ".ld-tabs{margin:16px 0}" (uzywany przez the_content()
   ZAWSZE, nawet gdy lekcja/temat nie ma wlaczonych Materialow - LD i tak
   owija tresc w .ld-tabs z jednym "tabem" bez widocznej nawigacji). Ten
   margines gora+dol zostawial 16px kremowego tla .ld-lesson-media (juz bez
   wlasnego paddingu) widocznego nad i pod wideo. Zero, scoped do karty
   wideo - dla lekcji Z wlaczonymi Materialami to samo .ld-tabs trzyma tez
   pasek "Zagadnienie/Materialy", zerowanie zewnetrznego marginesu nie
   rusza wewnetrznego paddingu tamtego paska (.ld-tabs-navigation, osobna
   regula), wiec bezpieczne w obu przypadkach. */
.ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-tabs {
  margin: 0;
}
/* Baza (learndash-karol.css, 1:1 z guide'u Karola) daje .ld-video margin-
   top:30px jako odstep od tresci powyzej - poprawny w kontekscie zwyklego
   .ld-focus-content, ale w naszej karcie odstep juz daje padding rodzica
   .ld-lesson-media, wiec margines dokladalby drugi odstep i (przez brak
   wlasnego tla na marginesie) odslanial biale tlo .learndash-wrapper spod
   .ld-lesson-media - zmierzone 16.09.2026. */
.ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-video {
  margin-top: 0;
  /* KOREKTA 16.09.2026 (feedback Jakuba: "pasek z vimeo musi byc w pelni
     widoczny", zrzut pokazywal ucięte kontrolki na samym dole playera).
     Natywny LD (legacy/templates/learndash_lesson_video.min.css)
     "body.learndash-cpt.learndash-embed-responsive .ld-video{height:0;
     overflow:hidden;padding-bottom:56.25%}" - trik proporcji 16:9 dziala
     przez wymuszenie SCISLEGO 56.25% i obciecie wszystkiego poza tym
     prostokatem. Vimeo renderuje pasek kontrolek/UI odrobine POZA czystym
     kadrem wideo (zmierzone zywo: .ld-lesson-media byla 500px, .ld-video
     468px, brakujace 32px to wlasnie ten pasek), overflow:hidden go ucinal.
     Zamiast dogadywac dokladny procent proporcji (kruche, rozne wideo moga
     miec inny naddatek), zdejmujemy obciecie - "w pelni widoczny" wazniejsze
     niz piksel-perfekcyjny prostokat 16:9. */
  overflow: visible;
}
/* KOREKTA 16.09.2026 #3 (Jakub: usun placeholder "WIDEO WKROTCE" na lekcjach
   bez nagrania, tekst zakladki dotykal krawedzi karty). Szary box 16:9 zdjety
   z markupu (index.php), CSS pod niego rowniez zdjety - byl to prowizoryczny
   stan (build "rusza mimo brakow", PIPELINE.md P0.9/braki-materialy.md), nie
   wzorzec z makiety. Docelowy wyglad lekcji materialy-only: DO-USTALENIA,
   patrz notatka w PIPELINE.md/decyzje.md. Padding zakladki tresci/materialow
   dla lekcji bez wideo nizej (.ld-tab-content:not(:has(.ld-video))). */
.ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-tab-content:not(:has(.ld-video)) {
  padding: 24px 28px;
}
@media (max-width: 1024px) {
  .ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-tab-content:not(:has(.ld-video)) {
    padding: 20px;
  }
}
/* color-tp4, 20.09.2026: Jakub, zrzut "Materialy do tej lekcji znajdziesz..."
   pod wideo - "spojrz na odstepy... wyglada okropnie". Zmierzone zywo: wideo
   i ten akapit siedza w TYM SAMYM .ld-tab-content (jeden wspolny kontener,
   nie dwie osobne zakladki), wiec jego padding:2em 0 (natywny LD) daje
   odstep tylko na zewnetrznych krawedziach calej karty, zero MIEDZY wideo a
   akapitem - stad tekst przyklejony wprost pod playerem. Nie ruszamy
   paddingu kontenera (dotknalby tez wideo, cofajac poprawke "pelna
   szerokosc bez bialych krawedzi" z 16.09), tylko margines i styl samego
   akapitu. */
.ld-focus.ld-focus.ld-focus .ld-lesson-media .ld-tabs-content .ld-tab-content p {
  color: var(--text-on-light-muted);
  font-size: 14px;
  margin: 20px 28px 0;
}

/* --- Karta lekcji (S4 H1 + S5 wideo + S6 CTA mobile), jeden DOM dla obu
   szerokosci, uklad przez flex+order (patrz komentarz naglowka index.php).
   Desktop: karta bez wlasnego tla/padding, H1 nad wideo, eyebrow i CTA
   mobile schowane. --- */
.ld-focus.ld-focus.ld-focus .ld-lesson-card {
  background: transparent;
  display: flex;
  flex-direction: column;
}
.ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-media {
  order: 2;
}
.ld-focus.ld-focus.ld-focus .ld-lesson-card h1 {
  order: 1;
}
.ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-eyebrow,
.ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-cta-mobile {
  display: none;
}

/* --- Mobile (<=767px): karta staje sie widocznym pudelkiem kremowym,
   wideo bleeduje do jej krawedzi (bez wlasnego paddingu/cienia, bo teraz
   tlo/cien niesie rodzic), eyebrow "LEKCJA {nn}" + H1 + CTA "OZNACZ JAKO
   GOTOWE" w paddingowanej sekcji pod wideo. wymiary.md karta-wideo-z-cta:
   360x266, ta karta dziedziczy szerokosc kontenera (390 kanon, patrz
   media query 768 nizej dla ld-focus-content). --- */
@media (max-width: 1024px) {
  .ld-focus.ld-focus.ld-focus .ld-lesson-card {
    background: var(--surface-cream);
    box-shadow: var(--shadow-karta);
    overflow: hidden;
  }
  .ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-media {
    background: transparent;
    box-shadow: none;
    order: 1;
    padding: 0;
  }
  .ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-eyebrow {
    color: var(--surface-dark);
    display: block;
    font-family: var(--font-text);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    order: 2;
    padding: 18px 20px 0;
    text-transform: uppercase;
  }
  .ld-focus.ld-focus.ld-focus .ld-lesson-card h1 {
    order: 3;
    padding: 6px 20px 0;
  }
  .ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-cta-mobile {
    display: block;
    order: 4;
    padding: 20px;
  }
  .ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-cta-mobile .ld-button,
  .ld-focus.ld-focus.ld-focus .ld-lesson-card .ld-lesson-cta-mobile input[type="submit"] {
    width: 100%;
  }

  /* CTA row desktop (dwa przyciski w rzad) schowany, mobile ma wlasne
     kopie: OZNACZ w karcie wyzej, NASTEPNA LEKCJA po spisie lekcji nizej
     (.ld-focus-next-mobile). wymiary.md: to DWA osobne kadry, nie jedna
     karta z dwoma przyciskami. */
  .ld-focus.ld-focus.ld-focus .ld-focus-actions {
    display: none;
  }
}

/* --- Przycisk "Nastepna lekcja" mobile, osobny flex-sibling .ld-focus-
   sidebar/.ld-focus-main (patrz index.php), pod spisem lekcji, wg
   wymiary.md "przycisk-nastepna-lekcja.png" (zloty, pelna szerokosc). --- */
.ld-focus-next-mobile {
  display: none;
}
@media (max-width: 1024px) {
  .ld-focus.ld-focus.ld-focus {
    flex-direction: column;
  }
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar {
    /**
     * Baza (learndash-karol.css) ma DWA progi: "Mobile" na max-width:768px
     * przelacza sidebar na position:relative/width:100% (stackowanie), a
     * "Tablet" na max-width:1024px trzyma go dalej position:fixed (native)
     * i tylko wezszy (290px). Nasz wlasny uklad "spis lekcji" (ten blok)
     * dziala TYLKO na position:relative, wiec w pasmie 769-1024px (progi
     * bazy nie nakladaja sie) trzeba powtorzyc to przelaczenie tutaj, nie
     * tylko order/flex-direction - inaczej sidebar zostaje position:fixed,
     * wiec order na nim nic nie zmienia (elementy fixed nie uczestnicza w
     * layoucie flex rodzica). Zmierzone 16.09.2026: 900px pokazywal PUSTA
     * strone bez sidebara w ogole (ani stackowany, ani widoczny fixed -
     * zgnieciony przez stan collapsed nizej w tym bloku).
     */
    bottom: auto;
    max-height: none;
    order: 2;
    position: relative;
    top: auto;
    width: 100%;
  }
  .ld-focus.ld-focus.ld-focus .ld-focus-main {
    margin-left: 0;
    order: 1;
    width: 100%;
  }
  .ld-focus-next-mobile {
    display: block;
    order: 3;
    padding: 0 18px 56px;
  }
  .ld-focus-next-mobile .ld-button {
    background: var(--surface-dark);
    border-color: var(--surface-dark);
    color: var(--surface-white);
    width: 100%;
  }

  /* --- Neutralizacja stanu ".ld-focus-sidebar-collapsed", dokladanego
     samoczynnie przez natywny JS LD (main.js) ponizej ~1024px - to mechanizm
     zaprojektowany pod sidebar FIXED z przyciskiem-trigger (zwijanie do
     paska 50px), nie pod nasz uklad "sidebar w normalnym przeplywie,
     position:relative, stackowany pod main". Bez tej neutralizacji natywny
     "transform:translateX(-100%)" przesuwa nasz relatywnie pozycjonowany
     sidebar CALKOWICIE poza ekran (zmierzone 16.09.2026: rect.x = -336 na
     390px), a "opacity:0" na .ld-course-navigation-list chowa cala liste
     mimo poprawnego layoutu. Udokumentowane wczesniej w tym pliku jako
     "ZNANA PULAPKA do sprawdzenia" (komentarz na gorze), teraz potwierdzone
     zywym pomiarem i naprawione (K1 lekcje-techniczne.md: mierz na zywej
     stronie, nie zgaduj z configu). --- */
  .ld-focus.ld-focus.ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar,
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar {
    transform: none !important;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation-list,
  .ld-focus.ld-focus.ld-focus .ld-course-navigation-list {
    opacity: 1 !important;
  }
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar-trigger {
    display: none !important;
  }
}

/* --- Sidebar: lista lekcji/tematow uzywa realnych klas natywnego markupu
   (.ld-lesson-item / .ld-lesson-item-preview / .ld-table-list-item-preview
   .ld-topic-row), zweryfikowane zywym dumpem DOM 16.09.2026, NIE configu
   (K1 lekcje-techniczne.md). Natywny ld30 ma selektor scisle scope'owany
   do ".ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item"
   (5 klas) LADOWANY PO naszych arkuszach w kolejce enqueue (learndash.min.css
   ostatni), wiec przy remisie specyficznosci wygrywa on, nie my
   (`PAMIĘĆ:learndash-specyficznosc-remis-ld30`). Poczwórne ".ld-focus" (4
   wystapien) daje nam bezpieczny margines nad jego maksymalnie 6-klasowymi
   selektorami w tej galezi (np. ".ld-focus-sidebar .ld-course-navigation
   .ld-lesson-item .ld-lesson-item-preview" = 6 klas), nie tylko remis. --- */
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item {
  background: transparent;
  border-bottom: 1px solid var(--line-on-dark);
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item:last-child {
  border-bottom: 0;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-lesson-item-preview {
  padding: 13px 30px;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list {
  background: transparent;
  padding: 0 0 6px 46px;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list::before {
  display: none;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview {
  color: var(--text-on-dark-muted);
  padding: 8px 0;
}

/* KOREKTA 16.09.2026 (feedback Jakuba, zywy odbior: "lista tematow
   nieczytelna, nie pasuje do brandingu"): zmierzone zywo (getComputedStyle),
   nie zgadywane. Przyczyna byla PODWOJNA:
   1) Customizer LD (patrz komentarz na gorze pliku, ten sam mechanizm co
      P4.4) wymusza inline !important na ".ld-icon-arrow-down.ld-primary-
      background" i ".ld-text.ld-primary-color" - kolor "4 Tematy" i jego
      ikony wychodzil rgb(10,0,0), prawie czarny NA CIEMNYM tle sidebara
      (surface-dark-warm #17110f), praktycznie niewidoczny. Neutralizacja
      P4.4 obejmowala tylko ".ld-item-list-item .ld-item-details" (lista
      kursu), NIE ".ld-focus-sidebar .ld-course-navigation" (Focus Mode).
   2) Boks Karola (.learndash-wrapper .ld-expand-button: border 1px solid,
      min-height 48px, padding 12x20) byl pomyslany dla JEDNEGO naglowkowego
      przycisku "ROZWIN WSZYSTKO" (S5), nie dla kazdego wiersza z osobna -
      w sidebarze renderowal sie jako pelnej szerokosci obramowany prostokat
      POD kazdym tytulem modulu (bo .ld-lesson-item-preview jest display:block,
      wiec heading+expand-button ukladaly sie w dwoch liniach, nie w jednym
      rzedzie), rozdymajac wiersz z 52px (guide) do 91px.
   Fix: rzad na flex (tytul + rozwin w jednej linii, jak reszta sidebara),
   plaski tekst+znak "+/-" identyczny jezyk co lista kursu (P4.1), kolor
   jawnie z tokenu zamiast Customizera. */
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-preview {
  align-items: center;
  display: flex;
  gap: var(--space-3);
  justify-content: space-between;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-preview-heading {
  flex: 1 1 auto;
  min-width: 0;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button,
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button.ld-button-alternate {
  align-items: center;
  background: transparent !important;
  border: 0;
  border-radius: 0;
  flex: none;
  gap: 4px;
  height: auto;
  justify-content: flex-end;
  max-width: none;
  min-height: 0;
  padding: 0;
  width: auto;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button .ld-primary-background,
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button .ld-icon-arrow-down {
  background: transparent !important;
  color: inherit !important;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button .ld-text.ld-primary-color,
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button .ld-text {
  color: var(--text-on-dark-muted) !important;
  flex: none;
  font-family: var(--font-text);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 0;
  text-transform: uppercase;
  white-space: nowrap;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button .ld-icon-arrow-down {
  font-size: 0;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button .ld-icon-arrow-down::before {
  color: var(--text-on-dark-muted);
  content: "+";
  font-family: var(--font-text);
  font-size: 14px;
  font-weight: 400;
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button.ld-expanded .ld-icon-arrow-down::before {
  content: "\2212";
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-is-current-lesson .ld-expand-button .ld-text,
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-is-current-lesson .ld-expand-button .ld-icon-arrow-down::before {
  color: rgba(255, 253, 248, 0.8) !important;
}

/* Ikony statusu tematow zagniezdzonych w sidebarze (.ld-table-list-item-
   preview .ld-status-icon) dziedziczyly obwodke z jasnego kontekstu
   (rgba(12,9,11,.28), regula ogolna dalej w tym pliku dla list na bialym
   tle) - ten sam problem kontrastu co (1) wyzej, tylko na statusie zamiast
   przycisku. Remis specyficznosci (5 klas vs 5 klas) rozstrzygany kolejnoscia
   w pliku, tutaj podbite jednoznacznie (9 klas), zeby nie zalezec od tego
   ktora regula jest nizej. */
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list .ld-status-icon {
  border-color: var(--line-on-dark-strong);
}
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list .ld-status-icon.ld-status-complete {
  background: var(--surface-white);
  border-color: var(--surface-white);
  color: var(--surface-dark);
}
/* Customizer LD dokleja WLASNY !important dokladnie na ten przypadek:
   ".ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-status-
   incomplete{border-color:#0a0000!important}" (zywy odczyt <style> w <head>,
   K1) - trafia TYLKO w tematy zagniezdzone pod AKTUALNIE otwarta lekcja
   (".ld-is-current-lesson" jest przodkiem tematow w DOM, nie tylko wlasnej
   ikony lekcji), dlatego tylko jeden konkretny modul mial czarna, niewidoczna
   obwodke mimo ze regula wyzej dziala dla reszty. Bez wlasnego !important
   przegrywamy niezaleznie od specyficznosci. */
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-topic-list .ld-status-icon.ld-status-incomplete {
  border-color: var(--line-on-dark-strong) !important;
}

/* Tekst biezacej pozycji: natywny ld30 koloruje ".ld-is-current-lesson
   .ld-lesson-item-preview-heading"/".ld-lesson-title" na niebiesko
   (#00a2e8) z nizsza specyficznoscia niz ponizsza regula, ale zeby nie
   polegac na tym ze zawsze przegra, nadpisujemy jawnie na kremowy tekst
   na naszym bordowym tle (.ld-is-current-lesson/.ld-is-current-item juz
   dostaje background:var(--accent) wyzej w tym pliku). */
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-is-current-lesson .ld-lesson-item-preview-heading,
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-is-current-lesson .ld-lesson-title,
.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-is-current-item .ld-topic-title {
  color: var(--surface-white) !important;
}

/* --- Blok postep+"Wroc do szkolenia" (S2, dolna czesc sidebara), brak
   natywnego odpowiednika, klasy wlasne z focus/sidebar.php. Desktop only:
   wymiary.md nie pokazuje tego bloku w komponencie "spis lekcji" mobile,
   decyzja robocza, patrz raport. --- */
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-footer {
  border-top: 1px solid var(--line-on-dark);
  padding: 22px 30px 8px;
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-progress-label {
  color: var(--surface-white);
  font-family: var(--font-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-progress-track {
  background: var(--line-on-dark-strong);
  height: 4px;
  margin-top: 10px;
  overflow: hidden;
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-progress-fill {
  background: var(--surface-white);
  height: 100%;
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-back {
  color: var(--text-on-dark-muted);
  display: block;
  font-family: var(--font-text);
  font-size: 12px;
  font-weight: 600;
  margin-top: 18px;
  padding-bottom: 22px;
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-back:hover {
  color: var(--surface-white);
}
@media (max-width: 1024px) {
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar-footer {
    display: none;
  }
}

/* --- Naglowek sidebara: link do kursu (desktop) vs etykieta "Spis lekcji"
   (mobile), dwa elementy z focus/sidebar.php, przelaczane displayem, nie
   contentem (ten sam wzorzec co reszta pliku). --- */
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-heading-desktop {
  color: var(--surface-white);
  display: block;
  font-family: var(--font-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar-heading-mobile {
  display: none;
}
@media (max-width: 1024px) {
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar-heading-desktop {
    display: none;
  }
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar-heading-mobile {
    color: var(--text-on-light-muted);
    display: block;
    font-family: var(--font-text);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.13em;
    text-transform: uppercase;
  }
}

/* =========================================================================
   Sidebar mobile (<=767px): "SPIS LEKCJI" (S2 page-briefs/lekcja.md).
   wymiary.md: "Tło: on-light (lista mobile, bez ciemnego tła)" - kontrast
   pelny z desktopem (on-dark), nie tylko przelozenie kolumny. Numeracja
   00/01/02 i etykiety statusu (W TRAKCIE/GOTOWE/ROZWIŃ) przez CSS counters
   + pseudo-content na podstawie klas natywnych (.learndash-complete/
   .learndash-incomplete/.ld-is-current-lesson), BEZ zmiany PHP: rows.php
   (widgets/navigation) nie ma hookow rownowaznych do
   learndash-lesson-row-title-before uzytych na liscie kursu (copy-0hg.1),
   sprawdzone w zrodle wtyczki 16.09.2026 (K1 lekcje-techniczne.md, nie
   zgadywane). Wizualny odpowiednik, nie bajt-identyczny re-use tamtego
   mechanizmu. ========================================================= */
@media (max-width: 1024px) {
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar {
    background: var(--surface-cream);
    border-top: 1px solid var(--line-on-light);
    color: var(--text-on-light);
  }
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation-heading {
    background: transparent;
    border-bottom: 0;
    padding: 26px 18px 14px;
  }
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation-list {
    counter-reset: ld-lekcja-mobile;
  }

  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item {
    background: var(--surface-white);
    border: 1px solid var(--line-on-light);
    border-bottom: 1px solid var(--line-on-light);
    counter-increment: ld-lekcja-mobile;
    margin: 0 18px 8px;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item:last-child {
    border-bottom: 1px solid var(--line-on-light);
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.ld-is-current-lesson {
    background: var(--surface-dark);
    border-color: var(--surface-dark);
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-lesson-item-preview {
    padding: 13px 16px 13px 52px;
    position: relative;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-lesson-item-preview::before {
    color: var(--surface-white);
    content: counter(ld-lekcja-mobile, decimal-leading-zero);
    font-family: var(--font-display);
    font-size: 20px;
    font-style: italic;
    left: 16px;
    line-height: 1;
    position: absolute;
    top: 14px;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview::before {
    color: var(--surface-white);
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-title {
    color: var(--surface-dark);
    display: block;
    font-size: 13px;
    font-weight: 700;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title {
    color: var(--surface-white);
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-title::after {
    color: var(--text-on-light-muted);
    display: block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.10em;
    margin-top: 4px;
    text-transform: uppercase;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.learndash-complete .ld-lesson-title::after {
    content: "Gotowe";
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.learndash-incomplete .ld-lesson-title::after {
    content: "Rozwiń";
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title::after {
    color: var(--surface-white);
    content: "W trakcie";
  }
  /* status-icon (checkmark/kolko) natywny: chowany na mobile, zastapiony
     etykieta tekstowa wyzej (ld-lesson-title::after), zeby nie dublowac
     informacji dwoma jezykami wizualnymi na waskim ekranie. */
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-status-icon {
    display: none;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-expand-button {
    display: none;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list {
    padding: 0 16px 10px 52px;
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview {
    color: var(--text-on-light-muted);
  }
  .ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item .ld-topic-title {
    color: var(--surface-dark);
  }
}

/* KOREKTA 16.09.2026, na zywo z Jakubem: "popraw wyglad listy rozwijalnej w
   liscie lekcji" - stan rozwiniety modulu (.ld-table-list) byl prawie w
   calosci natywny. Zbadane interaktywnie (Playwright, klik + getComputedStyle
   na zywym DOM, nie zgadywane z szablonow):
   - Header "Zawartosc lekcji": Customizer #0a0000!important (ten sam
     mechanizm co reszta pliku) bil regule Karola (--surface-dark-warm w
     learndash-karol.css), stad czarny pasek zamiast cieplej brazowej belki.
   - Wiersze tematow (.ld-table-list-item-preview): Karol NIE mial dla nich
     wlasnego znacznika okragłego jak przy lekcjach (.ld-status-icon to inny
     element, topic-row.php w ogole go nie renderuje), wiec przegladarka
     pokazywala tylko goly tekst + cienka linia LD. Znacznik dodany tutaj
     pseudo-elementem (SVG checkmark inline, nie font ikon LD, zeby nie
     zalezec od klasy ktorej ten szablon nie ładuje). */
.learndash-wrapper.learndash-wrapper .ld-table-list-header.ld-primary-background {
  background: var(--surface-dark-warm) !important;
  padding: 18px 24px !important;
}
.learndash-wrapper.learndash-wrapper .ld-table-list-title .ld-text,
.learndash-wrapper.learndash-wrapper .ld-table-list-title .ld-icon-content {
  color: var(--surface-white) !important;
}
.learndash-wrapper.learndash-wrapper .ld-table-list-title .ld-icon-content {
  opacity: .7;
}
.learndash-wrapper.learndash-wrapper .ld-table-list-lesson-details {
  color: var(--text-on-light-muted) !important;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.learndash-wrapper.learndash-wrapper .ld-table-list-item {
  border-bottom: 1px solid var(--line-on-light);
}
.learndash-wrapper.learndash-wrapper .ld-table-list-item:last-child {
  border-bottom: 0;
}
/* Selektor .ld-table-list .ld-table-list-item-preview (4 klasy) w
   learndash-karol.css bije goly .ld-table-list-item-preview (3 klasy) mimo
   pozniejszego ladowania tego pliku - dopisany tu ".ld-table-list", zeby
   dorownac specyficznosci zamiast przegrywac cicho (zlapane pomiarem
   getComputedStyle, padding nie zmienial sie mimo edycji). */
.learndash-wrapper.learndash-wrapper .ld-table-list .ld-table-list-item-preview {
  align-items: center;
  display: flex;
  gap: 16px;
  padding: 15px 24px 15px 52px;
  transition: background-color .2s ease;
}
.learndash-wrapper.learndash-wrapper .ld-table-list .ld-table-list-items {
  /* color-tp3, 20.09.2026, sama zrodlo co item.margin nizej: natywny LD ma
     tu padding 0 20px + border-width 0 2px, kolejne 40px odstepu z kazdej
     strony liczonego do pelnej szerokosci wiersza. Zerujemy oba. */
  border: 0;
  padding: 0;
}
.learndash-wrapper.learndash-wrapper.learndash-wrapper.learndash-wrapper .ld-table-list .ld-table-list-item {
  /* color-tp3, 20.09.2026: zrodlo znalezione pomiarem zywym (getComputedStyle
     + iteracja po document.styleSheets, nie zgadywane): natywny
     sfwd-lms/themes/ld30/assets/css/learndash.min.css ma
     ".learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list
     .ld-table-list-item { margin: 0 2.8em; }" - 2.8em = 39.2px, dokladnie
     tyle ile mial wezszy wiersz na zrzucie Jakuba ("hover daj na pelna
     szerokosc"). Specyficznosc 5 klas bila nasz stary selektor (4 klasy),
     stad 4x .learndash-wrapper tutaj (ten sam trik co .ld-focus.ld-focus.
     ld-focus.ld-focus gdzie indziej w tym pliku), nie !important. */
  margin: 0;
}
.learndash-wrapper.learndash-wrapper .ld-table-list .ld-table-list-item-preview:hover {
  /* color-tp3, 20.09.2026: Jakub poprawil na szary (nie czarny jak w color-tp1),
     zrzut ze strzalka. Tekst modulu jest domyslnie --surface-dark, czyta sie
     dobrze na jasnym szarym, wiec bez odwracania na bialy jak przy ciemnym
     wariancie. */
  background: #E7E5E2;
}
/* Znacznik ukonczenia to NIE pseudo-element (poprzednia wersja tej poprawki
   dublowala sie z realnym elementem, zobacz nizej) - topic-row.php (LD30)
   renderuje prawdziwy ".ld-status-icon.ld-status-complete.ld-secondary-
   background" z ikona fontowa w srodku, sprawdzone interaktywnie (Playwright,
   innerHTML po kliku "Rozwin", nie zgadywane z szablonu). Ten sam element co
   przy lekcjach nadrzednych (learndash-karol.css linia ~352), ale TAM
   selektor wymaga przodka ".ld-item-list .ld-item-list-item", ktorego topic-
   row nie ma (jest pod ".ld-table-list .ld-table-list-item" zamiast), wiec
   regula Karola nigdy go nie lapala - zostawal calkiem natywny, maly font
   ikon LD bez naszego stylu. */
.learndash-wrapper.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-status-icon {
  align-items: center;
  background: transparent;
  border: 1px solid rgba(12, 9, 11, .28);
  border-radius: 50%;
  color: var(--surface-dark);
  display: flex;
  flex: 0 0 auto;
  height: 18px;
  justify-content: center;
  width: 18px;
}
.learndash-wrapper.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-status-icon.ld-status-complete {
  background: var(--surface-dark) !important;
  border-color: var(--surface-dark);
  color: var(--surface-white);
}
.learndash-wrapper.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-status-icon .ld-icon-checkmark {
  font-size: 9px;
}
.learndash-wrapper.learndash-wrapper .ld-table-list-item-preview .ld-topic-title {
  color: var(--surface-dark);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .015em;
  line-height: 1.4;
}
.learndash-wrapper.learndash-wrapper .ld-table-list-item-preview.ld-is-current-item .ld-topic-title {
  color: var(--surface-dark);
}
.learndash-wrapper.learndash-wrapper .ld-table-list-footer {
  padding: 14px 24px;
}

/* KOREKTA 16.09.2026, na zywo z Jakubem: "odstep miedzy belka telegram a
   lekcjami jest zbyt ogromna". Przyczyna: karol.css ma regule
   .learndash-wrapper.learndash-wrapper { padding: clamp(48px,6vw,88px) 24px }
   (linia 86-91), 1:1 z guide'u. Realny DOM strony kursu zagniezdza klase
   "learndash-wrapper" TRZY razy (kontener szablonu .container.learndash-
   wrapper > wrapper shortcode'u LD .learndash-wrapper.learndash-wrap... >
   wewnetrzny .learndash-wrapper przed .ld-item-list) - kazdy z tych trzech
   dostawal ten sam padding niezaleznie, sumujac sie do ~260px pustej
   przestrzeni zamiast jednego ~86px odstepu. Karol projektowal regule
   zakladajac JEDEN poziom .learndash-wrapper na sekcje tresci, nie znal
   zagniezdzonej struktury shortcode'u LD. Fix: zeruj padding/max-width na
   KAZDYM zagniezdzonym .learndash-wrapper wewnatrz innego, zostaw go tylko
   na najbardziej zewnetrznym wystapieniu. */
.learndash-wrapper.learndash-wrapper .learndash-wrapper.learndash-wrapper {
  max-width: none;
  padding: 0;
}

/* Przycisk "Zobacz zawartosc" w hero listy kursu, kotwica do #zawartosc
   (sekcja akordeonu). Skrolluje przez ogolny mechanizm main.js (plynnyScroll,
   D46), zero nowego JS potrzebne. Miejsce w ukladzie: pod lead, w tej samej
   przestrzeni co dekoracyjna kreska (czysto CSS, .kurs-hero__tekst::after
   gdzies w base.css/podstrony.css - nie znaleziona jako osobny selektor przy
   tej poprawce, przycisk po prostu wchodzi w normalny flow ponizej lead). */
.kurs-hero__cta {
  margin-top: var(--space-6);
}

/* KOREKTA 16.09.2026, historia trzech podejsc, na zywo z Jakubem.
   PRZYCZYNA WYJSCIOWA (nie nasz kod - natywne ld30, learndash.css ~4542):
   ".ld-focus-sidebar { position:fixed; left:0; top:0; bottom:0; z-index:99; }"
   LD zaklada, ze Focus Mode nigdy nie pokazuje stopki - fixed na cala
   wysokosc viewportu jest wtedy bezpieczne. Nasz motyw POKAZUJE stopke, wiec
   fixed+top:0 dawal DWA bledy naraz: (a) przy krotkiej lekcji sidebar
   (z-index:99) renderowal sie NAD stopka po przewinieciu do konca, (b)
   sidebar zaczynal sie dokladnie w y:0 viewportu, czyli POD nagłówkiem
   (nagłówek nad nim w warstwach) - gorna czesc panelu byla niewidoczna,
   "urwana", dopoki sie nie przewinelo na tyle zeby naglowek zjechal.

   v1 (sticky, top:0) naprawilo (a), zepsulo pozycje pozioma (patrz stary
   opis w historii pliku/git) - kontener byl wtedy jeszcze wycentrowany
   (max-width:1012px na ".learndash-wrapper" opakowujacym ".ld-focus", patrz
   regula ponizej "header sie rozjezdza"), a sticky bez aktywnego progu po
   prostu siedzi w normalnym poziomym flow, wiec "uciekal" od lewej krawedzi.
   v2 (fixed + JS przelaczajacy na absolute przy koncu .ld-focus) naprawilo
   (a) i pozycje pozioma, ale NIE naprawilo (b) - fixed nadal siedzial pod
   naglowkiem na starcie.

   v3 (ta wersja, docelowa): teraz gdy kontener juz NIE jest wycentrowany
   (regula "main > .learndash-wrapper..." nizej zeruje to u zrodla), czysty
   position:sticky z top USTAWIONYM NA WYSOKOSC NAGLOWKA (nie 0) rozwiazuje
   WSZYSTKO naraz, bez JS: panel zaczyna sie WIDOCZNIE pod naglowkiem (sticky
   "dogania" viewport dopiero na progu top, nie chowa sie za niczym), trzyma
   sie widoku przy scrollu, i sam konczy sie na granicy .ld-focus (sticky z
   natury nie wychodzi poza padding-box najblizszego pozycjonowanego rodzica)
   - stopka nigdy pod nim. Wysokosc naglowka: zmierzona na zywo w stanie
   przewinietym (.is-scrolled, main.js, ~118px) - kilka px roznicy wobec
   stanu na samej gorze (~125px) jest bez znaczenia wizualnie. JS z main.js
   (przelaczanie fixed/absolute) USUNIETY, niepotrzebny w tym podejsciu. */

/* KOREKTA 16.09.2026, na zywo z Jakubem: "header sie rozjezdza" - biala
   szczelina ~88px miedzy headerem strony a poczatkiem sidebar/main w Focus
   Mode. PRZYCZYNA: ".ld-focus" (caly widok lekcji, sidebar+main) siedzi
   BEZPOSREDNIO wewnatrz ".learndash-wrapper" (LD zawija tak kazdy shortcode
   tresci), a Karol.css ma jeden generyczny wzorzec dla TEGO dokladnie
   selektora: "padding: clamp(48px,6vw,88px) 24px; max-width:1012px;
   margin-inline:auto" (linia ~86-91), pomyslany dla zwyklych podstron z
   trescia (gdzie oddech od headera ma sens). Focus Mode NIE jest zwykla
   podstrona z trescia - to wlasny, pelnowymiarowy uklad sidebar+main, ktory
   sam zarzadza swoim odstepem (.ld-focus-content ma juz wlasny, dobrany
   clamp) i NIE powinien dostawac dodatkowego paddingu/max-width od
   generycznego wrappera. To ten sam max-width:1012px + margin-inline:auto
   tez odpowiadal za pozorne "wciecie od lewej" sidebara zanim main.js zaczal
   to kompensowac (patrz JS wyzej) - zerowanie tutaj usuwa problem u zrodla,
   JS zostaje jako dodatkowe zabezpieczenie, nie jedyny mechanizm. */
main > .learndash-wrapper.learndash-wrapper:has(> .ld-focus) {
  margin-inline: 0;
  max-width: none;
  padding: 0;
}
.ld-focus.ld-focus.ld-focus {
  position: relative;
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar {
  bottom: auto;
  left: 0;
  max-height: calc(100vh - 118px);
  position: sticky;
  top: calc(118px + var(--jdb-sb-top-extra, 160px));
  /* KOREKTA 16.09.2026 (feedback Jakuba na zywym zrzucie): lekcje krotsze niz
     dostepna wysokosc mialy sidebar przyklejony do gory strefy sticky,
     zostawiajac pusty pasek cremowy pod nim - wygladalo na wyrownanie do
     gory zamiast do srodka. Pierwsza proba (top:calc(50vh+59px) +
     transform:translateY(-50%)) byla bledna: transform dziala TAKZE w fazie
     "statycznej" (przed dotarciem scrolla do progu top), sidebar wyskakiwal
     nad viewport zaraz po zaladowaniu strony (top=-97px zmierzone zywo).
     Poprawne centrowanie wymaga porownania realnej wysokosci tresci z
     dostepna przestrzenia w czasie wykonania (nie da sie tego policzyc w
     czystym CSS bez zgadywania) - JS w main.js (patrz komentarz tam) ustawia
     inline "top" tylko gdy tresc jest krotsza niz dostepna wysokosc,
     w przeciwnym razie ta wartosc 118px z reguly obowiazuje bez zmian. */
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-focus-sidebar-wrapper {
  height: 100%;
}

/* KOREKTA 16.09.2026 (plan-szablon-lekcja-i-moje-konto.md, decyzja Jakuba
   "sticky z marginesem"): makieta Karola (02-lekcja-desktop.png) ma sidebar
   wciety 68px od lewej krawedzi viewportu plus 32px odstepu do karty
   tresci, zmierzone pikselowo (kanwa 2880px = 1440 logiczne, wspolczynnik
   2: sidebar x=136-796 => logiczne 68-398, karta od x=860 => logiczne 430).
   Guide Karola tego marginesu nie mial (sidebar edge-to-edge), wiec idzie
   tutaj, nie do learndash-karol.css. Sticky zostaje (nie blok jak w
   makiecie) - przy 85-pozycyjnym kursie zwykly blok gubi nawigacje z widoku
   na caly ekran scrolla, sticky+margines daje wyglad makiety w spoczynku
   bez tej wady. margin-left dodany do sidebara (przesuwa go w prawo w
   normalnym flow, position:sticky/left:0 nie koliduje - left:0 dotyczy
   tylko osi w ktorej strona faktycznie by scrollowala w poziomie, tu jej
   nie ma). Zmierzone zywo (getComputedStyle): flex SAM dolicza szerokosc+
   margines sidebara do naturalnej pozycji main, margin-left na main jest
   CZYSTYM odstepem DODANYM do tamtej pozycji, nie suma bezwzgledna 68+330+32
   jak wygladaloby na pierwszy rzut oka - stad main dostaje tylko 32px, nie
   430px. Ten sam mechanizm dziala automatycznie na progu tabletowym (290px
   sidebar), zero osobnego overrida margin-left na main tam potrzebne.

   WARTOSCI 16.09.2026 (Jakub, przez konfigurator jdb_konfigurator_sidebara()
   w functions.php, wyslane jako gotowy blok "gotowe"): margines 68->100px,
   odstep do tresci 32->0px (dotykaja sie), pozycja pionowa +160px (patrz
   top: nizej), odstep wierszy 13->6px (gestsza lista). Fallbacki w var()
   ponizej sa teraz TYMI wartosciami, nie oryginalnymi z pierwszej wersji -
   suwak konfiguratora nadal dziala, tylko punkt startowy sie przesunal. */
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar {
  margin-left: var(--jdb-sb-margin, 100px);
}
.ld-focus.ld-focus.ld-focus .ld-focus-main {
  margin-left: var(--jdb-sb-gap, 0px);
}

@media (max-width: 1024px) {
  /* Progi 768/1024 (learndash-karol.css) juz przelaczaja sidebar na
     position:relative/width:100% (stackowanie pod glownym contentem) -
     sticky/max-height tam nie ma czego robic, jawne wygaszenie na wszelki
     wypadek (kolejnosc kaskady z tamtym blokiem mogla by inaczej byc
     niejednoznaczna). margin-left main (32px) zostaje z bazowej reguly
     wyzej, nie trzeba go tu przeliczac (patrz komentarz tam).

     KOREKTA 16.09.2026: margin-left:68px z bazowej reguly wyzej byl
     jeszcze aktywny tutaj (nic go nie zerowalo ponizej 1024), a sidebar w
     tym trybie ma juz width:100% (nie kolumna, "SPIS LEKCJI" numerowany
     stacking, zywy fakt: computed width=1024px przy viewport 1024px, NIE
     290px z karol.css jak zakladano) - 100%+68px marginesu dawalo poziomy
     scroll strony (body.scrollWidth=1092 przy viewport 1024, zmierzone
     zywo). Margines z makiety desktopowej ma sens tylko dla kolumny z
     boku, nie dla pelnoszerokosciowego stackowania, wiec zerowanie tutaj,
     nie w osobnym progu 768. */
  .ld-focus.ld-focus.ld-focus .ld-focus-sidebar {
    margin-left: 0;
    max-height: none;
    position: relative;
    top: auto;
    /* transform:translateY(-50%) z sticky-center (bazowa regula ponizej w
       pliku) musi zniknac razem z top/position - inaczej relative+transform
       przesuwa caly stackowany sidebar w gore o polowe jego (teraz bardzo
       duzej, bo pelna lista) wysokosci, wyrzucajac go czesciowo poza
       ekran/pod naglowek. */
    transform: none;
  }
  /* Main tez ma width:100% w tym trybie (stacking, nie kolumna) - ten sam
     przelew jak wyzej, tylko na drugim elemencie (zmierzone zywo:
     rectRight=1056 przy viewport 1024 przed tym zerowaniem). */
  .ld-focus.ld-focus.ld-focus .ld-focus-main {
    margin-left: 0;
  }
}

/* KOREKTA 16.09.2026 (feedback Jakuba na zywym zrzucie: "tekst zrob bialy bo
   obecnie jest niewidoczny"): guide Karola (learndash-karol.css) ustawia
   domyslny (nie-biezacy, nie-hover) tytul lekcji/tematu na
   --text-on-dark-muted (.68 opacity bieli) - swiadomy wybor makiety
   (hierarchia: biezaca pozycja biala, reszta stlumiona), ale w realnym
   uzyciu Jakub ocenil to jako nieczytelne. Podbicie do pelnej bieli, tylko
   TYTUL (kolor ikony statusu i etykiety "N Tematy" zostaja stlumione,
   drugorzedne, nie byly czescia zgloszenia). */
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-preview,
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-row {
  color: rgba(255, 253, 248, var(--jdb-sb-text-opacity, 1));
}
/* padding-top/bottom osobno, bo istnieje inna regula w tym pliku (linia
   ~501, ".ld-lesson-item .ld-lesson-item-preview", 8 klas z licznikiem
   ".ld-focus" x4) o WYZSZEJ specyficznosci niz powyzsza (6 klas) - kolor
   tam wygrywal (ta regula go nie ustawia), padding przegrywal (tamta go
   ustawia shorthandem "13px 30px" niezaleznie od kolejnosci w pliku).
   Zmierzone zywo: computed padding-top zostawal 13px mimo zmiany fallbacku
   na 6px. Podbite do 5x ".ld-focus" (9 klas), zdecydowanie ponad konkurenta. */
.ld-focus.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-preview,
.ld-focus.ld-focus.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-row {
  padding-bottom: var(--jdb-sb-row-pad, 6px);
  padding-top: var(--jdb-sb-row-pad, 6px);
}
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-title,
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-title {
  font-size: var(--jdb-sb-font, 12px);
}

/* KOREKTA 16.09.2026 (feedback Jakuba: "tytuly modulowe sa szare a powinny
   byc biale"): fix wyzej (na .ld-lesson-item-preview) NIE wystarczal, bo
   natywny ld30 ustawia kolor NIE na .ld-lesson-title (guide ma tam
   color:inherit, poprawnie), tylko na jego RODZICU, kotwicy
   "a.ld-lesson-item-preview-heading{color:#495255}" (learndash.css linia
   ~3860) - inherit bierze kolor TEGO rodzica, nie .ld-lesson-item-preview
   dwa poziomy wyzej. Zmierzone zywo: .ld-lesson-title mial computed
   color rgb(73,82,85) mimo ze .ld-lesson-item-preview obok mial juz biel.
   Fix na wlasciwym elemencie zamiast dalszego owijania. */
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-preview-heading {
  color: inherit;
}

/* KOREKTA 16.09.2026 (feedback Jakuba: box "SZKOLENIE INSTRUKTORSKIE" ma
   inna szerokosc niz lista pod nim, i ma byc bordowy zamiast czarnego).
   Zmierzone zywo: natywny ld30 (learndash.css ~4586) ustawia na tym boxie
   "width:350px" na sztywno (stara szerokosc sidebara sprzed guide'u
   Karola, ktory zmniejszyl do 330px) - guide nigdy nie nadpisal width,
   tylko padding/border/kolor, wiec ta jedna wlasciwosc przeciekala z
   natywnego. Tlo rgb(10,0,0) to (jak wszedzie dzisiaj) Customizer LD
   forsujacy defaultowy kolor marki z !important ponad natywne
   "background-color:#00a2e8" i ponad transparent z guide'u. */
.ld-focus.ld-focus.ld-focus .ld-focus-sidebar .ld-course-navigation-heading {
  background: var(--surface-dark) !important;
  width: 100%;
}

/* KOREKTA 16.09.2026: bialy pasek nad naglowkiem, ~32px za duzo, WYLACZNIE
   na kontach z adminbarem (kamila/Jakub) w Focus Mode. Zdiagnozowane zywym
   getComputedStyle: html{margin-top:32px} to poprawny, natywny WP offset
   pod adminbar. Ale natywny ld30 (sfwd-lms/themes/ld30/assets/css/
   learndash.css) DODAJE WLASNY: "body.ld-in-focus-mode.admin-bar{
   padding-top:32px}" - dwa niezalezne offsety naklejaja sie na siebie
   (64px zamiast 32px), header renderuje sie o 32px za nisko. Nie dotyczy
   zwyklych kursantek (brak klasy .admin-bar). Selektor natywny ma 2 klasy
   + element (body), nasz potrzebuje wiecej niz 2 klasy zeby wygrac zawsze,
   niezaleznie od kolejnosci enqueue (ten sam wzorzec co sidebar wyzej w
   tym pliku, PAMIĘĆ:learndash-specyficznosc-remis-ld30) - stad potrojne
   ".admin-bar". html{margin-top:32px} zostaje nietkniety, to on ma
   dostarczac jedyny offset. */
body.ld-in-focus-mode.admin-bar.admin-bar.admin-bar {
  padding-top: 0 !important;
}

/* KOREKTA 16.09.2026 (feedback Jakuba, zywy odbior /lessons/capcut/, konto
   kamila): biala przerwa przed stopka po przyciskach "Oznacz jako gotowe /
   Nastepna lekcja". Zmierzone zywo (getBoundingClientRect): .ld-focus-content
   ma stale padding-bottom:80px (learndash-karol.css, 1:1 z guide'em Karola,
   NIE ruszamy tamtego pliku) i ten dolny margines byl w calosci pusty -
   .ld-content-actions (przyciski) konczyl sie dokladnie 80px nad stopka.
   Zerowanie tutaj (selektor identyczny jak w bazie, wygrywa kolejnoscia
   enqueue - jdb-learndash-uzupelnienia zaleznosciowo po jdb-learndash-karol,
   PAMIĘĆ:wp-sesja-bez-zmiany-hasla dot. tylko logowania testowego, nie tej
   reguly) - ostatni element (.ld-content-actions) teraz dotyka stopki, nie
   nachodzi (koniec .ld-focus-content = poczatek stopki, zmierzone rownie
   zywo po zmianie). */
.ld-focus.ld-focus.ld-focus .ld-focus-main .ld-focus-content {
  padding-bottom: 0;
}
