/**
 * Motyw „Mikrodotacje Fundacji BOŚ 2026" — style własne.
 *
 * Warstwa bazowa (tokeny :root, komponenty, utilities) pochodzi z motywu bazowego
 * bos2026 (bos2026-main + bos2026-utilities, ładowane WCZEŚNIEJ). Tu dokładamy tylko:
 *   1) brakujące utilities używane w szablonach „Mikrodotacji",
 *   2) komponenty panelu/kart/modali/list,
 *   3) MOST CSS do formularzy renderowanych przez Pods (.bmikro-pods-form).
 */

/* ============ Uzupełnienia utilities (brakujące w bazie) ============ */
.c-green { color: var(--green); }
.h-full { height: 100%; }
.m-0 { margin: 0; }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }
.mb-4 { margin-bottom: 4px; }
.pt-30 { padding-top: 30px; }
.pt-48 { padding-top: 48px; }
.pb-48 { padding-bottom: 48px; }
.pb-120 { padding-bottom: 120px; }
.lh-44 { line-height: 44px; }

/* ============ Przyciski — warianty specyficzne ============ */
.btn--sm { height: 42px; padding: 0 20px; font-size: .9375rem; }
.btn--outline { background: transparent; border: 1px solid var(--teal); color: var(--teal); }
.btn--outline:hover { background: rgba(40, 83, 96, .08); filter: none; }

