/* ==================== SCHEDULE PAGE ==================== */
.schedule-page{animation:fadeIn .3s var(--ease-out)}
.schedule-header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.schedule-tabs{display:flex;gap:5px;flex-wrap:wrap}
.schedule-tab{padding:7px 16px;border:1px solid var(--border);border-radius:99px;background:var(--surface);color:var(--text-secondary);font-family:var(--font-body);font-size:.84rem;font-weight:500;cursor:pointer;transition:all .15s}
.schedule-tab:hover{border-color:var(--primary);color:var(--primary)}
.schedule-tab.active{background:var(--primary);border-color:var(--primary);color:#fff}
.month-nav{display:flex;align-items:center;gap:8px}
.month-label{font-weight:600;font-size:.95rem;min-width:150px;text-align:center}

/* ==================== CONFLICT BANNER ==================== */
.conflict-banner{background:var(--conflict-bg);border:1px solid rgba(220,38,38,.12);border-left:4px solid var(--danger);border-radius:var(--radius-sm);padding:9px 14px;margin-bottom:12px;font-size:.8rem;color:var(--conflict-text);display:flex;align-items:flex-start;gap:7px;line-height:1.6;animation:slideDown .3s var(--ease-out)}
.conflict-icon{font-size:1rem;flex-shrink:0}

/* ==================== GRID TABLE ==================== */
.schedule-grid-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}
.grid-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.8rem}
.grid-table thead th{position:sticky;top:0;background:var(--surface);z-index:10;border-bottom:2px solid var(--border);padding:5px 3px;text-align:center;font-weight:600;color:var(--text-secondary);white-space:nowrap;user-select:none}

/* Sticky position column */
.sticky-col{position:sticky;left:0;z-index:20!important;background:var(--surface)!important;border-right:2px solid var(--border);min-width:110px;max-width:150px}
thead .sticky-col{z-index:30!important}

/* Day columns */
.col-day{min-width:52px}
.day-num{font-size:.86rem;font-weight:600;color:var(--text-primary);line-height:1.2}
.day-name{font-size:.66rem;font-weight:400;color:var(--text-muted)}
.col-day.today{background:var(--primary-dim)}
.col-day.today .day-num{color:var(--primary)}
.col-day.weekend .day-num,.col-day.weekend .day-name{color:var(--danger)}
.col-day.holiday{background:rgba(220,38,38,.03)}
.col-day.holiday .day-num{color:var(--danger)}

/* Position column */
.col-pos{text-align:left!important;padding:7px 10px!important}
.pos-name{font-weight:600;font-size:.82rem;color:var(--text-primary);line-height:1.25}
.pos-time{font-size:.68rem;color:var(--text-muted);font-family:var(--font-mono)}

/* ==================== GRID CELLS ==================== */
.grid-cell{padding:3px 2px;text-align:center;cursor:pointer;transition:background .1s;border-bottom:1px solid var(--border-light);border-right:1px solid var(--border-light);vertical-align:middle;position:relative;min-height:34px}
.grid-cell:hover{background:var(--primary-dim)}
.grid-cell.empty .cell-empty{color:var(--text-muted);font-size:.72rem}
.cell-name{font-size:.8rem;font-weight:500;color:var(--text-primary);word-break:break-all}

/* Conflict */
.grid-cell.conflict{background:var(--conflict-bg);animation:conflictPulse 2s ease infinite}
.grid-cell.conflict .cell-name{color:var(--conflict-text);font-weight:700}
@keyframes conflictPulse{0%,100%{box-shadow:inset 0 0 0 1px transparent}50%{box-shadow:inset 0 0 0 2px var(--danger)}}

/* Bay Shift (Phase 2) */
.grid-cell.bay-shift{background:var(--bay-shift-bg)}
.grid-cell.bay-shift .cell-name{color:var(--bay-shift-text);font-weight:600}
.grid-cell.bay-shift::after{content:'⊘';position:absolute;top:0;left:2px;font-size:.55rem;color:var(--bay-shift-text);opacity:.6}

/* Edit tracking */
.grid-cell.edited{background:rgba(26,86,219,.03)}
.old-name{display:block;font-size:.66rem;color:var(--edit-old);text-decoration:line-through;line-height:1.2}
.new-name{display:block;font-size:.8rem;font-weight:600;color:var(--edit-new);line-height:1.2}

/* Phone button */
.phone-btn{position:absolute;top:1px;right:1px;font-size:.6rem;opacity:0;transition:opacity .15s;text-decoration:none;z-index:5}
.grid-cell:hover .phone-btn{opacity:1}

/* Editing state */
.grid-cell.editing{padding:2px;background:#fff}
.grid-cell .saving{opacity:.6;animation:savingPulse 1s ease infinite}
@keyframes savingPulse{0%,100%{opacity:.6}50%{opacity:1}}
