/* =============================================================================
   podglad-rezerwacja.css — arkusz głównej strony formularza rezerwacji
   (podglad-rezerwacja.html)

   UWAGA — TUTAJ DEFINIUJEMY GLOBALNE ZMIENNE MOTYWU WLR:
   Blok :root poniżej zawiera wszystkie zmienne (kolory, --radius, --shadow),
   z których korzystają RÓWNIEŻ pozostałe arkusze tej witryny:
     - nav.css                       (górna nawigacja)
     - potwierdzenie-rezerwacji.css  (strona „dziękujemy”)
     - blad-platnosci.css            (strona błędu płatności)
     - legal-docs.css                (regulamin / polityka prywatności)

   Każda zmiana wartości w :root WPŁYWA NA CAŁĄ STRONĘ — nie tylko na ten widok.
   Kolejność reguł poniżej została posortowana zgodnie z kolejnością wystąpień
   klas w pliku HTML (od góry do dołu), żeby łatwiej było skakać między HTML
   a CSS podczas dalszego utrzymania kodu.
   ========================================================================== */


/* =============================================================================
   SEKCJA 1. GLOBALNE ZMIENNE MOTYWU (UŻYWANE PRZEZ CAŁĄ WITRYNĘ)
   ========================================================================== */

/* :root — globalne zmienne CSS dla całego serwisu WLR.
   Definiujemy je TU (a nie w nav.css), bo to jest „główny” arkusz strony
   koszyka i ładuje się jako pierwszy. Pozostałe arkusze (nav.css,
   potwierdzenie-rezerwacji.css, blad-platnosci.css, legal-docs.css) tylko
   z tych zmiennych korzystają — same ich nie redefiniują. Zmiana koloru
   --wlr-blue tutaj zmieni kolor linków i przycisków w CAŁEJ witrynie. */
:root{
  --wlr-blue:#1eaae0; --wlr-blue-dark:#1690bd; --wlr-blue-light:#e7f6fc;
  --wlr-bg:#eef2f5; --wlr-card:#fff; --wlr-dark:#3a4250;
  --wlr-text:#2c3340; --wlr-text-soft:#6b7480; --wlr-text-faint:#9aa3ae;
  --wlr-border:#dfe5ea; --wlr-border-soft:#eaeef1;
  --wlr-amber:#e8920f; --wlr-amber-light:#fdf3e3;
  --wlr-green:#2b9d59; --wlr-green-light:#e6f5ec; --wlr-error:#d3434b;
  --radius:10px; --shadow:0 6px 22px rgba(40,55,75,.08);
}


/* =============================================================================
   SEKCJA 2. RESET I TYPOGRAFIA STRONY
   ========================================================================== */

/* Klasyczny mini-reset — zerujemy marginesy i paddingi WSZĘDZIE, włącznie
   z border-box. Dzięki temu nie musimy przy każdym polu walczyć z domyślnym
   marginesem przeglądarki (a strona zawiera dziesiątki pól formularza). */
*{box-sizing:border-box;margin:0;padding:0;}

/* <body> — globalna typografia.
   Open Sans pasuje do brandbooka WLR; fallback Segoe UI / Roboto zapewnia
   spójny wygląd na Windows / Android, gdy Open Sans się nie załaduje.
   line-height 1.55 — komfortowe czytanie długich opisów (np. preview-note,
   wyjaśnień przy faktura/KSeF). antialiased — żeby tekst na jasnym tle
   --wlr-bg nie wyglądał „twardo” na macOS. */
body{font-family:"Open Sans","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--wlr-bg);color:var(--wlr-text);line-height:1.55;
  -webkit-font-smoothing:antialiased;}

/* Domyślny styl linków w treści — bez podkreślenia w stanie spoczynku
   (czyściej wygląda przy linkach „regulamin” w checkboxie),
   podkreślenie pojawia się dopiero przy hover dla afordancji. */
a{color:var(--wlr-blue);text-decoration:none;}
a:hover{text-decoration:underline;}

/* .wrap — kontener centralny CAŁEJ treści strony (poza górną nawigacją).
   Wystepuje raz, w okolicy linii 139 HTML: <div class="wrap"> obejmuje
   baner podglądu, kartę apartamentu, formularz i stopkę.
   max-width 880px — strona to formularz, więc trzymamy umiarkowaną
   szerokość czytelnej kolumny (zbyt szeroki formularz jest męczący). */
.wrap{max-width:880px;margin:0 auto;padding:28px 18px 64px;}


/* =============================================================================
   SEKCJA 3. BANER „PODGLĄD WIZUALNY” (informacja dla developerów / klienta)
   ========================================================================== */

/* .preview-note — niebieski baner na samej górze (linia ~141 HTML),
   informujący że to wersja demo z przykładowymi kwotami i kursami.
   Jasnoniebieski, ale CELOWO inny odcień niż --wlr-blue-light — chcemy
   wyraźnie odróżnić informacyjny baner od reszty UI w kolorach marki. */
.preview-note{background:#eef6ff;border:1px solid #b9dcf5;color:#1c5a86;
  font-size:.82rem;padding:9px 14px;border-radius:8px;margin-bottom:18px;}


/* =============================================================================
   SEKCJA 4. NAGŁÓWEK APARTAMENTU (<section class="apt-header">, linia ~147)
   ========================================================================== */

/* .apt-header — biała karta z dużym zdjęciem + nazwą + paskiem dat pobytu.
   overflow:hidden bo zdjęcie ma być przycięte do zaokrąglonych rogów karty
   (border-radius idzie z var(--radius), żeby spójnie z innymi .card). */
.apt-header{background:var(--wlr-card);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;margin-bottom:22px;}

/* .apt-photo — duże zdjęcie apartamentu (linia ~148, „Apartament Chmielna I”).
   270px to optymalna wysokość: dość duża żeby zrobić wrażenie, ale nie
   wypycha sekcji formularza poniżej linii zgięcia. object-fit:cover —
   zdjęcia mogą mieć różne proporcje, więc kadrujemy do prostokąta.
   background to fallback (jasnoszary) na czas ładowania obrazka. */
.apt-photo{width:100%;height:270px;object-fit:cover;display:block;background:#d4dde3;}

/* .apt-body — padding wokół tytułu i paska dat, oddziela tekst od krawędzi
   karty i od zdjęcia powyżej. */
.apt-body{padding:20px 24px 22px;}

/* .apt-name — H1 z nazwą apartamentu (linia ~151).
   Niebieski (--wlr-blue) bo to jest „bohater” widoku — nazwa rezerwowanego
   apartamentu, ma wpadać w oko. */
.apt-name{font-size:1.7rem;font-weight:700;color:var(--wlr-blue);line-height:1.2;}

/* .apt-address — drugorzędna linijka z adresem („Warszawa, ul. Chmielna 35”).
   Stłumiony kolor, mniejszy font — pomocnicza informacja. */
.apt-address{color:var(--wlr-text-soft);font-size:.95rem;margin-top:3px;}

/* .stay-bar — pasek pod nazwą apartamentu (linia ~158) z 4 kafelkami:
   Zameldowanie / Wymeldowanie / Goście / Długość pobytu.
   flex-wrap żeby na mniejszych ekranach kafelki przeszły do drugiego rzędu
   zamiast się ściskać do nieczytelnych szerokości.
   Górna kreska oddziela pasek od opisu apartamentu. */
.stay-bar{display:flex;flex-wrap:wrap;gap:14px;margin-top:18px;padding-top:16px;
  border-top:1px solid var(--wlr-border-soft);}

/* .stay-item — pojedynczy kafelek paska (np. „Zameldowanie 7 lipca 2026”).
   flex:1 1 130px — każdy zajmuje równą część dostępnej szerokości,
   minimum 130px (zwija się do 1 lub 2 kolumn na mobile zamiast gnieść). */
.stay-item{flex:1 1 130px;}

/* .stay-label — etykieta nad wartością („ZAMELDOWANIE”).
   uppercase + letter-spacing — typowy „eyebrow label” design pattern,
   wizualnie odróżnia label od wartości (te są większe i pogrubione). */
.stay-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--wlr-text-soft);margin-bottom:2px;}

