/* nis2.boit.pl — wspólne style (ładowane na całym serwisie przez mu-plugin boit-nis2-lead-guard.php).
   1) Formularz CF7 „kt-form” (formularz nr 28: /kontakt/ i strona główna).
   2) Nagłówki (hero) — patrz sekcja „pełny rozlew” niżej (2026-09-23, zastępuje starszy wpis o zaokrąglonych rogach). */

/* Odstęp nagłówka od głównego menu (2026-09-21..22): NIEAKTUALNE od wprowadzenia przezroczystego nagłówka
   na hero (2026-09-23) — header już nie stoi nad hero jako osobny biały pasek, tylko na nim "pływa",
   więc hero ma zaczynać się od samej góry strony (odstęp od nagłówka daje teraz padding-top niżej). */
body .bx-hero { margin-top: 0; }

/* NAPRAWA (2026-09-23, zgłoszenie usera ze zrzutami ekranu): hero musi sięgać PRAWDZIWIE do obu krawędzi
   przeglądarki i mieć proste (nie zaokrąglone) górne rogi — inaczej przezroczysty header "pływa" nad
   wyspą wyśrodkowaną w max-width:1180px kontenera, a na szerokich ekranach widać białe tło po bokach.
   .bx-bleed (strona główna) miał już width:100vw w page 18, ale WSZYSTKIE trzy warianty (w tym .bx-hero,
   .kt-hero) dostają to tutaj, jednym, spójnym miejscem — i zerowany promień, żeby nie "gryzło się"
   z headerem (który teraz z nim wizualnie zlewa się w jedną całość, jak na boit.pl). */
.bx-hero, .bx-bleed, .kt-hero {
  border-radius: 0 !important;
  width: 100vw !important;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
  box-sizing: border-box;
}

/* Motyw Extendable owija nasz header.twig-odpowiednik (partial Header) we WŁASNY <header class="wp-block-template-part">,
   który potrafi kolidować z position:fixed (system "ext-header-*" motywu). display:contents usuwa ten wrapper
   z układu strony — to udokumentowane w CSS motywu rozwiązanie dokładnie tego problemu. */
header.wp-block-template-part:has(.boit-hdr) { display: contents; }
/* NAPRAWA (2026-09-24, zgłoszenie usera "nagłówek w kontakcie uszkodzony"): powyższe display:contents czyści
   TYLKO <header>, ale jego RODZIC (.wp-block-group.ext-header-wrapper, sticky, z-index:999999, tło białe,
   border-bottom 1px) zostaje jako osobny, prawdziwy element w układzie — bez zawartości ma tylko wysokość
   1px (od border-bottom), ale sticky+z-index 999999 stawia go NAD naszym headerem (z-index 99999), więc
   biała kreska/pasek z obramowaniem był zawsze widoczny na samej górze KAŻDEJ strony (nie tylko /kontakt/,
   zweryfikowane na / i /faq/ też — mniej zauważalne tam, ale ten sam błąd). Ten sam wzorzec display:contents,
   jedno piętro wyżej — :has() widzi .boit-hdr niezależnie od display:contents na pośrednim elemencie. */
.ext-header-wrapper:has(.boit-hdr) { display: contents; }
/* NAPRAWA (2026-09-24, ten sam zrzut usera): prawdziwe źródło białego paska na /kontakt/ — .kt-page (wrapper
   herosa tej strony) dostaje automatyczny odstęp od reguły motywu "is-layout-flow > * + *" (WordPress block
   spacing, --wp--style--block-gap: 2em = 32px), bo w treści strony poprzedza go tag <style> (liczy się jako
   "poprzedni element rodzeństwa" mimo display:none). Inne strony (.bx-hero/.bx-bleed) mają już margin-top:0
   z wcześniejszej sesji — .kt-page nigdy nie dostało tej samej poprawki, bo to inny selektor/inna strona. */
.kt-page { margin-top: 0 !important; }

/* Krój pisma dopasowany do boit.pl (ten sam kit Typekit/Adobe Fonts co na głównej stronie firmowej) — 2026-09-23.
   Z !important: motyw Extendable ma WŁASNE, bardziej szczegółowe reguły font-family na konkretnych
   elementach (przyciski, linki nawigacji, akapity — "Open Sans"), które wygrywały z prostym selektorem
   bez !important (zgłoszenie usera: krój niespójny w różnych miejscach strony). */
body, input, textarea, button, select, a, li, span, div,
h1, h2, h3, h4, h5, h6, p,
.entry-content, .wp-block-post-title,
.boit-hdr, .boit-nav a, .boit-cta, .boit-logo-text .b1,
.bx-hero, .bx-bleed, .kt-hero { font-family: oscine, sans-serif !important; }

/* Przezroczysty nagłówek na hero (2026-09-23, dopasowanie do boit.pl): header jest teraz position:fixed
   (patrz partial Header, ID 18) i nie zajmuje już miejsca w normalnym układzie strony, więc każda strona
   musi sama zrobić dla niego miejsce. --boit-hdr-h ustawia JS nagłówka na rzeczywistą wysokość (z fallbackiem). */
