/* ========================================
   KC Notification Component
   共通通知パーツ（案4ベース）
   ======================================== */

.kc-notification {
	position: fixed;
	z-index: 1000;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 18px;
	background: rgba(255, 255, 255, 0.95);
	backdrop-filter: blur(12px);
	border: 1px solid rgba(226, 0, 79, 0.2);
	border-radius: 12px;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
	max-width: 350px;
	animation: kc-notification-slideInUp 0.3s ease-out;
}

/* 位置のカスタマイズ */
.kc-notification--position-top-right {
	top: 20px;
	right: 20px;
	animation: kc-notification-slideInRight 0.3s ease-out;
}

.kc-notification--position-top-left {
	top: 20px;
	left: 20px;
	animation: kc-notification-slideInLeft 0.3s ease-out;
}

.kc-notification--position-bottom-right {
	bottom: 20px;
	right: 20px;
	animation: kc-notification-slideInUp 0.3s ease-out;
}

.kc-notification--position-bottom-left {
	bottom: 20px;
	left: 20px;
	animation: kc-notification-slideInUp 0.3s ease-out;
}

.kc-notification--position-top-center {
	top: 20px;
	left: 50%;
	transform: translateX(-50%);
	animation: kc-notification-slideDown 0.3s ease-out;
}

.kc-notification--position-bottom-center {
	bottom: 20px;
	left: 50%;
	transform: translateX(-50%);
	animation: kc-notification-slideInUp 0.3s ease-out;
}

/* アイコンラッパー */
.kc-notification__icon-wrapper {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: rgba(226, 0, 79, 0.1);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.kc-notification__icon {
	width: 20px;
	height: 20px;
	color: #E2004F;
}

/* コンテンツ */
.kc-notification__content {
	flex: 1;
	min-width: 0;
}

.kc-notification__message {
	font-size: 13px;
	color: #111;
	line-height: 1.5;
	word-wrap: break-word;
}

/* 閉じるボタン（オプション） */
.kc-notification__close {
	width: 20px;
	height: 20px;
	border: none;
	background: none;
	cursor: pointer;
	padding: 0;
	opacity: 0.5;
	transition: opacity 0.2s;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.kc-notification__close:hover {
	opacity: 1;
}

.kc-notification__close svg {
	width: 16px;
	height: 16px;
}

/* バリアント（色のカスタマイズ） */
.kc-notification--variant-success {
	border-color: rgba(16, 185, 129, 0.2);
}

.kc-notification--variant-success .kc-notification__icon-wrapper {
	background: rgba(16, 185, 129, 0.1);
}

.kc-notification--variant-success .kc-notification__icon {
	color: #10b981;
}

.kc-notification--variant-error {
	border-color: rgba(239, 68, 68, 0.2);
}

.kc-notification--variant-error .kc-notification__icon-wrapper {
	background: rgba(239, 68, 68, 0.1);
}

.kc-notification--variant-error .kc-notification__icon {
	color: #ef4444;
}

.kc-notification--variant-warning {
	border-color: rgba(245, 158, 11, 0.2);
}

.kc-notification--variant-warning .kc-notification__icon-wrapper {
	background: rgba(245, 158, 11, 0.1);
}

.kc-notification--variant-warning .kc-notification__icon {
	color: #f59e0b;
}

.kc-notification--variant-info {
	border-color: rgba(59, 130, 246, 0.2);
}

.kc-notification--variant-info .kc-notification__icon-wrapper {
	background: rgba(59, 130, 246, 0.1);
}

.kc-notification--variant-info .kc-notification__icon {
	color: #3b82f6;
}

.kc-notification--variant-primary {
	border-color: rgba(226, 0, 79, 0.2);
}

.kc-notification--variant-primary .kc-notification__icon-wrapper {
	background: rgba(226, 0, 79, 0.1);
}

.kc-notification--variant-primary .kc-notification__icon {
	color: #E2004F;
}

/* アニメーション */
@keyframes kc-notification-slideInUp {
	from {
		transform: translateY(100%);
		opacity: 0;
	}
	to {
		transform: translateY(0);
		opacity: 1;
	}
}

@keyframes kc-notification-slideInRight {
	from {
		transform: translateX(100%);
		opacity: 0;
	}
	to {
		transform: translateX(0);
		opacity: 1;
	}
}

@keyframes kc-notification-slideInLeft {
	from {
		transform: translateX(-100%);
		opacity: 0;
	}
	to {
		transform: translateX(0);
		opacity: 1;
	}
}

@keyframes kc-notification-slideDown {
	from {
		transform: translate(-50%, -100%);
		opacity: 0;
	}
	to {
		transform: translate(-50%, 0);
		opacity: 1;
	}
}

/* フェードアウトアニメーション */
.kc-notification--fade-out {
	animation: kc-notification-fadeOut 0.3s ease-out forwards;
}

@keyframes kc-notification-fadeOut {
	from {
		opacity: 1;
		transform: translateY(0);
	}
	to {
		opacity: 0;
		transform: translateY(-20px);
	}
}

/* 複数通知のスタック対応 */
.kc-notification-container {
	position: fixed;
	z-index: 1000;
	pointer-events: none;
}

.kc-notification-container--position-top-right {
	top: 20px;
	right: 20px;
}

.kc-notification-container--position-top-left {
	top: 20px;
	left: 20px;
}

.kc-notification-container--position-bottom-right {
	bottom: 20px;
	right: 20px;
}

.kc-notification-container--position-bottom-left {
	bottom: 20px;
	left: 20px;
}

.kc-notification-container--position-top-center {
	top: 20px;
	left: 50%;
	transform: translateX(-50%);
}

.kc-notification-container--position-bottom-center {
	bottom: 20px;
	left: 50%;
	transform: translateX(-50%);
}

.kc-notification-container .kc-notification {
	position: relative;
	margin-bottom: 12px;
	pointer-events: auto;
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
	.kc-notification {
		max-width: calc(100vw - 40px);
		padding: 12px 16px;
	}

	.kc-notification--position-top-right,
	.kc-notification--position-top-left,
	.kc-notification--position-bottom-right,
	.kc-notification--position-bottom-left {
		left: 20px;
		right: 20px;
		transform: none;
	}

	.kc-notification--position-top-center,
	.kc-notification--position-bottom-center {
		left: 20px;
		right: 20px;
		transform: none;
	}

	.kc-notification-container--position-top-right,
	.kc-notification-container--position-top-left,
	.kc-notification-container--position-bottom-right,
	.kc-notification-container--position-bottom-left {
		left: 20px;
		right: 20px;
		transform: none;
	}

	.kc-notification-container--position-top-center,
	.kc-notification-container--position-bottom-center {
		left: 20px;
		right: 20px;
		transform: none;
	}
}