/* .stay-value — sama wartość kafelka („7 lipca 2026”, „2 osoby”, „4 noce”). */
.stay-value{font-size:1.02rem;font-weight:600;}


/* =============================================================================
   SEKCJA 5. KOD RABATOWY (<div class="promo-box">, linia ~202)
   ========================================================================== */

/* .promo-toggle — przycisk-link „Mam kod rabatowy ⌄” (linia ~203).
   Wygląda jak link (kolor --wlr-blue, brak ramki), ale jest <button> żeby
   miał klikalny obszar i obsługę a11y. inline-flex by szewron mógł stać
   obok tekstu bez wyrównywania na baseline. */
.promo-toggle{display:inline-flex;align-items:center;gap:4px;
  background:none;border:none;padding:0;font-family:inherit;
  color:var(--wlr-blue);font-weight:600;font-size:.9rem;cursor:pointer;}
.promo-toggle:hover{color:var(--wlr-blue-dark);}

/* .promo-chevron — strzałka ⌄ obok napisu (SVG, linia ~206).
   transition na transform — animuje obrót gdy zwijamy/rozwijamy sekcję. */
.promo-chevron{width:14px;height:14px;flex:0 0 auto;
  transition:transform .2s ease;}

/* Obrót szewronu o 180° gdy panel jest otwarty — czytelny sygnał wizualny.
   Stan trzymamy w aria-expanded, więc selektor jednocześnie a11y-friendly. */
.promo-toggle[aria-expanded="true"] .promo-chevron{transform:rotate(180deg);}

/* .promo-collapsible — zwijany kontener z polem inputu i przyciskiem
   „Zastosuj” (linia ~212). Domyślnie ukryty, klasa .open pokazuje go.
   Display:none/block (a nie max-height) — nie potrzebujemy animacji,
   chcemy „twarde” pokazanie/schowanie, mniej kodu JS. */
.promo-collapsible{display:none;margin-top:8px;}
.promo-collapsible.open{display:block;}

/* .promo-row — flex z polem + przyciskiem (linia ~213).
   stretch — input i przycisk mają tę samą wysokość, bez ręcznego ustawiania. */
.promo-row{display:flex;gap:8px;align-items:stretch;}

/* Input kodu rabatowego (linia ~214) — kody są pisane wielkimi literami
   (np. „LATO15”), więc wymuszamy uppercase + minimalny letter-spacing
   dla lepszej czytelności krótkich kodów. */
.promo-row input{flex:1;text-transform:uppercase;letter-spacing:.03em;}

/* Placeholder „Wpisz kod rabatowy” MA być pisany normalnie — bez uppercase
   wprowadzonego wyżej. Bez tego placeholder by krzyczał kapitalikami. */
.promo-row input::placeholder{text-transform:none;letter-spacing:normal;}

/* .btn-promo — przycisk „Zastosuj” obok inputu kodu (linia ~215).
   Wariant „outline” (białe tło, niebieska ramka) — drugorzędny względem
   głównego CTA „Zarezerwuj i zapłać”. flex:0 0 auto, żeby tekst „Zastosuj”
   nie był ściskany przez flex:1 inputu obok. */
.btn-promo{flex:0 0 auto;white-space:nowrap;padding:0 18px;
  border:1px solid var(--wlr-blue);background:#fff;color:var(--wlr-blue);
  font-weight:600;font-size:.88rem;border-radius:7px;cursor:pointer;
  transition:background .15s,color .15s;}
