/* ============================================================================
   Aplikacja targowa Tripinvest — ekran klienta (iPad) i ekrany obslugi.

   Wszystko lokalnie, bez CDN: jedna stylizacja, ktora ma dzialac tak samo
   po odswiezeniu strony na stoisku.

   Ekran klienta to kiosk: trzy pelnoekranowe sceny (powitanie -> formularz ->
   podziekowanie) przelaczane klasa .aktywny. Zadna nie przewija calego <body>,
   bo iPad potrafi wtedy "odbijac" strone przy przewijaniu formularza.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

:root {
  --granat:      #0d2b3e;   /* glebia morza ze zdjecia */
  --granat-jasny:#164a63;
  --morski:      #0f7d97;   /* akcent: przyciski, focus */
  --morski-ciemny:#0b6377;
  --piasek:      #f6f1e8;
  --tlo:         #eef2f5;
  --obrys:       #d8e0e6;
  --tekst:       #14202b;
  --tekst-slaby: #62737f;
  --zielony:     #128f63;
  --czerwony:    #c0392b;
  --bursztyn:    #b7791f;
  --szeryf: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
}

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
}

body {
  background: var(--tlo);
  color: var(--tekst);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-size: 17px;
  line-height: 1.45;
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;   /* iPad nie podswietla tapnietych pol */
  touch-action: manipulation;                 /* koniec z 300 ms opoznienia i zoomem na dwuklik */
  overscroll-behavior: none;                  /* koniec z gumowym odbijaniem calej strony */
}

/* ==========================================================================
   1. KIOSK — ekran klienta
   ========================================================================== */

body.kiosk { overflow: hidden; }

.ekran {
  position: fixed;
  inset: 0;
  display: none;
  opacity: 0;
  transition: opacity .28s ease;
}
.ekran.aktywny { display: flex; opacity: 1; }

/* --- tlo ze zdjeciem: uzywane przez powitanie i podziekowanie --- */
.scena-foto {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center 40%;
  z-index: 0;
}
.scena-foto::after {
  /* Ciemna zaslona od dolu i od lewej — bez niej bialy tekst gubi sie w niebie. */
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to right, rgba(9, 26, 38, .88) 0%, rgba(9, 26, 38, .70) 42%, rgba(9, 26, 38, .18) 100%),
    linear-gradient(to top, rgba(9, 26, 38, .70) 0%, rgba(9, 26, 38, 0) 55%);
}

.scena-tresc {
  position: relative;
  z-index: 1;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 6vh 7vw;
  color: #fff;
  max-width: 900px;
}

/* LOGO — plik img/logo-es.svg zostaje oryginalny i nietkniety.
   Jest to plansza 1920x1080, na ktorej samo logo zajmuje srodkowe 76% szerokosci
   i 26% wysokosci; reszta to puste pole. Zamiast przycinac plik, pokazujemy go
   jako tlo powiekszone 390% wzgledem wysokosci elementu — wtedy CALE logo
   (znak, "tripinvest ES" i podpis "Nieruchomosci W Hiszpanii") wypelnia element,
   a poza kadr wychodzi wylacznie pusta plansza. Nic z logo nie jest ucinane.

   Logo jest granatowo-zolte i na ciemnym tle po prostu ginie, dlatego filtr:
   brightness(0) zbija je do czerni, invert(1) wywraca na czysta biel. Dziala
   niezaleznie od tego, jakie kolory siedza w srodku SVG. */
.logo {
  display: block;
  align-self: flex-start;   /* w kolumnie flex element inaczej rozciaga sie na cala szerokosc */
  aspect-ratio: 5.285;      /* proporcje samego logo, bez pustego pola planszy */
  background: url('img/logo-es.svg') center / auto 390% no-repeat;
  filter: brightness(0) invert(1);
}
.logo-hero  { height: clamp(44px, 5vw, 62px); margin-bottom: 22px; }
.logo-mala  { height: 34px; margin-bottom: 14px; }
.logo-pasek { height: 30px; }

.marka {
  font-size: 13px;
  letter-spacing: 3.4px;
  text-transform: uppercase;
  font-weight: 700;
  color: #a8cddb;
  margin-bottom: 22px;
}

.haslo {
  font-family: var(--szeryf);
  font-size: clamp(34px, 5.4vw, 62px);
  line-height: 1.1;
  font-weight: 400;
  margin: 0 0 20px;
  text-wrap: balance;
}
.marka-mala { font-size: 11px; letter-spacing: 1.8px; margin-bottom: 12px; }

.podhaslo {
  font-size: clamp(17px, 2.1vw, 22px);
  line-height: 1.5;
  color: #dce9ef;
  margin: 0 0 40px;
  max-width: 30em;
}

