/* css/components/modal.css */

.modal-overlay {
    position: fixed;
    inset: 0; /* top, right, bottom, left = 0 */
    background-color: rgba(22, 26, 37, 0.7); /* Darker overlay from base */
    display: none; /* Hidden by default */
    justify-content: center;
    align-items: center;
    z-index: var(--z-index-modal-backdrop);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    padding: var(--space-md); /* Padding for smaller screens */
}

.modal-overlay.visible {
    display: flex;
    animation: modal-fade-in 0.3s ease-out forwards;
}

@keyframes modal-fade-in {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.modal-content {
    background-color: var(--color-secondary-bg); /* Use card background */
    padding: var(--space-lg) var(--space-xl);
    border-radius: var(--radius-large);
    border: var(--border-width-thin) solid var(--color-border-primary);
    box-shadow: var(--shadow-large);
    color: var(--color-text-primary);
    max-width: 500px; /* Default max width */
    width: 100%;
    text-align: center;
    animation: modal-scale-in 0.3s ease-out forwards;
    max-height: 85vh; /* Limit height */
    display: flex;
    flex-direction: column;
}

@keyframes modal-scale-in {
    from { transform: scale(0.95); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

.modal-header {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--space-md);
    gap: var(--space-sm);
    flex-shrink: 0; /* Prevent header shrinking */
}

.modal-icon svg {
    width: 28px;
    height: 28px;
    flex-shrink: 0;
}

/* Specific icon colors */
.modal-icon.warning svg { fill: var(--color-accent-warning); }
.modal-icon.error svg { fill: var(--color-accent-danger); }
.modal-icon.info svg { fill: var(--color-accent-secondary); }
/* Add default/other icon colors if needed */

.modal-title {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary); /* Ensure title stands out */
    margin: 0;
    text-align: center;
}

.modal-body {
    font-size: var(--font-size-md);
    line-height: var(--line-height-relaxed);
    margin-bottom: var(--space-lg);
    color: var(--color-text-secondary); /* Use secondary for messages */
    overflow-y: auto; /* Make body scrollable */
    flex-grow: 1; /* Allow body to take available space */
    text-align: left; /* Default body text alignment */
}
.modal-body strong { /* Highlight text */
    color: var(--color-text-primary);
    font-weight: var(--font-weight-medium);
}

.modal-actions {
    display: flex;
    justify-content: flex-end; /* Align buttons right by default */
    gap: var(--space-sm);
    margin-top: var(--space-lg);
    padding-top: var(--space-md);
    border-top: 1px solid var(--color-border-dark);
    flex-shrink: 0; /* Prevent actions shrinking */
}

/* Specific modal overrides */
.confirmation-modal .modal-content { /* Example */
   /* max-width: 450px; */
}

.settings-modal .modal-content {
    max-width: 700px; /* Wider for settings */
}

.settings-modal .modal-body {
    padding-right: var(--space-xs); /* Space for scrollbar */
}

.tag-modal .modal-body,
.tag-selector-modal .modal-body {
    text-align: left;
}

/* Add styles for form-group, label, input etc. inside modals later */
/* Or create a forms.css component */


.color-picker-modal input[type="color"] { width: 80px; height: 40px; border: none; padding: 0; cursor: pointer; }

/* Basic button style - adapt if you have global button styles */
.modal-button {
    padding: 10px 25px;
    border-radius: 12px;
    border: none;
    cursor: pointer;
    font-size: 0.95em;
    font-weight: 500;
    transition: background-color 0.2s ease, transform 0.1s ease;
}
.modal-button:hover {
     transform: translateY(-1px);
}
.modal-button.primary { /* e.g., Confirm Delete */
    background-color: #d9534f;
    color: white;
    box-shadow: 0 2px 5px rgba(217, 83, 79, 0.3);
}
.modal-button.primary:hover { background-color: #c9302c; }

.modal-button.secondary { /* e.g., Cancel, OK */
    background-color: #4a5a7e;
    color: #e0e0e0;
    border: 1px solid #6a7aac;
}
.modal-button.secondary:hover { background-color: #6a7aac; color: #ffffff; }

/* Specific styling for info modal */
.modal-content.info-modal {
/* Any specific width/height adjustments if needed */
border-left: 4px solid var(--success-green); /* Example: Green accent border */
}

.modal-icon.info svg {
fill: var(--success-green); /* Green icon for success/info */
/* Or use --accent-blue for general info */
/* fill: var(--accent-blue); */
}

/* Ensure icon sizing is consistent */
#infoModalIcon svg { /* Target specific ID if needed */
width: 28px;
height: 28px;
}

/* --- NEW: Delete Confirmation Target Animation --- */
@keyframes pulse-danger {
    0%, 100% { border-color: #d9534f; box-shadow: 0 0 0 0 rgba(217, 83, 79, 0.4); }
    50% { border-color: #f0716e; box-shadow: 0 0 0 6px rgba(217, 83, 79, 0); }
}
.chapter-card.confirming-delete {
    border-color: #d9534f; /* Start with red border */
    animation: pulse-danger 1.5s infinite ease-in-out;
}


/* --- NEW: Delete Vanish Animation --- */
@keyframes fade-out-shrink {
     to {
         opacity: 0;
         transform: scale(0.8);
         margin-bottom: -10px; /* Pull elements below up smoothly */
         padding-top: 0;
         padding-bottom: 0;
         height: 0; /* Animate height to 0 */
         border-width: 0;
         overflow: hidden; /* Prevent content spill during shrink */
     }
}
.chapter-card.fading-out {
     animation: fade-out-shrink 0.4s ease-out forwards;
     /* Ensure it doesn't respond to hover etc. while fading */
     pointer-events: none;
 }

  

.modal-content.settings-modal {
    max-width: 650px; /* Wider modal for settings */
    text-align: left; /* Align text left for forms */
}

#materialSettingsForm {
    margin-top: 15px;
    max-height: 60vh; /* Limit height and make scrollable */
    overflow-y: auto;
    padding-right: 10px; /* Space for scrollbar */
    margin-right: -10px; /* Offset padding */
}


/* Group Sort Modal */
.group-sort-modal .form-group.inline { align-items: center; }
.group-sort-modal select { width: auto; flex-grow: 1; /* Allow select to grow */ }

/* Chapter Tag Selector Modal */
.tag-selector-modal .modal-body { padding-top: 10px; }
.tag-selector-modal .tag-selector-instruction { font-size: 0.9em; color: var(--text-secondary); margin-bottom: 10px; }
.tag-selector-modal .tags-list.checkboxes { /* Reuse tags-list style */ max-height: 250px; }
.tag-selector-modal .tags-list.checkboxes li { border-bottom: none; padding: 4px 0; }
.tag-selector-modal .tags-list.checkboxes label { margin-left: 8px; cursor: pointer; }
.tag-selector-modal .tags-list.checkboxes input[type="checkbox"] { cursor: pointer; accent-color: var(--accent-blue); }

/* Group Color Picker Modal */
.color-picker-modal .modal-body { display: flex; justify-content: center; align-items: center; padding: 25px 0; }
.color-picker-modal input[type="color"] { width: 100px; height: 50px; border: none; padding: 0; cursor: pointer; border-radius: 6px; }


/* Custom scrollbar for form */
#materialSettingsForm::-webkit-scrollbar { width: 6px; }
#materialSettingsForm::-webkit-scrollbar-track { background: var(--secondary-bg); border-radius: 3px; }
#materialSettingsForm::-webkit-scrollbar-thumb { background-color: #4a5a7e; border-radius: 3px; }
#materialSettingsForm::-webkit-scrollbar-thumb:hover { background-color: #6a7aac; }

        .settings-section {
            border: 1px solid rgba(74, 90, 126, 0.5);
            border-radius: 8px;
            padding: 15px 20px;
            margin-bottom: 25px;
            background-color: rgba(44, 58, 86, 0.3); /* Subtle section background */
        }

        .settings-section legend {
            font-size: 1.1em;
            font-weight: 600;
            color: var(--accent-blue);
            padding: 0 10px;
            margin-left: -10px; /* Align with content */
        }

        .settings-description {
            font-size: 0.9em;
            color: var(--text-secondary);
            margin-top: -5px;
            margin-bottom: 15px;
            font-style: italic;
        }


        .form-group {
            margin-bottom: 15px;
            display: flex;
            flex-direction: column; /* Stack label and input */
        }

        .form-group.inline {
            flex-direction: row; /* Place label and input side-by-side */
            align-items: center;
            gap: 10px;
            flex-wrap: wrap; /* Allow wrapping on smaller screens */
        }


        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-size: 0.9em;
            font-weight: 500;
            color: var(--text-secondary);
        }
        .form-group.inline label {
            margin-bottom: 0;
            flex-shrink: 0; /* Prevent label from shrinking */
            min-width: 120px; /* Align inputs */
        }

        .form-group input[type="text"],
        .form-group input[type="number"],
        .form-group input[type="password"] /* Add other types if needed */ {
            width: 100%;
            padding: 10px 12px;
            border-radius: 6px;
            border: 1px solid #4a5a7e;
            background-color: var(--tertiary-bg);
            color: var(--text-primary);
            font-size: 1em;
            outline: none;
            transition: border-color 0.2s ease, box-shadow 0.2s ease;
            box-sizing: border-box;
        }
        .form-group.inline input[type="number"] {
            width: 80px; /* Fixed width for number inputs */
        }
        .form-group.inline input[type="text"] { /* For comma separated lists */
            flex-grow: 1;
        }


        .form-group input:focus {
            border-color: var(--accent-blue);
            box-shadow: 0 0 0 3px rgba(91, 192, 222, 0.2);
        }

        #settingsModalActions {
            margin-top: 25px; /* Space above buttons */
            padding-top: 15px;
            border-top: 1px solid rgba(74, 90, 126, 0.5);
        }