/* Modal Overlay - covers the entire screen */ .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 1000; backdrop-filter: blur(2px); } /* Modal Content Box */ .modal-content { background: white; border-radius: 12px; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3); max-width: 400px; width: 90%; max-height: 90vh; overflow: hidden; animation: modalSlideIn 0.2s ease-out; } /* Modal Type Variants */ .modal-success { border-left: 5px solid #28a745; } .modal-error { border-left: 5px solid #dc3545; } .modal-warning { border-left: 5px solid #ffc107; } .modal-info { border-left: 5px solid #17a2b8; } /* Type-specific header colors */ .modal-success .modal-header { background: #d4edda; border-bottom-color: #c3e6cb; } .modal-error .modal-header { background: #f8d7da; border-bottom-color: #f5c6cb; } .modal-warning .modal-header { background: #fff3cd; border-bottom-color: #ffeaa7; } .modal-info .modal-header { background: #d1ecf1; border-bottom-color: #bee5eb; } /* Type-specific title colors */ .modal-success .modal-title { color: #155724; } .modal-error .modal-title { color: #721c24; } .modal-warning .modal-title { color: #856404; } .modal-info .modal-title { color: #0c5460; } @keyframes modalSlideIn { from { transform: scale(0.9) translateY(-10px); opacity: 0; } to { transform: scale(1) translateY(0); opacity: 1; } } /* Modal Header */ .modal-header { background: #f8f9fa; padding: 16px 20px; border-bottom: 1px solid #e9ecef; display: flex; justify-content: space-between; align-items: center; } .modal-title { margin: 0; color: #333; font-size: 1.2rem; font-weight: 600; } .modal-close { background: none; border: none; font-size: 24px; cursor: pointer; color: #666; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.2s ease; } .modal-close:hover { background: #e9ecef; color: #333; } /* Modal Body */ .modal-body { padding: 20px; color: #333; line-height: 1.5; text-align: center; } /* Modal Footer */ .modal-footer { background: #f8f9fa; padding: 16px 20px; border-top: 1px solid #e9ecef; display: flex; justify-content: center; gap: 12px; } /* Confirm Modal - Multiple Buttons */ .modal-footer.confirm-buttons { justify-content: center; } .modal-footer.confirm-buttons .modal-button:first-child { margin-right: 20px; } .modal-footer.confirm-buttons .modal-button { margin: 0; } .modal-button { background: #007bff; color: white; border: none; padding: 8px 24px; border-radius: 6px; cursor: pointer; font-weight: 500; transition: all 0.2s ease; min-width: 80px; } .modal-button:hover { background: #0056b3; transform: translateY(-1px); } .modal-button:focus { outline: 2px solid #80bdff; outline-offset: 2px; } .modal-button-secondary { background: #6c757d; color: white; } .modal-button-secondary:hover { background: #545862; } .modal-button-danger { background: #dc3545; color: white; } .modal-button-danger:hover { background: #c82333; } /* Type-specific button for single button modals */ .modal-content:not(.modal-confirm) .modal-footer { justify-content: center; gap: 0; } /* Responsive Design */ @media (max-width: 480px) { .modal-content { margin: 20px; width: calc(100% - 40px); } .modal-header, .modal-body, .modal-footer { padding: 12px 16px; } }