/* Base Styles */ body { font-family: 'Atkinson Hyperlegible', sans-serif; margin: 0; padding: 0; color: #333; } .app-container { display: flex; flex-direction: column; height: 100vh; overflow: hidden; } /* Calendar Header */ .calendar-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem; background: white; border-bottom: 1px solid #e0e0e0; } .date-range-selector { display: flex; gap: 0.5rem; } .range-btn { padding: 0.5rem 1rem; border: 1px solid #e0e0e0; border-radius: 4px; background: white; cursor: pointer; } .range-btn.active { background: #1976D2; color: white; border-color: #1976D2; } .view-controls { display: flex; gap: 1rem; align-items: center; } /* Calendar Grid Layout */ .calendar-grid { display: flex; flex: 1; overflow: auto; } /* Date Column */ .date-column { width: 120px; min-width: 120px; background: #f8f9fa; position: sticky; left: 0; z-index: 10; } .date-header { height: 60px; border-bottom: 1px solid #e0e0e0; } .date-cell { height: 100px; padding: 0.5rem; border-bottom: 1px solid #e0e0e0; display: flex; align-items: center; justify-content: center; } /* Team Columns */ .team-column { width: 200px; min-width: 200px; border-right: 1px solid #e0e0e0; } .member-header { height: 60px; padding: 0.5rem; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e0e0e0; background: white; position: sticky; top: 0; } .member-avatar { width: 32px; height: 32px; border-radius: 50%; background: #2196F3; color: white; display: flex; align-items: center; justify-content: center; font-weight: bold; } .task-cell { height: 100px; padding: 0.25rem; border-bottom: 1px solid #e0e0e0; background: white; position: relative; outline: none; } .task-cell:focus { box-shadow: inset 0 0 0 2px #1976D2; } .task-cell.drop-target { background-color: #E3F2FD; border: 2px dashed #1976D2; } .task-item { background: white; border: 1px solid #e0e0e0; border-radius: 4px; padding: 0.5rem; height: 100%; display: flex; flex-direction: column; position: relative; overflow: hidden; cursor: grab; } .task-item.dragging { opacity: 0.5; cursor: grabbing; } /* Status Indicators */ .status-indicator { position: absolute; width: 8px; height: 8px; border-radius: 50%; top: 4px; left: 4px; } [data-status="complete"] .status-indicator { background: #4CAF50; } [data-status="in-progress"] .status-indicator { background: #2196F3; } [data-status="blocked"] .status-indicator { background: #FF9800; } [data-status="not-started"] .status-indicator { background: #757575; } .task-title { font-size: 14px; font-weight: 500; margin-top: 4px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; } .task-meta { font-size: 10px; color: #666; margin-top: auto; } /* Special Cell States */ .pto-cell { background: repeating-linear-gradient( 45deg, #f5f5f5, #f5f5f5 10px, #e0e0e0 10px, #e0e0e0 20px ); } .oncall-cell { background: #FFF9C4; } .holiday { color: #2196F3; font-weight: bold; } /* Milestone Column */ .milestone-column { width: 180px; min-width: 180px; background: #E3F2FD; position: sticky; right: 0; z-index: 10; } .milestone-header { height: 60px; padding: 0.5rem; border-bottom: 1px solid #e0e0e0; display: flex; align-items: center; font-weight: bold; } .milestone-cell { height: 100px; padding: 0.5rem; border-bottom: 1px solid #e0e0e0; display: flex; align-items: center; } .milestone-item { background: white; border-radius: 4px; padding: 0.5rem; width: 100%; font-size: 14px; } /* Command Panel */ .command-panel { position: fixed; right: 0; top: 0; width: 400px; height: 100vh; background: white; box-shadow: -2px 0 10px rgba(0,0,0,0.1); padding: 1rem; transform: translateX(100%); transition: transform 0.3s ease; z-index: 100; } .command-panel.open { transform: translateX(0); } .panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .search-box input { width: 100%; padding: 0.75rem; border: 1px solid #e0e0e0; border-radius: 4px; margin-bottom: 1rem; } .recent-commands, .command-templates { margin-bottom: 1.5rem; } .template-category { margin-bottom: 1rem; } /* Floating Action Button */ .fab { position: fixed; bottom: 2rem; right: 2rem; width: 56px; height: 56px; border-radius: 50%; background: #1976D2; color: white; border: none; font-size: 24px; cursor: pointer; box-shadow: 0 4px 8px rgba(0,0,0,0.2); display: flex; align-items: center; justify-content: center; z-index: 90; } /* Utility Classes */ .btn-primary { background: #1976D2; color: white; border: none; padding: 0.5rem 1rem; border-radius: 4px; cursor: pointer; } .btn-secondary { background: white; color: #1976D2; border: 1px solid #1976D2; padding: 0.5rem 1rem; border-radius: 4px; cursor: pointer; }