.btn-promo:hover{background:var(--wlr-blue);color:#fff;}

/* cursor:progress sygnalizuje że trwa walidacja kodu po stronie serwera. */
.btn-promo:disabled{opacity:.55;cursor:progress;}

/* .promo-status — linijka pod inputem (linia ~219): „kod nieprawidłowy”
   lub „kod zastosowany”. min-height:1em żeby kontener nie skakał gdy
   tekstu jeszcze nie ma — formularz nie podskakuje przy aktualizacji. */
.promo-status{font-size:.82rem;margin-top:7px;min-height:1em;display:none;}
.promo-status.show{display:block;}
.promo-status.ok{color:var(--wlr-green);}
.promo-status.fail{color:var(--wlr-error);}

/* .promo-applied — kontener pokazywany ZAMIAST inputu, gdy kod jest już
   zastosowany (linia ~221). Pokazuje „pigułkę” z kodem + krzyżyk do usunięcia.
   Display:flex by „×” wyrównać na środku pionowo z pigułką. */
.promo-applied{display:none;margin-top:7px;align-items:center;gap:8px;
  font-size:.85rem;}
.promo-applied.show{display:flex;}

/* .promo-pill — zielona pigułka „LATO15 · -15%” (linia ~222).
   Zielony = sukces, kod działa. border-radius:20px = pełne zaokrąglenie. */
.promo-pill{display:inline-flex;align-items:center;gap:6px;
  background:var(--wlr-green-light);color:var(--wlr-green);font-weight:700;
  padding:4px 10px;border-radius:20px;}

/* .promo-remove — „×” do usunięcia zastosowanego kodu (linia ~225).
   Stłumiony szary domyślnie, czerwony przy hover — afordancja
   „akcji destrukcyjnej”. */
.promo-remove{background:none;border:none;color:var(--wlr-text-soft);
  cursor:pointer;font-size:1rem;line-height:1;padding:0 2px;}
.promo-remove:hover{color:var(--wlr-error);}


/* =============================================================================
   SEKCJA 6. PUDEŁKO Z CENĄ (<div class="price-box">, linia ~231)
   ========================================================================== */

/* .price-box — wyróżnione jasnoniebieskie pudełko pod kodem rabatowym,
   z ceną główną PLN + szacunkami w innych walutach + linijką BTC.
   --wlr-blue-light wyraźnie wyróżnia tę sekcję od reszty białej karty. */
.price-box{margin-top:14px;padding:16px 18px;background:var(--wlr-blue-light);
  border-radius:var(--radius);}

/* .price-row — flex z dwoma kolumnami: cena główna (lewo) + szacunki
   walutowe (prawo). flex-wrap pozwala szacunkom zjechać pod cenę na
   wąskich ekranach. align-items:flex-start, bo .price-was (przekreślona)
   musi zostać u góry razem z ceną main, gdy obie są w tej samej kolumnie. */
.price-row{display:flex;justify-content:space-between;align-items:flex-start;
  gap:16px;flex-wrap:wrap;}

/* .price-main — DUŻA cena w PLN (linia ~237). Niebieski + bold +
   ~32px — to najbardziej widoczna liczba w sekcji, użytkownik musi ją
   natychmiast dostrzec. */
.price-main{font-size:1.95rem;font-weight:700;color:var(--wlr-blue);line-height:1.1;}

/* .price-was — przekreślona stara cena pokazywana NAD .price-main,
   gdy zastosowano rabat (linia ~234). Domyślnie display:none — pokazuje
   się dopiero po dodaniu .show klasą z JS. */
.price-was{display:none;font-size:1rem;font-weight:600;color:var(--wlr-text-faint);
  text-decoration:line-through;margin-bottom:2px;}
.price-was.show{display:block;}

/* .price-est — prawa kolumna z szacunkami w EUR/USD (linia ~241).
   align-items:flex-end + text-align:right — szacunki wyrównane do prawej
   krawędzi pudełka, by „nie konkurowały” wizualnie z ceną główną po lewej. */
.price-est{display:flex;flex-direction:column;align-items:flex-end;text-align:right;}

/* .price-est-item — pojedynczy szacunek („≈ 750,59 €”, linia ~242).
   Stłumiony kolor — to tylko informacja pomocnicza, główną walutą jest PLN. */
.price-est-item{font-size:.95rem;color:var(--wlr-text-faint);line-height:1.5;}

/* W „≈ 750,59 €” liczba jest w <b>, ale CELOWO nie chcemy żeby była ciemna —
   sekcja jako całość ma być stłumiona. Tylko lekko gruba dla hierarchii. */
.price-est-item b{font-weight:600;color:var(--wlr-text-faint);}

/* .price-btc-line — osobny rząd pod cenami PLN/EUR/USD z kwotą BTC
   (linia ~250). Pomarańczowy (--wlr-amber) bo to akcent „Bitcoin”
   spójny z logo BTC i z opcją płatności BTC dalej w formularzu. */
.price-btc-line{display:flex;align-items:center;gap:6px;margin-top:8px;
  color:var(--wlr-amber);}

/* .price-btc-ico — okrągłe logo Bitcoin (SVG, linia ~251). flex:0 0 auto
   żeby nie rozjechało się gdy tekst obok się zawija. */
.price-btc-ico{width:17px;height:17px;flex:0 0 auto;}

/* Liczba BTC „0,011318 BTC” w pogrubieniu — kluczowa wartość w tej linii. */
.price-btc-line b{font-weight:600;color:var(--wlr-amber);}

/* „≈ 2 884,50 PLN” — wartość BTC przeliczona na PLN (linia ~258).
   Stłumiona, bo to tylko orientacyjna informacja, nie sama kwota płatności. */
.price-btc-pln{color:var(--wlr-text-faint);font-size:.95rem;}
.price-btc-pln b{font-weight:600;color:var(--wlr-text-faint);}

/* .badge-discount — zielona pigułka „-10%” obok ceny BTC (linia ~261).
   Mocny zielony + biała czcionka + delikatny shadow = wyraźna „naklejka”
   informująca o korzyści finansowej z wyboru BTC. */
.badge-discount{background:var(--wlr-green);color:#fff;font-size:.72rem;
  font-weight:800;padding:2px 8px;border-radius:20px;letter-spacing:.02em;
  box-shadow:0 2px 5px rgba(43,157,89,.3);}


/* =============================================================================
   SEKCJA 7. KARTY I FORMULARZ (.card — generyczny kontener białej karty)
   ========================================================================== */

/* .card — biała karta z cieniem, wspólna baza dla sekcji:
   - „Dane gościa” (linia ~271)
   - „Sposób płatności” (linia ~530)
   - sekcja akceptacji regulaminu (linia ~641, w tym samym .card)
   Cień (--shadow) lekko unosi kartę nad jasnoszarym tłem strony. */
.card{background:var(--wlr-card);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:24px 24px 26px;margin-bottom:22px;}

/* .card-title — H2 wewnątrz karty („Dane gościa”, „Sposób płatności”). */
.card-title{font-size:1.15rem;font-weight:700;margin-bottom:4px;}

/* .card-sub — podtytuł pod nagłówkiem („Potrzebujemy tylko tego, co konieczne…”).
   Stłumiony kolor — to delikatna instrukcja, nie powinna konkurować z tytułem. */
.card-sub{font-size:.9rem;color:var(--wlr-text-soft);margin-bottom:18px;}

/* .grid — dwukolumnowy układ pól formularza (linia ~279 HTML i kolejne).
   2 kolumny dla większości pól (imię/nazwisko, e-mail/telefon itd.),
   pole z .full zajmuje całą szerokość. Na mobile (media query niżej)
   spada do 1 kolumny. */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;}

/* .field — kontener pojedynczego pola formularza (label + input).
   flex-direction:column trzyma label nad inputem (wymóg typowego layoutu
   formularza WCAG — label przed kontrolką). */
.field{display:flex;flex-direction:column;}

/* .field.full — pole zajmujące cały rząd grida (np. „Uwagi”, linia ~362).
   1/-1 = od pierwszej do ostatniej linii kolumny w grid. */
.field.full{grid-column:1/-1;}

/* label — etykieta nad polem („Imię”, „Nazwisko” …).
   font-weight:600 by była dobrze odróżnialna od samego inputa. */
label{font-size:.85rem;font-weight:600;margin-bottom:5px;}

/* .req — czerwona gwiazdka „*” przy polach obowiązkowych
   (np. <span class="req">*</span> przy „Imię”). */
label .req{color:var(--wlr-error);margin-left:2px;}

/* Wspólny styl WSZYSTKICH input/select/textarea w formularzu.
   Trzymamy jeden spójny look: 1px ramka, lekko zaokrąglona, biała.
   transition na border-color i box-shadow — gładkie focusowanie. */
input,select,textarea{font-family:inherit;font-size:.95rem;padding:10px 12px;
  border:1px solid var(--wlr-border);border-radius:7px;background:#fff;
  color:var(--wlr-text);transition:border-color .15s,box-shadow .15s;width:100%;}

/* Focus — niebieska ramka + miękki niebieski „glow” (3px rgba).
   Glow zastępuje brzydki domyślny outline przeglądarki, ale zachowuje
   widoczność focusu dla a11y. */
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--wlr-blue);
  box-shadow:0 0 0 3px rgba(30,170,224,.15);}

/* Pole zablokowane (np. e-mail z konta zalogowanego) — czytelne wyszarzenie
   zamiast domyślnego brzydkiego stylu Chrome/Safari. opacity:1 by Safari
   nie nadkładało dodatkowej przezroczystości. */
input:disabled,select:disabled,textarea:disabled{background:#f6f9fb;
  color:var(--wlr-text-soft);cursor:not-allowed;opacity:1;}

/* textarea — np. „Uwagi do faktury” (linia ~451). resize:vertical
   żeby user mógł sobie powiększyć w pionie, ale NIE w poziomie
   (rozjechałby layout grida). */
textarea{resize:vertical;min-height:70px;}

/* .field-hint — drobna podpowiedź pod polem (np. wyjaśnienie, dlaczego
   e-mail jest zablokowany dla zalogowanego użytkownika). */
.field-hint{font-size:.78rem;color:var(--wlr-text-soft);margin-top:6px;line-height:1.4;}

