/* ============================================
   Showcase Page - showcase.css
   テンプレート選択・プレビューページ用スタイル
============================================ */

/* ------------------------------------------
   CSS変数
------------------------------------------ */
:root {
	/* カラー */
	--color-primary: #4F46E5;
	--color-primary-dark: #4338CA;
	--color-text: #1F2937;
	--color-text-light: #6B7280;
	--color-border: #E5E7EB;
	--color-bg: #F9FAFB;
	--color-white: #ffffff;
	--color-shadow: rgba(0, 0, 0, 0.1);
	
	/* テンプレートカラー */
	--color-catalog: #1a1a1a;
	--color-empathy: #6B9080;
	--color-empathy02: #4F7C9E;
	--color-trust: #1B2838;
	--color-catalog02: #F5BE0E;
	--color-trust02: #F08C1D;
	
	/* フォント */
	--font-en: 'Inter', sans-serif;
	--font-jp: 'Noto Sans JP', sans-serif;
	
	/* z-index */
	--z-tag: 100;
	--z-selector: 100;
	--z-loading: 50;
}

/* ------------------------------------------
   共通コンポーネント
------------------------------------------ */
body {
	font-family: var(--font-jp);
	font-size: 1.6rem;
	color: var(--color-text);
	background-color: var(--color-bg);
	overflow: hidden;
	height: 100vh;
}

