:root {
  --calendar-radius: 0px;
}
.calendar .tag {
  display: inline-block;
  padding: 0 6px;
  border-radius: 3px;
  background: rgba(255,255,255,0.2);
  color: #fff;
  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: #333; padding: 4px 8px; border-radius: 4px; }
.calendar-tab.is-active { background: #111; color: #fff; }
.calendar-nav-link { margin-left: 8px; text-decoration: none; color: rgba(0,0,0,0.7); 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,
    rgba(0,0,0,0.08) 0px,
    rgba(0,0,0,0.08) 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 rgba(0,0,0,0.1);
  border-radius: var(--calendar-radius);
  padding: 8px;
  background: #fff;
}

.calendar-day.is-today {
  border-color: rgba(0,0,0,0.5);
  /* box-shadow: inset 0 0 0 0 rgba(0,0,0,0.1); */
}

.calendar-day-label {
  font-size: 0.8rem;
  color: #777;
  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: #fff;
  background: rgba(0,0,0,0.6); /* overlap-friendly opacity */
}

/* Ensure anchor items render as white in light mode */
a.calendar-item,
a.calendar-item:link,
a.calendar-item:visited,
a.calendar-item:hover,
a.calendar-item:active { color: #fff; }
.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: rgba(255, 99, 0, 0.75); }
.calendar-item.is-event { background: rgba(0, 0, 0, 0.6); }
.calendar-item.is-all-day { background: rgba(0, 0, 0, 0.95); }

/* Week hour gutter and labels */
.calendar-gutter {
  border: 1px solid rgba(0,0,0,0.1);
  border-radius: var(--calendar-radius);
  background: #fff;
  padding: 8px 0;
}
.calendar-hour-label {
  height: 60px; /* 60px per hour */
  line-height: 60px;
  font-size: 0.7rem;
  color: #666;
  padding-left: 6px;
  border-top: 1px dashed rgba(0,0,0,0.08);
}
.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(--color-orange);
  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: #555; margin-bottom: 4px; }
.calendar-field .input { width: 100%; padding: 6px 8px; border: 1px solid rgba(0,0,0,0.15); border-radius: var(--calendar-radius); background: #fff; }
.calendar-actions { display: flex; align-items: flex-end; }
/* .calendar-actions .btn { padding: 8px 12px; border: 0; background: #111; color: #fff; } */



/* Dark mode */
@media (prefers-color-scheme: dark) {
  .calendar-title { color: #fff; }
  .calendar-tab { color: #ddd; }
  .calendar-tab.is-active { background: #eee; color: #111; }
  .calendar-nav-link { color: #ddd; }

  /* Week hour gutter and labels in dark mode */
  .calendar-gutter { background: #444; border-color: #555; }
  .calendar-hour-label { color: #bbb; border-top-color: rgba(255,255,255,0.12); }

  .calendar-day { background: #444; border-color: #555; }
  .calendar-day.is-today { border-color: #eee; box-shadow: inset 0 0 0 2px #eee; }
  .calendar-day-label { color: #bbb; }

  .calendar-item { background: rgba(255,255,255,0.15); color: #fff; }
  .calendar-item.is-block { background: rgba(255, 99, 0, 0.8); }
  .calendar-item.is-event { background: rgba(255,255,255,0.15); }
  .calendar-item.is-all-day { background: rgba(255,255,255,0.95); color: #111; }
  a.calendar-item { color: #fff; }

  /* Dark mode hour grid lines */
  .calendar-24h {
    background-image: repeating-linear-gradient(
      to bottom,
      rgba(255,255,255,0.12) 0px,
      rgba(255,255,255,0.12) 1px,
      transparent 1px,
      transparent 60px
    );
  }

  .calendar-field .label { color: #ccc; }
  .calendar-field .input { background: #555; color: #fff; border-color: #666; }
  .calendar-actions .btn { background: #eee; color: #111; }
}

/* 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 rgba(0,0,0,0.15); }
.calendar-item.is-block { border: 1px solid rgba(255, 99, 0, 0.9); opacity: 0.95; }
.calendar-item.is-all-day { border: 1px solid rgba(0,0,0,0.3); }
.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 rgba(0,0,0,0.25); }
.calendar-item.is-event:hover,
.calendar-item.is-event:focus-within { background: rgba(0,0,0,1); border-color: rgba(0,0,0,0.4); }
.calendar-item.is-block:hover,
.calendar-item.is-block:focus-within { background: rgba(255, 99, 0, 0.9); }
.calendar-item.is-all-day:hover,
.calendar-item.is-all-day:focus-within { background: rgba(0, 0, 0, 1); color: #fff; }