/* .field-error — czerwony komunikat walidacji POD polem (gdy pole jest błędne). */
.field-error{font-size:.78rem;color:var(--wlr-error,#d3434b);font-style:italic;margin-top:5px;line-height:1.35;}

/* .form-errors — box błędów globalnych formularza (np. niespójne daty) na górze. */
.form-errors{background:#fdecea;border:1px solid #f5c6c2;color:var(--wlr-error);
             border-radius:8px;padding:10px 14px;margin-bottom:16px;}

/* .time-picker — prosty selektor godziny (zastąpił zawodny <clock-timepicker>).
   Readonly input + rozwijana lista godzin co 15 min. */
.time-picker{position:relative;}
.time-picker .time-picker-input{cursor:pointer;background:#fff;}
.time-picker-pop{
  position:absolute; z-index:60; top:calc(100% + 4px); left:0; right:0;
  max-height:220px; overflow-y:auto; background:#fff;
  border:1px solid #d4dde4; border-radius:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.12); padding:4px 0;
}
.time-picker-opt{padding:8px 14px; cursor:pointer; font-size:.95rem;}
.time-picker-opt:hover,.time-picker-opt.sel{background:#e8f6fc;}
.time-picker-opt.sel{font-weight:600;}
.form-errors p{margin:0;}


/* =============================================================================
   SEKCJA 8. POLA TYPU „WYBÓR KRAJU” — telefon i kraj zamieszkania
   (.country-field, linia ~302 HTML — Telefon; linia ~325 — Kraj zamieszkania)
   ========================================================================== */

/* .country-field — wrapper dla całego custom-selecta kraju.
   position:relative bo wewnątrz dropdown (.country-pop) jest pozycjonowany
   absolutnie i musi „przyssać się” do triggera. */
.country-field{position:relative;}

/* .country-trigger — przycisk, który UDAJE <select> (linia ~304, ~326).
   Robimy własny komponent zamiast natywnego <select>, bo potrzebujemy
   wyświetlać FLAGĘ SVG obok nazwy kraju — czego natywny select nie umie.
   Wygląd 1:1 z input/select, żeby wpasował się w resztę formularza. */
.country-trigger{display:flex;align-items:center;gap:8px;width:100%;
  font-family:inherit;font-size:.95rem;padding:10px 12px;cursor:pointer;
  border:1px solid var(--wlr-border);border-radius:7px;background:#fff;
  color:var(--wlr-text);text-align:left;
  transition:border-color .15s,box-shadow .15s;}

/* Focus triggera — taki sam jak na input/select dla spójności wizualnej. */
.country-trigger:focus{outline:none;border-color:var(--wlr-blue);
  box-shadow:0 0 0 3px rgba(30,170,224,.15);}

/* Label wewnątrz triggera — flex:1 by zajął wolne miejsce między flagą
   (po lewej) a caret (po prawej). */
.country-trigger .label{flex:1;}

/* Gdy nie wybrano kraju, label wyświetla tekst „Wybierz kraj…” —
   musi mieć kolor placeholderu, żeby user wiedział, że to nie jest
   właściwa wartość. */
.country-trigger .label.placeholder{color:#9aa3ae;}

/* .caret — strzałka „v” po prawej w triggerze. Robiona CSS-em (border-trick),
   żeby nie ładować dodatkowego SVG dla tak prostej ozdoby. */
.country-trigger .caret{width:0;height:0;flex:0 0 auto;
  border-left:4px solid transparent;border-right:4px solid transparent;
  border-top:5px solid var(--wlr-text-soft);}

/* .phone-wrap — specjalny wariant dla pola telefonu (linia ~303 HTML).
   Trigger (kraj + kierunkowy) PRZYKLEJONY do inputu numeru przez wspólną
   ramkę — wygląda jak jedno spójne pole, choć są to dwie osobne kontrolki. */
.phone-wrap{display:flex;}

/* Trigger w .phone-wrap — ZAOKRĄGLONY TYLKO Z LEWEJ (right=0), bo z prawej
   przykleja się do inputu numeru telefonu. border-right:none żeby nie było
   podwójnej kreski na styku trigger|input. */
.phone-wrap .country-trigger{width:auto;border-radius:7px 0 0 7px;
  border-right:none;padding-right:10px;white-space:nowrap;}

/* „+48” itp. obok flagi w triggerze — stłumiony kolor, sam kierunkowy
   nie jest „treścią” pola, tylko jego częścią. */
.phone-wrap .dial{color:var(--wlr-text-soft);font-size:.92rem;}

/* Input numeru telefonu — ZAOKRĄGLONY TYLKO Z PRAWEJ (left=0),
   przylega do triggera po lewej. flex:1 zajmuje pozostałe miejsce w rzędzie. */
.phone-wrap .phone-number{flex:1;border-radius:0 7px 7px 0;}

/* .country-pop — dropdown z listą krajów + wyszukiwarką (linia ~308 / ~327).
   position:absolute pod triggerem (margin-top:4px), z-index:60 by nie ginął
   pod innymi kartami formularza. Mocniejszy shadow niż w karcie, bo
   dropdown ma się wizualnie „odklejać” od strony. */
.country-pop{display:none;position:absolute;z-index:60;left:0;right:0;
  margin-top:4px;background:#fff;border:1px solid var(--wlr-border);
  border-radius:8px;box-shadow:0 10px 30px rgba(40,55,75,.2);overflow:hidden;}
.country-pop.open{display:block;}

/* .country-search — pole wyszukiwania na górze popupu (linia ~309, ~328).
   Bez ramki, tylko dolna kreska — wygląda jak „zlepione” z listą poniżej,
   nie jak oddzielny input. */
.country-search{width:100%;border:none;border-bottom:1px solid var(--wlr-border-soft);
  padding:10px 12px;font-family:inherit;font-size:.92rem;}

/* Bez outline, bo focus jest oczywisty (cały popup się otworzył dopiero co). */
.country-search:focus{outline:none;}

/* .country-list — scrollowalna lista krajów (linia ~311, ~330).
   max-height:240px = ~5–6 wierszy widocznych, reszta przez scroll —
   dropdown nie zasłania całego viewportu. */
.country-list{max-height:240px;overflow-y:auto;}

/* .country-item — pojedynczy wiersz z krajem (flaga + nazwa + opcjonalnie
   kierunkowy). flex by ułożyć ikonę / tekst / kierunkowy poziomo. */
.country-item{display:flex;align-items:center;gap:9px;padding:8px 12px;
  cursor:pointer;font-size:.92rem;}

/* Hover oraz aktywny (highlighted) item — jasnoniebieskie tło,
   spójne z kolorem brandu. Klasa .active pozwala podświetlić aktualnie
   nawigowany element strzałkami klawiatury. */
.country-item:hover,.country-item.active{background:var(--wlr-blue-light);}

/* Nazwa kraju — flex:1, zajmuje wolne miejsce między flagą a kierunkowym. */
.country-item .cname{flex:1;}

/* Kierunkowy obok nazwy kraju w liście (np. „+48”). Stłumiony — to dodatkowa
   informacja, nie sama nazwa kraju. */
.country-item .cdial{color:var(--wlr-text-soft);font-size:.85rem;}

/* Komunikat „brak wyników” gdy filtr w .country-search nic nie zwraca. */
.country-empty{padding:12px;text-align:center;color:var(--wlr-text-soft);
  font-size:.88rem;}

/* WSPÓLNY styl flagi w triggerze i w wierszach listy — proporcja 22×16
   pasuje do prostokątnych flag SVG. Box-shadow zamiast border, bo flagi
   mogą mieć białe paski przy krawędzi (np. flaga Polski) — bez delikatnej
   kreski rozmywałyby się z tłem. */
.country-trigger .flag,.country-item .flag{width:22px;height:16px;flex:0 0 auto;
  border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.08);object-fit:cover;}


/* =============================================================================
   SEKCJA 9. TOOLTIP „?” PRZY ETYKIECIE POLA
   (.label-row — np. przy „Przewidywana godzina przyjazdu”, linia ~335 HTML)
   ========================================================================== */

/* .label-row — wrapper łączący <label> + niebieskie kółeczko „?”.
   flex by „?” siedział obok labela na tej samej linii. */
.label-row{display:flex;align-items:center;gap:6px;margin-bottom:5px;}

/* Reset marginesu labela wewnątrz .label-row — domyślnie label ma
   margin-bottom:5px, ale tutaj odstęp zapewnia już .label-row. */
.label-row label{margin:0;}

/* .tip-ico — niebieskie kółko z „?” w środku (linia ~339, ~353, ~403).
   Bootstrapowy tooltip podpina się przez data-bs-toggle="tooltip".
   cursor:help — kursor pomocy, sygnalizuje że to nie jest klikalny przycisk
   tylko źródło dodatkowej informacji. Font Georgia bo serif „?” wygląda
   bardziej elegancko w kółeczku niż Open Sans. */
.tip-ico{display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;border-radius:50%;background:var(--wlr-blue);
  color:#fff;font-size:.7rem;font-weight:700;cursor:help;flex:0 0 auto;
  font-family:Georgia,serif;}
.tip-ico:hover{background:var(--wlr-blue-dark);}


/* =============================================================================
   SEKCJA 10. CUSTOM TIMEPICKER (clock-timepicker — godzina przyjazdu/wyjazdu)
   (linia ~344 HTML: <clock-timepicker format="HH:mm" precision="5">)
   ========================================================================== */

/* Zewnętrzny web component <clock-timepicker> — przekazujemy mu nasz
   niebieski akcent przez jego customową zmienną, żeby pasował do motywu WLR.
   display:block + width:100% — wpasowuje się jak każdy inny .field. */
clock-timepicker{
  --clock-timepicker-accent-color:var(--wlr-blue);
  display:block;width:100%;
}

/* Input WEWNĄTRZ timepickera — kopiujemy tu styl globalnego input
   (wcześniej w sekcji 7), bo Shadow DOM komponentu nie dziedziczy
   stylów hosta. cursor:pointer — bo kliknięcie otwiera zegar. */
clock-timepicker input{
  font-family:inherit;font-size:.95rem;padding:10px 12px;
  border:1px solid var(--wlr-border);border-radius:7px;background:#fff;
  color:var(--wlr-text);width:100%;cursor:pointer;
}
clock-timepicker input:focus{outline:none;border-color:var(--wlr-blue);
  box-shadow:0 0 0 3px rgba(30,170,224,.15);}


/* =============================================================================
   SEKCJA 11. SEKCJA „DOKUMENT KSIĘGOWY” — faktura VAT / rachunek / brak
   (.doc-toggle, linia ~371 HTML)
   ========================================================================== */

/* .doc-toggle — kontener całej sekcji wyboru typu dokumentu.
   Górna kreska oddziela ją od pól danych gościa powyżej. */
.doc-toggle{margin-top:18px;padding-top:16px;border-top:1px solid var(--wlr-border-soft);}

/* .doc-title — drobny nagłówek „Dokument za pobyt” (linia ~372).
   Nie używamy <h3>, bo to bardziej etykieta niż osobny temat — dlatego
   styl jak label, nie jak card-title. */
.doc-toggle .doc-title{font-size:.85rem;font-weight:600;margin-bottom:10px;}

/* .doc-choice — pionowa lista 3 radio buttonów (linia ~375). */
.doc-choice{display:flex;flex-direction:column;gap:9px;}

/* .radio-row — pojedynczy wiersz radio + label.
   align-items:flex-start — gdy label ma 2 linie, radio zostaje przy
   PIERWSZEJ linii, nie skacze na środek. */
.doc-choice .radio-row{display:flex;align-items:flex-start;gap:9px;}

/* Radio button — 17px (dobry kompromis dotyk/desktop), accent-color
   wymusza niebieski w nowoczesnych przeglądarkach zamiast systemowego.
   margin-top:2px — wizualne wyrównanie z baseline tekstu. */
.doc-choice input[type=radio]{width:17px;height:17px;margin-top:2px;
  accent-color:var(--wlr-blue);flex:0 0 auto;cursor:pointer;}

/* Label przy radio — NIE pogrubiony (override globalnego label),
   bo wewnątrz jest <b>faktura VAT</b> dla wyróżnienia ważnej części,
   reszta tekstu ma być normalna. */
.doc-choice label{margin:0;font-weight:400;font-size:.9rem;cursor:pointer;}

/* .doc-panel — szary panel z polami do faktury lub rachunku
   (linia ~397 dla faktury, ~495 dla rachunku).
   Pojawia się dopiero po wybraniu odpowiedniego radio (.open z JS).
   Jasnoszare tło #f6f9fb wizualnie „wcina” panel w formularz,
   pokazując że to pod-sekcja zależna od wyboru. */
.doc-panel{display:none;margin-top:16px;padding:18px;background:#f6f9fb;
  border:1px solid var(--wlr-border-soft);border-radius:var(--radius);}
.doc-panel.open{display:block;}

/* Grid w .doc-panel ma mniejszy margin-top niż domyślnie — siedzi pod
   polem NIP, które ma własny margin-bottom; bez resetu byłby podwójny odstęp. */
.doc-panel .grid{margin-top:4px;}

/* .ksef-toggle — pod-sekcja KSeF wewnątrz panelu faktury (linia ~456).
   Przerywana kreska zamiast solid — niższa hierarchia („pod-pod-sekcja”
   wewnątrz panelu, który już sam jest pod-sekcją). */
.ksef-toggle{margin-top:14px;padding-top:14px;border-top:1px dashed var(--wlr-border);}

/* .ksef-panel — dodatkowe pola odbiorcy KSeF (linia ~463).
   Pokazywane po zaznaczeniu checkboxa #wantKsef. */
.ksef-panel{display:none;margin-top:14px;}
.ksef-panel.open{display:block;}

/* .ksef-switches / .wlr-switch — przełączniki (toggle) JST i GV w sekcji KSeF.
   Ukryty checkbox + .wlr-switch-slider stylizowany na suwak. */
.ksef-switches{display:flex;flex-direction:column;gap:12px;margin-top:16px;}
.wlr-switch{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:.9rem;}
.wlr-switch input{position:absolute;opacity:0;width:0;height:0;}
.wlr-switch-slider{position:relative;flex:0 0 auto;width:40px;height:22px;border-radius:22px;
  background:#cdd7df;transition:background .18s;}
.wlr-switch-slider::before{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;
  border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .18s;}
.wlr-switch input:checked + .wlr-switch-slider{background:var(--wlr-blue,#1eaae0);}
.wlr-switch input:checked + .wlr-switch-slider::before{transform:translateX(18px);}
.wlr-switch input:focus-visible + .wlr-switch-slider{box-shadow:0 0 0 3px rgba(30,170,224,.3);}
.wlr-switch-label{display:flex;flex-direction:column;line-height:1.2;}
.wlr-switch-label small{color:var(--wlr-text-soft,#8aa0b0);font-size:.76rem;}

/* .nip-row — input NIP + przycisk „Wczytaj dane” (linia ~408).
   Ten sam pattern co .promo-row: pole + przycisk obok. */
.nip-row{display:flex;gap:8px;align-items:stretch;}
.nip-row input{flex:1;}

/* .btn-gus — przycisk „Wczytaj dane” pobierający dane firmy z GUS po NIP.
   Identyczny wygląd jak .btn-promo („outline” niebieski) — żeby UI było
   spójne. */
.btn-gus{flex:0 0 auto;white-space:nowrap;padding:0 16px;border:1px solid var(--wlr-blue);
  background:#fff;color:var(--wlr-blue);font-weight:600;font-size:.88rem;
  border-radius:7px;cursor:pointer;transition:background .15s,color .15s;}
.btn-gus:hover{background:var(--wlr-blue);color:#fff;}

/* .gus-status — komunikat pod NIP („pobieram…”, „nie znaleziono”). */
.gus-status{font-size:.8rem;margin-top:6px;min-height:1em;}
/* Kolory stanów GUS (JS ustawia klasę is-error / is-ok / is-loading). */
.gus-status.is-error{color:var(--wlr-error,#d3434b);font-weight:600;}   /* błąd → czerwony */
.gus-status.is-ok{color:var(--wlr-green,#2b9d59);font-weight:600;}      /* sukces → zielony */
.gus-status.is-loading{color:#8aa0b0;font-style:italic;}               /* w toku → szary */


/* =============================================================================
   SEKCJA 12. PŁATNOŚCI — pionowa lista metod (redirect-first)
   (.pay-methods / .pay-option, linia ~538 HTML)
   4 opcje: „Płatność online” (P24, redirect) / Przelew tradycyjny / Bitcoin / Gotówka.
   Lista pionowa zamiast siatki kafelków — czytelniej, mniej „zabałaganione”.
   ========================================================================== */

/* .pay-methods — pionowa lista opcji (kolumna z odstępem). */
.pay-methods{display:flex;flex-direction:column;gap:10px;}

/* .pay-option — wiersz metody (klikalny <label>).
   Układ poziomy: [radio] [ikona] [treść 1fr] [aside].
   border:2px — wyraźna zmiana koloru przy .selected. */
.pay-option{display:flex;align-items:center;gap:14px;
  border:2px solid var(--wlr-border);border-radius:var(--radius);
  padding:14px 16px;cursor:pointer;background:#fff;
  transition:border-color .15s,box-shadow .15s,background .15s;}

/* Hover — niebieska ramka + leciutkie tło: sygnał „klikalne”. */
.pay-option:hover{border-color:var(--wlr-blue);background:#fafdff;}

/* Selected — niebieska ramka + glow (mocny sygnał wyboru). */
.pay-option.selected{border-color:var(--wlr-blue);box-shadow:0 0 0 3px rgba(30,170,224,.13);}

/* .pm-radio — custom „radio” po lewej. Pusty okrąg; po wyborze wypełniony
   niebieską kropką (box-shadow inset). flex:0 0 auto = stały rozmiar. */
.pm-radio{flex:0 0 auto;width:20px;height:20px;border-radius:50%;
  border:2px solid var(--wlr-border);transition:border-color .15s,box-shadow .15s;}
.pay-option.selected .pm-radio{border-color:var(--wlr-blue);
  box-shadow:inset 0 0 0 4px var(--wlr-blue);}

/* .pm-icon — ikona metody (SVG). Stały kwadrat 40×40, zawartość wyśrodkowana.
   Wszystkie 4 ikony to KOLOROWE KOŁA z białym symbolem (styl Bitcoina):
   niebieskie = karta (online), szare = przelew tradycyjny (budynek banku),
   pomarańczowe = Bitcoin, zielone = banknot (gotówka).
   Koła są wizualnie zbalansowane (środek masy = środek geometryczny) → znika
   efekt „pływania”, który dawały lekkie ikony line-art mimo idealnego centrowania.
   Jednolite 38px = pełna spójność. */
.pm-icon{flex:0 0 auto;width:40px;height:40px;display:flex;align-items:center;
  justify-content:center;}
.pm-icon svg{width:38px;height:38px;display:block;}

/* .pm-body — środek wiersza: tytuł + podtytuł. flex:1 rozpycha i spycha
   .pm-aside do prawej. min-width:0 pozwala długiemu podtytułowi się zawinąć. */
.pm-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.pm-title{font-size:.95rem;font-weight:700;color:var(--wlr-text);}
.pm-sub{font-size:.78rem;color:var(--wlr-text-soft);line-height:1.4;}

/* .pm-aside — prawa strona wiersza (logo P24 / badge rabatu). */
.pm-aside{flex:0 0 auto;display:flex;align-items:center;}

/* Wariant BTC — selected daje amber zamiast niebieskiego (spójne z linią BTC). */
.pay-option.btc.selected{border-color:var(--wlr-amber);box-shadow:0 0 0 3px rgba(232,146,15,.15);}
.pay-option.btc.selected .pm-radio{border-color:var(--wlr-amber);box-shadow:inset 0 0 0 4px var(--wlr-amber);}

/* .badge-discount — pigułka „−10%” w pm-aside (inline, nie absolutna). */
.badge-discount{display:inline-block;background:var(--wlr-green);color:#fff;
  font-size:.8rem;font-weight:800;padding:4px 11px;border-radius:20px;letter-spacing:.02em;}

/* .p24-logo — STYLIZOWANY napis „Przelewy24” w pm-aside (placeholder na
   oficjalne logo). p24-name ciemny + p24-badge „24” w czerwieni marki P24. */
.p24-logo{display:inline-flex;align-items:center;font-weight:800;font-size:.9rem;
  letter-spacing:-.01em;}
.p24-name{color:var(--wlr-text);}
.p24-badge{background:#c5283d;color:#fff;border-radius:6px;padding:1px 5px;margin-left:2px;}

/* .p24-logo-img — prawdziwe logo Przelewy24 (obrazek) w kafelku „Płatność online”.
   height:26px → logo poziome, szerokość auto (proporcjonalnie). */
.p24-logo-img{height:26px;width:auto;display:block;}


/* =============================================================================
   SEKCJA 12b. NOTA O PRZEKIEROWANIU (.redirect-note, linia ~605 HTML)
   Rozwijana pod listą metod gdy wybrana „Płatność online” (Przelewy24).
   Mechanika .open jak w #btcPanel / #cashPanel (display:none → block).
   ========================================================================== */

/* .redirect-note — kontener noty. Domyślnie ukryty; .open => widoczny.
   Subtelne tło + ramka, spokojny ton (zaufanie). */
.redirect-note{display:none;margin-top:14px;padding:14px 16px;
  border:1px solid var(--wlr-border-soft);background:#f6f9fb;border-radius:var(--radius);}
.redirect-note.open{display:block;}

/* .rn-head — górny wiersz: „Bezpieczne przekierowanie” + chip-y metod.
   flex-wrap dla wąskich ekranów. */
.rn-head{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;}

/* .rn-secure — „Bezpieczne przekierowanie” z kłódką, zielone. */
.rn-secure{display:inline-flex;align-items:center;gap:6px;font-size:.86rem;
  font-weight:700;color:var(--wlr-green);}
.rn-secure svg{width:18px;height:18px;flex:0 0 auto;}

/* .rn-chips — rząd ikon metod dostępnych po przekierowaniu.
   margin-left:auto dosuwa do prawej krawędzi nagłówka; flex-wrap zawija
   na wąskich ekranach. */
.rn-chips{display:inline-flex;align-items:center;gap:6px;margin-left:auto;flex-wrap:wrap;}

/* .pay-icon — ikona metody płatności (gotowy plik images/icons/icon_przelewy24_*.svg).
   Pliki są kwadratowe 36×36 z własnym białym tłem i kolorowym logo marki.
   Dodajemy cienką (1px) niebieską ramkę — dominujący kolor strony (--wlr-blue) —
   z zaokrągleniem 7px dopasowanym do zaokrąglonych rogów kafelków.
   box-sizing:border-box, żeby ramka nie zwiększała łącznej wysokości. */
.pay-icon{height:30px;width:auto;display:block;box-sizing:border-box;
  border:1px solid var(--wlr-blue);border-radius:7px;}

/* .rn-text — nota wyjaśniająca (przekierowanie, PCI DSS, brak przechowywania kart). */
.rn-text{margin:10px 0 0;font-size:.8rem;color:var(--wlr-text-soft);line-height:1.5;}

/* .trust-note — nota wyjaśniająca pod wierszem (szyfrowanie, PCI DSS, brak
   przechowywania kart). Drobna, wyszarzona, z ikoną tarczy; line-height
   dla czytelności dłuższego zdania. */
.trust-note{display:flex;align-items:flex-start;gap:8px;margin:12px 0 0;
  font-size:.8rem;color:var(--wlr-text-soft);line-height:1.5;}
.trust-note svg{width:16px;height:16px;flex:0 0 auto;color:var(--wlr-green);margin-top:1px;}


/* =============================================================================
   SEKCJA 13. PANEL ROZLICZENIA BTC (.btc-panel, linia ~592 HTML)
   Otwiera się dopiero po wybraniu metody Bitcoin.
   ========================================================================== */

/* .btc-panel — kontener panelu z kalkulacją + adresem BTC + QR.
   Pomarańczowa ramka — sygnalizuje że to sekcja powiązana z BTC.
   overflow:hidden, bo head (.btc-panel-head) ma własne tło, które musi
   być przycięte do zaokrąglonego górnego rogu panelu. */
.btc-panel{display:none;margin-top:18px;border:1px solid var(--wlr-amber);
  border-radius:var(--radius);overflow:hidden;}
.btc-panel.open{display:block;}

/* .btc-panel-head — nagłówek panelu z ikoną BTC + tytułem (linia ~593).
   Jasnoamberowe tło wizualnie „nagłówkuje” sekcję. */
.btc-panel-head{background:var(--wlr-amber-light);padding:13px 16px;
  display:flex;align-items:center;gap:8px;border-bottom:1px solid #f0dcb4;}

/* Ikona BTC w nagłówku (SVG, linia ~594). */
.btc-panel-head .ico{width:22px;height:22px;flex:0 0 auto;}

/* „Płatność Bitcoinem — rabat 10%” — tekst nagłówka. */
.btc-panel-head b{font-size:.95rem;}

/* .btc-panel-body — białe wnętrze panelu pod nagłówkiem. */
.btc-panel-body{padding:16px;}

/* .btc-calc — sekcja kalkulacji „Do zapłaty: 0,011318 BTC” (linia ~603). */
.btc-calc{font-size:.92rem;}

/* Wiersz kalkulacji — etykieta po lewej, kwota po prawej. */
.btc-calc .row{display:flex;justify-content:space-between;padding:4px 0;}

/* Wiersz „rabat -10%” — zielony, podkreśla korzyść. */
.btc-calc .row.discount{color:var(--wlr-green);font-weight:600;}

/* Wiersz total („Do zapłaty”) — większy, pogrubiony, oddzielony górną kreską. */
.btc-calc .row.total{border-top:1px solid var(--wlr-border-soft);margin-top:6px;
  padding-top:9px;font-weight:700;font-size:1.05rem;}

/* Wariant total bez górnej kreski — używany gdy total jest na samej górze
   panelu (linia ~604 HTML: <div class="row total no-border">).
   Brak kreski + brak margin-top, żeby nie odsuwał się od krawędzi. */
.btc-calc .row.total.no-border{border-top:none;margin-top:0;padding-top:0;}

/* .btc-amount-big — sama liczba BTC w wierszu total (linia ~609).
   Większa i pomarańczowa, bo to KLUCZOWA liczba całej sekcji. */
.btc-amount-big{color:var(--wlr-amber);font-size:1.35rem;}

/* .btc-pay-area — dolna część panelu z QR-kodem + adresem + kopiuj
   (linia ~615). flex by QR był po lewej, adres+przycisk po prawej. */
.btc-pay-area{display:flex;gap:16px;margin-top:14px;padding-top:14px;
  border-top:1px solid var(--wlr-border-soft);}

/* .btc-qr — kwadrat 130×130 z QR-kodem do zapłaty (linia ~616).
   flex:0 0 auto — NIE zwęża się, nawet jak adres po prawej jest długi. */
.btc-qr{width:130px;height:130px;flex:0 0 auto;border:1px solid var(--wlr-border);
  border-radius:8px;background:#fff;overflow:hidden;}
.btc-qr img{width:100%;height:100%;display:block;}
.btc-qr svg{width:100%;height:100%;display:block;}   /* realny QR (inline <svg> z viewBox) wypełnia kwadrat 130x130 */

/* .btc-addr-block — kolumna po prawej: etykieta + adres + przycisk Kopiuj.
   flex:1 zajmuje resztę miejsca obok QR. */
.btc-addr-block{flex:1;display:flex;flex-direction:column;}

/* Etykieta „Adres do wpłaty BTC”. */
.btc-addr-label{font-size:.78rem;color:var(--wlr-text-soft);margin-bottom:4px;}

/* .btc-addr — sam adres BTC (linia ~623).
   font monospaced bo adres BTC to ciąg znaków, gdzie każdy znak musi być
   identyfikowalny (uniknięcie pomyłki l/I/1, O/0). word-break:break-all,
   bo adres jest długi i musi się załamać w wąskim kontenerze.
   Jasne tło #f6f9fb + ramka wyglądają jak „kod inline”. */
.btc-addr{font-family:ui-monospace,"SF Mono",Consolas,monospace;font-size:.82rem;
  word-break:break-all;background:#f6f9fb;border:1px solid var(--wlr-border-soft);
  border-radius:6px;padding:9px;}

/* .btn-copy — przycisk „Kopiuj adres” (linia ~626).
   align-self:flex-start + margin-top:auto — przylega do lewej krawędzi,
   ale „spada na dno” kolumny by równo wyrównać się z dolną krawędzią QR. */
.btn-copy{align-self:flex-start;margin-top:auto;font-size:.8rem;font-weight:600;
  background:#fff;border:1px solid var(--wlr-border);border-radius:6px;
  padding:6px 12px;cursor:pointer;}
.btn-copy:hover{border-color:var(--wlr-amber);color:var(--wlr-amber);}

/* Stan po skopiowaniu — zielony („sukces”), do tego jasne zielone tło.
   Wracając do hover w stanie .copied trzymamy zieleń (nie wracamy na amber),
   bo user dopiero co skopiował, nie ma sensu mu sugerować ponownej akcji. */
.btn-copy.copied{border-color:var(--wlr-green);color:var(--wlr-green);
  background:var(--wlr-green-light);}
.btn-copy.copied:hover{border-color:var(--wlr-green);color:var(--wlr-green);}

/* .btc-hint — drobna podpowiedź pod kalkulacją („wpłać dokładnie tę kwotę”). */
.btc-hint{font-size:.78rem;color:var(--wlr-text-soft);margin-top:12px;line-height:1.45;}


/* =============================================================================
   SEKCJA 13b. PANEL INFORMACYJNY PŁATNOŚCI GOTÓWKĄ (.cash-panel, linia ~655 HTML)
   Otwiera się po wybraniu metody "Gotówka". Budowa i mechanika identyczna
   jak .btc-panel (display:none → .open => display:block), ale treść opisuje
   zaliczkę 100 zł + zasady zwrotu/przepadku.
   ========================================================================== */

/* .cash-panel — kontener panelu z opisem zasad płatności gotówką.
   Amber ramka — spójnie z .btc-panel sygnalizuje sekcję „uwaga, przeczytaj”. */
.cash-panel{display:none;margin-top:18px;border:1px solid var(--wlr-amber);
  border-radius:var(--radius);overflow:hidden;}
.cash-panel.open{display:block;}

/* Nagłówek panelu — jasnoamberowe tło + ikona banknotu + tytuł. */
.cash-panel-head{background:var(--wlr-amber-light);padding:13px 16px;
  display:flex;align-items:center;gap:8px;border-bottom:1px solid #f0dcb4;}
.cash-panel-head .ico{width:22px;height:22px;flex:0 0 auto;color:var(--wlr-amber);}
.cash-panel-head b{font-size:.95rem;}

/* Białe wnętrze panelu pod nagłówkiem. */
.cash-panel-body{padding:16px;}

/* .cash-steps — numerowana lista „jak to działa” (3 kroki).
   padding-left zostawia miejsce na numerki listy. */
.cash-steps{margin:0 0 12px;padding-left:20px;font-size:.92rem;line-height:1.6;}
.cash-steps li{margin-bottom:4px;}

/* .cash-rules — zasady zaliczki (zwrot/przepadek). Drobniejsze, wyszarzone,
   z górną kreską oddzielającą od listy kroków. */
.cash-rules{font-size:.82rem;color:var(--wlr-text-soft);line-height:1.5;
  border-top:1px solid var(--wlr-border-soft);padding-top:10px;margin:0;}


/* =============================================================================
   SEKCJA 14. CHECKBOX AKCEPTACJI REGULAMINU + MODAL
   (.check-row, linia ~641 HTML; modal: linia ~672)
   ========================================================================== */

/* .check-row — wiersz: checkbox + label z linkami do regulaminu/polityki.
   align-items:flex-start by checkbox był równo z PIERWSZĄ linią label
   (label zawija się gdy linki są długie). */
.check-row{display:flex;align-items:flex-start;gap:9px;margin-top:14px;}

/* Checkbox akceptacji — 17px, niebieski accent (spójnie z radio w doc-choice).
   margin-top:2px — optyczne wyrównanie z baseline tekstu obok. */
.check-row input[type=checkbox]{width:17px;height:17px;margin-top:2px;
  accent-color:var(--wlr-blue);flex:0 0 auto;cursor:pointer;}

/* Label przy checkboxie — normalny weight (override globalnego), tekst „Akceptuję…”
   to długie zdanie, nie krótka etykieta — pogrubienie byłoby tu nadmiarem. */
.check-row label{margin:0;font-weight:400;font-size:.9rem;cursor:pointer;}

/* .terms-link — linki „regulamin” / „politykę prywatności” w treści zgody
   (linia ~644, ~645). Niebieskie + bold dla wyróżnienia w długim zdaniu.
   Hover na amber (pomarańczowy) — odróżnienie od domyślnego linka,
   sugeruje „uwaga, otwierasz dokument prawny w nowej karcie”. */
.terms-link{color:var(--wlr-blue);font-weight:700;text-decoration:none;}
.terms-link:hover{color:var(--wlr-amber);text-decoration:none;}

/* --- MODAL „Musisz zaakceptować regulamin” (Bootstrap 5.3 modal) ---
   Pokazuje się, gdy ktoś kliknie „Zarezerwuj i zapłać” bez zaznaczenia
   checkboxa. Modal jest renderowany z .modal-fade (klasy Bootstrapowe),
   ale poniższe klasy stylują jego WNĘTRZE w stylu WLR. */

/* .terms-modal-icon — duże okrągłe kółko z ikoną wykrzyknika (linia ~677).
   Amberowe tło dla afektu ostrzeżenia (a nie błędu — kolor zachowuje
   ciepło, nie krzyczy „błąd” jak czerwony). */
.terms-modal-icon{display:inline-flex;align-items:center;justify-content:center;
  width:64px;height:64px;border-radius:50%;
  background:var(--wlr-amber-light);color:var(--wlr-amber);}
.terms-modal-icon svg{width:32px;height:32px;}

/* Tytuł modala „Zaakceptuj regulamin” (linia ~686). */
.terms-modal-title{font-size:1.2rem;font-weight:700;color:var(--wlr-text);
  margin-top:16px;margin-bottom:8px;}

/* Treść modala — wyjaśnienie dlaczego trzeba zaakceptować (linia ~689). */
.terms-modal-text{font-size:.92rem;color:var(--wlr-text-soft);
  margin-bottom:20px;line-height:1.5;}


/* =============================================================================
   SEKCJA 15. PODSUMOWANIE + CTA + STOPKA
   (.summary, linia ~649 HTML)
   ========================================================================== */

/* .summary — dolny pasek karty: po lewej kwota total, po prawej przycisk CTA.
   Górna kreska oddziela od checkboxa regulaminu powyżej.
   flex-wrap + space-between by na desktopie były obok siebie,
   a na mobile (media query niżej) wracały do układu kolumnowego. */
.summary{margin-top:20px;padding-top:16px;border-top:1px solid var(--wlr-border-soft);
  display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;}

/* Etykieta „Do zapłaty:” nad sumą (linia ~650). small bo to label, nie wartość. */
.summary-total small{color:var(--wlr-text-soft);font-size:.82rem;display:block;}

/* Sama kwota total — duża i niebieska (najważniejsza liczba CAŁEGO formularza). */
.summary-total b{font-size:1.4rem;color:var(--wlr-blue);}

/* Wariant amber, gdy płacimy BTC — kolor totalu zmienia się na pomarańczowy,
   spójnie z BTC-tematem w price-box i panelu BTC. */
.summary-total b.btc-total{color:var(--wlr-amber);}

/* Przekreślona stara cena obok totalu (gdy zastosowano rabat). */
.summary-total .was{font-size:.9rem;text-decoration:line-through;
  color:var(--wlr-text-soft);font-weight:600;margin-left:6px;}

/* .btn-primary — GŁÓWNE CTA „Zarezerwuj i zapłać” (linia ~658).
   Używane też w modalu „Zaakceptuj regulamin” jako „OK” (linia ~692).
   Pełny niebieski, biały tekst, duży padding — to NAJWAŻNIEJSZY przycisk
   strony, musi się rzucać w oczy. */
.btn-primary{background:var(--wlr-blue);color:#fff;border:none;font-family:inherit;
  font-size:1rem;font-weight:700;padding:13px 30px;border-radius:8px;cursor:pointer;
  transition:background .15s,transform .1s;}
.btn-primary:hover{background:var(--wlr-blue-dark);}

/* Aktywne kliknięcie — przycisk lekko „wgniata się” w dół (feedback dotykowy). */
.btn-primary:active{transform:translateY(1px);}

/* .foot — drobna stopka pod całym formularzem (linia ~666),
   np. informacja o szyfrowaniu / bezpieczeństwie. */
.foot{text-align:center;color:var(--wlr-text-soft);font-size:.8rem;padding:8px 0 0;}


/* =============================================================================
   SEKCJA 16. RESPONSYWNOŚĆ — MOBILE (max-width:600px)
   ========================================================================== */

/* Poniżej 600px formularz nie zmieści się komfortowo w 2 kolumnach,
   więc kompresujemy do jednej i zmniejszamy kluczowe elementy. */
@media(max-width:600px){
  /* Grid formularza — jedna kolumna na mobile, pola pełnej szerokości. */
  .grid{grid-template-columns:1fr;}

  /* Zdjęcie apartamentu mniejsze — nie zajmuje 270px wysokości na telefonie. */
  .apt-photo{height:200px;}

  /* Nazwa apartamentu mniejsza — żeby się mieściła bez łamania w 1 linii. */
  .apt-name{font-size:1.4rem;}

  /* Pasek podsumowania zmienia się w kolumnę: kwota nad przyciskiem.
   Przycisk CTA na full-width dla dobrej dostępności na małym ekranie. */
  .summary{flex-direction:column;align-items:stretch;}
  .summary .btn-primary{width:100%;}

  /* Sekcja BTC (QR + adres) ląduje w kolumnie: QR na górze, adres pod spodem. */
  .btc-pay-area{flex-direction:column;align-items:center;text-align:center;}

  /* Na mobile „Kopiuj adres” centralnie pod QR i polem adresu —
     align-self:flex-start z desktopu by go odepchnął do lewej. */
  .btc-pay-area .btn-copy{align-self:center;margin-top:14px;}
}
