.alert-config {
	display: flex;
	flex-direction: column;

	// ── 목록 패널 ────────────────────────────────────
	&__list-panel {
		display: flex;
		flex-direction: column;
		gap: 0;
	}

	// ── 30/70 레이아웃 ────────────────────────────────
	&__layout {
		display: grid;
		grid-template-columns: minmax(0, 500px) auto 1fr;
		gap: 24px;
		align-items: start;
	}

	// ── 좌측 패널 (미리보기) ─────────────────────────
	&__preview-panel {
		position: sticky;
		top: 16px;
		display: flex;
		flex-direction: column;
		gap: 16px;
		max-height: calc(100vh - 48px);
		overflow-y: auto;
	}

	// ── 우측 패널 (폼) ───────────────────────────────
	&__form-panel {
		display: flex;
		flex-direction: column;
		gap: 0;
	}

	// ── 섹션 (제목 좌 / 콘텐츠 우) ──────────────────
	&__section {
		display: grid;
		grid-template-columns: 140px 1fr;
		gap: 24px;
		padding: 24px 0;
		border-bottom: 1px solid hsl(var(--border));

		&:first-of-type {
			padding-top: 0;
		}
	}

	&__section-title {
		font-size: 0.875rem;
		font-weight: 600;
		color: hsl(var(--foreground));
		padding-top: 2px;
		margin: 0;
	}

	&__section-body {
		display: flex;
		flex-direction: column;
		gap: 17px;
		max-width: 520px;
	}

	// ── fieldset (미리보기 패널용) ────────────────────
	&__fieldset {
		border: 1px solid hsl(var(--border));
		border-radius: var(--radius);
		padding: 16px 20px 20px;
		margin: 0;

		& + & {
			margin-top: 0;
		}
	}

	&__legend {
		font-size: 1rem;
		font-weight: 600;
		color: hsl(var(--foreground));
		padding: 0 8px;
		margin-left: -4px;
	}

	// ── 미리보기 테스트 폼 ───────────────────────────
	&__preview-form {
		display: flex;
		flex-direction: column;
		gap: 12px;
	}

	&__preview-btn {
		margin-top: 12px;
		width: 100%;
		justify-content: center;
	}

	// ── 위젯 미리보기 ────────────────────────────────
	&__widget {
		border: 1px solid hsl(var(--border));
		border-radius: var(--radius);
		overflow: hidden;
	}

	&__widget-label {
		padding: 8px 14px;
		font-size: 0.8125rem;
		font-weight: 500;
		color: hsl(var(--muted));
		background:#0e0e1a;
	}

	&__widget-frame {
		width: 100%;
		height: clamp(200px, 30vw, 450px);
		border: none;
		background: transparent;
	}

	&__widget-empty {
		display: flex;
		align-items: center;
		justify-content: center;
		height: 200px;
		color: hsl(var(--muted-foreground));
		font-size: 0.875rem;
	}

	// ── 툴바 ─────────────────────────────────────────
	&__toolbar {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 8px;
		margin-bottom: 12px;
		flex-wrap: wrap;
	}

	&__toolbar-left {
		display: flex;
		align-items: baseline;
		gap: 6px;
	}

	&__toolbar-right {
		display: flex;
		align-items: center;
		gap: 6px;
		flex-wrap: wrap;
	}

	&__count {
		font-size: 0.8125rem;
		color: hsl(var(--muted-foreground));
	}

	&__per-page {
		padding: 9px 10px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		color: hsl(var(--foreground));
		font-size: 0.875rem;
		cursor: pointer;
	}

	// ── 버튼 ─────────────────────────────────────────
	&__btn {
		display: inline-flex;
		align-items: center;
		gap: 6px;
		padding: 8px 16px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		color: hsl(var(--foreground));
		font-size: 0.875rem;
		font-weight: 500;
		cursor: pointer;
		white-space: nowrap;
		transition: background-color 0.15s, color 0.15s;
		justify-content: center;

		&:not([class*="--"]):hover:not(:disabled) {
			background: hsl(var(--accent));
			color: hsl(var(--accent-foreground));
		}

		&:disabled {
			opacity: 0.5;
			cursor: not-allowed;
		}

		&--sm {
			padding: 4px 10px;
			font-size: 0.75rem;
		}

		&--primary {
			background: hsl(var(--primary));
			color: hsl(var(--primary-foreground));
			border-color: hsl(var(--primary));

			&:hover:not(:disabled) {
				background: hsl(var(--primary) / 0.9);
				color: hsl(var(--primary-foreground));
			}
		}

		&--danger {
			color: hsl(var(--destructive));
			border-color: hsl(var(--destructive) / 0.5);

			&:hover:not(:disabled) {
				background: hsl(var(--destructive) / 0.1);
			}
		}
	}

	// ── 테이블 ───────────────────────────────────────
	&__table-wrap {
		border: 1px solid hsl(var(--border));
		border-radius: var(--radius);
		overflow: hidden;
	}

	&__table {
		width: 100%;
		border-collapse: collapse;
		font-size: 0.8125rem;

		th, td {
			padding: 10px 12px;
			text-align: left;
			border-bottom: 1px solid hsl(var(--border));
		}

		th {
			font-weight: 500;
			color: hsl(var(--muted-foreground));
			font-size: 0.75rem;
			background: hsl(var(--muted) / 0.4);
		}

		tbody tr:last-child td {
			border-bottom: none;
		}

		tbody tr {
			transition: background 0.15s;
		}

		tbody tr:hover {
			background: hsl(var(--muted) / 0.5);
		}
	}

	&__th--check,
	&__td--check {
		width: 40px;
		text-align: center;
	}

	&__td--message {
		max-width: 200px;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	&__td--media {
		position: relative;

		> div {
			display: flex;
			align-items: center;
			gap: 4px;
		}
	}

	&__media-thumb {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 40px;
		height: 40px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		cursor: pointer;
		overflow: hidden;
		padding: 0;
		transition: border-color 0.15s;

		&:hover {
			border-color: hsl(var(--primary));
		}
	}

	&__media-thumb-img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	&__media-btn {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 28px;
		height: 28px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		color: hsl(var(--muted-foreground));
		font-size: 0.75rem;
		cursor: pointer;
		transition: color 0.15s, border-color 0.15s;

		&:hover {
			color: hsl(var(--foreground));
			border-color: hsl(var(--foreground));
		}

		&--image:hover {
			color: hsl(var(--primary));
			border-color: hsl(var(--primary));
		}

		&--sound:hover {
			color: hsl(var(--primary));
			border-color: hsl(var(--primary));
		}

		&--playing {
			color: hsl(var(--primary));
			border-color: hsl(var(--primary));
			background: hsl(var(--primary) / 0.1);
			animation: alert-pulse 1.5s ease-in-out infinite;
		}
	}

	&__media-dialog {
		max-width: 90vw;
		width: auto;
		padding: 16px;
	}

	&__media-dialog-img {
		display: block;
		max-width: 100%;
		max-height: 80vh;
		margin: 0 auto;
		border-radius: calc(var(--radius) - 2px);
		object-fit: contain;
	}

	&__row--checked {
		opacity: 0.5;

		td {
			text-decoration: line-through;
		}
	}

	&__row--editing {
		background: hsl(var(--primary) / 0.08);
	}

	// 뱃지
	&__match-badge {
		display: inline-flex;
		align-items: center;
		padding: 2px 8px;
		border-radius: calc(var(--radius) - 2px);
		font-size: 0.6875rem;
		font-weight: 500;
		white-space: nowrap;

		&--min {
			background: hsl(var(--primary) / 0.1);
			color: hsl(var(--primary));
		}

		&--exact {
			background: hsl(217 91% 60% / 0.1);
			color: hsl(217 91% 60%);
		}
	}

	&__status-badge {
		display: inline-flex;
		align-items: center;
		padding: 2px 8px;
		border-radius: calc(var(--radius) - 2px);
		font-size: 0.6875rem;
		font-weight: 500;
		white-space: nowrap;

		&--active {
			background: hsl(142 71% 45% / 0.1);
			color: hsl(142 71% 45%);
		}

		&--inactive {
			background: hsl(var(--muted));
			color: hsl(var(--muted-foreground));
		}
	}

	&__empty {
		padding: 48px 16px;
		text-align: center;
		color: hsl(var(--muted-foreground));
		font-size: 0.875rem;
	}

	// ── 페이징 ───────────────────────────────────────
	&__pagination {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 4px;
		margin-top: 12px;
	}

	&__page-btn {
		min-width: 28px;
		height: 28px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		color: hsl(var(--foreground));
		font-size: 0.75rem;
		cursor: pointer;
		transition: background-color 0.15s;

		&:hover:not(:disabled) {
			background: hsl(var(--accent));
		}

		&:disabled {
			opacity: 0.5;
			cursor: not-allowed;
		}

		&--active {
			background: hsl(var(--primary));
			color: hsl(var(--primary-foreground));
			border-color: hsl(var(--primary));
		}
	}

	// ── 폼 필드 ──────────────────────────────────────
	&__field {
		display: flex;
		flex-direction: column;
		gap: 6px;
	}

	&__field-label {
		font-size: 0.875rem;
		font-weight: 500;
		color: hsl(var(--foreground));
	}

	&__field-hint {
		font-size: 0.8125rem;
		color: hsl(var(--muted-foreground));
	}

	&__field-row {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 10px;
	}

	&__input {
		padding: 8px 12px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		color: hsl(var(--foreground));
		font-size: 0.875rem;
		width: 100%;

		&::placeholder {
			color: hsl(var(--muted-foreground));
		}
	}

	&__select {
		padding: 8px 12px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		color: hsl(var(--foreground));
		font-size: 0.875rem;
		width: 100%;
		cursor: pointer;
	}

	&__radio-group {
		display: flex;
		gap: 16px;
		height: 100%;
		justify-content: center;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
	}

	&__radio-label {
		display: inline-flex;
		align-items: center;
		gap: 6px;
		font-size: 0.875rem;
		color: hsl(var(--foreground));
		cursor: pointer;
	}

	&__checkbox-label {
		display: inline-flex;
		align-items: center;
		gap: 8px;
		font-size: 0.875rem;
		color: hsl(var(--foreground));
		cursor: pointer;
	}

	// ── 폰트 그룹 ────────────────────────────────────
	&__font-group {
		&:not(:first-child) {
			margin-top: 12px;
			padding-top: 12px;
			border-top: 1px solid hsl(var(--border));
		}
	}

	&__font-group-title {
		font-size: 0.875rem;
		font-weight: 500;
		color: hsl(var(--muted-foreground));
		margin-bottom: 10px;
	}

	&__font-grid {
		display: grid;
		grid-template-columns: 1fr 80px 1fr;
		gap: 12px;
		align-items: start;
	}

	// ── 색상 입력 ─────────────────────────────────────
	&__color-wrap {
		display: flex;
		gap: 8px;
		align-items: center;
	}

	&__color-input {
		width: 36px;
		height: 36px;
		padding: 2px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--background));
		cursor: pointer;
		flex-shrink: 0;

		&::-webkit-color-swatch-wrapper {
			padding: 0;
		}

		&::-webkit-color-swatch {
			border: none;
			border-radius: calc(var(--radius) - 4px);
		}
	}

	&__color-text {
		flex: 1;
		min-width: 0;
	}

	// ── 미디어 업로드 ─────────────────────────────────
	&__media-upload {
		display: flex;
		flex-direction: column;
		gap: 8px;
		margin-bottom: 16px;

		&:last-of-type {
			margin-bottom: 0;
		}
	}

	&__media-preview {
		display: flex;
		align-items: start;
		gap: 8px;
		padding: 8px;
		border: 1px solid hsl(var(--border));
		border-radius: calc(var(--radius) - 2px);
		background: hsl(var(--muted) / 0.3);

		img {
			max-width: 120px;
			max-height: 80px;
			object-fit: contain;
			border-radius: calc(var(--radius) - 4px);
		}

		audio {
			max-width: 280px;
			height: 36px;
		}

		&--audio {
			flex-direction: row;
		}
	}

	&__media-remove {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 28px;
		height: 28px;
		border: 1px solid hsl(var(--destructive) / 0.5);
		border-radius: calc(var(--radius) - 2px);
		background: none;
		color: hsl(var(--destructive));
		font-size: 0.75rem;
		cursor: pointer;
		flex-shrink: 0;
		margin-left: auto;
		transition: background 0.15s;

		&:hover {
			background: hsl(var(--destructive) / 0.1);
		}
	}

	&__file-hidden {
		display: none;
	}

	// ── 폼 하단 ──────────────────────────────────────
	&__form-footer {
		display: flex;
		justify-content: center;
		gap: 8px;
		padding-top: 20px;
		margin-top: 4px;
	}
}

