/* Planning business states only. Calendar structure lives in weekly-grid.css; shared slot/card visuals live in components/calendar.css. */
.planning-grid-toolbar .planning-publish-action { min-width: 154px; }
.planning-board .planning-slot-zone {
  position: relative;
  min-width: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  color: var(--rst-ui-text);
  cursor: pointer;
}
.planning-board .planning-slot-zone:is(.is-lunch,.is-evening) { justify-content: center; }
.planning-board .planning-slot-zone.empty { width: 100%; height: 100%; border: 1px solid transparent; }
.planning-board .planning-slot-zone:is(.is-readonly,.is-readonly:hover) { cursor: default; outline: 0; }

.planning-board .planning-slot-zone > .rs-calendar-card {
  width: calc(100% - 8px);
  max-width: none;
  height: calc(100% - 8px);
  margin: 4px;
}

.planning-board .planning-slot-zone:is(.rs-calendar-slot--availability-available,.rs-calendar-slot--availability-partial,.rs-calendar-slot--availability-unavailable) { border-color: transparent; }
.planning-board .planning-slot-zone.empty:not(.is-readonly):not(:has(.rs-calendar-card)):is(:hover,:focus-visible) { border-color: var(--rst-calendar-slot-hover-border); box-shadow: none; }
.planning-board .planning-slot-zone.empty:not(:has(.rs-calendar-card)):hover > .rs-slot-add { opacity: 1; }

.planning-board .planning-slot-empty { position: absolute; inset: 0; width: auto; height: auto; }
.planning-board .planning-slot-zone.is-readonly.empty:hover > .planning-slot-empty { opacity: 0; }
.planning-board .planning-slot-zone.empty:is(:hover,:focus-within) > .planning-availability-line { opacity: 0; }
.planning-board .planning-availability-line { position: absolute; left: 50%; top: 50%; width: 22px; height: 0; display: block; transform: translate(-50%,-50%); border-top: 1px solid var(--rst-op-unavailable-accent); opacity: .82; pointer-events: none; }

.planning-board .planning-slot-card {
  z-index: 3;
  overflow: visible;
}
.planning-board .planning-slot-card.has-conflict { border-color: var(--rst-op-conflict-border); }
.planning-board .planning-slot-zone:hover .planning-slot-card { border-color: var(--shift-accent,var(--rst-op-planned-accent)); }
.planning-board .planning-slot-zone .rs-absence-slot:hover { border-color: var(--rst-op-absence-accent); }

.planning-board .planning-slot-card-head,
.planning-board .planning-slot-time,
.planning-board .planning-slot-position { width: 100%; min-width: 0; overflow: hidden; white-space: nowrap; }
.planning-board .planning-slot-card-head { position: relative; display: block; }
.planning-board .planning-slot-time,
.planning-board .planning-slot-position {
  display: block;
  min-width: 0;
  height: 18px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.planning-board .planning-slot-time { color: var(--rst-ui-text-heading); line-height: 18px; font-size: clamp(11.4px,.66vw,12.6px); font-weight: var(--rst-fw-medium); }
.planning-board .planning-slot-position { color: var(--shift-accent); line-height: 18px; font-size: clamp(10.9px,.60vw,12.2px); font-weight: var(--rst-fw-display); }

.planning-board .planning-slot-assignment { position: relative; min-height: 18px; overflow: visible; }
.planning-board .planning-slot-edit-menu,
.planning-board .planning-zone-menu { position: absolute; left: 0; top: calc(100% + 4px); z-index: var(--rst-z-cell-open); display: grid; gap: 4px; min-width: 132px; }
.planning-board .rs-weekly-day-cell:has(.planning-slot-zone.is-zone-open),
.planning-board .rs-weekly-day-cell:has(.planning-slot-edit-menu),
.planning-board .planning-slot-zone.is-zone-open,
.planning-board .planning-slot-zone:has(.planning-slot-edit-menu),
.planning-board .planning-slot-card:has(.planning-slot-assignment.is-open),
.planning-board .planning-slot-card:has(.planning-slot-edit-menu) { overflow: visible; z-index: var(--rst-z-cell-open); }

.planning-board .planning-slot-card.has-coverage-over { border-color: var(--rst-op-partial-border); }
.planning-board .planning-slot-card.has-coverage-under { border-color: var(--rst-op-conflict-border); }

.planning-board .planning-slot-zone.rs-calendar-slot--availability-unavailable .planning-slot-card.has-conflict:not(.has-absence-approved):not(.has-absence-pending)::before,
.planning-board .planning-slot-zone.rs-calendar-slot--availability-unknown .planning-slot-card.has-conflict:not(.has-absence-approved):not(.has-absence-pending)::before,
.planning-board .planning-slot-conflict-note {
  position: absolute;
  left: 6px;
  right: 6px;
  bottom: 4px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  color: var(--rst-op-conflict-accent);
  font-size: clamp(8px,.52vw,10px);
  font-weight: var(--rst-fw-display);
}
.planning-board .planning-slot-zone.rs-calendar-slot--availability-unavailable .planning-slot-card.has-conflict:not(.has-absence-approved):not(.has-absence-pending)::before { content: "! Unavailable"; }
.planning-board .planning-slot-zone.rs-calendar-slot--availability-unknown .planning-slot-card.has-conflict:not(.has-absence-approved):not(.has-absence-pending)::before { content: "! No response"; }
