.lak-availability {
  --lak-navy: #16323B;
  --lak-teal: #0F5F73;
  --lak-cream: #F7F5F0;
  --lak-paper: #FCFBF7;
  --lak-gold: #A87B3E;
  --lak-muted: #6B7280;
  --lak-line: #E4E7EB;
  --lak-booked-bg: rgba(22, 50, 59, 0.12);
  --lak-booked-text: rgba(22, 50, 59, 0.45);
  --lak-past-text: rgba(107, 114, 128, 0.5);
  --lak-font-body: Karla, system-ui, sans-serif;
  --lak-font-display: Fraunces, Georgia, serif;
  --lak-cell: 52px;
  --lak-gap: 4px;
  --lak-radius: 6px;
  --lak-max-width: 480px;

  font-family: var(--lak-font-body);
  color: var(--lak-navy);
  box-sizing: border-box;
  max-width: var(--lak-max-width);
  margin: 0 auto;
}

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

.lak-loading,
.lak-error {
  margin: 0;
  font-family: var(--lak-font-body);
}

.lak-loading {
  font-size: 14px;
  color: var(--lak-muted);
}

.lak-error {
  font-size: 15px;
  color: var(--lak-navy);
}

/* Header row */
.lak-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 16px;
}

.lak-title {
  flex: 1;
  text-align: center;
  font-family: var(--lak-font-display);
  font-size: 22px;
  font-weight: 400;
  color: var(--lak-navy);
}

.lak-availability .lak-prev,
.lak-availability .lak-next {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid var(--lak-teal);
  border-radius: 50%;
  background: transparent;
  color: var(--lak-teal);
  cursor: pointer;
}

.lak-availability .lak-prev:hover:not(:disabled),
.lak-availability .lak-next:hover:not(:disabled) {
  background: var(--lak-teal);
  color: #fff;
}

.lak-availability .lak-prev:disabled,
.lak-availability .lak-next:disabled {
  opacity: 0.35;
  cursor: default;
}

.lak-availability .lak-prev:focus-visible,
.lak-availability .lak-next:focus-visible {
  outline: 2px solid var(--lak-teal);
  outline-offset: 2px;
}

/* Month grid: table semantics kept via roles, laid out as a CSS grid */
.lak-month {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: var(--lak-gap);
  width: 100%;
  margin: 0;
}

.lak-month thead,
.lak-month tbody,
.lak-month tr {
  display: contents;
}

.lak-caption {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.lak-dow {
  font-family: var(--lak-font-body);
  font-size: 11px;
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--lak-muted);
  text-align: center;
  padding: 0 0 4px;
}

.lak-month td {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1;
  width: 100%;
  min-width: 0;
  min-height: var(--lak-cell);
  padding: 0;
  font-family: var(--lak-font-body);
  font-size: 15px;
  color: var(--lak-navy);
  background: var(--lak-paper);
  border: 1px solid var(--lak-line);
  border-radius: var(--lak-radius);
}

.lak-month td.lak-empty {
  background: none;
  border: 0;
}

.lak-month td.lak-booked,
.lak-availability .lak-swatch.lak-booked {
  background: var(--lak-booked-bg);
  border: 0;
  color: var(--lak-booked-text);
}

.lak-month td.lak-past {
  background: transparent;
  border: 0;
  color: var(--lak-past-text);
}

.lak-month td.lak-today {
  box-shadow: inset 0 0 0 2px var(--lak-teal);
  font-weight: 600;
}

/* Legend */
.lak-legend {
  list-style: none;
  display: flex;
  gap: 20px;
  margin: 16px 0 0;
  padding: 0;
  font-family: var(--lak-font-body);
  font-size: 13px;
  color: var(--lak-muted);
}

.lak-legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
}

.lak-swatch {
  display: inline-block;
  width: 14px;
  height: 14px;
  background: var(--lak-paper);
  border: 1px solid var(--lak-line);
  border-radius: var(--lak-radius);
}

/* Footer */
.lak-footer {
  margin-top: 12px;
}

.lak-note {
  margin: 0;
  font-family: var(--lak-font-body);
  font-size: 14px;
  color: var(--lak-muted);
}

.lak-availability .lak-book {
  display: inline-block;
  margin: 0 0 12px;
  padding: 10px 20px;
  font-family: var(--lak-font-body);
  font-size: 15px;
  color: #fff;
  background: var(--lak-teal);
  border-radius: var(--lak-radius);
  text-decoration: none;
}

.lak-availability .lak-book:focus-visible {
  outline: 2px solid var(--lak-teal);
  outline-offset: 2px;
}