/* --- przelacznik jezyka: prawy gorny rog, poza droga palca --- */
.jezyki {
  position: absolute;
  top: calc(22px + env(safe-area-inset-top, 0px));
  right: calc(24px + env(safe-area-inset-right, 0px));
  z-index: 3;
  display: flex;
  gap: 8px;
}
.jezyk {
  font: inherit;
  font-size: 15px;
  font-weight: 600;
  padding: 9px 15px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .35);
  background: rgba(9, 26, 38, .38);
  color: #fff;
  cursor: pointer;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
.jezyk.wybrany { background: #fff; color: var(--granat); border-color: #fff; }
.jezyki.na-jasnym .jezyk {
  border-color: var(--obrys);
  background: #fff;
  color: var(--tekst-slaby);
}
.jezyki.na-jasnym .jezyk.wybrany { background: var(--granat); color: #fff; border-color: var(--granat); }

/* --- ukryte wejscie dla obslugi: przezroczysty rog, cztery tapniecia --- */
.rog-obslugi {
  position: fixed;
  top: env(safe-area-inset-top, 0px);
  left: env(safe-area-inset-left, 0px);
  width: 74px; height: 74px;
  z-index: 4;
  cursor: default;
}

/* --- ekran 2: formularz. Zdjecie zostaje jako kolumna, zeby stoisko caly
       czas cos pokazywalo, a klient mial poczucie, ze to nadal ta sama scena. */
#ekran-formularz { background: var(--tlo); }

.formularz-uklad {
  display: grid;
  grid-template-columns: 38% 62%;
  width: 100%;
  height: 100%;
}

.formularz-foto {
  position: relative;
  background-size: cover;
  background-position: center 45%;
  display: flex;
  align-items: flex-end;
  padding: 40px 34px;
}
.formularz-foto::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(9, 26, 38, .92) 0%, rgba(9, 26, 38, .42) 60%, rgba(9, 26, 38, .25) 100%);
}
.formularz-foto .scena-tresc { padding: 0; }
.formularz-foto .haslo { font-size: clamp(26px, 2.9vw, 40px); margin-bottom: 10px; }
.formularz-foto .podhaslo { font-size: 16px; margin: 0; }

.formularz-panel {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 42px 46px 46px;
  background: #fff;
}
.formularz-panel h1 {
  font-family: var(--szeryf);
  font-size: 34px;
  font-weight: 400;
  margin: 0 0 6px;
  color: var(--granat);
}
.formularz-panel .wstep {
  color: var(--tekst-slaby);
  margin: 0 0 30px;
  font-size: 16px;
}

/* iPad w pionie: zdjecie schodzi na gore waskim pasem */
@media (orientation: portrait), (max-width: 860px) {
  .formularz-uklad { grid-template-columns: 1fr; grid-template-rows: 20vh 1fr; }
  .formularz-foto { padding: 22px 26px; }
  .formularz-foto .haslo { font-size: 26px; }
  .formularz-foto .podhaslo,
  .formularz-foto .marka { display: none; }
  .formularz-foto .logo-mala { height: 26px; margin-bottom: 10px; }
  .formularz-panel { padding: 30px 26px 40px; }
  .scena-tresc { padding: 7vh 8vw; }
}

/* ==========================================================================
   2. Pola formularza — duze, bo palec to nie kursor
   ========================================================================== */

.pole { margin-bottom: 22px; }
.pole:last-child { margin-bottom: 0; }

label {
  display: block;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .2px;
  margin-bottom: 8px;
  color: #35505f;
}
label .gwiazdka { color: var(--czerwony); }

input[type=text], input[type=tel], input[type=email], input[type=password],
input[type=date], select, textarea {
  width: 100%;
  font: inherit;
  font-size: 18px;            /* >=16px, inaczej iOS przybliza ekran przy focusie */
  padding: 16px 16px;
  border: 1px solid var(--obrys);
  border-radius: 12px;
  background: #fff;
  color: var(--tekst);
  -webkit-appearance: none;
  appearance: none;
}
select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2362737f'><path d='M5.5 7.5 10 12l4.5-4.5z'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 22px;
  padding-right: 42px;
}
textarea { min-height: 104px; resize: none; }

input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--morski);
  box-shadow: 0 0 0 3px rgba(15, 125, 151, .16);
}

