/**
 * Availability editor — week-view calendar grid (Calendly + Cal.com style).
 */

.availability-editor {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  width: 100%;
}

.availability-editor__toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
}

.availability-editor__toolbar-info {
  font-size: 0.85rem;
  color: var(--color-text-muted);
}

.availability-editor__grid-wrapper {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-bg-elevated);
}

.availability-editor__week-header {
  display: grid;
  grid-template-columns: 60px repeat(7, 1fr);
  background: var(--color-bg-overlay);
  border-bottom: 1px solid var(--color-border);
}

.availability-editor__day-header {
  padding: var(--space-2);
  text-align: center;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-text);
  border-right: 1px solid var(--color-border);
}

.availability-editor__day-header:last-child {
  border-right: none;
}

.availability-editor__time-header {
  padding: var(--space-2);
  border-right: 1px solid var(--color-border);
}

.availability-editor__grid {
  display: grid;
  grid-template-columns: 60px repeat(7, 1fr);
  position: relative;
}

.availability-editor__hour-row {
  display: contents;
}

.availability-editor__hour-label {
  padding: var(--space-1) var(--space-2);
  font-size: 0.75rem;
  color: var(--color-text-muted);
  border-right: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  text-align: right;
  background: var(--color-bg-overlay);
}

.availability-editor__cell {
  height: 36px;
  border-right: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  cursor: cell;
  position: relative;
}

.availability-editor__cell:last-child {
  border-right: none;
}

.availability-editor__cell.is-recurring {
  background: rgba(34, 197, 94, 0.18);
}

.availability-editor__cell.is-oneoff {
  background: rgba(59, 130, 246, 0.20);
}

.availability-editor__cell.is-blackout {
  background: rgba(239, 68, 68, 0.20);
}

.availability-editor__cell.is-busy {
  background: repeating-linear-gradient(
    45deg,
    transparent,
    transparent 4px,
    rgba(120, 120, 120, 0.18) 4px,
    rgba(120, 120, 120, 0.18) 8px
  );
}

.availability-editor__cell:hover {
  background: var(--color-bg-overlay);
}

.availability-editor__cell.is-dragging {
  background: rgba(34, 197, 94, 0.4);
}

.availability-editor__legend {
  display: flex;
  gap: var(--space-4);
  font-size: 0.8rem;
  color: var(--color-text-muted);
  flex-wrap: wrap;
}

.availability-editor__legend-item {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

.availability-editor__legend-swatch {
  width: 14px;
  height: 14px;
  border-radius: var(--radius-sm);
}

.availability-editor__legend-swatch--recurring { background: rgba(34, 197, 94, 0.35); }
.availability-editor__legend-swatch--oneoff { background: rgba(59, 130, 246, 0.35); }
.availability-editor__legend-swatch--blackout { background: rgba(239, 68, 68, 0.35); }

@media (max-width: 768px) {
  .availability-editor__grid-wrapper {
    overflow-x: auto;
  }
  .availability-editor__week-header,
  .availability-editor__grid {
    min-width: 700px;
  }
}

/* Mobile list mode */
.availability-editor--list .availability-editor__grid-wrapper {
  display: none;
}

.availability-editor__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.availability-editor__list-day {
  background: var(--color-bg-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}

.availability-editor__list-day-name {
  font-weight: 700;
  margin-bottom: var(--space-2);
}

.availability-editor__list-slot {
  display: flex;
  justify-content: space-between;
  padding: var(--space-1) 0;
  font-size: 0.9rem;
}
