/* grid-cell — individual shift cell with modern UI/UX */ .grid-cell-root { width: var(--cell-width); min-width: var(--cell-width); height: 52px; /* Reduced from 58px for denser layout */ border-right: 1px solid var(--border-color-light); display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); background: var(--background-primary); } .grid-cell-root:hover:not(.cursor-not-allowed) { background-color: var(--hover-bg); transform: translateY(-1px); box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.1); z-index: 2; } .grid-cell-compact { height: 38px; /* Reduced from 42px for denser layout */ } .grid-cell-shift-badge { font-size: 9px; font-weight: 800; padding: 2px 6px; border-radius: var(--radius-sm); width: 90%; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 2px; border: 1px solid rgba(0, 0, 0, 0.08); transition: all 0.2s ease; box-shadow: var(--shadow-sm); } /* Shift type color variations */ .grid-cell-shift-badge.shift-am { background-color: rgba(14, 165, 233, 0.15); color: #0c4a6e; border-color: rgba(14, 165, 233, 0.3); } .grid-cell-shift-badge.shift-pm { background-color: rgba(168, 85, 247, 0.15); color: #5b21b6; border-color: rgba(168, 85, 247, 0.3); } .grid-cell-shift-badge.shift-night { background-color: rgba(79, 70, 229, 0.15); color: #3730a3; border-color: rgba(79, 70, 229, 0.3); } .grid-cell-shift-badge.shift-full { background-color: rgba(16, 185, 129, 0.15); color: #065f46; border-color: rgba(16, 185, 129, 0.3); } .grid-cell-locked-overlay { position: absolute; inset: 0; background: rgba(241, 245, 249, 0.7); display: flex; align-items: center; justify-content: center; z-index: 5; backdrop-filter: blur(1px); border-radius: var(--radius-sm); } .grid-cell-tooltip { padding: var(--spacing-md) var(--spacing-lg); max-width: 240px; border: 1px solid var(--border-color); box-shadow: var(--shadow-lg); background: var(--background-primary); border-radius: var(--radius-lg); font-size: 12px; line-height: 1.5; } /* Weekend + highlight helpers (applied via dynamic class) */ .grid-cell-bg-weekend { background-color: var(--background-tertiary) !important; } .grid-cell-bg-reading-mode { background-color: rgba(255, 249, 196, 0.8) !important; box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.3); } .grid-cell-bg-reading-mode-intersection { background-color: rgba(255, 241, 118, 0.9) !important; box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.5); } .grid-cell-col-hovered { background-color: var(--highlight-bg) !important; box-shadow: inset 1px 0 0 var(--highlight-border), inset -1px 0 0 var(--highlight-border); z-index: 1; } /* Selection state */ .grid-cell-selected { background-color: rgba(79, 70, 229, 0.1) !important; box-shadow: inset 0 0 0 2px var(--primary-color); } /* Availability indicators */ .grid-cell-available { position: absolute; top: var(--spacing-xs); right: var(--spacing-xs); width: 6px; height: 6px; border-radius: 50%; background-color: var(--success-color); box-shadow: 0 0 0 2px var(--background-primary); z-index: 3; } .grid-cell-unavailable { position: absolute; top: var(--spacing-xs); right: var(--spacing-xs); width: 6px; height: 6px; border-radius: 50%; background-color: var(--danger-color); box-shadow: 0 0 0 2px var(--background-primary); z-index: 3; } .grid-cell-partial { position: absolute; top: var(--spacing-xs); right: var(--spacing-xs); width: 6px; height: 6px; border-radius: 50%; background-color: var(--warning-color); box-shadow: 0 0 0 2px var(--background-primary); z-index: 3; } /* Empty state */ .grid-cell-empty { color: var(--text-tertiary); font-size: 10px; font-weight: 500; opacity: 0.6; } /* Conflict state */ .grid-cell-conflict { background-color: rgba(239, 68, 68, 0.08) !important; box-shadow: inset 0 0 0 1px rgba(239, 68, 68, 0.3); animation: pulse-conflict 2s ease-in-out infinite; } @keyframes pulse-conflict { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } /* Hover tooltip enhancement */ .grid-cell-root:hover .grid-cell-tooltip-target { opacity: 1; visibility: visible; transform: translateY(0); } .grid-cell-tooltip-target { opacity: 0; visibility: hidden; transform: translateY(5px); transition: all 0.2s ease; }