/* Kisvirág – public booking page. Only kv-booking-* classes; colours and fonts come from the site template (tpl_kisvirag). */
.kv-booking {
  --kvb-accent: var(--kv-teal, #55ada7);
  --kvb-accent-strong: var(--kv-teal-strong, #2f7f79);
  --kvb-ink: var(--kv-ink, #0d2236);
  --kvb-soft: var(--kv-ink-soft, #4a5d6e);
  --kvb-line: var(--kv-line, #dbe6e3);
  --kvb-surface: var(--kv-surface, #fff);
  --kvb-booked: var(--kv-coral, #cb595b);
  --kvb-free: #d3e9e5;
  --kvb-radius: var(--kv-radius-sm, .65rem);
  max-width: 60rem;
  margin-inline: auto;
  color: var(--kvb-ink);
}
.kv-booking *, .kv-booking *::before, .kv-booking *::after { box-sizing: border-box; }
.kv-booking-intro { margin-bottom: 1.5rem; }

.kv-booking-progress { display: flex; gap: .5rem; list-style: none; padding: 0; margin: 0 0 1.25rem; counter-reset: kvb; }
.kv-booking-progress li { flex: 1; counter-increment: kvb; padding: .55rem .4rem; border-bottom: 3px solid var(--kvb-line); color: var(--kvb-soft); font-size: .9rem; text-align: center; }
.kv-booking-progress li::before { content: counter(kvb) ". "; font-weight: 700; }
.kv-booking-progress li.is-active { border-color: var(--kvb-accent-strong); color: var(--kvb-ink); font-weight: 700; }
.kv-booking-progress li.is-done { border-color: var(--kvb-accent); }

.kv-booking-step { border: 1px solid var(--kvb-line); border-radius: var(--kv-radius, 1.1rem); background: var(--kvb-surface); padding: clamp(1rem, 3vw, 1.75rem); margin: 0 0 1.25rem; min-width: 0; }
.kv-booking-step[hidden] { display: none; }
/* phones: the page is already a card – no second frame, so the calendar days keep a 44 px touch target */
@media (max-width: 479.98px) {
  .kv-booking-step { border: 0; padding: 0; background: transparent; }
  .kv-booking-cal__grid { border-spacing: 1px; }
}
.kv-booking-step legend { float: left; width: 100%; font-size: 1.25rem; font-weight: 700; margin-bottom: 1rem; padding: 0; }
.kv-booking-step legend + * { clear: both; }
.kv-booking-step legend:focus { outline: none; }

.kv-booking-field { display: flex; flex-direction: column; gap: .3rem; margin-bottom: .9rem; }
.kv-booking-field label { font-weight: 700; font-size: .95rem; }
.kv-booking-field input, .kv-booking-field textarea {
  width: 100%; min-height: 44px; padding: .6rem .75rem; font: inherit; color: inherit;
  border: 1px solid #9fb3b0; border-radius: var(--kvb-radius); background: #fff;
}
.kv-booking input:focus-visible, .kv-booking textarea:focus-visible, .kv-booking button:focus-visible, .kv-booking a:focus-visible {
  outline: 3px solid var(--kvb-accent-strong); outline-offset: 2px;
}
.kv-booking-grid { display: grid; gap: 0 1rem; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.kv-booking-dates { display: grid; gap: 0 1rem; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); }
.kv-booking-dates[hidden] { display: none; }
.kv-booking-subhead { font-weight: 700; margin: .5rem 0 .6rem; }
.kv-booking-hint { color: var(--kvb-soft); font-size: .92rem; }

.kv-booking-guests { display: flex; flex-wrap: wrap; gap: 0 1.5rem; align-items: flex-end; margin-top: 1rem; }
.kv-booking-guests .kv-booking-hint { flex-basis: 100%; margin: 0; }
.kv-booking-stepper__row { display: flex; align-items: center; gap: .4rem; }
.kv-booking-stepper input { width: 4.5rem; text-align: center; }
.kv-booking-stepper__btn {
  width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--kvb-accent-strong); background: #fff;
  color: var(--kvb-accent-strong); font-size: 1.4rem; line-height: 1; cursor: pointer;
}
.kv-booking-stepper__btn:disabled { opacity: .35; cursor: not-allowed; }

/* calendar */
.kv-booking-calendar { position: relative; }
.kv-booking-calendar[hidden] { display: none; }
.kv-booking-cal__nav { position: absolute; inset: 0 0 auto 0; display: flex; justify-content: space-between; pointer-events: none; }
.kv-booking-cal__arrow {
  pointer-events: auto; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--kvb-line);
  background: #fff; font-size: 1.5rem; line-height: 1; cursor: pointer; color: var(--kvb-ink);
}
.kv-booking-cal__arrow:disabled { opacity: .3; cursor: default; }
.kv-booking-cal__months { display: grid; gap: 1.5rem; grid-template-columns: 1fr; }
@media (min-width: 768px) { .kv-booking-cal__months { grid-template-columns: 1fr 1fr; } }
.kv-booking-cal__title { text-align: center; font-size: 1.05rem; margin: .7rem 0 .8rem; }
.kv-booking-cal__grid { width: 100%; border-collapse: separate; border-spacing: 3px; table-layout: fixed; }
.kv-booking-cal__grid th { font-size: .8rem; color: var(--kvb-soft); font-weight: 700; padding-bottom: .25rem; }
.kv-booking-cal__grid td { padding: 0; }

.kv-booking-day {
  display: block; width: 100%; min-height: 44px; aspect-ratio: 1 / 1; max-height: 3.2rem; padding: 0;
  border: 1px solid transparent; border-radius: .5rem; font: inherit; font-weight: 700; color: var(--kvb-ink);
  background: var(--kvb-free); cursor: pointer;
}
.kv-booking-day--booked, .kv-booking-day--out { cursor: not-allowed; }
.kv-booking-day--booked { background: var(--kvb-booked); color: #fff; text-decoration: line-through; }
.kv-booking-day--out { background: transparent; color: #8a969e; }
/* half days: the previous guest leaves at 10:00 (am) / the next one arrives at 14:00 (pm) */
.kv-booking-day--am { background: linear-gradient(to bottom right, var(--kvb-booked) 49.5%, var(--kvb-free) 50.5%); }
.kv-booking-day--pm { background: linear-gradient(to bottom right, var(--kvb-free) 49.5%, var(--kvb-booked) 50.5%); }
.kv-booking-day[aria-disabled="true"] { cursor: not-allowed; }
.kv-booking-day.is-range { background: var(--kvb-accent); color: #fff; }
.kv-booking-day.is-selected { background: var(--kvb-accent-strong); color: #fff; text-decoration: none; }
.kv-booking-day:not([aria-disabled="true"]):hover { border-color: var(--kvb-accent-strong); }

.kv-booking-legend { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; list-style: none; padding: 0; margin: 1rem 0 0; font-size: .88rem; color: var(--kvb-soft); }
.kv-booking-legend li { display: flex; align-items: center; gap: .45rem; }
.kv-booking-legend .kv-booking-day { width: 1.4rem; min-height: 0; height: 1.4rem; aspect-ratio: auto; cursor: default; }
.kv-booking-status { font-weight: 700; margin: 1rem 0 0; }
.kv-booking-status[hidden] { display: none; }

/* price and summary */
.kv-booking-price { margin-top: 1.25rem; }
.kv-booking-sum { margin: 0 0 1rem; padding: 0; }
.kv-booking-sum > div { display: flex; justify-content: space-between; gap: 1rem; padding: .55rem 0; border-bottom: 1px solid var(--kvb-line); }
.kv-booking-sum dt { font-weight: 400; color: var(--kvb-soft); }
.kv-booking-sum dd { margin: 0; font-weight: 700; text-align: right; overflow-wrap: anywhere; }
.kv-booking-sum__total dt, .kv-booking-sum__total dd { color: var(--kvb-ink); font-weight: 700; }
.kv-booking-error, .kv-booking-alert { color: #9b1c1f; font-weight: 700; }
.kv-booking-alert { background: #fdecec; border: 1px solid #f0b4b5; border-radius: var(--kvb-radius); padding: .8rem 1rem; margin-bottom: 1rem; }
.kv-booking-alert[hidden] { display: none; }

.kv-booking-check { display: flex; gap: .7rem; align-items: flex-start; margin: .9rem 0; }
.kv-booking-check input { width: 1.4rem; height: 1.4rem; margin: .1rem 0 0; flex: none; accent-color: var(--kvb-accent-strong); }
.kv-booking-notice { margin: 1.25rem 0 .75rem; padding: .8rem 1rem; border-left: 4px solid var(--kv-gold, #debd5f); background: #fbf6e6; }
.kv-booking-submit { width: 100%; min-height: 48px; }
@media (min-width: 768px) { .kv-booking-submit { width: auto; } }
.kv-booking-nav { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem; margin-top: 1.25rem; }
.kv-booking-nav[hidden] { display: none; }
.kv-booking-nav .kv-btn { min-height: 44px; }
.kv-booking-nav .kv-btn:only-child { margin-left: auto; }

.kv-booking-hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.kv-booking-done { max-width: 44rem; }
.kv-booking-lead { font-size: 1.1rem; }
.kv-booking-next li { margin-bottom: .5rem; }
