/* ibizacheckin.com availability calendars — fed by dgapp (/public/availability*.json) */
.ibz-cal, .ibz-cal * { box-sizing: border-box; }
.ibz-cal {
  font-family: 'Montserrat', 'Catamaran', Arial, sans-serif;
  color: #474747;
  max-width: 1200px;
  margin: 0 auto;
  padding: 16px;
}
.ibz-cal h1, .ibz-cal h2 { font-weight: 400; letter-spacing: .04em; }
.ibz-cal h1 { font-size: 1.5rem; margin: 0 0 4px; }
.ibz-cal h2 { font-size: 1.1rem; margin: 0; }
.ibz-cal .ibz-sub { font-size: .8rem; color: #8a8a8a; margin: 0 0 14px; }
.ibz-cal a { color: #474747; }
.ibz-cal a:hover { color: rgb(52,136,204); }

.ibz-toolbar {
  display: flex; flex-wrap: wrap; gap: 10px 18px; align-items: end;
  margin: 0 0 18px; padding: 12px 14px; background: #f6f6f6; border-radius: 8px;
}
.ibz-toolbar label { display: flex; flex-direction: column; font-size: .72rem; color: #777; gap: 4px; }
.ibz-toolbar input, .ibz-toolbar select {
  font: inherit; font-size: .9rem; padding: 6px 8px; border: 1px solid #cfcfcf; border-radius: 5px; background: #fff; color: #333;
}
.ibz-toolbar button {
  font: inherit; font-size: .85rem; padding: 7px 14px; border: 1px solid #cfcfcf; border-radius: 5px; background: #fff; cursor: pointer; color: #474747;
}
.ibz-toolbar button:hover { border-color: rgb(52,136,204); color: rgb(52,136,204); }
.ibz-toolbar .ibz-nav { display: flex; gap: 6px; }
.ibz-toolbar .ibz-result { font-size: .85rem; align-self: center; margin-left: auto; }
.ibz-toolbar .ibz-result strong { font-weight: 600; }

.ibz-legend { display: flex; flex-wrap: wrap; gap: 14px; font-size: .72rem; color: #777; margin: 0 0 14px; }
.ibz-legend span::before {
  content: ''; display: inline-block; width: 14px; height: 14px; vertical-align: -3px; margin-right: 5px;
  border: 1px solid #ddd; border-radius: 3px; background: #fff;
}
.ibz-legend .l-booked::before { background: #e9e9e9; background-image: repeating-linear-gradient(135deg, transparent 0 3px, #c9c9c9 3px 4px); }
.ibz-legend .l-free::before { background: #fff; }
.ibz-legend .l-sel::before { background: #dbeaf7; border-color: rgb(52,136,204); }
.ibz-legend .l-past::before { background: #fafafa; border-color: #eee; }

.ibz-villa { margin: 0 0 30px; }
.ibz-villa-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin: 0 0 8px; }
.ibz-villa-head .ibz-meta { font-size: .75rem; color: #8a8a8a; }
.ibz-villa-head .ibz-status { font-size: .78rem; padding: 2px 9px; border-radius: 10px; margin-left: auto; }
.ibz-status.ok { background: #e3f4e6; color: #2c7a3d; }
.ibz-status.no { background: #f9e4e4; color: #a33; }
.ibz-villa.is-free-hit { }
.ibz-villa.is-dimmed { opacity: .45; }

.ibz-months { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.ibz-month { min-width: 0; }
.ibz-month-name { font-size: .78rem; text-align: center; margin: 0 0 6px; color: #555; letter-spacing: .06em; text-transform: uppercase; }
.ibz-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.ibz-dow { font-size: .6rem; text-align: center; color: #aaa; padding-bottom: 3px; }
.ibz-day {
  position: relative; aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
  font-size: .72rem; border: 1px solid #e6e6e6; border-radius: 4px; background: #fff; color: #444; overflow: hidden;
}
.ibz-day.empty { border-color: transparent; background: transparent; }
.ibz-day.past { color: #c4c4c4; border-color: #f0f0f0; background: #fafafa; }
.ibz-day.booked { background: #e9e9e9; background-image: repeating-linear-gradient(135deg, transparent 0 3px, #cdcdcd 3px 4px); color: #9a9a9a; }
/* Changeover days: the villa frees up (check-out, left half) or gets taken (check-in, right half). */
.ibz-day.checkin { background: linear-gradient(to bottom left, #e9e9e9 50%, #fff 50%); }
.ibz-day.checkout { background: linear-gradient(to top right, #e9e9e9 50%, #fff 50%); }
.ibz-day.checkin.checkout { background: #e9e9e9; background-image: repeating-linear-gradient(135deg, transparent 0 3px, #cdcdcd 3px 4px); }
.ibz-day.today { outline: 2px solid rgb(52,136,204); outline-offset: -2px; font-weight: 600; }
.ibz-day.sel { box-shadow: inset 0 0 0 2px rgb(52,136,204); background-color: #dbeaf7; }
.ibz-day.sel.booked, .ibz-day.sel.checkin.checkout { box-shadow: inset 0 0 0 2px #d33; }

.ibz-note { font-size: .75rem; color: #999; margin: 20px 0 0; }
.ibz-error { padding: 12px; background: #fff3f3; color: #a33; border-radius: 6px; font-size: .85rem; }
@media (max-width: 480px) {
  .ibz-cal { padding: 10px; }
  .ibz-months { grid-template-columns: 1fr; }
  .ibz-toolbar .ibz-result { margin-left: 0; }
}
