:root { --left-col-width: 240px; --cell-width: 100px; /* Dynamic offsets controlled by Vue */ --h-eod: 42px; --h-status: 34px; --h-dates: 52px; --primary-soft: #f8fafc; --border-color: #e2e8f0; /* Crosshair Colors */ --highlight-bg: rgba(99, 102, 241, 0.12); --highlight-border: rgba(99, 102, 241, 0.5); } /* MOBILE OPTIMIZATION */ @media (max-width: 599px) { :root { --left-col-width: 160px; } .app-left-col { padding: 0 8px !important; } .agent-role { display: none; } } body, html { height: 100%; overflow: hidden; margin: 0; padding: 0; background-color: #f8fafc; color: #334155; } .grid-viewport::-webkit-scrollbar { width: 10px; height: 10px; } .grid-viewport::-webkit-scrollbar-track { background: #f1f5f9; } .grid-viewport::-webkit-scrollbar-thumb { background-color: #cbd5e1; border-radius: 20px; border: 2px solid #f1f5f9; } /* Important: This must be the scroll container for QVirtualScroll */ .grid-viewport { height: calc(100vh - 64px) !important; overflow: auto !important; background: white; position: relative; display: block; border-top: 1px solid var(--border-color); } .planner-content { display: inline-block; min-width: fit-content; vertical-align: top; } .planner-row { display: flex; flex-direction: row; border-bottom: 1px solid #f1f5f9; } .left-col { width: var(--left-col-width); min-width: var(--left-col-width); position: sticky; left: 0; z-index: 20; background: white; border-right: 1px solid var(--border-color); display: flex; align-items: center; padding: 0 16px; flex-shrink: 0; } /* Sticky Header Classes */ .row-eod { position: sticky; top: 0; z-index: 40; height: var(--h-eod); background: #fffafb; } .row-status { position: sticky; top: var(--h-eod); z-index: 39; height: var(--h-status); background: white; } .row-dates { position: sticky; top: calc(var(--h-eod) + var(--h-status)); z-index: 38; height: var(--h-dates); background: #fdfdfd; } .row-eod .left-col { z-index: 60; background: #fffafb; color: #db2777; border-bottom: 1px solid #fce7f3; } .row-status .left-col { z-index: 59; background: white; color: #64748b; } .row-dates .left-col { z-index: 58; background: #fdfdfd; padding-right: 12px; border-bottom: 1px solid var(--border-color); } .cells-area { display: flex; flex-direction: row; } .cell { width: var(--cell-width); min-width: var(--cell-width); height: 58px; border-right: 1px solid #f1f5f9; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; transition: background 0.1s ease; } .cell:hover:not(.cursor-not-allowed) { background-color: #f8fafc; } .cell-compact { height: 42px; } .shift-badge { font-size: 9px; font-weight: 800; padding: 2px 4px; border-radius: 4px; width: 90%; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 2px; border: 1px solid rgba(0,0,0,0.05); } /* --- CROSSHAIR STYLES (Dynamic Hover) --- */ .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; } /* Performance Optimization: Use :hover for Row Highlight instead of JS */ /* MODIFIED: Now scoped to .crosshair-enabled class */ .planner-row-item.crosshair-enabled:hover { background-color: var(--highlight-bg); box-shadow: inset 0 1px 0 var(--highlight-border), inset 0 -1px 0 var(--highlight-border); } .planner-row-item.crosshair-enabled:hover .left-col { background-color: #e0e7ff !important; border-top: 1px solid var(--highlight-border); border-bottom: 1px solid var(--highlight-border); color: #3730a3; }