/*
 * ELTECH - formularz kontaktowy
 *
 * Odtworzenie fragmentu Bootstrapa 5, ktory realnie wykorzystuje formularz.
 * KAZDA regula jest zamknieta w .etf-form-wrap - pelny Bootstrap wpuszczony
 * na strone WordPressa nadpisalby style motywu (.container, .row, naglowki,
 * inputy, przyciski). Nazwy klas zostaly te same, bo odwoluje sie do nich
 * JavaScript walidacji.
 *
 * Wyjatek: reguly dla .select2-dropdown nie moga byc zagniezdzone, bo select2
 * doklada rozwijana liste na koniec <body>, poza nasz kontener.
 */

/* --- Podstawy -------------------------------------------------------------- */

.etf-form-wrap {
	--etf-border: #ced4da;
	--etf-danger: #dc3545;
	--etf-success: #198754;
	--etf-focus: #86b7fe;
	--etf-text: #212529;

	color: var(--etf-text, #212529);
	font-size: 1rem;
	line-height: 1.5;
	/* Formularz nigdy nie rozpycha kontenera, w ktorym stoi. W starych
	   motywach tresc strony bywa wklejona w tabele o sztywnej szerokosci
	   i wtedy telefon dostaje strone szersza od ekranu. */
	max-width: 100%;
	/* Dlugi adres e-mail w potwierdzeniu albo nazwa pliku bez spacji nie
	   moga wystawac poza ramke na waskim ekranie */
	overflow-wrap: break-word;
	text-align: left;
	word-wrap: break-word;
}

.etf-form-wrap *,
.etf-form-wrap *::before,
.etf-form-wrap *::after {
	box-sizing: border-box;
}

.etf-form-wrap h2 {
	font-size: 2rem;
	font-weight: 500;
	line-height: 1.2;
	margin: 0 0 0.5rem;
}

.etf-form-wrap h5 {
	font-size: 1.25rem;
	font-weight: 500;
	line-height: 1.2;
	margin: 0 0 0.5rem;
}

.etf-form-wrap hr {
	background-color: currentColor;
	border: 0;
	color: inherit;
	height: 1px;
	margin: 1rem 0;
	opacity: 0.25;
}

/* --- Odstepy i pomocniki --------------------------------------------------- */

.etf-form-wrap .mb-3 { margin-bottom: 1rem !important; }
.etf-form-wrap .mb-4 { margin-bottom: 1.5rem !important; }
.etf-form-wrap .my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
.etf-form-wrap .p-0  { padding: 0 !important; }

.etf-form-wrap .text-center { text-align: center !important; }
.etf-form-wrap .text-danger { color: var(--etf-danger, #dc3545) !important; }
.etf-form-wrap .fw-bold     { font-weight: 700 !important; }

.etf-form-wrap .d-flex           { display: flex !important; }
.etf-form-wrap .align-items-center { align-items: center !important; }
.etf-form-wrap .flex-grow-1      { flex-grow: 1 !important; }
.etf-form-wrap .flex-grow-0      { flex-grow: 0 !important; }
.etf-form-wrap .w-auto           { width: auto !important; }
.etf-form-wrap .border-top       { border-top: 1px solid rgba(0, 0, 0, 0.175); }

/* Tresc czytana przez czytniki ekranu, niewidoczna wzrokowo */
.etf-form-wrap .visually-hidden {
	clip: rect(0, 0, 0, 0);
	border: 0;
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

/* Pulapka na boty - musi byc niewidoczna, ale nie display:none
   (czesc botow pomija pola ukryte tym sposobem) */
.etf-form-wrap .etf-hp {
	height: 0;
	left: -9999px;
	overflow: hidden;
	position: absolute;
	width: 0;
}

/* --- Siatka ---------------------------------------------------------------- */

.etf-form-wrap .row {
	display: flex;
	flex-wrap: wrap;
	margin: 0;
}

.etf-form-wrap .row.g-3 {
	gap: 1rem;
}

.etf-form-wrap .col-12 { width: 100%; }

@media (min-width: 768px) {
	/* Szerokosci uwzgledniaja gap: przy dwoch kolumnach jedna przerwa 1rem,
	   przy trzech - dwie przerwy */
	.etf-form-wrap .row.g-3 > .col-md-6 { width: calc(50% - 0.5rem); }
	.etf-form-wrap .row.g-3 > .col-md-4 { width: calc(33.3333% - 0.6667rem); }
}

@media (max-width: 767.98px) {
	.etf-form-wrap .col-md-6,
	.etf-form-wrap .col-md-4 { width: 100%; }
}

/* Zapytanie o szerokosc okna nie wystarcza. Formularz nie zawsze dostaje cala
   szerokosc strony - w motywie "eltech" strona Kontakt trzyma go w kolumnie
   .leftCol o szerokosci 40%, ktora wraca do 100% dopiero ponizej 600px okna.
   Miedzy 600 a 1000px okna wychodzil wiec uklad dwu- i trzykolumnowy
   wcisniety w ~300px: pola po 140px, etykiety lamane po jednym slowie.

   Zapytanie o kontener pyta o to, co naprawde decyduje - szerokosc rzedu.
   Ponizej 640px rzad wraca do jednej kolumny, niezaleznie od okna.
   Przegladarki bez obslugi @container czytaja tylko reguly powyzej, czyli
   zachowuja sie dokladnie tak jak przed ta zmiana. */
@supports (container-type: inline-size) {
	.etf-form-wrap .row {
		/* inline-size, nie size: wysokosc rzedu ma nadal wynikac z tresci */
		container-type: inline-size;
	}

	@container (max-width: 640px) {
		.etf-form-wrap .row.g-3 > .col-md-6,
		.etf-form-wrap .row.g-3 > .col-md-4 { width: 100%; }
	}
}

/* --- Pola formularza ------------------------------------------------------- */

.etf-form-wrap .form-label {
	display: inline-block;
	margin-bottom: 0.5rem;
}

.etf-form-wrap .form-control,
.etf-form-wrap .form-select {
	-webkit-appearance: none;
	appearance: none;
	background-color: #fff;
	background-image: none;
	border: 1px solid var(--etf-border, #ced4da);
	border-radius: 0.25rem;
	color: var(--etf-text, #212529);
	display: block;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.5;
	margin: 0;
	max-width: 100%;
	padding: 0.375rem 0.75rem;
	transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
	width: 100%;
}

/* Strzalka listy rozwijanej - wbudowana grafika, bez pliku zewnetrznego */
.etf-form-wrap .form-select {
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
	background-position: right 0.75rem center;
	background-repeat: no-repeat;
	background-size: 16px 12px;
	padding-right: 2.25rem;
}

.etf-form-wrap textarea.form-control {
	min-height: calc(1.5em + 0.75rem + 2px);
	resize: vertical;
}

.etf-form-wrap .form-control:focus,
.etf-form-wrap .form-select:focus {
	border-color: var(--etf-focus, #86b7fe);
	box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
	outline: 0;
}

/* Wojewodztwo i miejscowosc uzupelnia skrypt - pola sa tylko do odczytu,
   ale maja wygladac jak pozostale (szare tlo sugerowaloby awarie) */
.etf-form-wrap .form-control[readonly],
.etf-form-wrap .form-select[readonly] {
	background-color: #fff;
}

.etf-form-wrap .form-control::placeholder {
	color: #6c757d;
	opacity: 1;
}

/* --- Grupa pol (prefiks NIP + numer) --------------------------------------- */

.etf-form-wrap .input-group {
	display: flex;
	flex-wrap: nowrap;
	position: relative;
	width: 100%;
}

.etf-form-wrap .input-group > .form-control,
.etf-form-wrap .input-group > .form-select {
	flex: 1 1 auto;
	width: 1%;
}

.etf-form-wrap .input-group > :not(:first-child) {
	border-bottom-left-radius: 0;
	border-top-left-radius: 0;
	margin-left: -1px;
}

.etf-form-wrap .input-group > :not(:last-child) {
	border-bottom-right-radius: 0;
	border-top-right-radius: 0;
}

/* Pole w fokusie ma byc nad sasiadem, inaczej sasiednia ramka przykrywa
   kolorowa obwodke */
.etf-form-wrap .input-group > .form-control:focus,
.etf-form-wrap .input-group > .form-select:focus {
	position: relative;
	z-index: 3;
}

/* Komunikat bledu w grupie pol musi trafic pod cala grupe, nie obok pola */
.etf-form-wrap .input-group > .invalid-feedback {
	order: 10;
}

/* --- Pola wyboru (radio, checkbox) ----------------------------------------- */

.etf-form-wrap .form-check {
	display: block;
	margin-bottom: 0.125rem;
	min-height: 1.5rem;
	padding-left: 1.5em;
}

.etf-form-wrap .form-check .form-check-input {
	float: left;
	margin-left: -1.5em;
}

.etf-form-wrap .form-check-input {
	height: 1em;
	margin-top: 0.25em;
	vertical-align: top;
	width: 1em;
}

.etf-form-wrap .form-check-label {
	cursor: pointer;
	display: inline;
}

/* Natywny checkbox nie reaguje na border-color, wiec blad zaznaczamy obwodka */
.etf-form-wrap .form-check-input.is-invalid {
	outline: 2px solid var(--etf-danger, #dc3545);
	outline-offset: 1px;
}

/* --- Stany walidacji -------------------------------------------------------- */

.etf-form-wrap .invalid-feedback {
	color: var(--etf-danger, #dc3545);
	display: none;
	font-size: 0.875em;
	margin-top: 0.25rem;
	width: 100%;
}

.etf-form-wrap .is-invalid {
	border-color: var(--etf-danger, #dc3545) !important;
}

.etf-form-wrap .is-valid {
	border-color: var(--etf-success, #198754) !important;
}

.etf-form-wrap .is-invalid:focus {
	box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
}

.etf-form-wrap .is-valid:focus {
	box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
}

.etf-form-wrap .is-invalid ~ .invalid-feedback {
	display: block;
}

.etf-form-wrap .message-sending {
	display: block;
	margin-top: 0.85rem;
}

/* Potwierdzenie i bledy jako wyrazna ramka, a nie sam kolorowy tekst obok
   przycisku. Przycisk bywa nisko na dlugiej stronie i zwykly napis latwo
   przeoczyc - a wtedy uzytkownik wysyla formularz drugi raz. */
.etf-form-wrap .etf-komunikat {
	border-radius: 0.25rem;
	display: inline-block;
	font-weight: 600;
	padding: 0.6rem 1rem;
	text-align: left;
}

.etf-form-wrap .etf-komunikat--ok {
	background-color: #e8f5ee;
	border: 1px solid #b7e0c8;
	color: #12653c;
}

.etf-form-wrap .etf-komunikat--blad {
	background-color: #fdecee;
	border: 1px solid #f2b8bf;
	color: #a71d2a;
}

/* --- Przyciski -------------------------------------------------------------- */

.etf-form-wrap .btn {
	background-color: transparent;
	border: 1px solid transparent;
	border-radius: 0.25rem;
	cursor: pointer;
	display: inline-block;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.5;
	padding: 0.375rem 0.75rem;
	text-align: center;
	text-decoration: none;
	transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out;
	vertical-align: middle;
}

.etf-form-wrap .btn:focus {
	box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
	outline: 0;
}

.etf-form-wrap .btn-danger {
	background-color: var(--etf-danger, #dc3545);
	border-color: var(--etf-danger, #dc3545);
	color: #fff;
}

.etf-form-wrap .btn-danger:hover:not(:disabled) {
	background-color: #bb2d3b;
	border-color: #b02a37;
	color: #fff;
}

.etf-form-wrap .btn:disabled {
	cursor: not-allowed;
	opacity: 0.65;
}

.etf-form-wrap .btn-link {
	background: none;
	border: 0;
	color: #0d6efd;
	text-decoration: underline;
	vertical-align: baseline;
}

.etf-form-wrap .btn-link:focus {
	box-shadow: none;
}

/* --- Select2 ---------------------------------------------------------------- */

/* Domyslny motyw select2 jest nizszy niz nasze pola - wyrownujemy wysokosc,
   ramke i zaokraglenie, zeby listy nie odstawaly od reszty formularza */
.etf-form-wrap .select2-container {
	max-width: 100%;
}

.etf-form-wrap .select2-container--default .select2-selection--single,
.etf-form-wrap .select2-container--default .select2-selection--multiple {
	border: 1px solid var(--etf-border, #ced4da);
	border-radius: 0.25rem;
	min-height: 38px;
}

.etf-form-wrap .select2-container--default .select2-selection--single .select2-selection__rendered {
	line-height: 36px;
	padding-left: 0.75rem;
}

.etf-form-wrap .select2-container--default .select2-selection--single .select2-selection__arrow {
	height: 36px;
}

.etf-form-wrap .select2-container--default.select2-container--focus .select2-selection--multiple,
.etf-form-wrap .select2-container--default.select2-container--open .select2-selection--single {
	border-color: var(--etf-focus, #86b7fe);
}

/* Lista asortymentu ma rosnac w pionie zamiast przewijac sie w poziomie */
.etf-form-wrap .select2-container--default .select2-selection--multiple {
	height: auto !important;
	padding: 0.25rem 0.4rem;
}

.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-selection__rendered {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	/* Odstepy miedzy kafelkami siedza na marginesach kafelkow - wszystkie
	   odstepy w tym rzedzie sa opisane w jednym miejscu, w regule kafelka */
	margin: 0;
	max-height: none !important;
	overflow: visible !important;
	padding: 0;
}

/* Tagi i pole wyszukiwania siedza w <ul>/<li>. Motywy WordPressa zwykle
   stylizuja listy w tresci strony (punktory, wciecia, wlasne ::before),
   a te reguly przeciekaja do srodka select2 - w motywie "eltech" objawialo
   sie to punktorem przed placeholderem. Zerujemy to u siebie, bez ruszania
   list w reszcie strony. */
.etf-form-wrap .select2-selection__rendered,
.etf-form-wrap .select2-selection__rendered > li {
	list-style: none !important;
	text-indent: 0;
}

.etf-form-wrap .select2-selection__rendered > li::before,
.etf-form-wrap .select2-selection__rendered > li::after {
	content: none !important;
}

/* --- Wybrane pozycje ("tagi") ---------------------------------------------- */
/* Domyslny select2 rysuje je jako szare prostokaty z krzyzykiem wcisnietym
   w tekst. Robimy z nich pigulki: krzyzyk po prawej, wieksze pole klikniecia,
   czerwony dopiero na najechaniu - kolor akcentu formularza sluzy tu za
   ostrzezenie "to usuwa", a nie za dekoracje. */
/* Historia tego fragmentu, zeby nie powtarzac tych samych bledow:
   1. flex + row-reverse (krzyzyk na prawo) - krzyzyk nachodzil na tekst,
      bo jako element flex kurczyl sie domyslnym flex-shrink: 1.
   2. inline-block + overflow: hidden - krzyzyk byl PRZYCINANY, bo jest wyzszy
      niz wiersz tekstu i przy wyrownaniu do linii bazowej wystawal ponad pole.
   3. inline-block bez przycinania - polozenie zalezalo od skomplikowanej
      matematyki linii bazowej i nadal sie rozjezdzalo.

   Teraz: zwykly flex, BEZ zmiany kolejnosci. Dwa elementy obok siebie,
   wysrodkowane w pionie, odstep przez gap. Elementy flex nigdy na siebie nie
   nachodza, a wysrodkowanie nie zalezy od linii bazowej. Tekst jest "anonimowym
   elementem flex" - nie da sie go wskazac selektorem, ale przy tak prostym
   ukladzie nie trzeba. Krzyzyk ma flex: 0 0 auto, wiec nigdy sie nie sciska. */
.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-selection__choice {
	align-items: center;
	background-color: #eef1f5;
	border: 1px solid #d7dde5;
	border-radius: 999px;
	color: #2b3644;
	/* Caly kafelek jest klikalny (usuwa pozycje) - kursor musi to zapowiadac */
	cursor: pointer;
	display: inline-flex;
	float: none;
	font-size: 0.875rem;
	line-height: 1.4;
	/* Odstep do sasiedniego kafelka i miedzy wierszami po zawinieciu */
	margin: 0.15rem 0.35rem 0.15rem 0;
	max-width: 100%;
	min-width: 0;
	/* Odstep miedzy krzyzykiem a tekstem daje margines krzyzyka, nie gap.
	   Nie dlatego, ze gap nie dziala - dziala, siatka formularza (.row.g-3)
	   stoi na nim. Chodzi o to, ze margines widac wprost na elemencie, ktorego
	   dotyczy, zamiast w regule rodzica. Przy skladaniu wygladu tego kafelka
	   pomylilem sie kilka razy pod rzad wlasnie dlatego, ze odstepy byly
	   rozrzucone po kilku regulach. */
	padding: 0.28rem 0.95rem 0.28rem 0.55rem;
	transition: background-color 0.12s ease-in-out, border-color 0.12s ease-in-out;
	/* Select2 ustawia nowrap na calej liscie; tu wracamy do zawijania, zeby
	   dluga nazwa na waskim ekranie zlamala sie zamiast wyjsc poza ramke */
	white-space: normal;
}

/* Krzyzyk rysujemy wlasnym pseudo-elementem, a znak &times; wstawiony przez
   biblioteke wygaszamy przez font-size: 0.
   Powod: to zwykly wezel tekstowy w srodku <span>. Reguly motywu dotyczace
   tekstu w tym miejscu potrafia go usunac albo ukryc, a wtedy kafelka nie da
   sie zamknac - przycisk zostaje, tylko niewidoczny. Wlasny pseudo-element
   jest od tego odporny.
   UWAGA: przy font-size: 0 nie wolno podawac rozmiarow w "em" - 1em to wtedy
   zero. Stad wymiary w rem. */
.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
	background: none;
	border: 0;
	color: #8a94a2;
	display: block;
	/* Bez tego krzyzyk sciska sie razem z kafelkiem i nachodzi na tekst -
	   elementy flex maja domyslnie flex-shrink: 1 */
	flex: 0 0 auto;
	font-size: 0;
	height: 1rem;
	/* To jest odstep od tekstu - patrz komentarz przy paddingu kafelka */
	margin: 0 0.62rem 0 0;
	text-align: center;
	transition: color 0.12s ease-in-out;
	width: 0.8rem;
}

/* "Wyczysc wszystko" wylaczylismy opcja allowClear w JS. Ta regula jest
   zabezpieczeniem na wypadek starego pliku JS z cache przegladarki albo
   wtyczki cache'ujacej - inaczej pojawia sie samotny krzyzyk przed kafelkami,
   ktory wyglada na usterke. */
.etf-form-wrap .select2-selection--multiple .select2-selection__clear {
	display: none !important;
}

.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-selection__choice__remove::before {
	content: "×";
	font-size: 0.95rem;
	font-weight: 700;
	line-height: 1.15rem;
}

/* Na najechaniu zmienia sie sam kolor znaku. Bez kolka w tle: przy waskim
   odstepie nachodzilo ono na pierwsza litere i wygladalo jak usterka. */
.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
	color: var(--etf-danger, #dc3545);
}

/* Najechanie na dowolne miejsce kafelka - zapowiada, ze klikniecie go usunie.
   Krzyzyk czerwienieje razem z reszta, zeby bylo jasne, co sie zaraz stanie. */
.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-selection__choice:hover {
	background-color: #fdecee;
	border-color: #f2b8bf;
}

.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-selection__choice:hover .select2-selection__choice__remove {
	color: var(--etf-danger, #dc3545);
}

/* Pole wyszukiwania zajmuje miejsce, ktore zostalo po tagach w danym rzedzie,
   a gdy jest go za malo - przechodzi do nastepnej linii.
   Szerokosc MUSI byc podana z !important: select2 wpisuje ja inline z JS-a
   (resizeSearch), a przy widocznym placeholderze liczy ja po swojemu. Sztywne
   150px ucinalo tekst "Wybierz asortyment" na ostatniej literze. */
.etf-form-wrap .select2-search--inline {
	display: flex;
	flex: 1 1 6rem;
	min-width: 0;
}

.etf-form-wrap .select2-search__field {
	margin: 0 !important;
	max-width: 100%;
	min-height: 1.6rem;
	width: 100% !important;
}

.etf-form-wrap .select2-container--default .select2-selection--multiple .select2-search__field::placeholder {
	color: #6c757d;
}

/* Select2 ukrywa oryginalny <select>, wiec klasa is-invalid na nim jest
   niewidoczna - przenosimy oznaczenie bledu na kontener select2 */
.etf-form-wrap select.is-invalid + .select2-container .select2-selection {
	border-color: var(--etf-danger, #dc3545) !important;
}

.etf-form-wrap select.is-valid + .select2-container .select2-selection {
	border-color: var(--etf-success, #198754) !important;
}

/* Komunikat bledu jest rodzenstwem <select>, a nie kontenera select2 -
   dla tych pol musimy wymusic jego pokazanie sami */
.etf-form-wrap select.is-invalid ~ .invalid-feedback {
	display: block;
}

/* Lista prefiksow NIP pokazuje sam kod kraju, wiec ma byc waska */
.etf-form-wrap #companyNipPrefix + .select2-container {
	flex-grow: 0 !important;
	min-width: 5.5rem;
	width: auto !important;
}

/* Prefiks stoi w grupie pol - prawa krawedz musi zostac prosta */
.etf-form-wrap #companyNipPrefix + .select2-container .select2-selection {
	border-bottom-right-radius: 0;
	border-top-right-radius: 0;
}

/* --- Rozwijane listy select2 (poza .etf-form-wrap) --------------------------- */
/* select2 doklada je bezposrednio do <body>, wiec te reguly nie moga byc
   zagniezdzone. Nazwy klas sa specyficzne dla select2 - nie koliduja z motywem. */

.select2-container--open .asortyment-dropdown .select2-results__options {
	max-height: 750px !important;
}

/* Wyglad obu naszych list. Celowo zawezone do wlasnych klas, a nie do samego
   .select2-dropdown - na stronie moga dzialac inne wtyczki z select2 i nie
   chcemy im zmieniac wygladu. */
.asortyment-dropdown,
.prefiks-dropdown {
	border: 1px solid #d7dde5;
	border-radius: 0.25rem;
	box-shadow: 0 6px 18px rgba(16, 24, 40, 0.12);
	overflow: hidden;
}

.asortyment-dropdown .select2-results__option,
.prefiks-dropdown .select2-results__option {
	padding: 0.45rem 0.75rem;
}

/* Ten sam problem co w polu: rozwijana lista to <ul>, wiec punktory z motywu
   potrafia sie w niej pojawic. Zerujemy tylko ::before - ::after zostaje
   wolne, bo doklejamy nim "✓" przy pozycjach juz wybranych. */
.asortyment-dropdown .select2-results__options,
.prefiks-dropdown .select2-results__options,
.asortyment-dropdown .select2-results__option,
.prefiks-dropdown .select2-results__option {
	list-style: none !important;
	text-indent: 0;
}

.asortyment-dropdown .select2-results__option::before,
.prefiks-dropdown .select2-results__option::before {
	content: none !important;
}

/* Domyslny select2 podswietla pozycje jaskrawym niebieskim - zastepujemy go
   spokojnym tlem, zeby lista pasowala do reszty formularza */
.asortyment-dropdown .select2-results__option--highlighted[aria-selected],
.prefiks-dropdown .select2-results__option--highlighted[aria-selected] {
	background-color: #eef1f5 !important;
	color: #2b3644 !important;
}

/* Pozycja juz wybrana - wyszarzona, zeby bylo widac, ze jest na liscie */
.asortyment-dropdown .select2-results__option[aria-selected="true"] {
	color: #8b95a3;
}

.asortyment-dropdown .select2-results__option[aria-selected="true"]::after {
	content: " ✓";
	float: right;
}

.asortyment-dropdown .select2-search--dropdown .select2-search__field,
.prefiks-dropdown .select2-search--dropdown .select2-search__field {
	border: 1px solid #ced4da;
	border-radius: 0.25rem;
	padding: 0.3rem 0.5rem;
}

/* Rozwijana lista prefiksow musi byc szersza niz samo pole,
   inaczej pole wyszukiwania jest nieczytelne */
.select2-container--open .prefiks-dropdown {
	min-width: 12rem !important;
}

/* --- Zalaczniki ------------------------------------------------------------- */

.etf-form-wrap .etf-pliki-input {
	background-color: #fff;
	border: 1px dashed var(--etf-border, #ced4da);
	border-radius: 0.25rem;
	cursor: pointer;
	display: block;
	font-family: inherit;
	font-size: 0.95rem;
	max-width: 100%;
	padding: 0.6rem 0.75rem;
	width: 100%;
}

.etf-form-wrap .etf-pliki-input:focus {
	border-color: var(--etf-focus, #86b7fe);
	box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
	outline: 0;
}

.etf-form-wrap .etf-pliki-podpowiedz {
	color: #6c757d;
	font-size: 0.85rem;
	margin: 0.35rem 0 0;
}

.etf-form-wrap .etf-pliki-lista {
	list-style: none !important;
	margin: 0.5rem 0 0;
	padding: 0;
}

.etf-form-wrap .etf-pliki-lista > li::before,
.etf-form-wrap .etf-pliki-lista > li::after {
	content: none !important;
}

.etf-form-wrap .etf-plik {
	align-items: center;
	background-color: #f6f8fa;
	border: 1px solid #e1e6ec;
	border-radius: 0.25rem;
	display: flex;
	font-size: 0.9rem;
	margin: 0 0 0.35rem;
	padding: 0.4rem 0.6rem;
}

.etf-form-wrap .etf-plik__nazwa {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.etf-form-wrap .etf-plik__rozmiar {
	color: #6c757d;
	flex: 0 0 auto;
	margin: 0 0.75rem;
	white-space: nowrap;
}

/* Przycisk usuwania rysowany pseudo-elementem - ta sama zasada co przy
   kafelkach asortymentu: znak nie zalezy od tresci wstawionej przez skrypt */
.etf-form-wrap .etf-plik__usun {
	background: none;
	border: 0;
	color: #8a94a2;
	cursor: pointer;
	flex: 0 0 auto;
	font-size: 0;
	height: 1.2rem;
	padding: 0;
	transition: color 0.12s ease-in-out;
	width: 1.2rem;
}

.etf-form-wrap .etf-plik__usun::before {
	content: "×";
	font-size: 1.15rem;
	font-weight: 700;
	line-height: 1.2rem;
}

.etf-form-wrap .etf-plik__usun:hover {
	color: var(--etf-danger, #dc3545);
}

/* Podsumowanie liczby i rozmiaru - nie jest plikiem, wiec bez ramki */
.etf-form-wrap .etf-plik--suma {
	background: none;
	border: 0;
	color: #6c757d;
	display: block;
	font-size: 0.85rem;
	padding: 0.15rem 0;
}

/* --- Obrona przed stylami motywu strony ------------------------------------ */
/* Reguly ponizej nic nie wnosza na czystym motywie - kazda odbija konkretny
   styl, ktory motyw "eltech" (WordPress 4.6) narzuca tresci strony i ktory
   przeciekal do srodka formularza. Wszystkie sa zamkniete w .etf-form-wrap,
   wiec nie ruszaja reszty strony.

   !important nie jest tu fanaberia: reguly motywu zaczynaja sie od #content,
   a identyfikator wygrywa z kazda liczba klas. Bez !important przegrywamy. */

/* Motyw: #content .pageContent ul { margin: 10px 0 10px 40px }
   plus li { text-indent: -23px }. Lista zalacznikow dostawala przez to
   wciecie 40px i ucieta pierwsza litere nazwy pliku. */
.etf-form-wrap ul,
.etf-form-wrap ol {
	margin-left: 0 !important;
	padding-left: 0 !important;
}

.etf-form-wrap li {
	text-indent: 0 !important;
}

/* Motyw: #content .pageContent p { text-align: justify }, a ponizej 600px
   dodatkowo text-align: center. Podpowiedz pod polem zalacznikow byla raz
   justowana, raz wysrodkowana - w obu przypadkach niezgodnie z reszta.
   "inherit" zamiast "left", zeby akapit w bloku .text-center nadal byl
   wysrodkowany. */
.etf-form-wrap p {
	text-align: inherit !important;
}

/* Motyw ustawia html { font-size: 0.875em } ponizej 600px szerokosci okna.
   Cala wtyczka liczy rozmiary w rem, wiec na telefonie 1rem to 14px, a nie 16.
   Skutek: Safari na iPhonie powieksza strone przy kazdym dotknieciu pola
   (robi to zawsze, gdy pole ma mniej niz 16px) i po wpisaniu danych strona
   zostaje powiekszona. Dlatego pola, w ktore sie pisze, maja podloge 16px.

   max() zamiast sztywnych 16px, zeby nie zmniejszyc pol tam, gdzie motyw
   ustawia wieksza podstawe (na eltech.com.pl na komputerze 1rem to 17px).
   Starsze przegladarki nie znaja max() i pomijaja te deklaracje - zostaje
   wtedy wartosc z reguly wyzej, czyli stan sprzed zmiany. */
.etf-form-wrap .form-control,
.etf-form-wrap .form-select,
.etf-form-wrap .select2-search__field,
.etf-form-wrap .etf-pliki-input {
	font-size: max(1rem, 16px);
}

/* Waska kolumna motywu na stronie Kontakt ------------------------------------ */
/* Motyw "eltech" trzyma tresc strony Kontakt w kolumnie .leftCol o szerokosci
   40%, obok pustej .rightCol - siedzi w niej wylacznie stary formularz Contact
   Form 7 ze stylem display: none. Formularz dostawal wiec okolo 480px z 1200px
   szerokosci strony, a 60% zostawalo puste.

   Obejsciem stosowanym dotad w tresci strony byla <table width="1250">:
   tabela wychodzila poza kolumne i formularz wygladal na pelnej szerokosci.
   Na komputerze dzialalo, na telefonie robilo strone szeroka na 1250px.

   Zamiast rozpychac uklad oddajemy kolumnie cala szerokosc. Efekt na
   komputerze jest ten sam co przy tabeli, a telefon nie ma czego przewijac
   w bok. Warunek :has() pilnuje, zeby regula dotyczyla wylacznie strony,
   na ktorej stoi nasz formularz - pozostale podstrony zostaja bez zmian.

   Jesli kiedys w .rightCol pojawi sie tresc, ta regula zepchnie ja pod
   formularz. Wtedy trzeba ja usunac, a nie wracac do tabeli. */
@supports selector(:has(*)) {
	#content.contact .wrapper .leftCol:has(.etf-form-wrap) {
		float: none;
		margin-right: 0;
		width: 100%;
	}
}

/* Tabela o sztywnej szerokosci wokol formularza ------------------------------ */
/* Na eltech.com.pl/kontakt tresc strony ma formularz wklejony w
   <table width="1250">. Zadna regula motywu tego nie zawezala, wiec telefon
   dostawal strone szeroka na 1250px - stad przewijanie w poziomie i mikroskopijny
   tekst. Wlasciwe miejsce na poprawke to tresc strony w kokpicie, ale wtyczka
   nie moze na to liczyc: te sama tabele latwo wkleic ponownie.

   :has() celuje wylacznie w tabele zawierajaca nasz formularz - inne tabele
   na stronie zostaja nietkniete. Atrybut width="1250" to dla przegladarki
   podpowiedz o najnizszym priorytecie, wiec zwykle width: 100% ja pokonuje;
   !important jest na wypadek reguly motywu z identyfikatorem.
   Przegladarki bez :has() obsluguje zapasowo skrypt (patrz eltech-form.js). */
@supports selector(:has(*)) {
	table:has(.etf-form-wrap) {
		max-width: 100% !important;
		/* Bez table-layout: fixed sama szerokosc 100% nie wystarcza - tabela
		   rozszerzy sie i tak, jesli tresc komorki tego zazada */
		table-layout: fixed;
		width: 100% !important;
	}

	/* Przy table-layout: fixed szerokosci kolumn bierze sie z pierwszego
	   wiersza, wiec width na komorce przebilby regule powyzej. Celujemy
	   w komorke z formularzem, nie we wszystkie - sasiednie kolumny to nie
	   nasza sprawa. */
	table:has(.etf-form-wrap) td:has(.etf-form-wrap) {
		width: auto !important;
	}
}

/* --- Ekrany dotykowe -------------------------------------------------------- */
/* Nie "telefon" tylko "gruby wskaznik" - decyduje sposob obslugi, a nie
   szerokosc okna. Wysokosc pola 38px jest wygodna dla myszy i za mala dla
   palca; zalecane minimum to okolo 44px.

   min-height, a nie wiekszy padding: pole rosnie wtedy do dokladnie tej samej
   liczby pikseli co lista select2 obok niego. W grupie "prefiks NIP + numer"
   oba elementy stykaja sie ramkami, wiec roznica dwoch pikseli jest widoczna.
   Tekst w <input>, <select> i <button> przegladarka srodkuje w pionie sama. */
@media (pointer: coarse) {
	.etf-form-wrap .form-control,
	.etf-form-wrap .form-select,
	.etf-form-wrap .etf-pliki-input {
		min-height: 44px;
	}

	/* Wysokosc liczona od gory, nie na srodku - textarea ma zaczynac pisanie
	   w pierwszym wierszu, a nie w polowie pola */
	.etf-form-wrap textarea.form-control {
		min-height: calc(3 * 1.5em + 1.2rem + 2px);
	}

	/* Tylko przycisk wysylki. .btn-link ("czytaj dalej") stoi w srodku akapitu
	   ze zgodami - podniesiony do 44px rozepchnalby wiersz tekstu. */
	.etf-form-wrap .btn-danger {
		min-height: 44px;
		padding-left: 1.1rem;
		padding-right: 1.1rem;
	}

	.etf-form-wrap .select2-container--default .select2-selection--single {
		min-height: 44px;
	}

	.etf-form-wrap .select2-container--default .select2-selection--single .select2-selection__rendered {
		line-height: 42px;
	}

	.etf-form-wrap .select2-container--default .select2-selection--single .select2-selection__arrow {
		height: 42px;
	}

	/* Kwadrat 14px trafia sie palcem raz na trzy proby, a zgody sa obowiazkowe -
	   bez ich zaznaczenia przycisk wysylki zostaje zablokowany. */
	.etf-form-wrap .form-check {
		min-height: 1.75rem;
		padding-left: 1.9em;
	}

	.etf-form-wrap .form-check .form-check-input {
		margin-left: -1.9em;
	}

	.etf-form-wrap .form-check-input {
		height: 1.3em;
		margin-top: 0.1em;
		width: 1.3em;
	}

	/* Krzyzyk przy zalaczniku: 1.2rem to okolo 17px. Powiekszamy samo pole
	   klikniecia - znak rysuje ::before, wiec razem z wysokoscia trzeba
	   poprawic jego line-height, inaczej przestanie byc wysrodkowany. */
	.etf-form-wrap .etf-plik__usun {
		height: 2rem;
		width: 2rem;
	}

	.etf-form-wrap .etf-plik__usun::before {
		line-height: 2rem;
	}
}