// ── 반응형 ────────────────────────────────────────────
@media (max-width: 1380px) {
	.alert-config {
		&__layout {
			grid-template-columns: minmax(0, 500px) auto 1fr;
			gap: 24px;
			align-items: start;
		}

		&__section {
			grid-template-columns: 1fr;
			gap: 5px;
		}

		&__section-title {
			margin-bottom: 9px;
		}
	}
}

@media (max-width: 1120px) {
	.alert-config {
		&__layout {
			grid-template-columns: 2fr auto 3fr;
		}
	}
}

@media (max-width: 768px) {
	.alert-config {
		&__layout {
			grid-template-columns: 1fr;
		}

		&__preview-panel {
			position: static;
			max-height: none;
		}

		&__section {
			grid-template-columns: 1fr;
			gap: 8px;
		}

		&__section-title {
			margin-bottom: 12px;
		}

		&__section-body {
			max-width: none;
		}

		&__field-row {
			grid-template-columns: 1fr;
		}

		&__font-grid {
			grid-template-columns: 1fr;
		}

		&__media-upload {
			padding-left: 0;
		}

		&__toolbar {
			flex-direction: column;
			align-items: flex-start;
		}

		&__table-wrap {
			overflow-x: auto;
		}

		&__table {
			min-width: 892px;
		}

		&__media-thumb {
			width: 32px;
			height: 32px;
		}
	}
}

@keyframes alert-pulse {
	0%, 100% {
		opacity: 1;
	}
	50% {
		opacity: 0.5;
	}
}