/* Overlay */ .modal-overlay { position: fixed; inset: 0; background-color: rgba(17, 24, 39, 0.55); backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 1rem; transition: opacity 0.3s ease; } .fade-in { opacity: 1; } .fade-out { opacity: 0; } /* Container */ .modal-container { background: #fff; border-radius: 1rem; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25); max-height: 90vh; overflow: hidden; display: flex; flex-direction: column; width: 100%; transition: all 0.3s ease; } .modal-sm { max-width: 28rem; } .modal-md { max-width: 32rem; } .modal-lg { max-width: 48rem; } .modal-xl { max-width: 64rem; } .slide-in { transform: translateY(0); opacity: 1; } .slide-out { transform: translateY(20px); opacity: 0; } /* Header */ .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 1.25rem 1.5rem; background: linear-gradient(90deg, #f9fafb, #f3f4f6); border-bottom: 1px solid #e5e7eb; } .modal-title { font-size: 1.3rem; font-weight: 600; color: #111827; margin: 0; } /* Close Button */ .modal-close-button { display: flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem; border: none; background: none; border-radius: 0.5rem; color: #6b7280; cursor: pointer; transition: all 0.2s; } .modal-close-button:hover { background-color: rgba(0, 0, 0, 0.05); color: #111827; transform: rotate(90deg); } /* Content */ .modal-content { flex: 1; overflow-y: auto; padding: 1.5rem; background: #fff; } @keyframes fadeInSuccess { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }