/* Kalendarz apartamentów (1.3: mniejszy, wyśrodkowany, spokojniejszy; formularz „Zapytaj o termin”, podpowiedzi terminów).
   Kolory biorą zmienne motywu Promenada (--navy, --sea, --sun, --sand…), w innych motywach działają wartości zapasowe;
   motywy nadpisują zmienne --ka-*. Czcionka i jej wielkość dziedziczone z motywu.
   Rozmiary: --ka-max (szerokość), --ka-day (najmniejsza wysokość dnia), --ka-day-ratio (wysokość/szerokość dnia),
   --ka-spacing (odstęp między dniami), --ka-gap (między miesiącami), --ka-pad (margines w ramce), --ka-space (odstępy między
   częściami), --ka-month-size (nazwa miesiąca). Wąski kontener (< 520 px, klasa ka-cal--narrow): układ jak na telefonie. */
.ka-cal {
  --ka-ink: var(--ink, #1b2731);
  --ka-muted: var(--muted, #5d6a74);
  --ka-line: var(--line, rgba(13, 36, 56, .12));
  --ka-bg: var(--pearl, #fbf9f6);
  --ka-free: #fff;
  --ka-booked: var(--sand-2, #ece3d6);
  --ka-booked-ink: #625b53;
  --ka-sel: var(--navy, #0d2438);
  --ka-sel-ink: #fff;
  --ka-range: rgba(27, 111, 158, .14);
  --ka-hover: rgba(13, 36, 56, .07);
  --ka-focus: var(--sea, #1b6f9e);
  --ka-cta: var(--sun, #f2b418);
  --ka-cta-ink: var(--navy, #0d2438);
  --ka-error: #a33a24;
  --ka-ok: #1a7f4b;
  --ka-radius: var(--r, 18px);
  --ka-max: 800px;
  --ka-day: 36px;
  --ka-day-ratio: .76;
  --ka-spacing: 2px;
  --ka-gap: clamp(1.25rem, 4vw, 2.5rem);
  --ka-pad: clamp(.875rem, 2.6vw, 1.5rem);
  --ka-space: 1rem;
  --ka-month-size: 1rem;
  --ka-cols: 1;
  max-width: var(--ka-max);
  margin-inline: auto;
  color: var(--ka-ink);
  font: inherit;
  line-height: 1.5;
}

/* Motywy z wersji 1.1–1.2 wyrównywały kalendarz do lewej (.ka-sekcja .ka-cal{margin-inline:0}); od 1.3 zawsze na środku. */
body .ka-sekcja .ka-cal { margin-inline: auto; }

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

.ka-cal [hidden] { display: none !important; }

.ka-cal__status { margin: 0; padding: 2rem 0; color: var(--ka-muted); text-align: center; }
.ka-cal__status:has(.ka-cal__fallback) { padding: 0; }

/* Przełącznik apartamentów */
.ka-cal__tabs {
  display: flex;
  gap: .4rem;
  margin: 0 0 .9rem;
  padding-bottom: .25rem;
  overflow-x: auto;
  scrollbar-width: thin;
}

.ka-cal__tab {
  flex: none;
  min-height: 40px;
  padding: .45rem 1rem;
  border: 1px solid var(--ka-line);
  border-radius: 999px;
  background: var(--ka-free);
  color: var(--ka-ink);
  font: inherit;
  font-size: .82rem;
  font-weight: 500;
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s;
}

/* Wyśrodkowane, a przy przewijaniu w bok nic nie ucieka z lewej strony */
.ka-cal__tab:first-child { margin-left: auto; }
.ka-cal__tab:last-child { margin-right: auto; }
.ka-cal__tab:hover { border-color: var(--ka-sel); }
.ka-cal__tab[aria-selected="true"] { border-color: transparent; background: var(--ka-sel); color: var(--ka-sel-ink); }

/* Ramka */
.ka-cal__frame {
  padding: var(--ka-pad);
  border: 1px solid var(--ka-line);
  border-radius: var(--ka-radius);
  background: var(--ka-bg);
}

/* Najbliższe wolne terminy */
.ka-cal__suggest { max-width: 34rem; margin: 0 auto var(--ka-space); text-align: center; }

.ka-cal__suggest-title {
  margin: 0 0 .5rem;
  color: var(--ka-muted);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.ka-cal__chips {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(5.75rem, 1fr));
  gap: .45rem;
}

.ka-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  min-width: 0;
  min-height: 44px;
  padding: .4rem .5rem;
  border: 1px solid var(--ka-line);
  border-radius: 12px;
  background: var(--ka-free);
  color: var(--ka-ink);
  font: inherit;
  line-height: 1.25;
  text-align: center;
  cursor: pointer;
  transition: border-color .15s, background-color .15s, color .15s;
}

.ka-chip__dates { font-size: .9rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.ka-chip__meta { color: var(--ka-muted); font-size: .72rem; }
.ka-chip:hover { border-color: var(--ka-sel); }
.ka-chip[aria-pressed="true"] { border-color: var(--ka-sel); background: var(--ka-sel); color: var(--ka-sel-ink); }
.ka-chip[aria-pressed="true"] .ka-chip__meta { color: inherit; opacity: .85; }

/* Siatka miesięcy i nawigacja */
.ka-cal__grid { position: relative; margin-inline: auto; scroll-margin-top: 1rem; }
.ka-cal--one .ka-cal__grid { max-width: 24rem; }

.ka-cal__bar {
  position: absolute;
  inset: 0 0 auto;
  display: flex;
  justify-content: space-between;
  pointer-events: none;
  z-index: 1;
}

.ka-cal__nav {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--ka-ink);
  font: inherit;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  pointer-events: auto;
  transition: background-color .15s;
}

.ka-cal__nav span { margin-top: -3px; }
.ka-cal__nav:hover:not(:disabled) { background: var(--ka-hover); }
.ka-cal__nav:disabled { opacity: .3; cursor: default; }

.ka-cal__months {
  display: grid;
  grid-template-columns: repeat(var(--ka-cols), minmax(0, 1fr));
  gap: var(--ka-gap);
  transition: opacity .2s;
}

.ka-cal[aria-busy] .ka-cal__months { opacity: .45; }

/* Siatka miesiąca (reset stylów tabel z motywu) */
.ka-cal table,
.ka-cal th,
.ka-cal td {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
}

.ka-cal__month {
  width: 100%;
  border-collapse: separate;
  border-spacing: var(--ka-spacing);
  table-layout: fixed;
}

.ka-cal__month caption {
  caption-side: top;
  min-height: 40px;
  padding: 0 0 .4rem;
  color: var(--ka-ink);
  font: inherit;
  font-size: var(--ka-month-size);
  font-weight: 600;
  line-height: 40px;
  text-align: center;
}

.ka-cal__month th {
  padding-bottom: .3rem;
  color: var(--ka-muted);
  font-size: .68rem;
  font-weight: 500;
  letter-spacing: .05em;
  text-align: center;
  text-transform: uppercase;
}

.ka-day {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 100%;
  min-height: var(--ka-day);
  aspect-ratio: 1 / .82;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 8px;
  background: var(--ka-free);
  box-shadow: none;
  color: var(--ka-ink);
  font: inherit;
  font-size: .88rem;
  cursor: default;
  transition: box-shadow .15s, background-color .15s, color .15s;
  -webkit-tap-highlight-color: transparent;
}

.ka-day__n { font-weight: 500; line-height: 1; font-variant-numeric: tabular-nums; }
.ka-day__p { min-height: .65rem; color: var(--ka-muted); font-size: .64rem; line-height: 1; font-variant-numeric: tabular-nums; }

.ka-day.is-pick { cursor: pointer; }
.ka-day:focus-visible { outline: 2px solid var(--ka-focus); outline-offset: 1px; z-index: 1; }

@media (hover: hover) {
  .ka-day.is-pick:hover { box-shadow: inset 0 0 0 1.5px var(--ka-sel); }
}

.ka-day.is-past { background: transparent; color: var(--ka-muted); opacity: .45; }

/* Zajęte: delikatne tło i cienkie przekreślenie (rozróżnienie także bez koloru) */
.ka-day.is-booked { background: var(--ka-booked); color: var(--ka-booked-ink); }
.ka-day.is-booked .ka-day__n { text-decoration: line-through; text-decoration-thickness: 1px; }

/* Dzień przyjazdu innego gościa (noc zajęta, rano wolne) i dzień wyjazdu (rano zajęte, noc wolna) */
.ka-day.is-in { background: linear-gradient(to bottom right, var(--ka-free) 50%, var(--ka-booked) 50%); }
.ka-day.is-out { background: linear-gradient(to bottom right, var(--ka-booked) 50%, var(--ka-free) 50%); }

.ka-day.is-short .ka-day__n { color: var(--ka-muted); }

/* 1.3.1: w sezonie „sobota–sobota” dzień przyjazdu i wyjazdu oznaczony subtelną kropką pod numerem dnia */
.ka-day.is-change::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 12%;
  width: 4px;
  height: 4px;
  margin-left: -2px;
  border-radius: 50%;
  background: currentColor;
  opacity: .5;
}
.ka-day.is-booked.is-change::after,
.ka-day.is-past.is-change::after { display: none; }

.ka-day.is-range { background: var(--ka-range); color: var(--ka-ink); }
.ka-day.is-start,
.ka-day.is-end { background: var(--ka-sel); color: var(--ka-sel-ink); }
.ka-day.is-start .ka-day__p,
.ka-day.is-end .ka-day__p { color: inherit; opacity: .8; }

/* Legenda */
.ka-cal__legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .35rem 1.1rem;
  margin-top: var(--ka-space);
  color: var(--ka-muted);
  font-size: .78rem;
}

.ka-cal__key::before {
  content: "";
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: .4rem;
  border-radius: 3px;
  background: var(--ka-free);
  box-shadow: inset 0 0 0 1px var(--ka-line);
  vertical-align: -1px;
}

.ka-cal__key--booked::before { background: var(--ka-booked); box-shadow: none; }
.ka-cal__key--sel::before { background: var(--ka-sel); box-shadow: none; }
.ka-cal__key--change::before { width: 5px; height: 5px; margin: 0 .55rem 0 .25rem; border-radius: 50%; background: currentColor; box-shadow: none; vertical-align: 1px; opacity: .6; }

/* 1.3.1: przyciski z poprawnymi terminami pod komunikatem o zasadach pobytu */
.ka-cal__fixes { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; }
.ka-cal__fixes .ka-cal__variant { font-variant-numeric: tabular-nums; }

/* Podsumowanie wyboru */
.ka-cal__summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem 1.25rem;
  margin-top: var(--ka-space);
  padding-top: var(--ka-space);
  border-top: 1px solid var(--ka-line);
  scroll-margin-bottom: 1rem;
}

.ka-cal__hint { flex: 1 1 260px; margin: 0; font-size: .92rem; }

.ka-cal__stay {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  gap: .5rem 1.75rem;
  margin: 0;
}

.ka-cal__stay dt { margin: 0; color: var(--ka-muted); font-size: .7rem; letter-spacing: .07em; text-transform: uppercase; }
.ka-cal__stay dd { margin: .1rem 0 0; font-size: .95rem; font-weight: 500; }
.ka-cal__total dd { font-size: 1.1rem; font-weight: 600; }

.ka-cal__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0; }

.ka-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 44px;
  padding: .6rem 1.3rem;
  border: 0;
  border-radius: 999px;
  background: var(--ka-cta);
  color: var(--ka-cta-ink);
  font: inherit;
  font-size: .92rem;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  transition: filter .2s, box-shadow .2s, background-color .2s;
}

.ka-btn:hover { filter: brightness(1.05); }
.ka-btn:disabled { opacity: .6; cursor: progress; }
.ka-btn--ghost { background: transparent; box-shadow: inset 0 0 0 1px var(--ka-line); color: var(--ka-ink); font-weight: 500; }
.ka-btn--ghost:hover { box-shadow: inset 0 0 0 1px var(--ka-sel); filter: none; }
.ka-btn:focus-visible,
.ka-chip:focus-visible,
.ka-link:focus-visible,
.ka-cal__tab:focus-visible,
.ka-cal__nav:focus-visible { outline: 2px solid var(--ka-focus); outline-offset: 2px; }

.ka-ico { flex: none; width: 1.1em; height: 1.1em; fill: currentColor; }

.ka-cal__notice { flex-basis: 100%; margin: 0; color: var(--ka-error); font-size: .9rem; }
.ka-cal__notice a { color: inherit; font-weight: 600; text-decoration: underline; }

/* Reguła pobytu (np. 1 noc w weekend): informacja, nie błąd; obok „Wydłuż do 2 nocy” */
.ka-cal__notice--stay {
  padding: .55rem .8rem;
  border-radius: 10px;
  background: rgba(242, 180, 24, .15);
  color: var(--ka-ink);
  font-weight: 500;
}

.ka-cal__thanks { flex-basis: 100%; padding: .9rem 1rem; border-radius: 12px; background: rgba(26, 127, 75, .08); outline: none; }
.ka-cal__thanks strong { display: block; color: var(--ka-ok); font-size: 1.15rem; font-weight: 600; }
.ka-cal__thanks p { margin: .2rem 0 0; }

/* Kontakt na telefonie (Zadzwoń, WhatsApp) i gdy kalendarz się nie wczytał */
.ka-contact__list { display: flex; flex-wrap: wrap; gap: .5rem; }
.ka-contact__btn { background: var(--ka-free); box-shadow: inset 0 0 0 1px var(--ka-line); color: var(--ka-ink); font-weight: 500; }
.ka-contact__btn:hover { box-shadow: inset 0 0 0 1px var(--ka-sel); filter: none; }
.ka-contact__btn--whatsapp .ka-ico { color: #1a8d4b; }

/* Formularz „Zapytaj o termin” */
.ka-cal__form { margin-top: var(--ka-space); padding-top: var(--ka-space); border-top: 1px solid var(--ka-line); scroll-margin-top: 1rem; }

.ka-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .85rem 1rem;
  max-width: 40rem;
  margin-inline: auto;
}

.ka-form__head,
.ka-form__stay,
.ka-field--wide,
.ka-field--consent,
.ka-form__actions,
.ka-form .ka-cal__notice { grid-column: 1 / -1; }

.ka-cal .ka-form__title {
  margin: 0;
  color: var(--ka-ink);
  font-family: inherit;
  font-size: 1.1rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: 0;
  text-transform: none;
}

.ka-form__intro { margin: .2rem 0 0; color: var(--ka-muted); font-size: .88rem; }

.ka-form__stay {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .4rem 1rem;
  padding: .7rem .9rem;
  border-radius: 12px;
  background: var(--ka-free);
  box-shadow: inset 0 0 0 1px var(--ka-line);
}

.ka-form__stay dl { display: flex; flex-wrap: wrap; gap: .35rem 1.5rem; margin: 0; }
.ka-form__stay dt { margin: 0; color: var(--ka-muted); font-size: .68rem; letter-spacing: .07em; text-transform: uppercase; }
.ka-form__stay dd { margin: .05rem 0 0; font-size: .92rem; font-weight: 500; }

.ka-link {
  min-height: 44px;
  padding: 0 .25rem;
  border: 0;
  background: none;
  color: var(--ka-focus);
  font: inherit;
  font-size: .88rem;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.ka-field { display: flex; flex-direction: column; gap: .3rem; margin: 0; }
.ka-field label { color: var(--ka-muted); font-size: .82rem; line-height: 1.4; }

.ka-field input,
.ka-field select,
.ka-field textarea {
  width: 100%;
  min-height: 44px;
  margin: 0;
  padding: .6rem .8rem;
  border: 1px solid var(--ka-line);
  border-radius: 10px;
  background: var(--ka-free);
  color: var(--ka-ink);
  font: inherit;
  font-size: 1rem;
}

.ka-field textarea { min-height: 84px; resize: vertical; }
.ka-field input:focus,
.ka-field select:focus,
.ka-field textarea:focus { border-color: var(--ka-focus); outline: 2px solid var(--ka-focus); outline-offset: -1px; }
.ka-field [aria-invalid="true"] { border-color: var(--ka-error); }

.ka-field--consent { flex-direction: row; align-items: flex-start; gap: .6rem; }
.ka-field--consent input { flex: none; width: 20px; min-height: 0; height: 20px; margin-top: 2px; padding: 0; accent-color: var(--ka-sel); }
.ka-field--consent input[aria-invalid="true"] { outline: 2px solid var(--ka-error); outline-offset: 1px; }
.ka-field--consent label { color: var(--ka-ink); font-size: .85rem; }
.ka-field--consent a { color: inherit; text-decoration: underline; }

.ka-field--hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.ka-form__actions { margin: 0; }
.ka-form__send { min-width: 14rem; }

/* Tryb „tylko dostępność”: bez wiersza z ceną w dniu */
.ka-cal:not(.ka-cal--prices) .ka-day__p { display: none; }
.ka-cal:not(.ka-cal--prices) .ka-day { aspect-ratio: 1 / var(--ka-day-ratio); }
.ka-cal:not(.ka-cal--prices) .ka-day__n { font-size: .92rem; }

/* Dopisek strony podglądu, gdy źródło nie odpowiada */
.ka-cal__stale {
  margin: .9rem 0 0;
  padding: .55rem .8rem;
  border-radius: 10px;
  background: rgba(242, 180, 24, .14);
  color: var(--ka-ink);
  font-size: .85rem;
  text-align: center;
}

.ka-cal__note { flex-basis: 100%; text-align: center; }
.ka-cal__fallback { padding: 1.25rem; border: 1px solid var(--ka-line); border-radius: var(--ka-radius); background: var(--ka-bg); text-align: left; }
.ka-cal__fallback p { margin: 0 0 .9rem; color: var(--ka-ink); }
.ka-cal__fallback .ka-contact__btn--mail,
.ka-cal__nojs .ka-contact__btn--mail { background: var(--ka-cta); box-shadow: none; color: var(--ka-cta-ink); }

/* Bez JavaScriptu: zamiast „Ładowanie…” e-mail i telefon z <noscript> */
.ka-cal__nojs-links { display: flex; flex-wrap: wrap; gap: .5rem; }
.ka-cal__nojs .ka-contact__btn { max-width: 100%; overflow-wrap: anywhere; }

@media (pointer: coarse) {
  .ka-cal__nav { width: 44px; height: 44px; }
  .ka-cal__month caption { min-height: 44px; line-height: 44px; }
}

/* Wąski kontener (np. karta obok zdjęć na komputerze): jak na telefonie */
.ka-cal--narrow { --ka-pad: .875rem .75rem; }
.ka-cal--narrow .ka-day { border-radius: 7px; }
.ka-cal--narrow .ka-cal__summary { gap: .75rem; }
.ka-cal--narrow .ka-cal__chips { grid-template-columns: 1fr; gap: .35rem; }
.ka-cal--narrow .ka-chip { flex-direction: row; justify-content: space-between; gap: .75rem; min-height: 40px; padding: .4rem .85rem; text-align: left; }
.ka-cal--narrow .ka-cal__actions { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
.ka-cal--narrow .ka-cal__actions > * { grid-column: 1 / -1; }
.ka-cal--narrow .ka-cal__actions .ka-contact__list { display: grid; grid-template-columns: 1fr 1fr; }
.ka-cal--narrow .ka-form { grid-template-columns: 1fr; }
.ka-cal--narrow .ka-form__send { width: 100%; min-width: 0; }

@media (max-width: 560px) {
  .ka-cal { --ka-pad: .875rem .75rem; }
  .ka-day { border-radius: 7px; }
  .ka-day__p { font-size: .6rem; }
  .ka-cal__summary { gap: .75rem; }
  /* Podpowiedzi terminów jedna pod drugą: daty z lewej, dni tygodnia i noce z prawej (bez zawijania w 4 linie) */
  .ka-cal__suggest { margin-bottom: .9rem; }
  .ka-cal__chips { grid-template-columns: 1fr; gap: .35rem; }
  .ka-chip { flex-direction: row; justify-content: space-between; gap: .75rem; padding: .45rem .9rem; text-align: left; }
  .ka-cal__actions { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .ka-cal__actions > * { grid-column: 1 / -1; }
  .ka-cal__actions .ka-contact__list { display: grid; grid-template-columns: 1fr 1fr; }
  /* Nieparzysta liczba przycisków kontaktu (np. z SMS): pierwszy na całą szerokość */
  .ka-contact__btn:first-child:nth-last-child(odd) { grid-column: 1 / -1; }
  .ka-form { grid-template-columns: 1fr; }
  .ka-form__send { width: 100%; min-width: 0; }
}

@media (scripting: none) {
  .ka-cal__status { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .ka-cal * { transition: none !important; }
}