.bx-hero, .bx-bleed, .kt-hero { padding-top: calc(var(--boit-hdr-h, 78px) + 16px) !important; }
/* Strony BEZ hero (np. Polityka prywatności) — odsunięcie samej treści, żeby nie chowała się pod stałym nagłówkiem.
   Selektor BEZ „>” (dowolny potomek, nie tylko bezpośrednie dziecko) — .kt-hero na /kontakt/ jest zagnieżdżone
   głębiej (w .kt-page), więc sprawdzanie tylko bezpośrednich dzieci błędnie uznawało tę stronę za „bez hero”
   i dokładało tu podwójny odstęp (ten plus własny padding-top .kt-hero). */
.entry-content.wp-block-post-content:not(:has(.bx-hero, .bx-bleed, .kt-hero)) { padding-top: calc(var(--boit-hdr-h, 78px) + 24px); }

.wpcf7 .kt-form, .wpcf7 .kt-form * { box-sizing: border-box; }
.wpcf7 .kt-form br { display: none; }
.wpcf7 .kt-form p { margin: 0; }
.wpcf7 .kt-form .kt-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
.wpcf7 .kt-form .kt-row > p { display: contents; }
@media (max-width: 560px) { .wpcf7 .kt-form .kt-row { grid-template-columns: minmax(0, 1fr); } }
.wpcf7 .kt-form .kt-field { display: block; margin: 0 0 16px; font-size: 14px; font-weight: 700; color: #1F2937; }
.wpcf7 .kt-form .kt-opt { font-weight: 400; color: #6B7280; }
.wpcf7 .kt-form .wpcf7-form-control-wrap { display: block; margin-top: 6px; }
.wpcf7 .kt-form input[type=text], .wpcf7 .kt-form input[type=email], .wpcf7 .kt-form input[type=tel], .wpcf7 .kt-form textarea, .wpcf7 .kt-form select {
  width: 100%; min-height: 48px; padding: 11px 13px; border: 1.5px solid #9CA3AF; border-radius: 8px; font-size: 16px; font-family: inherit; color: #111827; background: #fff; margin: 0; }
.wpcf7 .kt-form textarea { min-height: 104px; resize: vertical; }
.wpcf7 .kt-form input:focus-visible, .wpcf7 .kt-form textarea:focus-visible, .wpcf7 .kt-form select:focus-visible { outline: 3px solid #2563EB; outline-offset: 1px; }
.wpcf7 .kt-form ::placeholder { color: #6B7280; opacity: 1; }
.wpcf7 .kt-form .kt-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.wpcf7 .kt-form .kt-consents { margin: 4px 0 6px; display: grid; gap: 10px; }
.wpcf7 .kt-form .kt-check { font-size: 13px; line-height: 1.5; color: #4B5563; font-weight: 400; }
.wpcf7 .kt-form .kt-check .wpcf7-form-control-wrap { margin: 0; }
.wpcf7 .kt-form .kt-check label { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; }
.wpcf7 .kt-form .kt-check input[type=checkbox] { width: 22px; height: 22px; flex: none; margin: 1px 0 0; accent-color: #F3A083; }
.wpcf7 .kt-form .kt-check a { color: #111827; text-decoration: underline; }
.wpcf7 .kt-form .kt-check label, .wpcf7 .kt-form .kt-check .wpcf7-list-item-label { font-size: 13px; font-weight: 400; color: #4B5563; line-height: 1.5; }
.wpcf7 .kt-form .kt-check a { font-weight: 600; }
.wpcf7 .kt-form .kt-info { margin: 6px 0 16px; font-size: 12.5px; color: #4B5563; line-height: 1.55; }
.wpcf7 .kt-form .kt-info summary { cursor: pointer; font-weight: 700; color: #A93615; min-height: 32px; display: flex; align-items: center; }
.wpcf7 .kt-form .kt-info p { margin: 8px 0 0; }
.wpcf7 .kt-form .kt-hint { margin: 0 0 10px; font-size: 12.5px; line-height: 1.5; color: #4B5563; }
.wpcf7 .kt-form input[type=submit] { display: block; width: 100%; min-height: 52px; background: #F3A083; color: #fff; border: 0; border-radius: 999px; padding: 14px 18px; font-size: 16px; font-weight: 700; cursor: pointer; line-height: 1.25; margin: 0; }
.wpcf7 .kt-form input[type=submit]:hover { background: #BD7C66; }
.wpcf7 .kt-form input[type=submit]:disabled { background: #6B7280; cursor: not-allowed; }
.wpcf7 .kt-form .wpcf7-spinner { display: block; margin: 10px auto 0; }
.wpcf7 .kt-form .wpcf7-not-valid-tip { color: #B91C1C; font-size: 13px; margin-top: 5px; font-weight: 600; }
.wpcf7 form.wpcf7-form .wpcf7-response-output { margin: 16px 0 0; padding: 12px 16px; border-radius: 8px; font-size: 14.5px; line-height: 1.5; }
.wpcf7 form.wpcf7-form.sent .wpcf7-response-output { border-color: #15803D; background: #F0FDF4; color: #14532D; font-weight: 600; }
