/* Calendar — shared styles for month/week/day views */

/* ── Shell ────────────────────────────────────────────────────── */

.calendar-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--line);
  margin-bottom: var(--space-4);
}

.calendar-nav__period {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--text-md);
  font-weight: 600;
}

.calendar-nav__period a {
  padding: var(--space-1) var(--space-2);
  text-decoration: none;
  color: var(--fg-muted);
  border-radius: var(--radius-sm);
}

.calendar-nav__period a:hover {
  background: var(--bg-sunken);
}

.calendar-nav__views {
  display: flex;
  gap: var(--space-1);
}

.calendar-nav__view {
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-sm);
  text-decoration: none;
  color: var(--fg-muted);
  font-size: var(--text-sm);
}

.calendar-nav__view:hover {
  background: var(--bg-sunken);
}

.calendar-nav__view--active {
  background: var(--ink-900);
  color: var(--paper-50);
}

.calendar-nav__view--active:hover {
  background: var(--ink-800);
}

/* ── Month view ───────────────────────────────────────────────── */

.calendar-month {
  display: grid;
  grid-template-rows: auto;
}

.calendar-month__header {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  border-bottom: 2px solid var(--line);
  margin-bottom: var(--space-1);
}

.calendar-month__weekday {
  padding: var(--space-2);
  text-align: center;
  font-size: var(--text-xs);
  font-weight: 600;
  color: var(--fg-subtle);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
}

.calendar-month__week {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  border-bottom: 1px solid var(--line);
  min-height: 6rem;
}

.calendar-month__cell {
  padding: 6px;
  border-right: 1px solid var(--line);
  overflow: hidden;
}

.calendar-month__cell:last-child {
  border-right: none;
}

.calendar-month__cell--outside {
  background: var(--bg-sunken);
}

.calendar-month__cell--outside .calendar-month__date {
  color: var(--fg-faint);
}

.calendar-month__cell--today .calendar-month__date {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  background: var(--ink-900);
  color: var(--paper-50);
  border-radius: 50%;
  font-weight: 700;
}

.calendar-month__date {
  font-size: var(--text-xs);
  font-weight: 500;
  color: var(--fg-muted);
  margin-bottom: var(--space-1);
  display: block;
}

/* ── Week view ────────────────────────────────────────────────── */

.calendar-week {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  overflow: hidden;
  min-height: 20rem;
}

.calendar-week__day {
  padding: var(--space-2);
  border-right: 1px solid var(--line);
}

.calendar-week__day:last-child {
  border-right: none;
}

.calendar-week__day--today {
  background: var(--bg-tint);
}

.calendar-week__header {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: var(--space-2);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--line);
  font-size: var(--text-xs);
  color: var(--fg-subtle);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
}

.calendar-week__header span:last-child {
  font-size: var(--text-md);
  color: var(--fg);
  font-weight: 700;
}

/* ── Day view ─────────────────────────────────────────────────── */

.calendar-day {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  overflow: hidden;
  min-height: 20rem;
}

.calendar-day__header {
  padding: var(--space-3) var(--space-4);
  background: var(--bg-sunken);
  border-bottom: 1px solid var(--line);
  font-weight: 600;
  font-size: var(--text-md);
  color: var(--fg-muted);
}

.calendar-day__header--today {
  background: var(--bg-tint);
  color: var(--brand-ink);
}

.calendar-day__empty {
  padding: var(--space-8);
  text-align: center;
  color: var(--fg-faint);
  font-size: var(--text-sm);
}

/* ── Out of Office indicators ─────────────────────────────────── */

.calendar-ooo {
  display: block;
  padding: 0.2rem 6px;
  margin-bottom: 0.2rem;
  border-radius: var(--radius-xs);
  background: var(--warning-soft);
  border-left: 3px solid var(--saffron-600);
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--ink-700);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ── Occurrence chips ─────────────────────────────────────────── */

.calendar-occurrence {
  display: flex;
  flex-direction: column;
  padding: 0.2rem 6px;
  margin-bottom: 0.2rem;
  border-radius: var(--radius-xs);
  background: var(--mint-100);
  border-left: 3px solid var(--mint-600);
  text-decoration: none;
  font-size: 0.7rem;
  line-height: 1.3;
  overflow: hidden;
  color: var(--ink-800);
}

.calendar-occurrence:hover {
  background: var(--mint-200);
}

.calendar-occurrence--cancelled {
  background: var(--bg-sunken);
  border-left-color: var(--line-strong);
  color: var(--fg-subtle);
  text-decoration: line-through;
  opacity: 0.7;
}

.calendar-occurrence__time {
  font-weight: 600;
}

.calendar-occurrence__name {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