/* ============ Navbar — wyrównanie do projekty (wysokość 64px, font Nunito Sans) ============ */
/* Pasek 64px, elementy do góry, zielona plakietka (80px) WYSTAJE poniżej i nie jest przycinana. */
.navbar.navbar--sub { height: 64px; align-items: flex-start; overflow: visible; }
.navbar.navbar--sub .navbar__logo { align-self: flex-start; height: 80px; }
.navbar--sub .navbar__links { height: 64px; }
.navbar--sub .navbar__links a { font-family: var(--font-main); line-height: 22px; }
.navbar__right { display: flex; align-items: center; gap: 32px; height: 64px; }
.navbar__actions { flex: none; }
.navbar__user { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-main); font-size: 1rem; line-height: 22px; color: #000; text-decoration: none; }
.navbar__user-avatar { flex: none; width: 36px; height: 36px; border-radius: 50%; object-fit: cover; background: #e2eae6; }
.navbar__user:hover span { text-decoration: underline; }
/* Przyciski navbara jak w projekty (.ts-nav__btn): 38px, Nunito Sans, 1rem. */
.navbar__actions .btn { height: 38px; padding: 0 20px; font-family: var(--font-main); font-size: 1rem; line-height: 22px; }

/* Mobile (≤1024) — 1:1 z projekty (.ts-nav): mniejszy pasek (50px), mniejsza plakietka (62px),
   mniejsze logotypy; prawy blok ukryty, hamburger widoczny. */
@media (max-width: 1024px) {
	.navbar.navbar--sub { height: 50px; padding: 0 12px 0 20px; position: sticky; top: 0; z-index: 100; }
	.navbar.navbar--sub .navbar__logo { height: 62px; padding: 10px 24px 13px 27px; border-radius: 0 0 25px 25px; gap: 8px; }
	.navbar--sub .navbar__logo-bos { height: 35px; max-width: 90px; }
	.navbar--sub .navbar__logo-mikro { height: 35px; max-width: 150px; }
	.navbar__logo-divider { height: 35px; }
	.navbar--sub .navbar__right { display: none !important; }
	.navbar--sub .navbar__burger { display: flex !important; }
	/* Baza dokłada na mobile padding-top:50px do treści przy navbar--sub — projekty tego
	   nie ma; navbar jest sticky, więc gap jest zbędny. Zerujemy. */
	.navbar--sub ~ .site-content { padding-top: 0; }
}

/* ============ Navbar — dwa logotypy w plakietce (jak w projekty) ============ */
/* Plakietka mieści: logo Fundacji BOŚ + separator + logo Mikrodotacje. */
.navbar--sub .navbar__logo { width: auto; justify-content: flex-start; gap: 16px; padding: 10px 28px 13px 30px; }
.navbar__logo-link { display: flex; align-items: center; }
.navbar--sub .navbar__logo-bos { width: auto; height: 50px; max-width: 120px; object-fit: contain; }
.navbar--sub .navbar__logo-mikro { width: auto; height: 36px; max-width: 190px; object-fit: contain; }
.navbar__logo-divider { width: 1px; height: 44px; background: rgba(0, 0, 0, .2); flex: none; }

/* Mobile: ta sama plakietka z dwoma logami w pasku menu mobilnego. */
.mobile-menu__logo.navbar__logo { width: auto; justify-content: flex-start; gap: 8px; padding: 10px 20px 12px 22px; }
.mobile-menu__logo .navbar__logo-bos { width: auto; height: 34px; max-width: 80px; object-fit: contain; }
.mobile-menu__logo .navbar__logo-mikro { width: auto; height: 26px; max-width: 140px; object-fit: contain; }
.mobile-menu__logo .navbar__logo-divider { height: 30px; }

/* ============ Typografia treści (post-content) ============ */
.post-content { font-family: var(--font-main); font-size: 1.0625rem; line-height: 1.6; color: #123a31; }
.post-content h2 { font-family: var(--font-main); font-weight: 900; font-size: 1.75rem; line-height: 1.3; margin: 2rem 0 1rem; }
.post-content h3 { font-weight: 900; font-size: 1.375rem; margin: 1.5rem 0 .75rem; }
.post-content p { margin: 0 0 1.1em; }
.post-content a { color: var(--dark-green); text-decoration: underline; }
.post-content ul, .post-content ol { margin: 0 0 1.1em; padding-left: 1.4em; }
.post-content img { border-radius: 16px; height: auto; }

/* Uzupełnienie bazy bos2026: brak reguły dla list numerowanych w treści wpisu
   (.article__body ol) — baza stylizuje tylko ul. Dociągamy ol do tego samego
   wyglądu (decimal, wcięcie, interlinia, odstępy) + spójne listy w .post-content. */
.article__body ol,
.post-content ol { font-size: 1rem; line-height: 32px; padding-left: 24px; list-style: decimal; margin: 0 0 16px; }
.article__body ul,
.post-content ul { font-size: 1rem; line-height: 32px; padding-left: 24px; list-style: disc; margin: 0 0 16px; }
.article__body li,
.post-content li { padding-left: 4px; margin-bottom: 8px; }
.article__body ol ol,
.article__body ul ul,
.post-content ol ol,
.post-content ul ul { margin: 8px 0 0; }

/* Blok pliku Gutenberga z osadzonym podglądem PDF (.wp-block-file__embed).
   Baza bos2026 układa blok pliku w jednym wierszu (ikona + nazwa + „Pobierz") i
   zakłada brak podglądu — przy osadzonym PDF nazwa i przycisk nachodzą na siebie.
   Tu: podgląd na całą szerokość w osobnym wierszu, nazwa + „Pobierz" pod spodem. */
.article__body .wp-block-file:has(.wp-block-file__embed),
.statut__body .wp-block-file:has(.wp-block-file__embed),
.post-content .wp-block-file:has(.wp-block-file__embed) { flex-wrap: wrap; row-gap: 12px; }
.article__body .wp-block-file:has(.wp-block-file__embed)::before,
.statut__body .wp-block-file:has(.wp-block-file__embed)::before,
.post-content .wp-block-file:has(.wp-block-file__embed)::before { display: none; }
.article__body .wp-block-file__embed,
.statut__body .wp-block-file__embed,
.post-content .wp-block-file__embed { flex: 1 1 100%; width: 100%; min-height: 480px; border: 1px solid #e2e4e2; border-radius: 16px; }

/* Uzupełnienie bazy bos2026: tabele są stylowane tylko dla wpisów (.article__body),
   brak reguł dla stron statycznych (.statut__body). Dociągamy je (oraz .post-content)
   do tego samego wyglądu co na wpisach. */
.statut__body .wp-block-table,
.post-content .wp-block-table { border: 1px solid #000; border-radius: 24px; overflow: hidden; margin-bottom: 32px; }
.statut__body .wp-block-table figure,
.post-content .wp-block-table figure { margin: 0; }
.statut__body table,
.post-content table { width: 100%; border-collapse: collapse; }
.statut__body table caption,
.post-content table caption { font-size: 1.5rem; line-height: 27px; font-weight: 900; text-align: left; padding: 24px; border-bottom: 1px solid #000; caption-side: top; }
.statut__body table th,
.post-content table th { font-size: 1rem; line-height: 19px; font-weight: 700; text-align: left; padding: 16px 24px; border-bottom: 1px solid #000; }
.statut__body table td,
.post-content table td { font-size: 1rem; line-height: 22px; font-weight: 400; padding: 28px 24px; border-bottom: 1px solid #000; }
.statut__body table tr:last-child td,
.post-content table tr:last-child td { border-bottom: none; }

@media (max-width: 767px) {
	.statut__body .wp-block-table,
	.post-content .wp-block-table { overflow-x: auto; -webkit-overflow-scrolling: touch; }
	.statut__body .wp-block-table table,
	.post-content .wp-block-table table { table-layout: auto; width: max-content; min-width: 100%; max-width: none; }
	.statut__body table th, .statut__body table td,
	.post-content table th, .post-content table td { white-space: nowrap; }
	.statut__body table th,
	.post-content table th { padding: 12px 16px; }
	.statut__body table td,
	.post-content table td { padding: 16px; }
}

/* ============ Karty aktualności (grid) ============ */
.bm-grid-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
@media (max-width: 1024px) { .bm-grid-cards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 767px) { .bm-grid-cards { grid-template-columns: 1fr; } }

.card { border: 1px solid var(--card-border); box-shadow: 0 15px 30px rgba(0, 0, 0, .06); }
/* Wysokość obrazka karty = standard bos2026 (266px / 223px na mobile) — NIE nadpisujemy
   jej tu, żeby karty były spójne z projekty i między sobą. Dokładamy tylko display:block
   (usuwa dolny odstęp inline-img) oraz spójną wysokość dla placeholdera bez miniatury. */
.card__image { display: block; }
.card__image--placeholder { display: flex; align-items: center; justify-content: center; background: var(--dark-green); }
.card__image--placeholder img { width: 55%; max-width: 180px; height: auto; opacity: .9; }
.card__link { color: #123a31; }
.card__link:hover { color: var(--dark-green); }
.card__more { text-decoration: none; }
.card__more:hover { text-decoration: underline; }
.card__lock { vertical-align: middle; color: var(--teal); }

.bm-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; padding: 0 10px; border-radius: 20px; background: #fff; border: 1px solid var(--card-border); color: #123a31; text-decoration: none; }
.bm-pagination .page-numbers.current { background: var(--green); border-color: var(--green); }

/* ============ Artykuł / strona statyczna ============ */
.bm-article { max-width: 860px; }
.bm-article__thumb img { width: 100%; display: block; }
.bm-article__grid { display: grid; grid-template-columns: 1fr 260px; gap: 40px; align-items: start; }
@media (max-width: 1024px) { .bm-article__grid { grid-template-columns: 1fr; } }
.bm-article__toc-sticky { position: sticky; top: 90px; background: #fff; border: 1px solid var(--card-border); border-radius: 16px; padding: 20px; font-size: .9375rem; }
.bm-article { margin-left: auto; margin-right: auto; }

/* ============ Komunikaty (alerty) ============ */
.bm-note { border-radius: 12px; padding: 16px 20px; font-size: 1rem; line-height: 1.5; }
.bm-note--warning { background: #fff6da; border: 1px solid var(--yellow); color: #5a4b00; }
.bm-note--info { background: #eef7f9; border: 1px solid var(--blue); color: #123a31; }
/* Komunikaty formularzy panelu — jak .ts-msg w projekty. */
.bm-msg { padding: 14px 18px; margin-bottom: 24px; border-radius: 10px; font-size: 1rem; line-height: 22px; }
/* Sukces: zieleń z palety marki (#95c11f = --green) i czarny tekst jak na zielonych przyciskach (biały ma na niej tylko ~2:1). */
.bm-msg--ok { background: var(--green, #95c11f); border: 1px solid var(--green, #95c11f); color: #000; }
.bm-msg--error { background: #fdecec; border: 1px solid #d51110; color: #d51110; }
.bm-note a { color: var(--dark-green); font-weight: 700; }

/* ============ Badge statusu ============ */
.bm-badge { display: inline-flex; align-items: center; height: 26px; padding: 0 12px; border-radius: 20px; background: var(--blue); font-family: var(--font-alt); font-size: .8125rem; line-height: 26px; color: #123a31; }
.bm-badge--dot { gap: 7px; }
.bm-badge--dot::before { content: ''; flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--teal); }

/* ============ Karty panelu / sekcje ============ */
.bm-card { background: #fff; border: 1px solid #000; border-radius: 10px; padding: 24px; }
.bm-card + .bm-card, .bm-card + .bm-apps { margin-top: 24px; }
.bm-card__title { margin: 0 0 16px; }
.bm-hr { border: 0; border-top: 1px solid var(--card-border); margin: 16px 0; }

/* ============ Panel: layout z sidebarem (styl bos2026-projekty) ============ */
body.bm-app-page { display: flex; flex-direction: column; min-height: 100vh; }
body.bm-app-page .bm-panel { flex: 1 0 auto; }
.bm-panel { background: #fff; padding-top: 84px; }
.bm-panel__grid { display: grid; grid-template-columns: 300px 1fr; border-top: 1px solid #000; }
.bm-panel__side { padding: 40px 40px 40px 0; }
.bm-panel__main { min-width: 0; border-left: 1px solid #000; padding: 40px 0 80px 40px; }
.bm-panel__title { margin: 0; }
.bm-panel__toggle { display: none; }

/* ============ Sidebar panelu ============ */
.bm-side__avatar { flex: none; width: 40px; height: 40px; border-radius: 50%; object-fit: cover; background: #e2eae6; }
.bm-side__headtext { min-width: 0; }
.bm-side__name { margin-bottom: 4px; }
.bm-side__meta { margin: 0; }
.bm-side__nav { gap: 2px; }
.bm-side__item { display: flex; align-items: center; gap: 12px; padding: 10px; border-radius: 10px; font-family: var(--font-main); font-size: 1rem; line-height: 22px; color: #000; text-decoration: none; }
.bm-side__item:hover { background: rgba(184, 221, 226, .4); color: #000; } /* kolor tekstu bez zmiany — globalne a:hover (inc/customization.php) go nie przemalowuje */
.bm-side__item.is-active { background: var(--blue); }
.bm-side__icon { flex: none; width: 24px; height: 24px; }

/* ============ Sekcje konta (bos2026-projekty: .ts-acc-sec) ============ */
.bm-account .bm-panel__title { margin-bottom: 40px; }
.bm-acc-sec { padding: 32px 0; border-top: 1px solid #000; }
.bm-acc-sec:first-of-type { border-top: none; padding-top: 0; }
.bm-acc-sec__title { margin: 0 0 24px; }
.bm-acc-sub { margin-top: 24px; padding-top: 24px; border-top: 1px solid #000; }
.bm-acc-sub h3 { margin: 0 0 4px; }

/* ============ Lista wnioskow (dashboard) ============ */
.bm-apps { display: flex; flex-direction: column; gap: 20px; }
/* Karta nie przycina zawartości (bez overflow:hidden) — lista menu dokumentu („Wniosek ▾") może wystawać poza jej dolną krawędź;
   zaokrąglenie dolnych rogów żółtego paska (.bm-app__cta) ustawiamy więc na nim samym. */
.bm-app { background: #fff; border: 1px solid #ececec; border-radius: 16px; box-shadow: 0 4px 16px rgba(0, 0, 0, .04); }
.bm-app.is-menu-open { position: relative; z-index: 20; }   /* karta z otwartą listą leży nad sąsiednimi (assets/js/main.js) */
/* Karta z poprzedniej edycji jest wyszarzona — NIE przez opacity całej karty (lista menu też zrobiłaby się półprzezroczysta),
   tylko jej zawartości. */
.bm-app--dim { box-shadow: none; }
.bm-app--dim .bm-app__title,
.bm-app--dim .bm-app__body > :not(.bm-app__head),
.bm-app--dim .bm-menu__toggle,
.bm-app--dim .bm-app__head-actions > .btn,
.bm-app--dim .bm-app__cta { opacity: .6; }
.bm-app__body { padding: 24px; }
.bm-app__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.bm-app__title { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; min-width: 0; }
.bm-app__title h3 { margin: 0; }
.bm-app__meta { display: inline-flex; align-items: center; height: 26px; padding: 0 12px; border-radius: 20px; background: #f1f1f1; font-size: .8125rem; line-height: 26px; color: #6b6b6b; white-space: nowrap; }
/* Przyciski karty: „Wniosek ▾", „Sprawozdanie ▾" (menu Podgląd / Pobierz) i przycisk główny (Edytuj wniosek / Edytuj sprawozdanie).
   Stoją po prawej od tytułu, a gdy się nie mieszczą — zawijają się pod niego, nadal przy prawej krawędzi. Dawne `flex: none` nie
   pozwalało im się zwęzić: na telefonie wychodziły poza kartę (a jej overflow:hidden je ucinał). */
.bm-app__head-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; flex: 0 1 auto; min-width: 0; max-width: 100%; margin-left: auto; }
.bm-app__download { gap: 8px; }
.bm-app__download svg { flex: none; }
/* Menu dokumentu: przycisk rozwija listę (hidden) z pozycjami Podgląd / Pobierz (PDF) — bmikro_render_doc_menu(), assets/js/main.js. */
.bm-menu { position: relative; }
.bm-menu__toggle { gap: 8px; }
/* Kolory menu dokumentu: obramowanie przycisków „Wniosek ▾" / „Sprawozdanie ▾" i rozwiniętej listy w zieleni marki (#95c11f = --green),
   napisy #161412 (strzałka i ikony biorą kolor napisu); pozycja nieaktywna zostaje szara. Podwójna klasa na przycisku przebija
   ogólny wariant .btn--outline (turkusowy) — inne przyciski z obrysem zostają bez zmian. */
.btn--outline.bm-menu__toggle { border-color: #95c11f; color: #161412; }
.bm-menu__caret { flex: none; transition: transform .15s ease; }
.bm-menu__toggle[aria-expanded="true"] { background: rgba(40, 83, 96, .08); }
.bm-menu__toggle[aria-expanded="true"] .bm-menu__caret { transform: rotate(180deg); }
.bm-menu__panel { position: absolute; z-index: 5; top: calc(100% + 6px); left: 0; min-width: 220px; max-width: min(280px, 86vw); padding: 6px; background: #fff; border: 1px solid #95c11f; border-radius: 14px; box-shadow: 0 12px 28px rgba(0, 0, 0, .14); }
.bm-menu__panel[hidden] { display: none; }
.bm-menu__panel--end { left: auto; right: 0; }
.bm-menu__panel--up { top: auto; bottom: calc(100% + 6px); }   /* brak miejsca pod przyciskiem — lista otwiera się w górę (assets/js/main.js) */
.bm-menu__item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; border: 0; border-radius: 10px; background: transparent; font-family: var(--font-alt); font-size: .9375rem; line-height: 22px; color: #161412; text-align: left; text-decoration: none; cursor: pointer; }
.bm-menu__item svg { flex: none; }
.bm-menu__item:hover, .bm-menu__item:focus-visible { background: rgba(40, 83, 96, .08); }
.bm-menu__item:focus-visible { outline: 2px solid var(--teal); outline-offset: -2px; }
.bm-menu__item.is-disabled { align-items: flex-start; color: #8b8b8b; cursor: default; }
.bm-menu__item.is-disabled:hover { background: transparent; }
.bm-menu__item.is-disabled svg { margin-top: 2px; }
.bm-menu__hint { display: block; font-size: .75rem; line-height: 16px; color: #8b8b8b; }
@media (max-width: 767px) {
	/* Telefon: przyciski pod tytułem, rozciągnięte do wypełnienia wiersza (duże pola dotyku, brak „postrzępionej" prawej krawędzi):
	   dwa menu obok siebie (gdy się mieszczą), przycisk główny w osobnym wierszu. Lista drugiego menu otwiera się w lewo. */
	.bm-app__head-actions { width: 100%; }
	.bm-app__head-actions > .btn { flex: 1 1 100%; }
	.bm-app__head-actions > .bm-menu { flex: 1 1 auto; }
	.bm-menu__toggle { width: 100%; padding-left: 10px; padding-right: 10px; gap: 5px; }
	.bm-menu + .bm-menu .bm-menu__panel { left: auto; right: 0; }
}
.bm-app__status { display: flex; align-items: center; gap: 10px; margin: 16px 0 0; font-size: .875rem; line-height: 26px; color: #6b6b6b; }
.bm-app__status-label { color: #6b6b6b; }
.bm-app__cta { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 18px 24px; background: #fbf4c9; }
.bm-app__cta-text { margin: 0; font-size: .9375rem; line-height: 22px; color: #8a7a1e; }
.bm-app__cta-text strong { color: #000; font-weight: 700; }
.bm-app__cta:last-child { border-radius: 0 0 15px 15px; }   /* karta nie ma overflow:hidden, więc rogi zaokrągla sam pasek */

/* Autozapis szkicu wniosku: stan pod formularzem (assets/js/draft.js) i oznaczenie szkicu na liście wniosków. */
.bm-draft-status { margin: 12px 0 0; font-size: .875rem; line-height: 20px; color: #6b6b6b; }
.bm-draft-status[hidden] { display: none; }
.bm-draft-status.is-saving,
.bm-draft-status.is-waiting { color: #6b6b6b; }
.bm-draft-status.is-saved { color: #1b6b3a; }
.bm-draft-status.is-error { color: #d51110; }
.bm-draft-status a { color: inherit; text-decoration: underline; }
.bm-badge--draft { background: #fbf4c9; color: #8a7a1e; }

/* Pasek nagłówka wniosku (etap · tytuł + status) — jak .ts-task-head__row w projekty. */
.bm-app-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px; margin-bottom: 24px; border: 1px solid #000; border-radius: 10px; }
.bm-app-head p { margin: 0; font-weight: 700; color: #123a31; }
.bm-app-head__status { flex: none; white-space: nowrap; }

/* ============ Dolna nawigacja panelu (mobile) — jak .ts-bottomnav w projekty ============ */
.bm-bottomnav { display: none; }

/* ============ Panel: responsywnosc ============ */
@media (max-width: 1024px) {
	.bm-panel__grid { grid-template-columns: 1fr; }
	.bm-panel__side { padding: 16px 0; border-bottom: 1px solid #000; }
	.bm-panel__main { border-left: none; padding: 24px 0 64px; }
	.bm-panel__toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 8px 0; background: none; border: 0; font-family: var(--font-main); font-size: 1rem; font-weight: 700; cursor: pointer; }
	.bm-panel__side-inner { display: none; padding-top: 16px; }
	.bm-panel__side.is-open .bm-panel__side-inner { display: block; }
	.bm-panel__side.is-open .bm-panel__toggle svg { transform: rotate(180deg); }
	.bm-panel__title { font-size: 2.25rem; line-height: 40px; }
}
@media (max-width: 767px) {
	.bm-panel { padding-top: 44px; }
	.bm-panel__title { font-size: 1.5rem; line-height: 26px; }
	.bm-account .bm-panel__title { margin-bottom: 20px; }

	/* Dolny pasek zastępuje sidebar na telefonie. */
	.bm-panel__side, .bm-panel__toggle { display: none; }
	.bm-panel__grid { border-top: none; }
	.bm-panel__main { padding-bottom: 24px; }
	body.bmikro-has-bottomnav { padding-bottom: 90px; }

	.bm-bottomnav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1500; display: flex; align-items: stretch; height: 70px; padding: 6px 8px; background: var(--blue); box-shadow: 0 -2px 12px rgba(0, 0, 0, .08); }
	.bm-bottomnav__item { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; border: none; background: none; cursor: pointer; font-family: var(--font-main); font-size: .75rem; line-height: 17px; color: #000; text-align: center; text-decoration: none; }
	.bm-bottomnav__icon { display: flex; align-items: center; justify-content: center; width: 35px; height: 35px; border-radius: 10px; }
	.bm-bottomnav__icon svg, .bm-bottomnav__icon img { width: 24px; height: 24px; }
	.bm-bottomnav__item.is-active { font-weight: 700; }
	.bm-bottomnav__item.is-active .bm-bottomnav__icon { background: #fff; }

	.bm-moresheet { position: fixed; inset: 0; z-index: 1600; display: flex; flex-direction: column; justify-content: flex-end; }
	.bm-moresheet[hidden] { display: none; }
	.bm-moresheet__backdrop { position: absolute; inset: 0; background: rgba(18, 58, 49, .5); }
	.bm-moresheet__panel { position: relative; background: var(--blue); border-radius: 20px 20px 0 0; padding: 10px 20px 24px; display: flex; flex-direction: column; }
	.bm-moresheet__handle { width: 44px; height: 5px; margin: 8px auto 20px; padding: 0; border: none; border-radius: 3px; background: #123a31; cursor: pointer; }
	.bm-moresheet__id { display: flex; align-items: center; gap: 12px; padding: 4px 4px 16px; }
	.bm-moresheet__avatar { flex: none; width: 40px; height: 40px; border-radius: 50%; object-fit: cover; background: #e2eae6; }
	.bm-moresheet__name { font-family: var(--font-main); font-weight: 700; color: #000; }
	.bm-moresheet__item { display: flex; align-items: center; gap: 12px; padding: 12px 4px; font-family: var(--font-main); font-size: 1.125rem; line-height: 25px; color: #123a31; text-decoration: none; border-top: 1px solid #000; }
	.bm-moresheet__icon { flex: none; display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 10px; }
	.bm-moresheet__icon svg, .bm-moresheet__icon img { width: 24px; height: 24px; }
	.bm-moresheet__logout { align-self: flex-start; margin-top: 16px; height: auto; min-height: 0; padding: 10px 20px; }
}

/* Nagłówki stron-zakładek (Terminarz, Materiały, Wyniki, Dokumenty): .bm-panel__title zeruje marginesy,
   więc odstęp od treści daje klasa mb-40 z szablonu (na telefonie 20px — jak na stronie konta). */
.bm-panel__title.mb-40 { margin-bottom: 40px; }
@media (max-width: 767px) { .bm-panel__title.mb-40 { margin-bottom: 20px; } }

/* ============ Panel: treść z edytora w zakładkach (Terminarz, Wyniki, wstęp Materiałów/Dokumentów) ============
   Jak .ts-tabpanes .post-content w projekty: spokojniejsze nagłówki i interlinia 24px. */
.bm-panel-doc { overflow-wrap: break-word; }
.bm-panel-doc > :first-child { margin-top: 0; }
.bm-panel-doc h2 { font-size: 1.5rem; line-height: 31px; font-weight: 900; margin: 32px 0 12px; }
.bm-panel-doc h3 { font-size: 1.25rem; line-height: 28px; font-weight: 700; margin: 32px 0 12px; }
.bm-panel-doc p { font-size: 1rem; line-height: 24px; margin: 0 0 12px; }
.bm-panel-doc ul, .bm-panel-doc ol { line-height: 24px; }
.bm-panel-doc li { margin-bottom: 4px; }

/* ============ Panel: lista plików do pobrania (Materiały / Dokumenty) — .ts-doclist z projekty ============ */
.bm-doclist { list-style: none; margin: 0; padding: 0; border-top: 1px solid #e2e4e2; }
.bm-doclist__row { display: flex; align-items: center; gap: 24px; padding: 20px 0; border-bottom: 1px solid #e2e4e2; }
.bm-doclist__ext { flex: none; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; }
.bm-doclist__ext img { width: 24px; height: 24px; }
.bm-doclist__body { flex: 1 1 auto; min-width: 0; }
.bm-doclist__title { margin: 0 0 2px; }
.bm-doclist__desc { margin: 0; }
.bm-doclist__btn { flex: none; display: inline-flex; align-items: center; }
.bm-download-btn { height: 40px; padding: 8px 20px; gap: 12px; }
.bm-download-btn img { flex: none; width: 24px; height: 24px; }
@media (max-width: 767px) {
	/* Ikona zawsze z boku tytułu (siatka 2-kolumnowa), przycisk „Pobierz" pod spodem — jak w projekty. */
	.bm-doclist__row { display: grid; grid-template-columns: 24px minmax(0, 1fr); align-items: start; gap: 12px 16px; }
	.bm-doclist__ext { margin-top: -2px; }
	.bm-doclist__btn { grid-column: 2; justify-self: start; width: fit-content; justify-content: center; }
}

/* ============ Panel: Terminarz — oś czasu pogrupowana po edycjach (port .ts-tl z projekty) ============ */
.bm-tl__etap { margin: 0 0 16px; }
.bm-tl { list-style: none; margin: 0; padding: 0; }
.bm-tl__item { display: grid; grid-template-columns: 16px 1fr; gap: 24px; }
.bm-tl__marker { position: relative; display: flex; justify-content: center; }
.bm-tl__line { position: absolute; top: 0; bottom: -8px; width: 1px; background: #cfd3cf; }
.bm-tl__item:last-child .bm-tl__line { display: none; }
.bm-tl__dot { position: relative; z-index: 1; width: 14px; height: 14px; margin-top: 6px; border-radius: 50%; background: var(--blue); flex: none; }
.bm-tl__dot--done { background: var(--green); }
.bm-tl__dot--current { background: var(--yellow); }
.bm-tl__dot--upcoming { background: var(--blue); }
.bm-tl__dot--none { background: #b8b8b8; } /* termin bez daty (np. „zaraz po złożeniu dokumentów") — stan nieznany */
.bm-tl__body { padding-bottom: 28px; }
.bm-tl__date { margin: 0 0 4px; }
.bm-tl__title { margin: 0; }
.bm-tl__desc { margin: 6px 0 0; }
.bm-tl__badge { display: inline-flex; align-items: center; height: 24px; padding: 0 12px; border-radius: 30px; font-family: var(--font-main); font-size: .8125rem; line-height: 1; font-weight: 400; white-space: nowrap; }
.bm-tl__badge--done { background: var(--dark-green); color: var(--white); }
.bm-tl__badge--current { background: var(--yellow); color: var(--black); }
.bm-tl__badge--upcoming { background: var(--blue); color: #21272a; }

.bm-tl-banner { display: flex; align-items: center; gap: 16px; padding: 16px 20px; margin-bottom: 32px; border-radius: 10px; background: var(--yellow); color: #21272a; }
.bm-tl-banner__icon { flex: none; }
.bm-tl-banner__label { display: block; letter-spacing: .04em; text-transform: uppercase; opacity: .8; }
.bm-tl-banner__text { margin: 2px 0 0; }

/* ============ Wniosek: układ ============
   Jedna kolumna — wolontariusze (lista + dodawanie) są w formularzu, w sekcji „Dane wolontariuszy BOŚ". */
.bm-report { margin-top: 40px; }
.bm-app-grid { display: grid; grid-template-columns: minmax(0, 1fr); margin-top: 40px; }
/* 800px = maksymalna szerokość kontrolek Pods (.pods-field-option .pods-dfv-container w pods-form.css):
   pasek wniosku, pola i box wolontariuszy kończą się wtedy przy tej samej prawej krawędzi. */
.bm-app-grid__main { max-width: 800px; }

/* ============ Lista osob (wolontariusze) ============ */
.bm-people { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-direction: column; gap: 20px; }
.bm-people__row { display: flex; align-items: center; gap: 12px; }
.bm-people__avatar { flex: none; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: var(--font-alt); font-size: .8125rem; font-weight: 700; color: #2b2b2b; text-transform: uppercase; }
.bm-people__body { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 12px; }
.bm-people__info { flex: 1 1 auto; min-width: 0; }
.bm-people__name { margin: 0; font-size: .875rem; line-height: 18px; font-weight: 700; color: #000; }
.bm-people__meta { margin: 2px 0 0; font-size: .875rem; line-height: 20px; color: #767676; }
.bm-people__del { flex: none; background: none; border: 0; padding: 0; color: #767676; font-family: var(--font-alt); font-size: .875rem; line-height: 20px; cursor: pointer; }
.bm-people__del:hover { color: #000; text-decoration: underline; }

/* ============ Box wolontariuszy w formularzu wniosku (sekcja „Dane wolontariuszy BOŚ") ============
   Markup: bmikro_render_volunteers_box() — wstawiany po polu volunteers_info (pods_form_after_field). */
.bm-vol-field { margin: 0 0 24px; }
.bm-vol-add { margin-top: 24px; padding-top: 24px; border-top: 1px solid #d9d9d9; }
.bm-vol-add__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; }
.bm-vol-field .field { margin-bottom: 16px; }
.bm-vol-field .field label { display: block; margin: 0 0 8px; font-family: var(--font-main); font-weight: 400; font-size: 1rem; line-height: 22px; color: #000; }
.bm-vol-add__error { margin: 0 0 16px; padding: 12px 16px; border: 1px solid #d51110; border-radius: 10px; background: #fdecec; color: #d51110; font-size: .9375rem; line-height: 1.45; }
.bm-vol-add__error[hidden] { display: none; }
.bm-vol-add .btn:disabled { opacity: .6; cursor: default; }
@media (max-width: 767px) {
	.bm-vol-add__grid { grid-template-columns: 1fr; }
	.bm-vol-add .btn { width: 100%; }
}
/* Opis pola volunteers_info w Pods („…uzupełnisz edytując zapisany wniosek") jest tu nieaktualny — wolontariuszy
   dodaje się od razu, w boxie pod etykietą. Etykieta zostaje, luka między nią a boxem się zmniejsza. */
.bmikro-pods-form .pods-form-ui-row-name-volunteers-info { margin-bottom: 8px; }
.bmikro-pods-form .pods-form-ui-row-name-volunteers-info .pods-form-ui-comment { display: none; }

/* ============ Formularze autorskie (bm-form) ============ */
.bm-form .field { margin-bottom: 16px; }
.bm-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
@media (max-width: 767px) { .bm-form__row { grid-template-columns: 1fr; gap: 0; } }
.bm-form label { display: block; margin-bottom: 6px; font-weight: 700; font-size: .9375rem; }
.bm-form-page { max-width: 760px; margin-left: auto; margin-right: auto; }

/* ============ Strona rejestracji / auth (styl jak projekty, bez kreatora) ============ */
.bm-auth { position: relative; padding-top: 60px; padding-bottom: 100px; background: #fff; }
.bm-auth__inner { max-width: 640px; margin: 0 auto; }
.bm-auth__close { position: absolute; top: 40px; right: var(--gutter); display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; color: #000; }
.bm-auth__close:hover { opacity: .6; }
.bm-auth__head { margin-bottom: 40px; }
.bm-auth__intro { margin-bottom: 24px; color: #285360; }
@media (max-width: 767px) { .bm-auth { padding-top: 32px; } }

/* ============ Strona „Rejestracja zakończona" (podziękowanie) — jak w projekty ============ */
.bm-thankyou { display: flex; align-items: center; justify-content: center; min-height: 70vh; padding: 40px var(--gutter); background: #fff; }
.bm-thankyou__inner { max-width: 720px; }
.bm-thankyou__inner p { color: #123a31; max-width: 650px; margin-left: auto; margin-right: auto; }
.bm-thankyou__text { color: #123a31; }

/* ============ Mały footer (auth + panel) — jak .ts-footer-small w projekty ============ */
.bm-footer-small { padding: 40px var(--gutter); }
.bm-footer-small a { color: #fff; }
.bm-footer-small a:hover { color: #fff; text-decoration: underline; }
.bm-footer-small .footer__credits-row p { margin: 0; }
.bm-footer-small .footer__credits-links { margin: 0; padding: 0; list-style: none; }
@media (max-width: 767px) {
	.bm-footer-small .footer__credits-row { border-top: 1px solid #fff; padding-top: 24px; }
}

/* ============ Strony auth (logowanie / reset / ustaw hasło) — jak .ts-login w projekty ============ */
body.bm-auth-modal { display: flex; flex-direction: column; min-height: 100vh; }
body.bm-auth-modal .site-content { display: flex; flex-direction: column; flex: 1 0 auto; }
.bm-login { position: relative; z-index: 1200; flex: 1 0 auto; display: flex; align-items: center; justify-content: center; padding: 64px var(--gutter); }
.bm-login::before { content: ''; position: fixed; inset: 0; z-index: -1; background: rgba(0, 0, 0, .6); }
.bm-login__card { position: relative; width: 480px; max-width: 100%; padding: 48px 40px; background: #fff; border-radius: 30px; box-shadow: 0 24px 64px rgba(0, 0, 0, .12); display: flex; flex-direction: column; gap: 24px; }
.bm-login__close { position: absolute; top: 20px; right: 20px; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; color: #000; }
.bm-login__close:hover { opacity: .6; }
.bm-login .field label { display: block; margin-bottom: 8px; font-family: var(--font-main); font-size: 1rem; line-height: 22px; color: #000; }
.bm-login__forgot { align-self: flex-end; color: #767676; }
.bm-login__forgot:hover { color: #000; }
.bm-login__submit { align-self: center; margin-top: 8px; }
.bm-login__divider span { font-size: .875rem; line-height: 20px; color: #000; }
.bm-login__divider::before, .bm-login__divider::after { content: ''; flex: 1; height: 1px; background: #000; }

.bm-password { position: relative; }
.bm-password input { padding-right: 44px; }
.bm-password__toggle { position: absolute; top: 50%; right: 12px; transform: translateY(-50%); display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; color: #000; }

.bm-login__notice { display: flex; align-items: center; gap: 10px; padding: 19px; border-radius: 10px; background: var(--blue); color: #000; font-size: 14px; line-height: 20px; }
.bm-login__notice svg { flex: none; width: 26px; height: 26px; color: var(--teal); }
.bm-login__notice--ok { background: rgba(149, 193, 31, .18); }
.bm-login__notice--error { background: #fdecec; color: #d51110; }
.bm-login__notice--error svg { color: #d51110; }

.bm-login__sent { display: flex; flex-direction: column; gap: 32px; }
.bm-sent__lead { display: flex; flex-direction: column; gap: 5px; }
.bm-sent__lead p { margin: 0; }
.bm-sent__back { align-self: center; color: #000; }
.bm-login__hint { padding: 16px; border-radius: 10px; background: rgba(184, 221, 226, .45); font-size: .875rem; line-height: 20px; text-align: center; }

.bm-field-error { margin: 6px 0 0; font-size: .875rem; line-height: 20px; color: #d51110; }
.bm-pass-rules { list-style: none; margin: 8px 0 0; padding: 0; }
.bm-pass-rules li { position: relative; padding-left: 24px; color: #767676; }
.bm-pass-rules li + li { margin-top: 4px; }
.bm-pass-rules li::before { content: ''; position: absolute; left: 0; top: 3px; width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid #000; }
.bm-pass-rules li.is-ok { color: var(--dark-green); }
.bm-pass-rules li.is-ok::before { border-color: var(--dark-green); background: var(--dark-green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M5 12l4 4 10-10' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 10px no-repeat; }

@media (max-width: 767px) {
	.bm-login { align-items: flex-start; justify-content: flex-start; padding: 0; background: #fff; z-index: auto; }
	.bm-login::before { display: none; }
	.bm-login__card { width: 100%; max-width: none; padding: 64px 20px 48px; border-radius: 0; box-shadow: none; }
	.bm-login__close { top: 24px; right: 20px; }
}

/* ============ Modale (bez Bootstrapa) ============ */
.bm-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.bm-modal[hidden] { display: none; }
.bm-modal__backdrop { position: absolute; inset: 0; background: var(--overlay); }
.bm-modal__box { position: relative; z-index: 1; width: min(720px, 100%); max-height: 86vh; overflow: auto; background: #fff; border-radius: 20px; padding: 32px; box-shadow: 0 30px 60px rgba(0, 0, 0, .25); }
.bm-modal__close { position: absolute; top: 16px; right: 16px; display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border: 0; border-radius: 50%; background: #f1f5f3; color: #123a31; cursor: pointer; }
.bm-modal__close:hover { background: #e2eae6; }
.bm-modal__body { font-size: 1rem; line-height: 1.55; }
.bm-modal__body .bm-hr:last-child { display: none; }
body.bm-modal-open { overflow: hidden; }

/* Anty-FOUC: Pods DFV renderuje inputy po stronie JS (klasa .pods-dfv-field--loaded),
   a labele są w HTML od razu. Ukrywamy formularz do czasu gotowości (JS doda .bm-ready;
   fallback czasowy w assets/js/main.js). Bez JS (.no-js/brak .js) formularz jest widoczny. */
.js .bmikro-pods-form form { opacity: 0; transition: opacity .25s ease; }
.js .bmikro-pods-form form.bm-ready { opacity: 1; }

/* ============ MOST CSS: formularze Pods (.bmikro-pods-form) ============
   Dopasowane do REALNEGO markupu Pods DFV na tej witrynie:
   wiersz = .pods-field__container, etykieta = .pods-form-ui-label,
   zgoda = .pods-checkbox-pick__option__label (input w środku), opis = p.description.
   Wartości wizualne jak w bos2026-projekty. */

/* Wiersz pola (odstęp między polami). */
.bmikro-pods-form .pods-field__container { margin: 0 0 24px; }
.bmikro-pods-form .pods-field__container:last-child { margin-bottom: 0; }

/* Etykieta pola (tytuł) — waga 400, czarna; gwiazdka wymagania na czerwono. */
.bmikro-pods-form .pods-form-ui-label { display: block; margin: 0 0 8px; padding: 0; font-family: var(--font-main); font-weight: 400; font-size: 1rem; line-height: 22px; color: #000; }
.bmikro-pods-form .pods-form-ui-label .required { color: #d51110; text-decoration: none; border: 0; }

/* Pola tekstowe / select / textarea. */
.bmikro-pods-form input[type="text"],
.bmikro-pods-form input[type="email"],
.bmikro-pods-form input[type="tel"],
.bmikro-pods-form input[type="number"],
.bmikro-pods-form input[type="password"],
.bmikro-pods-form input[type="url"],
.bmikro-pods-form input[type="date"],
.bmikro-pods-form select,
.bmikro-pods-form textarea {
	width: 100%; min-height: 48px; padding: 12px; border: 1px solid #000; border-radius: 10px;
	font-family: var(--font-main); font-size: 1rem; line-height: 22px; color: #000; background: #fff;
}
.bmikro-pods-form select { appearance: none; -webkit-appearance: none; background-image: url('../../../bos2026/assets/svg/icon-chevron-down.svg'); background-repeat: no-repeat; background-position: right 12px center; padding-right: 40px; }
.bmikro-pods-form textarea { min-height: 120px; resize: vertical; }
.bmikro-pods-form ::placeholder { color: rgba(0, 0, 0, .6); opacity: 1; }

/* Opis / podpowiedź pod polem (p.description / .pods-form-ui-comment). */
.bmikro-pods-form .description,
.bmikro-pods-form .pods-form-ui-comment { margin: 6px 0 0; font-size: .875rem; line-height: 20px; color: #444; }
.bmikro-pods-form .description a,
.bmikro-pods-form .pods-form-ui-comment a { color: var(--dark-green); text-decoration: underline; }

/* Ogólny zielony akcent dla checkboxów/radio (np. multi-pick w innych formularzach). */
.bmikro-pods-form input[type="checkbox"],
.bmikro-pods-form input[type="radio"] { accent-color: var(--green); }
.bmikro-pods-form .pods-checkbox-pick { list-style: none; margin: 0; padding: 0; }
.bmikro-pods-form .pods-checkbox-pick__option,
.bmikro-pods-form .pods-checkbox-pick .pods-boolean { margin: 0; padding: 0; }

/* ===== Zgody (boolean) — styl 1:1 z projekty (.ts-check) ===== */
/* Wiersz: [custom checkbox] [treść zgody]; główna etykieta i „Tak" ukryte. */
.bmikro-pods-form .pods-form-ui-row-type-boolean { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.bmikro-pods-form .pods-form-ui-row-type-boolean > label.pods-form-ui-label { display: none; }
.bmikro-pods-form .pods-form-ui-row-type-boolean > .pods-form-ui-field { flex: 0 0 auto; min-width: 0; margin: 0; }
.bmikro-pods-form .pods-form-ui-row-type-boolean > .description { flex: 1 1 0; min-width: 0; margin: 0; font-size: .875rem; line-height: 20px; color: #000; }
.bmikro-pods-form .pods-form-ui-row-type-boolean > .description a { color: inherit; text-decoration: underline; }
.bmikro-pods-form .pods-form-ui-row-type-boolean > .description.pods-validate-required::after { content: " *"; color: #d51110; }
/* „Tak" chowamy (font-size:0), etykieta nie łamie układu. */
.bmikro-pods-form .pods-form-ui-row-type-boolean .pods-checkbox-pick__option__label { display: block; gap: 0; font-size: 0; margin: 0; }
/* Custom checkbox: natywny input stylowany jak .ts-check__box z projekty. */
.bmikro-pods-form .pods-form-ui-row-type-boolean input[type="checkbox"] {
	appearance: none; -webkit-appearance: none; flex: none; width: 18px; height: 18px; margin: 1px 0 0; padding: 0;
	border: 1px solid #000; border-radius: 5px; background: #fff; cursor: pointer; transition: background .2s ease, border-color .2s ease;
}
.bmikro-pods-form .pods-form-ui-row-type-boolean input[type="checkbox"]:checked {
	border-color: var(--green); background-color: var(--green);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M1.3 5.2 3.9 7.7 8.7 1.8' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: center;
}
.bmikro-pods-form .pods-form-ui-row-type-boolean input[type="checkbox"]:focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; }

/* ===== Walidacja — czerwona ramka + czerwony komunikat (1:1 z realnym markupem Pods DFV) ===== */
/* Pole z błędem: input/select/textarea dostaje klasę .pods-validate-error. */
.bmikro-pods-form input.pods-validate-error,
.bmikro-pods-form select.pods-validate-error,
.bmikro-pods-form textarea.pods-validate-error { border-color: #d51110; }
.bmikro-pods-form input.pods-validate-error:focus,
.bmikro-pods-form select.pods-validate-error:focus,
.bmikro-pods-form textarea.pods-validate-error:focus { outline-color: #d51110; }

/* Komunikat błędu pod polem — Pods renderuje komponent WP (.components-notice.is-error).
   Neutralizujemy jego „adminowy" wygląd i zostawiamy czysty czerwony tekst. */
.bmikro-pods-form .pods-validation-messages { margin-top: 6px; }
.bmikro-pods-form .pods-validation-messages .components-notice,
.bmikro-pods-form .components-notice.is-error {
	margin: 0; padding: 0; min-height: 0; background: transparent; border: 0; box-shadow: none; color: #d51110;
}
.bmikro-pods-form .components-notice__content { margin: 0; font-family: var(--font-main); font-size: .875rem; line-height: 20px; color: #d51110; }
.bmikro-pods-form .components-notice__dismiss,
.bmikro-pods-form .components-notice__actions { display: none; }

/* Pods pokazuje komunikat dopiero po „dotknięciu" pola — na samym submit są tylko
   czerwone ramki. Fallback wstrzykiwany przez JS (assets/js/main.js) z nazwą pola,
   tym samym brzmieniem co Pods; znika, gdy Pods wstawi swój komunikat. */
.bmikro-pods-form .bm-fallback-msg,
.bmikro-pods-form .bm-server-msg,
.bmikro-pods-form .bm-file-msg { margin-top: 6px; font-family: var(--font-main); font-size: .875rem; line-height: 20px; color: #d51110; }
/* Błąd serwera na polu z opisem — podświetl istniejący opis na czerwono (bez duplikatu). */
.bmikro-pods-form .description.bm-desc-error,
.bmikro-pods-form .pods-form-ui-comment.bm-desc-error { color: #d51110; }
/* Zbiorczy komunikat błędu serwera (przechwycony z alert() Pods) nad formularzem. */
.bmikro-pods-form .bm-form-alert { margin: 0 0 20px; padding: 12px 16px; border: 1px solid #d51110; border-radius: 10px; background: #fdecec; color: #d51110; font-family: var(--font-main); font-size: .9375rem; line-height: 1.45; }
.bmikro-pods-form .bm-form-alert[hidden] { display: none; }
/* Fallback / komunikat serwera przy zgodzie — pełna szerokość pod wierszem [checkbox][treść]. */
.bmikro-pods-form .pods-form-ui-row-type-boolean > .bm-fallback-msg,
.bmikro-pods-form .pods-form-ui-row-type-boolean > .bm-server-msg { flex-basis: 100%; margin-top: 2px; }
/* Gdy pojawi się komunikat Pods, ukryj fallback NATYCHMIAST (bez czekania na sprzątanie JS)
   — eliminuje chwilowe „dwa błędy naraz" przy wychodzeniu z pola. */
.bmikro-pods-form .pods-dfv-container:has(.pods-validation-messages) .bm-fallback-msg,
.bmikro-pods-form .pods-dfv-container:has(.pods-validation-messages) .bm-file-msg { display: none; }
.bmikro-pods-form .pods-form-ui-row-type-boolean:has(.pods-validation-messages) > .bm-fallback-msg { display: none; }

/* Zgoda (checkbox) w błędzie: pozwól komunikatowi zająć szerokość pod checkboxem. */
.bmikro-pods-form .pods-form-ui-row-type-boolean > .pods-form-ui-field { min-width: 0; }
.bmikro-pods-form .pods-form-ui-row-type-boolean .pods-validation-messages { margin-top: 4px; }

/* Submit „Zarejestruj się / Zapisz". */
.bmikro-pods-form .pods-submit { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin: 8px 0 0; }
.bmikro-pods-form .pods-submit .waiting { display: none; }
.bmikro-pods-form input.pods-submit-button,
.bmikro-pods-form input[type="submit"],
.bmikro-pods-form button[type="submit"] {
	display: inline-flex; align-items: center; justify-content: center; height: 56px; padding: 0 30px;
	border: none; border-radius: 30px; background: var(--green); color: #000; cursor: pointer;
	font-family: var(--font-main); font-size: 1.125rem; line-height: 25px; transition: filter .2s ease;
}
.bmikro-pods-form input.pods-submit-button:hover,
.bmikro-pods-form input[type="submit"]:hover,
.bmikro-pods-form button[type="submit"]:hover { filter: brightness(.9); }

/* Nagłówki sekcji (heading). */
.bmikro-pods-form .pods-form-ui-heading { font-family: var(--font-main); font-weight: 900; font-size: 1.25rem; margin: 8px 0 12px; color: #000; }

/* ---- Upload załączników (Pods plupload) — wygląd jak w bos2026-projekty (.ts-upload) ----
   Pods renderuje pliki jako ul.pods-dfv-list > li.pods-dfv-list-item (uchwyt, miniatura, nazwa jako input,
   ikony akcji). Przerabiamy to na „chipsy" z projekty: ikona pliku, nazwa z wielokropkiem, okrągły przycisk ×;
   przycisk „Dodaj pliki" jest strefą wgrywania (obrys, ikona nad podpisem). Ukryte: uchwyt zmiany kolejności,
   miniatura oraz linki Pobierz/Edytuj (link do skanu i tak odpowiada 404 uczestnikowi — patrz MIGRATION.md).
   Nazwa pliku zostaje edytowalnym inputem (Pods: „Editable Title"), ale wygląda jak zwykły tekst. */
.bmikro-pods-form .pods-ui-file-list { margin: 0; }
.bmikro-pods-form ul.pods-dfv-list { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 12px; margin: 0 0 12px; padding: 0; border: 0; border-radius: 0; background: none; list-style: none; }
.bmikro-pods-form ul.pods-dfv-list:empty { display: none; }
.bmikro-pods-form ul.pods-dfv-list > li.pods-dfv-list-item { position: relative; display: block; box-sizing: border-box; max-width: min(260px, 100%); margin: 0; padding: 8px 34px 8px 8px; border: 1px solid #c1c7cd; border-radius: 10px; background: #fff; }
.bmikro-pods-form ul.pods-dfv-list > li.pods-dfv-list-item:hover { background: #fff; }
.bmikro-pods-form ul.pods-dfv-list > li.pods-dfv-list-item::after,
.bmikro-pods-form ul.pods-dfv-list ul.pods-dfv-list-meta::after { content: none; }
.bmikro-pods-form ul.pods-dfv-list ul.pods-dfv-list-meta { position: static; display: flex; align-items: center; gap: 8px; margin: 0; padding: 0; overflow: visible; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-col { float: none; margin: 0; padding: 0; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-handle,
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-download,
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-edit,
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-link { display: none; }

/* Ikona pliku (zamiast miniatury). */
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-icon {
	flex: none; width: 20px; height: 20px; font-size: 0; line-height: 0;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6 2h8l4 4v16H6z' stroke='%234d5358' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M14 2v4h4' stroke='%234d5358' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-icon img { display: none; }

/* Nazwa pliku. */
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-name { position: static; flex: 0 1 auto; min-width: 0; overflow: hidden; font-family: var(--font-main); font-size: .8125rem; line-height: 18px; color: #21272a; text-overflow: ellipsis; white-space: nowrap; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-name input[type="text"] { width: auto !important; max-width: 100%; field-sizing: content; height: auto; min-height: 0; margin: 0; padding: 0; border: 0; border-radius: 4px; background: transparent; box-shadow: none; font: inherit; line-height: 18px; color: inherit; text-overflow: ellipsis; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-name input[type="text"]:focus { background: #f7f8f7; outline: 2px solid var(--green); outline-offset: 2px; }

/* Usuń (×) — okrągły przycisk po prawej, czerwony po najechaniu. */
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-actions { position: absolute; top: 50%; right: 6px; width: auto; height: auto; transform: translateY(-50%); }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-actions ul { display: flex; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-remove { width: 24px; height: 24px; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-remove a {
	display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: #f2f2f7;
	font-size: 0; text-indent: 0; text-decoration: none; color: #21272a; opacity: 1; overflow: visible; transition: background .15s ease, color .15s ease;
}
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-remove a::before {
	content: ""; display: block; width: 12px; height: 12px; margin: 0; font: 0/0 sans-serif;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2 2l8 8M10 2l-8 8' stroke='%2321272a' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-remove a:hover { background: #d63638; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-remove a:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
.bmikro-pods-form ul.pods-dfv-list li.pods-dfv-list-remove a:hover::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2 2l8 8M10 2l-8 8' stroke='%23fff' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E"); }

/* Plik w trakcie wgrywania (pasek postępu / błąd). */
.bmikro-pods-form ul.pods-dfv-list-queue { margin: 0 0 12px; }
.bmikro-pods-form ul.pods-dfv-list-queue > li.pods-dfv-list-item { padding-right: 12px; }
.bmikro-pods-form ul.pods-dfv-list-queue li.pods-dfv-list-name { width: auto; }
.bmikro-pods-form ul.pods-dfv-list-queue li.pods-dfv-list-item li.pods-progress { flex: none; width: 56px; height: 8px; margin: 0; border-radius: 4px; background: #e8e8e8; overflow: hidden; }
.bmikro-pods-form ul.pods-dfv-list-queue li.pods-dfv-list-item li.pods-progress div.progress-bar { height: 100%; border-radius: 4px; background: var(--green); }
.bmikro-pods-form ul.pods-dfv-list-queue .error { margin-top: 6px; font-size: .8125rem; line-height: 18px; color: #d63638; }

/* „Dodaj pliki" jako strefa wgrywania (jak .ts-rform__drop w projekty): obrys, ikona nad podpisem. */
.bmikro-pods-form .pods-ui-form { position: relative; }
.bmikro-pods-form a.pods-dfv-list-add,
.bmikro-pods-form .pods-dfv-list-add.button,
.bmikro-pods-form .button.pods-dfv-list-add {
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; box-sizing: border-box; width: 100%; height: auto; margin: 0; padding: 40px 20px;
	border: 1px solid #000; border-radius: 10px; background: #fff; box-shadow: none;
	font-family: var(--font-main); font-size: 1rem; line-height: 22px; text-align: center; color: #21272a; text-decoration: none; cursor: pointer; transition: background .15s ease;
}
.bmikro-pods-form a.pods-dfv-list-add:hover { background: #f7f8f7; border-color: #000; color: #21272a; }
.bmikro-pods-form a.pods-dfv-list-add:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
/* Wymagane pole bez pliku po nieudanym „Zapisz" (klasa i komunikat z assets/js/main.js, fileRequired): czerwony obrys strefy. */
.bmikro-pods-form .pods-form-ui-row-type-file.bm-invalid a.pods-dfv-list-add { border-color: #d51110; }
.bmikro-pods-form .pods-form-ui-row-type-file.bm-invalid a.pods-dfv-list-add:focus-visible { outline-color: #d51110; }
/* Pole na jeden plik: po wybraniu pliku Pods chowa przycisk (zachowujemy to mimo własnego display). */
.bmikro-pods-form .pods-marionette-adapter-wrapper-single-file:has(.pinkynail) a.pods-dfv-list-add { display: none; }
.bmikro-pods-form a.pods-dfv-list-add::before {
	content: ''; flex: none; width: 28px; height: 28px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M12 15V4m0 0L8 8m4-4l4 4M5 20h14' stroke='%2321272a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ============================================================
   STRONA GŁÓWNA — sekcje. Layout i wygląd przeniesione 1:1 z motywu
   bos2026-projekty (klasy ts-* → bm-*). Utilities i bazowe komponenty
   (.stat, .testimonial*, .btn, .link-arrow) pochodzą z bos2026.
   ============================================================ */

/* Tokeny używane przez przeniesione komponenty (brak w bazie bos2026). */
:root { --black: #000; --placeholder: #d9d9d9; }

/* ---- Hero ---- */
.bm-hero { padding-top: 86px; padding-bottom: 80px; background: var(--white); }
.bm-hero__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
.bm-hero__img { display: block; width: 100%; aspect-ratio: 1 / 1; border-radius: 30px; object-fit: cover; }

/* ---- Pasek statusu (ticker) ---- */
.bm-banner { min-height: 50px; display: flex; align-items: center; padding: 0; background: var(--yellow); overflow: hidden; }
.bm-banner__track { display: flex; align-items: center; width: max-content; white-space: nowrap; animation: bm-banner-scroll 40s linear infinite; }
.bm-banner__group { display: flex; align-items: center; }
.bm-banner__unit { display: flex; align-items: center; gap: 20px; padding-right: 64px; }
.bm-banner__unit p { margin: 0; }
.bm-banner__link { text-decoration: underline; }
.bm-banner__link:hover { text-decoration: none; }
.bm-banner:hover .bm-banner__track { animation-play-state: paused; }

/* ---- Dlaczego warto ---- */
.bm-benefits__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px; }
.bm-benefits__icon { width: 30px; height: 30px; }

/* ---- Jak to działa (oś czasu) ---- */
.bm-howto__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; }
.bm-timeline { padding-top: 45px; }
.bm-timeline__item { display: flex; gap: 45px; align-items: stretch; }
.bm-timeline__marker-label { font-size: 1.125rem; line-height: 25px; white-space: nowrap; }
.bm-timeline__line { width: 1px; flex: 1; min-height: 40px; background: var(--black); }
.bm-timeline__body { padding-bottom: 40px; }
.bm-timeline__img { display: block; width: 100%; height: auto; margin-top: 24px; border-radius: 20px; object-fit: cover; }

/* ---- Statystyki (używa bazowego .stat + .js-counter z bos2026) ---- */
.bm-stats__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px; }

/* ---- Opinie: placeholder zdjęcia (slider z bazy bos2026) ---- */
.bm-placeholder { background: var(--placeholder); }
.testimonial__photo.bm-placeholder { display: block; }

/* ---- CTA (dół strony) ---- */
.bm-cta .container { width: 100%; }

@keyframes bm-banner-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }

@media (max-width: 1024px) {
	.bm-hero__grid, .bm-howto__grid { grid-template-columns: 1fr; gap: 48px; }
	.bm-benefits__grid { grid-template-columns: 1fr; }
	.bm-stats__grid { grid-template-columns: 1fr; }
}

@media (max-width: 767px) {
	.bm-hero { padding-top: 64px; padding-bottom: 64px; }
	.bm-hero__img { max-height: 350px; }
	.bm-benefits__col { align-items: center; text-align: center; }
	.bm-timeline { padding-top: 0; }
	.bm-howto__col { text-align: center; }
	.bm-timeline__line { display: none; }
	.bm-timeline__item { gap: 24px; }
	/* Nagłówek + podtytuł statystyk — na mobile WYŚRODKOWANY (inaczej niż projekty,
	   które wyrównuje do lewej) — zostają klasy items-center/text-center/mx-auto z markupu. */
	.stat { border-left: none; }
	.bm-cta { min-height: 0; padding-top: 172px; padding-bottom: 172px; }
	.bm-cta__inner { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
	.bm-banner__track { animation: none; }
}

/* Wysokości sekcji na desktopie (airy layout jak w bos2026-projekty). */
@media (min-width: 768px) {
	.bm-benefits, .bm-howto, .bm-stats, .bm-opinie { display: flex; flex-direction: column; justify-content: center; }
	.bm-benefits { min-height: 800px; }
	.bm-howto { min-height: 900px; }
	.bm-stats { min-height: 800px; }
	.bm-opinie { min-height: 800px; }
}
.bm-news { padding-top: 80px; padding-bottom: 80px; }

/* ============================================================
   PODSTRONA „O PROJEKCIE" — sekcje przeniesione z bos2026-projekty
   (klasy ts-* → bm-*). Utilities z bos2026.
   ============================================================ */

/* ---- Hero ---- */
.bm-ohero { padding-top: 86px; padding-bottom: 80px; }
.bm-ohero__media { width: 100%; }
.bm-ohero__img { display: block; width: 100%; max-width: 592px; aspect-ratio: 592 / 338; margin: 0 auto; border-radius: 30px; object-fit: cover; }

/* ---- Etap I / II ---- */
.bm-etap__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; }
.bm-etap__media { margin-top: 37px; }
.bm-etap__img { display: block; width: 100%; aspect-ratio: 600 / 640; border-radius: 30px; object-fit: cover; }
.bm-etap__tasks { display: flex; flex-wrap: wrap; gap: 30px; padding: 8px 0; }
.bm-etap__task { flex: 0 1 calc(50% - 15px); min-width: 0; }
.bm-etap--reverse .bm-etap__media { order: -1; }

/* ---- Terminarz (oś czasu naprzemienna) ---- */
.bm-terminarz__row { display: grid; grid-template-columns: 1fr 32px 1fr; gap: 48px; }
.bm-terminarz__row > * { grid-row: 1; }
.bm-terminarz__center { grid-column: 2; display: flex; flex-direction: column; align-items: center; }
.bm-terminarz__center-top { width: 1px; height: 24px; background: var(--black); }
.bm-terminarz__center-line { width: 1px; flex: 1; min-height: 24px; background: var(--black); }
.bm-terminarz__dot { width: 15px; height: 15px; border-radius: 50%; background: var(--green); flex: none; }
.bm-terminarz__side { display: flex; flex-direction: column; gap: 32px; padding-top: 16px; padding-bottom: 0; }
.bm-terminarz__side--left { grid-column: 1; text-align: right; }
.bm-terminarz__side--right { grid-column: 3; text-align: left; }
.bm-terminarz__date { font-size: 2.25rem; line-height: 40px; font-weight: 900; }
.bm-terminarz__desc { font-size: 1.125rem; line-height: 25px; }

/* ---- Patronat ---- */
.bm-patronat .container { gap: 8px; }
.bm-patronat__logo img { display: block; width: auto; }

/* ---- FAQ (akordeon) ---- */
.bm-faq__grid { display: grid; grid-template-columns: 500px 1fr; gap: 120px; align-items: start; }
.bm-faq__item { border-top: 1px solid #000; }
.bm-faq__item:last-child { border-bottom: 1px solid #000; }
.bm-faq__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; padding: 20px 0; text-align: left; }
.bm-faq__head:focus, .bm-faq__head:focus-visible { outline: none !important; box-shadow: none !important; }
.bm-faq__q { font-size: 1.5rem; line-height: 26px; font-weight: 900; }
.bm-faq__icon { flex: none; width: 40px; height: 40px; }
.bm-faq__icon-plus { display: block; }
.bm-faq__icon-minus { display: none; }
.bm-faq__item.is-open .bm-faq__icon-plus { display: none; }
.bm-faq__item.is-open .bm-faq__icon-minus { display: block; }
.bm-faq__body { overflow: hidden; max-height: 0; transition: max-height .3s ease; }
.bm-faq__item.is-open .bm-faq__body { max-height: 400px; }
.bm-faq__a { padding-bottom: 20px; font-size: 1rem; line-height: 22px; }
.bm-faq__a > :last-child { margin-bottom: 0; }

@media (min-width: 768px) {
	.bm-ohero, .bm-patronat { display: flex; flex-direction: column; justify-content: center; }
	.bm-ohero { min-height: 800px; }
	.bm-patronat { min-height: 800px; }
}
@media (max-width: 1240px) {
	.bm-faq__grid { grid-template-columns: 1fr; gap: 48px; }
}
@media (max-width: 1024px) {
	.bm-etap__grid { grid-template-columns: 1fr; gap: 48px; }
	.bm-etap__media { margin-top: 0; }
	.bm-etap--reverse .bm-etap__media { order: 1; }
}
@media (max-width: 767px) {
	.bm-etap__task { flex-basis: 100%; }
	.bm-etap__img { max-height: 350px; }
	.bm-etap__period { margin-bottom: 0; }
	.bm-terminarz__row { grid-template-columns: 32px 1fr; gap: 20px; }
	.bm-terminarz__center { grid-column: 1; }
	.bm-terminarz__side--left, .bm-terminarz__side--right { grid-column: 2; text-align: left; align-items: flex-start; }
	.bm-terminarz__side { gap: 24px; }
	.bm-terminarz__date { font-size: 1.5rem; line-height: 30px; }
	.bm-faq__q { font-size: 1.5rem; line-height: 28px; }
}