.dwie { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.telefon { display: grid; grid-template-columns: 168px 1fr; gap: 10px; }
@media (max-width: 620px) {
  .dwie, .telefon { grid-template-columns: 1fr; }
}

/* --- budzet jednym tapnieciem --- */
.chipsy { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
.chip {
  font: inherit;
  font-size: 16px;
  font-weight: 600;
  padding: 12px 18px;
  border-radius: 999px;
  border: 1px solid var(--obrys);
  background: #f7fafb;
  color: #35505f;
  cursor: pointer;
}
.chip.wybrany { background: var(--granat); border-color: var(--granat); color: #fff; }

/* --- zgoda: duzy checkbox, bo to najczestsze miejsce nietrafionego tapniecia --- */
.zgoda {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  background: var(--piasek);
  border: 1px solid #e6ddcd;
  border-radius: 14px;
  padding: 16px 18px;
  cursor: pointer;
}
.zgoda input {
  width: 26px; height: 26px;
  margin: 1px 0 0;
  flex: 0 0 auto;
  accent-color: var(--morski);
}
.zgoda span { font-size: 14.5px; line-height: 1.5; color: #4a4034; }

/* ==========================================================================
   3. Przyciski
   ========================================================================== */

.przycisk {
  font: inherit;
  font-size: 19px;
  font-weight: 700;
  padding: 18px 26px;
  border: none;
  border-radius: 14px;
  background: var(--morski);
  color: #fff;
  cursor: pointer;
  width: 100%;
}
.przycisk:active { background: var(--morski-ciemny); }
.przycisk:disabled { opacity: .55; }

.przycisk-duzy {
  width: auto;
  align-self: flex-start;
  font-size: clamp(19px, 2.2vw, 23px);
  padding: 22px 44px;
  border-radius: 999px;
  background: #fff;
  color: var(--granat);
  box-shadow: 0 10px 30px rgba(4, 18, 28, .35);
}
.przycisk-duzy:active { background: #e9f2f5; }

.przycisk-drugi {
  background: #fff;
  color: #35505f;
  border: 1px solid var(--obrys);
}

.akcje { display: flex; gap: 14px; margin-top: 30px; }
.akcje .przycisk-drugi { width: 150px; flex: 0 0 auto; }

/* ==========================================================================
   4. Komunikaty
   ========================================================================== */

.komunikat {
  border-radius: 12px;
  padding: 14px 16px;
  font-size: 15.5px;
  font-weight: 600;
  margin-bottom: 20px;
}
.komunikat-blad  { background: #fdf0ee; color: #8f2c20; border: 1px solid #f3cfc9; }
.komunikat-info  { background: #eef6f9; color: #10556a; border: 1px solid #cbe4ec; }

/* --- ekran 3: podziekowanie --- */
#ekran-dzieki .logo-mala { margin-bottom: 28px; }

.znak {
  width: 92px; height: 92px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .16);
  border: 2px solid rgba(255, 255, 255, .6);
  display: flex; align-items: center; justify-content: center;
  font-size: 46px; color: #fff;
  margin-bottom: 26px;
}

/* ==========================================================================
   5. Ekrany obslugi (login, lista, PIN) — zwykla strona, nie kiosk
   ========================================================================== */

.pasek {
  background: var(--granat);
  color: #fff;
  padding: 14px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
}
.pasek-marka { display: flex; align-items: center; gap: 15px; }
.pasek-tytul { font-size: 18px; font-weight: 700; }
.pasek-info { font-size: 13px; color: #a8cddb; }
.pasek-akcje { display: flex; align-items: center; gap: 12px; }
.pasek a { color: #cfe2ea; text-decoration: none; font-size: 14px; font-weight: 600; }
.pasek a:active { color: #fff; }

.licznik {
  background: rgba(255, 255, 255, .14);
  border-radius: 999px;
  padding: 5px 15px;
  font-size: 14px;
  font-weight: 700;
}

.kontener { max-width: 940px; margin: 0 auto; padding: 24px 16px 64px; }
.waski { max-width: 460px; }

.karta {
  background: #fff;
  border: 1px solid var(--obrys);
  border-radius: 16px;
  padding: 24px;
  box-shadow: 0 1px 2px rgba(13, 43, 62, .05);
}
.karta h2 {
  margin: 0 0 18px;
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: .7px;
  color: var(--tekst-slaby);
}

table { width: 100%; border-collapse: collapse; font-size: 15px; }
th, td { padding: 12px 10px; text-align: left; border-bottom: 1px solid #eef2f5; vertical-align: top; }
th { font-size: 12px; text-transform: uppercase; letter-spacing: .5px; color: var(--tekst-slaby); }
td a { color: var(--morski); font-weight: 600; text-decoration: none; }
.pusto { text-align: center; color: var(--tekst-slaby); padding: 38px 10px; }

/* --- modal PIN-u wywolany z ukrytego rogu --- */
.zaslona {
  position: fixed;
  inset: 0;
  background: rgba(9, 26, 38, .72);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  z-index: 60;
}
.zaslona.widoczna { display: flex; }
.zaslona-karta {
  background: #fff;
  border-radius: 20px;
  padding: 30px 26px;
  width: 100%;
  max-width: 380px;
}
.zaslona-karta h3 { margin: 0 0 18px; font-size: 19px; color: var(--granat); }
