/**
 * LMIn My Links Page - Modal Styles
 * Part of lmin-links.css modularized
 */

/* ============================================
   MODAL
   ============================================ */
.lmin-modal {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(15, 23, 42, 0.6);
	z-index: 998;  /* Must be below flatpickr calendar (z-index: 9999) */
	display: flex;
	align-items: center;
	justify-content: center;
	backdrop-filter: blur(4px);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s ease, visibility 0.3s ease;
}

.lmin-modal.show {
	opacity: 1;
	visibility: visible;
}

.lmin-modal-content {
	background: #ffffff;
	border-radius: var(--lmin-radius-2xl);
	width: 90%;
	max-width: 800px;
	max-height: 90vh;
	overflow-y: auto;
	box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.35);
	border: 2px solid var(--lmin-slate-200);
	opacity: 0;
	transform: scale(0.95);
	transition: opacity 0.3s ease, transform 0.3s ease;
}

.lmin-modal.show .lmin-modal-content {
	opacity: 1;
	transform: scale(1);
}

.lmin-modal-small {
	max-width: 400px;
}

.lmin-modal-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 1.5rem;
	border-bottom: 2px solid var(--lmin-slate-100);
}

.lmin-modal-header h2 {
	margin: 0;
	font-size: 1.25rem;
	font-weight: 800;
	color: var(--lmin-slate-900);
}

.lmin-modal-close {
	background: none;
	border: 2px solid var(--lmin-slate-200);
	font-size: 1.5rem;
	cursor: pointer;
	color: var(--lmin-slate-500);
	padding: 0;
	line-height: 1;
	width: 36px;
	height: 36px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--lmin-radius-md);
	transition: var(--lmin-transition);
}

.lmin-modal-close:hover {
	color: var(--lmin-slate-900);
	background: var(--lmin-slate-100);
	border-color: var(--lmin-slate-300);
}

.lmin-modal-body {
	padding: 1.5rem;
}

/* Edit Modal Two-Column Layout */
.lmin-edit-columns {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.5rem;
}

.lmin-edit-col-left,
.lmin-edit-col-right {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

@media (max-width: 768px) {
	.lmin-edit-columns {
		grid-template-columns: 1fr;
	}
}

.lmin-modal-footer {
	display: flex;
	justify-content: flex-end;
	gap: 0.75rem;
	padding: 1rem 1.5rem;
	border-top: 2px solid var(--lmin-slate-100);
	background: var(--lmin-slate-50);
	border-radius: 0 0 var(--lmin-radius-2xl) var(--lmin-radius-2xl);
}

/* Form */
.lmin-form-group {
	margin-bottom: 1rem;
}

.lmin-form-group label {
	display: block;
	margin-bottom: 0.5rem;
	font-weight: 700;
	color: var(--lmin-slate-800);
	font-size: var(--lmin-size-2xs);
}

.lmin-input {
	width: 100%;
	padding: 0.75rem 1rem;
	border: 2px solid var(--lmin-slate-200);
	border-radius: var(--lmin-radius-md);
	font-size: var(--lmin-size-2xs);
	box-sizing: border-box;
	font-family: 'Inter', sans-serif;
	transition: var(--lmin-transition);
	font-weight: 500;
}

.lmin-input:focus {
	border-color: var(--lmin-accent);
	box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15);
	outline: none;
}

/* Button danger */
.button-danger {
	background: var(--lmin-error) !important;
	border-color: var(--lmin-error) !important;
	color: #fff !important;
	font-weight: 700 !important;
}

.button-danger:hover {
	background: var(--lmin-error-dark) !important;
	border-color: var(--lmin-error-dark) !important;
}

/* Modal Footer Buttons */
.lmin-modal-footer .button {
	padding: 0.625rem 1.25rem;
	border-radius: var(--lmin-radius-md);
	font-weight: 600;
	font-size: var(--lmin-size-2xs);
	transition: var(--lmin-transition);
	cursor: pointer;
	border: 2px solid var(--lmin-slate-200);
	background: #fff;
	color: var(--lmin-slate-700);
}

.lmin-modal-footer .button:hover {
	background: var(--lmin-slate-100);
	border-color: var(--lmin-slate-300);
	color: var(--lmin-slate-900);
}

.lmin-modal-footer .button:disabled {
	opacity: 0.6;
	cursor: not-allowed;
	background: var(--lmin-slate-100);
}

.lmin-modal-footer .button.button-primary {
	background: var(--lmin-accent);
	border-color: var(--lmin-accent);
	color: #fff;
}

.lmin-modal-footer .button.button-primary:hover {
	background: var(--lmin-accent-dark);
	border-color: var(--lmin-accent-dark);
	color: #fff;
}