/* ------------------------------------------
   現在のテンプレートタグ（パネル内）
------------------------------------------ */
.selector__current {
	padding: 1rem 1.5rem;
	background: linear-gradient(135deg, #FF5E58 0%, #FF855A 100%);
	border-radius: 8px;
	margin-bottom: 1.5rem;
	text-align: center;
	transition: background 0.3s ease;
}

.selector__current[data-template="catalog"] {
	background: linear-gradient(135deg, #FF5E58 0%, #FF855A 100%);
}

.selector__current[data-template="empathy"] {
	background: linear-gradient(135deg, #E8A598 0%, #F5CEC7 100%);
}

.selector__current[data-template="empathy02"] {
	background: linear-gradient(135deg, #8AB6D6 0%, #A2C4DE 100%);
}

.selector__current[data-template="trust"] {
	background: linear-gradient(135deg, #1B2838 0%, #2D3748 100%);
}

.selector__current[data-template="catalog02"] {
	background: linear-gradient(135deg, #F5BE0E 0%, #F7D44C 100%);
}

.selector__current[data-template="trust02"] {
	background: linear-gradient(135deg, #4ba770 0%, #5eb581 100%);
}

.selector__current-name {
	font-size: 1.4rem;
	font-weight: 600;
	color: var(--color-white);
	letter-spacing: 0.05em;
}

/* ------------------------------------------
   メイン・プレビューエリア
------------------------------------------ */
.main {
	height: 100vh;
}

.preview {
	position: relative;
	width: 100%;
	height: 100vh;
}

.preview__frame {
	width: 100%;
	height: 100%;
	border: none;
	background-color: var(--color-white);
}

.preview__loading {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	background-color: var(--color-bg);
	z-index: var(--z-loading);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s ease, visibility 0.3s ease;
}

.preview__loading.is-visible {
	opacity: 1;
	visibility: visible;
}

.preview__loading-spinner {
	width: 4rem;
	height: 4rem;
	border: 3px solid var(--color-border);
	border-top-color: var(--color-primary);
	border-radius: 50%;
	animation: spin 0.8s linear infinite;
}

@keyframes spin {
	to {
		transform: rotate(360deg);
	}
}

.preview__loading-text {
	font-size: 1.4rem;
	color: var(--color-text-light);
}

/* ------------------------------------------
   テンプレート選択UI
------------------------------------------ */
.selector {
	position: fixed;
	left: 2rem;
	bottom: 2rem;
	z-index: var(--z-selector);
}
@media (min-width: 768px) {
	.selector {
		left: 3rem;
		bottom: 3rem;
	}
}

/* トグルボタンとツールチップのラッパー */
.selector__toggle-wrap {
	display: flex;
	align-items: center;
	gap: 1.2rem;
}

/* 選択トグルボタン */
.selector__toggle {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 5.6rem;
	height: 5.6rem;
	background: linear-gradient(135deg, #EF4444 0%, #F97316 100%);
	border-radius: 50%;
	box-shadow: 0 4px 20px rgba(239, 68, 68, 0.4);
	transition: background 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
	flex-shrink: 0;
}
@media (min-width: 768px) {
	.selector__toggle {
		width: 6.4rem;
		height: 6.4rem;
	}
}

/* パルスリングアニメーション（注意を引く） */
.selector__toggle::before,
.selector__toggle::after {
	content: '';
	position: absolute;
	inset: -4px;
	border-radius: 50%;
	border: 2px solid #EF4444;
	opacity: 0;
	animation: selectorPulse 2.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

.selector__toggle::after {
	animation-delay: 1.25s;
}

@keyframes selectorPulse {
	0% {
		opacity: 0.6;
		transform: scale(1);
	}
	100% {
		opacity: 0;
		transform: scale(1.6);
	}
}

@media (any-hover: hover) {
	.selector__toggle:hover {
		background: linear-gradient(135deg, #DC2626 0%, #EA580C 100%);
		transform: scale(1.08);
		box-shadow: 0 6px 28px rgba(239, 68, 68, 0.5);
	}
}

/* ツールチップ（ボタン横のラベル） */
.selector__tooltip {
	display: inline-block;
	padding: 0.7rem 1.4rem;
	background-color: var(--color-white);
	color: var(--color-text);
	font-size: 1.3rem;
	font-weight: 600;
	white-space: nowrap;
	border-radius: 8px;
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
	animation: tooltipBounce 2s ease-in-out infinite;
	pointer-events: none;
}

@keyframes tooltipBounce {
	0%, 100% { transform: translateX(0); }
	50% { transform: translateX(4px); }
}

/* ツールチップは常時表示（is-hiddenクラスでも非表示にしない） */

.selector__toggle-icon,
.selector__toggle-close {
	fill: var(--color-white);
}

.selector__toggle-close {
	display: none;
}

.selector__toggle.is-active .selector__toggle-icon {
	display: none;
}

.selector__toggle.is-active .selector__toggle-close {
	display: block;
}

/* 選択パネル（スマホ: 全画面オーバーレイ / PC: 左下フローティング） */
.selector__panel {
	position: fixed;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	padding: 6rem 2rem 2rem;
	background-color: var(--color-white);
	overflow-y: auto;
	opacity: 0;
	visibility: hidden;
	transform: translateY(100%);
	transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
	z-index: calc(var(--z-selector) + 10);
}
@media (min-width: 768px) {
	.selector__panel {
		position: absolute;
		left: 0;
		bottom: 8rem;
		width: 32rem;
		height: auto;
		max-height: calc(100vh - 12rem);
		padding: 2rem;
		border-radius: 16px;
		box-shadow: 0 8px 32px var(--color-shadow);
		transform: translateY(10px);
		z-index: auto;
	}
}

.selector__panel.is-active {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

/* スマホ用閉じるボタン */
.selector__panel-close {
	position: absolute;
	top: 1.5rem;
	right: 1.5rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 4.4rem;
	height: 4.4rem;
	background-color: var(--color-bg);
	border: none;
	border-radius: 50%;
	color: var(--color-dark);
	cursor: pointer;
	transition: background-color 0.2s ease, transform 0.2s ease;
	z-index: 10;
}
.selector__panel-close:hover {
	background-color: var(--color-light-gray);
	transform: scale(1.05);
}
@media (min-width: 768px) {
	.selector__panel-close {
		display: none;
	}
}

.selector__panel-title {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	font-size: 1.3rem;
	font-weight: 600;
	color: var(--color-text-light);
	margin-bottom: 1.5rem;
}

.selector__panel-title-icon {
	flex-shrink: 0;
}

.selector__list {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.selector__item {
	display: flex;
	align-items: center;
	gap: 0.8rem;
}

.selector__btn {
	flex: 1;
	display: flex;
	align-items: center;
	gap: 1.2rem;
	padding: 1rem 1.2rem;
	background-color: var(--color-bg);
	border-radius: 12px;
	transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

@media (any-hover: hover) {
	.selector__btn:hover {
		background-color: var(--color-white);
		box-shadow: 0 2px 8px var(--color-shadow);
	}
}

.selector__btn.is-active {
	background-color: var(--color-white);
	box-shadow: 0 0 0 2px var(--color-primary);
}

.selector__btn-thumb {
	width: 4.8rem;
	height: 3.6rem;
	border-radius: 6px;
	flex-shrink: 0;
}

.selector__btn-thumb--catalog {
	background: linear-gradient(135deg, #FF5E58 0%, #FF855A 100%);
}

.selector__btn-thumb--empathy {
	background: linear-gradient(135deg, #E8A598 0%, #F5CEC7 100%);
}

.selector__btn-thumb--empathy02 {
	background: linear-gradient(135deg, #8AB6D6 0%, #A2C4DE 100%);
}

.selector__btn-thumb--trust {
	background: linear-gradient(135deg, #1B2838 0%, #2D3748 100%);
}

.selector__btn-thumb--catalog02 {
	background: linear-gradient(135deg, #F5BE0E 0%, #F7D44C 100%);
}

.selector__btn-thumb--trust02 {
	background: linear-gradient(135deg, #4ba770 0%, #5eb581 100%);
}

.selector__btn-info {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	text-align: left;
}

.selector__btn-name {
	font-family: var(--font-en);
	font-size: 1.5rem;
	font-weight: 600;
}

.selector__btn-desc {
	font-size: 1.2rem;
	color: var(--color-text-light);
}

/* 「表示中」バッジ（アクティブ時のみ表示） */
.selector__btn-badge {
	display: none;
	margin-left: auto;
	padding: 0.3rem 0.8rem;
	font-size: 1.1rem;
	font-weight: 600;
	color: var(--color-white);
	background-color: var(--color-primary);
	border-radius: 20px;
	white-space: nowrap;
	line-height: 1.4;
}

.selector__btn.is-active .selector__btn-badge {
	display: inline-block;
}

/* 非アクティブボタンのホバー時に「切替」矢印を表示 */
.selector__btn:not(.is-active)::after {
	content: '';
	display: block;
	margin-left: auto;
	width: 2rem;
	height: 2rem;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E");
	background-size: contain;
	background-repeat: no-repeat;
	opacity: 0;
	transform: translateX(-4px);
	transition: opacity 0.2s ease, transform 0.2s ease;
	flex-shrink: 0;
}

@media (any-hover: hover) {
	.selector__btn:not(.is-active):hover::after {
		opacity: 1;
		transform: translateX(0);
	}
}

/* 別タブで開くリンク */
.selector__link {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 4rem;
	height: 4rem;
	background-color: var(--color-bg);
	border-radius: 8px;
	flex-shrink: 0;
	transition: background-color 0.3s ease;
}

@media (any-hover: hover) {
	.selector__link:hover {
		background-color: var(--color-primary);
	}
	.selector__link:hover svg {
		fill: var(--color-white);
	}
}

.selector__link svg {
	fill: var(--color-text-light);
	transition: fill 0.3s ease;
}

/* ------------------------------------------
   選択セクションUI
------------------------------------------ */
.selector__sections {
	margin-top: 2rem;
	padding-top: 2rem;
	border-top: 1px solid var(--color-border);
}

.selector__sections-title {
	font-size: 1.3rem;
	font-weight: 600;
	color: var(--color-text-light);
	margin-bottom: 1.2rem;
}

.selector__sections-group {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}

.selector__section-item {
	display: flex;
	align-items: center;
	gap: 0.8rem;
	padding: 0.8rem 1rem;
	background-color: var(--color-bg);
	border-radius: 8px;
	cursor: pointer;
	transition: background-color 0.2s ease, box-shadow 0.2s ease;
}

@media (any-hover: hover) {
	.selector__section-item:hover {
		background-color: var(--color-white);
		box-shadow: 0 2px 8px var(--color-shadow);
	}
}

.selector__section-item:has(.selector__section-checkbox:checked) {
	background-color: var(--color-white);
	box-shadow: 0 0 0 2px var(--color-primary);
}

.selector__section-checkbox {
	width: 1.6rem;
	height: 1.6rem;
	accent-color: var(--color-primary);
	cursor: pointer;
}

.selector__section-label {
	flex: 1;
	font-size: 1.3rem;
	font-weight: 500;
	color: var(--color-text);
}

.selector__section-pos {
	font-size: 1.1rem;
	color: var(--color-text-light);
	background-color: var(--color-border);
	padding: 0.2rem 0.6rem;
	border-radius: 4px;
}

/* ------------------------------------------
   初回ガイドモーダル
------------------------------------------ */
.guide-modal {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: flex;
	align-items: flex-end;
	justify-content: flex-start;
	padding: 0 0 12rem 2rem;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.4s ease, visibility 0.4s ease;
}
@media (min-width: 768px) {
	.guide-modal {
		padding: 0 0 13rem 3rem;
	}
}

.guide-modal.is-visible {
	opacity: 1;
	visibility: visible;
}

/* 半透明オーバーレイ */
.guide-modal__overlay {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.4);
	-webkit-backdrop-filter: blur(2px);
	backdrop-filter: blur(2px);
}

/* コンテンツ */
.guide-modal__content {
	position: relative;
	background: var(--color-white);
	border-radius: 16px;
	padding: 2.8rem 3.2rem;
	box-shadow: 0 16px 48px rgba(0, 0, 0, 0.2);
	text-align: center;
	max-width: 32rem;
	transform: translateY(20px);
	transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.guide-modal.is-visible .guide-modal__content {
	transform: translateY(0);
}

/* アイコン */
.guide-modal__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 6.4rem;
	height: 6.4rem;
	background: linear-gradient(135deg, #4F46E5 0%, #7C3AED 100%);
	border-radius: 50%;
	margin-bottom: 1.6rem;
}

.guide-modal__icon svg {
	fill: var(--color-white);
}

/* テキスト */
.guide-modal__text {
	font-size: 1.6rem;
	font-weight: 600;
	line-height: 1.8;
	color: var(--color-text);
	margin-bottom: 2rem;
}

/* OKボタン */
.guide-modal__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 1rem 3.6rem;
	background: var(--color-primary);
	color: var(--color-white);
	font-size: 1.5rem;
	font-weight: 600;
	border: none;
	border-radius: 10px;
	cursor: pointer;
	transition: background-color 0.3s ease, transform 0.2s ease;
}

@media (any-hover: hover) {
	.guide-modal__btn:hover {
		background-color: var(--color-primary-dark);
		transform: scale(1.05);
	}
}

/* 左下を指す矢印 */
.guide-modal__arrow {
	position: absolute;
	bottom: -3.6rem;
	left: 2rem;
	color: var(--color-white);
	animation: guideArrowBounce 1.2s ease-in-out infinite;
	filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}

@keyframes guideArrowBounce {
	0%, 100% { transform: translate(0, 0); }
	50% { transform: translate(-6px, 6px); }
}

