/* Cuts and Shifts Management Interface */ /* Map interaction, form states, and administrative controls */ /* Cuts Section Styles */ .cuts-container { display: flex; flex-direction: column; gap: var(--padding-base); } /* Top section containing form and existing cuts */ .cuts-top-section { display: flex; flex-direction: column; gap: var(--padding-base); } /* Streamlined form card for Cut Properties */ .cuts-form-card { margin-bottom: 0; } .cuts-form-card .panel-content { padding: 15px 20px; } .cut-form-compact { display: grid; gap: 12px; max-width: none; } .cut-form-compact .form-row { display: grid; grid-template-columns: 1fr 200px; gap: 15px; } .cut-form-compact .form-options { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; } .cut-form-compact .checkbox-group { display: flex; align-items: center; gap: 8px; margin: 0; } .cut-form-compact .checkbox-group input { margin: 0; } .cut-form-compact .checkbox-group label { margin: 0; font-weight: normal; font-size: 14px; } .cut-form-compact textarea { resize: vertical; min-height: 60px; } .cuts-map-section { position: relative; height: 500px; background: #f5f5f5; border-radius: 8px; overflow: hidden; border: 1px solid #ddd; } #cuts-map { width: 100%; height: 100%; position: relative; } .cuts-form-section, .cuts-list-section, .cuts-location-section { margin-top: 0; } .cuts-filters { display: grid; grid-template-columns: 1fr 200px; gap: 10px; margin-bottom: 15px; } .cuts-filters input, .cuts-filters select { padding: 8px 12px; border: 1px solid #ddd; border-radius: var(--border-radius); } /* Location popup styling for cuts map */ .location-popup { font-size: 13px; line-height: 1.4; max-width: 280px; } .location-popup .location-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid #eee; } .location-popup .location-header strong { color: #333; font-size: 14px; } .location-popup .support-level { padding: 2px 6px; border-radius: 3px; font-size: 11px; font-weight: 600; text-transform: uppercase; } .location-popup .support-level-1 { background: #28a745; color: white; } .location-popup .support-level-2 { background: #ffc107; color: #212529; } .location-popup .support-level-3 { background: #fd7e14; color: white; } .location-popup .support-level-4 { background: #dc3545; color: white; } .location-popup .support-level-unknown { background: #6c757d; color: white; } .location-popup .location-address { margin-bottom: 6px; color: #555; font-weight: 500; } .location-popup .location-contact { margin-bottom: 8px; color: #666; font-size: 12px; } .location-popup .location-details { margin-bottom: 8px; } .location-popup .detail-row { display: flex; justify-content: space-between; margin-bottom: 3px; font-size: 12px; } .location-popup .detail-label { color: #666; font-weight: 500; } .location-popup .detail-value { color: #333; } .location-popup .detail-value.coordinates { font-family: 'Courier New', monospace; font-size: 11px; } .location-popup .location-notes { margin-top: 8px; padding-top: 6px; border-top: 1px solid #eee; font-size: 12px; color: #666; } .location-popup .location-notes strong { color: #333; } /* Popup container styling */ .leaflet-popup.location-popup-container .leaflet-popup-content { margin: 12px 16px; } .leaflet-popup.location-popup-container .leaflet-popup-content-wrapper { border-radius: 6px; } .leaflet-popup.location-popup-container .leaflet-popup-tip { background: white; } /* Disabled Form State */ .cut-form.disabled { opacity: 0.7; pointer-events: none; } .cut-form.disabled input:not(#start-drawing-btn):not(#reset-form-btn):not(#cancel-edit-btn), .cut-form.disabled textarea, .cut-form.disabled select { background-color: #f5f5f5; cursor: not-allowed; } .cut-form.disabled input:not(#start-drawing-btn):not(#reset-form-btn):not(#cancel-edit-btn):focus, .cut-form.disabled textarea:focus, .cut-form.disabled select:focus { outline: none; border-color: #ddd; box-shadow: none; } /* Shifts Admin Styles */ .shifts-admin-container { display: grid; grid-template-columns: 400px 1fr; gap: 30px; } .shift-form { background: white; padding: var(--padding-base); border-radius: var(--border-radius); border: 1px solid #e0e0e0; } .shifts-list { background: white; padding: var(--padding-base); border-radius: var(--border-radius); border: 1px solid #e0e0e0; } .shift-admin-item { border: 1px solid #e0e0e0; border-radius: var(--border-radius); padding: 15px; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center; position: relative; min-width: 0; overflow: hidden; flex-wrap: wrap; gap: 10px; } .shift-admin-item h4 { margin: 0 0 10px 0; } /* Editing State for Shifts */ .shift-admin-item.editing { border: 2px solid #a02c8d; background-color: #f9f0f8; } .shift-admin-item.editing::before { content: "EDITING"; position: absolute; top: 5px; right: 5px; background: #a02c8d; color: white; padding: 2px 8px; font-size: 11px; border-radius: 3px; font-weight: bold; z-index: 1; } .shift-admin-item p { margin: 5px 0; color: var(--secondary-color); } /* Volunteer Names Display */ .volunteer-names { font-size: 0.85em; color: var(--primary-color); font-weight: normal; opacity: 0.8; font-style: italic; } .volunteer-count { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } /* Shift Status Colors */ .status-open { color: var(--success-color); font-weight: bold; } .status-full { color: var(--warning-color); font-weight: bold; } .status-cancelled { color: var(--error-color); font-weight: bold; } .shift-actions { display: flex; gap: 10px; flex-wrap: wrap; min-width: 0; } .shift-actions .btn { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 80px; flex: 0 0 auto; } .manage-volunteers-btn { margin-left: 8px; } /* Shift Information Display */ .shift-info { background-color: #f8f9fa; padding: 15px; border-radius: var(--border-radius); margin-bottom: var(--padding-base); } .shift-info h4 { margin: 0 0 8px 0; color: var(--dark-color); } .shift-info p { margin: 0; color: #666; font-size: var(--font-size-base); } /* Add User Section */ .add-user-section { margin-bottom: 30px; padding-bottom: var(--padding-base); border-bottom: 1px solid #e0e0e0; } .add-user-section h4 { margin: 0 0 15px 0; color: var(--dark-color); } .current-volunteers-section h4 { margin: 0 0 15px 0; color: var(--dark-color); } .volunteer-actions-header { display: flex; justify-content: flex-end; align-items: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #eee; } /* Large Screen Layout for Cuts */ @media (min-width: 1200px) { .cuts-top-section { display: grid; grid-template-columns: 2fr 1fr; gap: var(--padding-base); } .cuts-list-section { order: 1; } .cuts-form-section { order: 2; } } /* Medium and Small Screen Adjustments */ @media (max-width: 768px) { .cut-form-compact .form-row { grid-template-columns: 1fr; gap: 12px; } .cut-form-compact .form-options { flex-direction: column; align-items: flex-start; gap: 12px; } .cuts-filters { grid-template-columns: 1fr; gap: 8px; } } /* Public Shift Functionality Styles */ .public-shift { color: var(--success-color); font-weight: 600; } .private-shift { color: var(--text-secondary); font-weight: 600; } .public-link-section { margin-top: 1rem; padding: 0.75rem; background: var(--bg-secondary); border-radius: var(--border-radius); border-left: 4px solid var(--info-color); } .public-link-section label { display: block; margin-bottom: 0.5rem; font-weight: 600; color: var(--text-secondary); } .public-link-input { font-family: 'Courier New', monospace; font-size: 0.85rem; background: var(--bg-primary); border: 1px solid var(--border-color); color: var(--text-secondary); } .public-link-input:focus { outline: none; border-color: var(--primary-color); } /* Status badges for public/private */ .status-badge.status-public { background: var(--success-light); color: var(--success-color); } .status-badge.status-private { background: var(--text-light); color: var(--text-secondary); } /* Input group for public links */ .input-group { display: flex; border-radius: var(--border-radius); } .input-group input { flex: 1; border-top-right-radius: 0; border-bottom-right-radius: 0; border-right: none; } .input-group .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } /* Panel footer styling - same as header but positioned at bottom */ .panel-footer { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; border-bottom: none; border-top: 1px solid var(--border-color); background: #e3f2fd; background: linear-gradient(to bottom, #e3f2fd, #bbdefb); border-bottom-left-radius: var(--border-radius); border-bottom-right-radius: var(--border-radius); margin: 0; box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.05); border-top: 2px solid #90caf9; } .panel-footer h3 { margin: 0; font-size: 1.1rem; color: var(--text-primary); font-weight: 600; } .panel-footer .panel-actions { display: flex; gap: 10px; } /* Cuts Pagination Styles */ .cuts-pagination { margin-top: var(--padding-sm); display: flex; justify-content: center; padding: var(--padding-sm) 0; border-top: 1px solid var(--border-color); } .pagination-controls { display: flex; align-items: center; gap: 0.25rem; flex-wrap: wrap; justify-content: center; } .pagination-btn { background: var(--bg-secondary); border: 1px solid var(--border-color); color: var(--text-primary); padding: 0.5rem 0.75rem; border-radius: var(--border-radius); font-size: 0.875rem; cursor: pointer; transition: all var(--transition-base); min-width: 2.5rem; text-align: center; line-height: 1; } .pagination-btn:hover:not(.active):not(:disabled) { background: var(--bg-hover); border-color: var(--primary-color); color: var(--primary-color); } .pagination-btn.active { background: var(--primary-color); border-color: var(--primary-color); color: white; font-weight: 600; } .pagination-btn:disabled { opacity: 0.5; cursor: not-allowed; } .pagination-ellipsis { color: var(--text-secondary); padding: 0.5rem 0.25rem; font-size: 0.875rem; } /* Cuts list header with count information */ .cuts-list-header { padding: var(--padding-sm); border-bottom: 1px solid var(--border-color); background: var(--bg-tertiary); border-radius: var(--border-radius) var(--border-radius) 0 0; } .cuts-count { font-size: 0.875rem; color: var(--text-secondary); text-align: center; } /* Updated cuts filters to accommodate items per page selector */ .cuts-filters { display: flex; gap: var(--padding-sm); align-items: center; flex-wrap: wrap; margin-bottom: var(--padding-sm); } .cuts-filters .form-control { flex: 1; min-width: 120px; } .cuts-filters .form-control:last-child { flex: 0 0 auto; min-width: 100px; }