.calendar .tag {
  display: inline-block;
  padding: 0 6px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--ink) 12%, transparent);
  color: inherit;
  text-decoration: none;
  margin-right: 4px;
}

.calendar .button {
  cursor: pointer;
}

/* Calendar layout */
.calendar {
  margin-top: 0.5rem;
}

.calendar-header { display:flex; align-items:center; margin-bottom: 12px; }
.calendar-title { font-size: 1.5rem; font-weight: 600; margin-right: 12px; }
.calendar-tabs { margin-right: auto; }
.calendar-tab { margin-right: 10px; text-decoration: none; color: var(--ink); padding: 4px 8px; border-radius: 4px; }
.calendar-tab.is-active { background: var(--ink); color: var(--paper); }
.calendar-nav-link { margin-left: 8px; text-decoration: none; color: var(--ink-soft); font-size: 0.8rem; }

.calendar-grid {
  display: grid;
  gap: 6px;
}

.calendar-grid-week {
  grid-template-columns: 60px repeat(7, 1fr);
}

/* Week view: fill viewport and provide scrollable 24h columns */
.calendar.calendar-week { display: flex; flex-direction: column; overflow: auto; }
.calendar.calendar-week .calendar-grid-week { flex: 1; min-height: 0; height: calc(100vh - 220px); }
.calendar.calendar-week .calendar-day { display: flex; flex-direction: column; min-height: auto; }
.calendar.calendar-week .calendar-day-body { flex: 1; min-height: 0; overflow-y: auto; }

/* 24h scaffold inside each day: 60px per hour, subtle grid lines */
.calendar-24h {
  position: relative;
  min-height: 1440px; /* 24h * 60px */
  background-image: repeating-linear-gradient(
    to bottom,
    var(--line) 0px,
    var(--line) 1px,
    transparent 1px,
    transparent 60px
  );
}

.calendar-grid-month {
  grid-template-columns: repeat(7, 1fr);
}

.calendar-day {
  min-height: 140px;
  min-width: 80px;
  border: 1px solid var(--line);
  border-radius: var(--calendar-radius);
  padding: 8px;
  background: var(--paper);
}

.calendar-day.is-today {
  border-color: var(--ink);
}

.calendar-day-label {
  font-size: 0.8rem;
  color: var(--ink-soft);
  height: 28px;
  line-height: 28px;
  margin-bottom: 0;
}

.calendar-day-body {
  position: relative;
  min-height: 100px;
}

.calendar-item {
  padding: 6px 8px;
  border-radius: var(--calendar-radius);
  margin-bottom: 6px;
  color: var(--paper);
  background: color-mix(in srgb, var(--ink) 60%, transparent); /* overlap-friendly opacity */
}

/* Items are painted with ink, so their text takes the paper colour. */
a.calendar-item,
a.calendar-item:link,
a.calendar-item:visited,
a.calendar-item:hover,
a.calendar-item:active { color: var(--paper); }
.calendar-item *,
.calendar-item .calendar-item-title,
.calendar-item .calendar-item-time { color: inherit; }

.calendar-item-kind {
  font-size: 0.72rem;
  opacity: 0.85;
}

.calendar-item-title {
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
}

.calendar-item-time {
  font-size: 0.72rem;
}

.calendar-item.is-block { background: color-mix(in srgb, var(--accent) 75%, transparent); }
.calendar-item.is-event { background: color-mix(in srgb, var(--ink) 60%, transparent); }
.calendar-item.is-all-day { background: color-mix(in srgb, var(--ink) 95%, transparent); }

/* Week hour gutter and labels */
.calendar-gutter {
  border: 1px solid var(--line);
  border-radius: var(--calendar-radius);
  background: var(--paper);
  padding: 8px 0;
}
.calendar-hour-label {
  height: 60px; /* 60px per hour */
  line-height: 60px;
  font-size: 0.7rem;
  color: var(--ink-soft);
  padding-left: 6px;
  border-top: 1px dashed var(--line);
}
.calendar-hour-label:first-child { border-top: none; }

/* Gutter header to align with day labels */
.calendar-gutter-header { height: 28px; }

/* Current time indicator */
.calendar-now-line {
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--accent);
  pointer-events: none;
}

/* Form styles (Tachyons-ish helpers + minimal custom) */
.calendar-form { margin-top: 1rem; }
.calendar-form-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
}
.calendar-field .label { display: block; font-size: 0.8rem; color: var(--ink-soft); margin-bottom: 4px; }
.calendar-field .input { width: 100%; padding: 6px 8px; border: 1px solid var(--line); border-radius: var(--calendar-radius); background: var(--paper); }
.calendar-actions { display: flex; align-items: flex-end; }

/* Positioned items and overlap readability */
.calendar-item { box-sizing: border-box; overflow: hidden; }
.calendar-item { cursor: pointer; text-decoration: none; color: inherit; }
.calendar-item.is-event { border: 1px solid var(--line); }
.calendar-item.is-block { border: 1px solid color-mix(in srgb, var(--accent) 90%, transparent); opacity: 0.95; }
.calendar-item.is-all-day { border: 1px solid color-mix(in srgb, var(--ink) 30%, transparent); }
.calendar-item .calendar-item-title { font-size: 0.82rem; }
.calendar-item .calendar-item-time { opacity: 0.9; }

/* Elevate hovered/focused items to read on top of overlaps */
.calendar-item:hover,
.calendar-item:focus-within { z-index: 999 !important; box-shadow: 0 2px 8px color-mix(in srgb, var(--ink) 25%, transparent); }
.calendar-item.is-event:hover,
.calendar-item.is-event:focus-within { background: var(--ink); border-color: color-mix(in srgb, var(--ink) 40%, transparent); }
.calendar-item.is-block:hover,
.calendar-item.is-block:focus-within { background: color-mix(in srgb, var(--accent) 90%, transparent); }
.calendar-item.is-all-day:hover,
.calendar-item.is-all-day:focus-within { background: var(--ink); color: var(--paper); }