.lmin-modal-footer .button.button-primary:disabled {
	opacity: 0.6;
	cursor: not-allowed;
	background: var(--lmin-accent);
}

/* ============================================
   NOTICES & TOASTS
   ============================================ */
.lmin-notices {
	margin-top: 1rem;
}

.lmin-notice {
	padding: 0.875rem 1rem;
	border-radius: var(--lmin-radius-lg);
	margin-bottom: 0.5rem;
	display: flex;
	align-items: center;
	gap: 0.625rem;
	font-size: var(--lmin-size-2xs);
	font-weight: 600;
	border: 2px solid;
}

.lmin-notice .dashicons {
	font-size: 1.25rem;
}

.lmin-notice.success {
	background: var(--lmin-success-bg);
	border-color: var(--lmin-success-border);
	color: var(--lmin-success-dark);
}

.lmin-notice.error {
	background: var(--lmin-error-bg);
	border-color: var(--lmin-error-border);
	color: var(--lmin-error-dark);
}

/* Toast Notifications */
.lmin-toast-container {
	position: fixed;
	bottom: 1.5rem;
	right: 1.5rem;
	z-index: 999999;
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	pointer-events: none;
}

.lmin-toast {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.875rem 1.25rem;
	border-radius: var(--lmin-radius-lg);
	background: #ffffff;
	box-shadow: var(--lmin-shadow-lg);
	font-size: var(--lmin-size-2xs);
	font-weight: 600;
	pointer-events: auto;
	animation: lmin-toast-slide-in 0.3s ease-out forwards;
	max-width: 380px;
	border: 2px solid var(--lmin-slate-200);
}

.lmin-toast.removing {
	animation: lmin-toast-slide-out 0.3s ease-in forwards;
}

@keyframes lmin-toast-slide-in {
	from {
		opacity: 0;
		transform: translateX(100%);
	}
	to {
		opacity: 1;
		transform: translateX(0);
	}
}

@keyframes lmin-toast-slide-out {
	from {
		opacity: 1;
		transform: translateX(0);
	}
	to {
		opacity: 0;
		transform: translateX(100%);
	}
}

.lmin-toast .dashicons {
	font-size: 1.5rem;
	flex-shrink: 0;
}

.lmin-toast.success {
	border-left: 5px solid var(--lmin-success);
}

.lmin-toast.success .dashicons {
	color: var(--lmin-success);
}

.lmin-toast.error {
	border-left: 5px solid var(--lmin-error);
}

.lmin-toast.error .dashicons {
	color: var(--lmin-error);
}

.lmin-toast-message {
	color: var(--lmin-slate-800);
	word-break: break-word;
	font-size: var(--lmin-size-2xs);
}

/* ============================================
   MODAL LOADING OVERLAY
   ============================================ */
.lmin-modal-loading-overlay {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(255, 255, 255, 0.85);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 10;
}

.lmin-modal-loading-spinner {
	width: 48px;
	height: 48px;
	border: 4px solid var(--lmin-slate-200);
	border-top-color: var(--lmin-accent);
	border-radius: 50%;
	animation: lmin-spin 0.8s linear infinite;
}

@keyframes lmin-spin {
	to {
		transform: rotate(360deg);
	}
}

/* Modal fadeout animation */
.lmin-modal-content.fade-out {
	transition: none; /* Prevent transition conflict during animation */
	animation: lmin-modal-fade-out 0.3s ease-out forwards;
}

/* Modal fade-in animation */
.lmin-modal.show {
	animation: lmin-modal-fade-in 0.3s ease-out forwards;
}

.lmin-modal-content.show {
	animation: lmin-modal-content-fade-in 0.3s ease-out forwards;
}

@keyframes lmin-modal-fade-in {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}

@keyframes lmin-modal-content-fade-in {
	from {
		opacity: 0;
		transform: scale(0.95);
	}
	to {
		opacity: 1;
		transform: scale(1);
	}
}

@keyframes lmin-modal-fade-out {
	from {
		opacity: 1;
		transform: scale(1);
	}
	to {
		opacity: 0;
		transform: scale(0.95);
	}
}

/* ============================================
   PASSWORD SHOW CHECKBOX
   ============================================ */
.lmin-password-checkbox {
	display: flex;
	align-items: center;
	gap: 0.375rem;
	margin-top: 0.5rem;
	cursor: pointer;
	font-size: var(--lmin-size-2xs);
	font-weight: 500;
	color: var(--lmin-slate-600);
}

.lmin-password-checkbox:hover {
	color: var(--lmin-slate-800);
}

.lmin-password-show-checkbox {
	width: 16px;
	height: 16px;
	cursor: pointer;
	margin: 0;
	accent-color: var(--lmin-accent);
}
