/* Календарь: сетка месяца 7×6, колонки недели, повестка, чипы записей по типу (только токены). Владелец — cal-dash. */
.cal-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s3); }
.cal-toolbar .row { display: flex; align-items: center; gap: var(--s2); flex-wrap: wrap; }
.cal-caption { margin: 0 0 0 var(--s2); font-size: var(--fs-lg); }
.cal-caption::first-letter, .cal-agenda-day h3::first-letter { text-transform: uppercase; }
.cal-body { padding: 0; overflow: hidden; }

.cal-grid { display: flex; flex-direction: column; }
.cal-wd, .cal-cells { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-wd > div { padding: var(--s2); font-size: var(--fs-xs); color: var(--fg-muted); text-transform: uppercase;
  letter-spacing: var(--tracking-caps); border-bottom: var(--border-w) solid var(--border); }
.cal-cell { min-height: 112px; padding: var(--s1h); border-right: var(--border-w) solid var(--border);
  border-bottom: var(--border-w) solid var(--border); display: flex; flex-direction: column; gap: var(--s1); min-width: 0; }
.cal-cell:nth-child(7n) { border-right: 0; }
.cal-cell.out { background: var(--surface-2); }
.cal-cell.out .cal-day { color: var(--fg-muted); }
.cal-cell.today .cal-day { background: var(--accent); color: var(--on-accent); }
.cal-day { align-self: flex-start; min-width: 28px; height: 28px; padding: 0 var(--s1h); border: 0; border-radius: var(--r-pill);
  background: transparent; color: var(--fg); font: inherit; font-weight: var(--fw-semibold); cursor: pointer; }
.cal-day:hover { background: var(--surface-3); }
.cal-day:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.cal-items { display: flex; flex-direction: column; gap: var(--s1); min-width: 0; }
.cal-more { font-size: var(--fs-xs); color: var(--link); }

.cal-item { display: flex; align-items: center; gap: var(--s1h); min-width: 0; padding: 2px var(--s1h);
  border-radius: var(--r-xs); font-size: var(--fs-xs); color: var(--fg); text-decoration: none;
  background: var(--surface-2); --cal-tone: var(--chart-1); }
a.cal-item:hover { background: var(--surface-3); }
a.cal-item:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.cal-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-dot { flex: none; width: 8px; height: 8px; border-radius: var(--r-pill); background: var(--cal-tone); }
.cal-item.tone-meeting { --cal-tone: var(--chart-1); }
.cal-item.tone-call { --cal-tone: var(--chart-2); }
.cal-item.tone-other { --cal-tone: var(--chart-5); }
.cal-item.tone-absence { --cal-tone: var(--border-strong); background: var(--surface-3); }
.cal-item.tone-busy { --cal-tone: var(--border-strong); color: var(--fg-muted); }
.cal-item.tone-warn { --cal-tone: var(--warn); background: var(--warn-soft); }
.cal-item.tone-danger { --cal-tone: var(--danger); background: var(--danger-soft); font-weight: var(--fw-medium); }

.cal-week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-wcol { min-height: 320px; padding: var(--s2); border-right: var(--border-w) solid var(--border); min-width: 0; }
.cal-wcol:last-child { border-right: 0; }
.cal-wcol h3 { margin: 0 0 var(--s2); font-size: var(--fs-sm); }
.cal-wcol.today h3 .cal-day { background: var(--accent); color: var(--on-accent); }

.cal-agenda-day { padding: var(--s3) var(--s4); border-bottom: var(--border-w) solid var(--border); }
.cal-agenda-day:last-child { border-bottom: 0; }
.cal-agenda-day h3 { margin: 0 0 var(--s2); font-size: var(--fs-sm); }
.cal-agenda-day li { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s2); }
.cal-agenda-day .cal-item { font-size: var(--fs-sm); }

.cal-legend { display: flex; flex-wrap: wrap; gap: var(--s2); margin: 0; padding: 0; list-style: none; }

@media (max-width: 900px) {
  .cal-week { grid-template-columns: minmax(0, 1fr); }
  .cal-wcol { min-height: 0; border-right: 0; border-bottom: var(--border-w) solid var(--border); }
}
@media (max-width: 700px) {
  .cal-cell { min-height: 64px; padding: var(--s1); }
  .cal-cell .cal-text { display: none; }
  .cal-cell .cal-item { padding: 2px; background: transparent; }
  .cal-cell .cal-items { flex-direction: row; flex-wrap: wrap; }
}
