/* CSS変数でカラーシステムを管理 */
:root {
	/* カラーパレット */
	--color-primary: #2c5f7c;
	--color-primary-light: #4a90a4;
	--color-primary-lighter: #6ba8be;
	--color-secondary: #e7f3f8;
	--color-secondary-light: #f0f7fa;
	--color-accent: #fff59d;
	--color-text: #333;
	--color-text-light: #666;
	--color-text-lighter: #999;
	--color-border: #e3eff5;
	
	/* スペーシングシステム（8px基準） */
	--space-xs: 8px;
	--space-sm: 16px;
	--space-md: 24px;
	--space-lg: 32px;
	--space-xl: 48px;
	--space-2xl: 64px;
	--space-3xl: 80px;
	
	/* 影の階層 */
	--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06);
	--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
	--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);
	--shadow-xl: 0 12px 32px rgba(0, 0, 0, 0.15);
	
	/* タイポグラフィ */
	--font-ja: 'Noto Sans JP', sans-serif;
	--font-en: 'Inter', sans-serif;
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

body {
	font-family: var(--font-ja);
	line-height: 1.9;
	color: var(--color-text);
	background-color: #fafbfc;
	font-size: 16px;
}

/* 数字・英字は欧文フォント */
.en-number {
	font-family: var(--font-en);
	font-weight: 600;
}

.container {
    max-width: 100%;
    overflow-x: hidden;
    margin: 0 auto;
    padding: var(--space-xl) var(--space-lg);
    background-color: #fff;
    box-shadow: var(--shadow-md);
}

/* ヘッダー */
.header {
	padding: 0;
	background: none;
	border-radius: 0;
	margin-bottom: var(--space-lg);
	margin-left: calc(var(--space-lg) * -1);
	margin-right: calc(var(--space-lg) * -1);
	box-shadow: none;
	overflow: hidden;
}

.header h1 {
	font-size: 32px;
	font-weight: 700;
	color: var(--color-primary);
	margin-bottom: var(--space-sm);
	letter-spacing: 0.08em;
}

.header img {
	width: 100%;
	display: block;
}

/* セクション */
.section {
	margin-bottom: var(--space-3xl);
	padding: var(--space-xl) var(--space-xl);
	border-radius: 12px;
}

/* セクション背景色のバリエーション */
.section-bg-1 {
	background-color: #fafbfc;
}

.section-bg-2 {
	background-color: #f8fafb;
}

.section-bg-3 {
	background-color: #f5f8fa;
}

/* H1見出し */
.section-title {
	font-size: 26px;
	font-weight: 700;
	color: #fff;
	background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
	padding: var(--space-md) var(--space-xl);
	margin: calc(var(--space-xl) * -1) calc(var(--space-xl) * -1) var(--space-lg) calc(var(--space-xl) * -1);
	border-radius: 12px 12px 0 0;
	line-height: 1.5;
	letter-spacing: 0.03em;
}

.section-subtitle {
	font-size: 22px;
	font-weight: 700;
	color: var(--color-primary);
	background-color: var(--color-secondary);
	border-left: 5px solid var(--color-primary-light);
	padding: 10px 16px;
	margin-top: var(--space-lg);
	margin-bottom: var(--space-lg);
	border-radius: 0 6px 6px 0;
	line-height: 1.5;
	letter-spacing: 0.02em;
}

/* テキスト強調 - 黄色背景 */
.highlight-text {
	background: linear-gradient(transparent 60%, var(--color-accent) 60%);
	font-weight: 700;
	padding: 0 4px;
}

/* テキスト */
p {
	margin-bottom: var(--space-md);
	line-height: 2;
}

/* ボタン */
/* LP-004専用ボタン（名前を lp04- に変更） */
.lp04-btn {
	display: inline-block;
	padding: var(--space-sm) var(--space-xl);
	font-size: 18px;
	font-weight: 700;
	text-align: center;
	text-decoration: none;
	border-radius: 8px;
	transition: all 0.3s ease;
	cursor: pointer;
	border: none;
	font-family: var(--font-ja);
	letter-spacing: 0.05em;
}

.lp04-btn-primary {
	background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
	color: #fff;
	box-shadow: var(--shadow-md);
}

.lp04-btn-primary:hover {
	transform: translateY(-2px);
	box-shadow: var(--shadow-lg);
}

.lp04-btn-primary:active {
	transform: translateY(0);
	box-shadow: var(--shadow-sm);
}

.lp04-btn-secondary {
	background: #fff;
	color: var(--color-primary);
	border: 2px solid var(--color-primary);
	box-shadow: var(--shadow-sm);
}

.lp04-btn-secondary:hover {
	background: var(--color-secondary-light);
	transform: translateY(-2px);
	box-shadow: var(--shadow-md);
}

/* 追従エリア（名前を変更し、中央寄せを追加） */
.lp04-fixed-footer {
	position: fixed;
	bottom: 0;
	left: 0;
	width: 100%;
	padding: 12px 16px;
	background: rgba(255,255,255,0.95);
	box-shadow: 0 -2px 12px rgba(0,0,0,0.1);
	z-index: 100;
	display: flex;
	justify-content: center;
	align-items: center;
}

/* 非表示制御用クラス */
.lp04-is-hidden {
	display: none;
}

/* チェックリスト */
.checklist {
	position: relative; /* 子要素の基準点にする */
	overflow: hidden;   /* はみ出した画像をカットする */
	z-index: 1;
	background: linear-gradient(135deg, #f8fafb 0%, #f0f4f7 100%);
	padding: var(--space-xl);
	border-radius: 12px;
	margin: var(--space-xl) 0;
	box-shadow: var(--shadow-sm);
}

/* 背景画像の設定 */
.checklist-bg-image {
	position: absolute; /* 浮かせた状態にする */
	right: 0;           /* 右寄せ */
	bottom: 0;          /* 下寄せ（お好みで調整） */
	width: 200px;       /* 画像のサイズ（お好みで） */
	height: auto;
	opacity: 0.9;       /* 文字の邪魔をしないよう少し薄くする */
	z-index: -1;        /* 文字の下に配置 */
	pointer-events: none; /* 画像がクリックの邪魔をしないようにする */
}

/* 文字が画像と重なって見づらい場合の調整 */
.checklist-item {
	position: relative; /* 文字を画像より上に表示 */
	z-index: 2;
	max-width: 70%;     /* 文字が画像に被りすぎないよう幅を制限（任意） */
}


.checklist-item {
	padding: 14px 0;
	font-size: 17px;
	display: flex;
	align-items: flex-start;
	line-height: 1;
}

.checklist-item:hover {
	transform: translateX(4px);
}

.checklist-item:before {
	content: "✓";
	color: var(--color-primary-light);
	font-weight: 700;
	margin-right: var(--space-sm);
	font-size: 20px;
	flex-shrink: 0;
}

/* ハイライトボックス */
.highlight-box {
	background: linear-gradient(135deg, var(--color-secondary) 0%, #d4eaf2 100%);
	border-left: 5px solid var(--color-primary-light);
	padding: var(--space-lg) var(--space-xl);
	margin: var(--space-xl) 0;
	border-radius: 8px;
	box-shadow: var(--shadow-sm);
}

.highlight-box p {
	margin-bottom: var(--space-sm);
}

.highlight-box p:last-child {
	margin-bottom: 0;
}

/* 画像プレースホルダー */
.image-placeholder {
	background: linear-gradient(135deg, #f0f4f7 0%, #e8eef3 100%);
	padding: var(--space-2xl);
	text-align: center;
	border-radius: 12px;
	margin: var(--space-xl) 0;
	color: #7a8895;
	font-style: italic;
	border: 2px dashed var(--color-border);
}

/* イラスト用プレースホルダー */
.illustration-placeholder {
	background: linear-gradient(135deg, #fff9e6 0%, #fff3d9 100%);
	padding: var(--space-sm);
	margin: var(--space-sm) 0;
	text-align: center;
	border-radius: 12px;
	color: #b8860b;
	font-style: italic;
//            border: 2px dashed #ffe4a3;
	font-size: 14px;
}

/* ロゴグリッド */
.logo-grid {
	display: flex;
	justify-content: center;
	gap: var(--space-md);
	flex-wrap: wrap;
	margin: var(--space-xl) 0;
}

.logo-item {
	background: linear-gradient(135deg, #f8fafb 0%, #f0f4f7 100%);
	padding: var(--space-md) var(--space-xl);
	border-radius: 12px;
	border: 1px solid var(--color-border);
	box-shadow: var(--shadow-sm);
	font-weight: 500;
	color: #5a6c7a;
}

.logo-item:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadow-md);
}


/* FAQ */
.faq-item {
	margin-bottom: var(--space-xl);
	padding-bottom: var(--space-lg);
	border-bottom: 2px solid #f0f4f7;
}

.faq-item:hover {
	padding-left: var(--space-sm);
}

.faq-item:last-child {
	border-bottom: none;
}

.faq-question {
	font-weight: 700;
	color: var(--color-primary);
	margin-bottom: var(--space-sm);
	font-size: 18px;
	line-height: 1.7;
}

.faq-answer {
	color: #555;
	line-height: 2;
	padding-left: var(--space-md);
}

/* CTA */
.cta-section {
	background: linear-gradient(135deg, var(--color-secondary) 0%, #cfe8f3 100%);
	padding: var(--space-2xl) var(--space-xl);
	border-radius: 16px;
	text-align: center;
	margin: var(--space-3xl) 0;
	box-shadow: var(--shadow-md);
	overflow: hidden;  /* 追加 */
}
.cta-title {
	font-size: 26px;
	font-weight: 700;
	color: var(--color-primary);
	margin-bottom: var(--space-lg);
	line-height: 1.6;
	letter-spacing: 0.05em;
}

.cta-text {
	margin-bottom: var(--space-md);
	line-height: 2;
	font-size: 17px;
}

/* 強調テキスト */
.emphasis {
	font-weight: 700;
	color: var(--color-primary);
	font-size: 18px;
}

/* セクション区切り */
.section-divider {
	height: 2px;
	background: linear-gradient(90deg, transparent 0%, var(--color-secondary) 50%, transparent 100%);
	margin: var(--space-3xl) 0;
}

/* リンクスタイル */
a {
	color: var(--color-primary);
	text-decoration: none;
	transition: all 0.3s ease;
}

a:hover {
	color: var(--color-primary-lighter);
	text-decoration: underline;
}

a:focus {
	outline: 2px solid var(--color-primary-light);
	outline-offset: 2px;
}

/* フォーカス状態 */
*:focus-visible {
	outline: 2px solid var(--color-primary-light);
	outline-offset: 2px;
}

/* アニメーション */
@keyframes fadeIn {
	from {
		opacity: 0;
		transform: translateY(20px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.fade-in {
	animation: fadeIn 0.6s ease-out;
}

/* レスポンシブ */
@media (max-width: 1024px) {
	.container {
		max-width: 100%;
	}
}

@media (max-width: 768px) {
	:root {
		--space-xl: 32px;
		--space-2xl: 48px;
		--space-3xl: 64px;
	}

	.container {
		padding: var(--space-lg) var(--space-sm);
	}

	.section {
		padding: var(--space-lg) var(--space-md);
	}

	.section-title {
		font-size: 20px;
		letter-spacing: 0.02em;
		padding: var(--space-sm) var(--space-md);
		margin: calc(var(--space-lg) * -1) calc(var(--space-md) * -1) var(--space-lg) calc(var(--space-md) * -1);
		border-radius: 12px 12px 0 0;
	}

	.header {
		padding: 0;
		border-radius: 0;
		margin-bottom: var(--space-lg);
		margin-left: calc(var(--space-md) * -1);
		margin-right: calc(var(--space-md) * -1);
	}

	.header h1 {
		font-size: 26px;
	}

	.header img {
		width: 100%;
		display: block;
	}
	.section-subtitle {
		font-size: 18px;
		margin-top: var(--space-lg);
		margin-bottom: var(--space-md);
	}

	.btn {
		width: 100%;
		padding: var(--space-md) var(--space-lg);
	}

	.checklist {
		padding: var(--space-lg) var(--space-md);
	}

	.checklist-item {
		max-width: 85%;
	}

	.checklist-bg-image {
		width: 140px;
	}
	.highlight-box {
		padding: var(--space-md) var(--space-md);
	}

	.image-placeholder {
		padding: var(--space-xl) var(--space-md);
	}

	.illustration-placeholder {
		padding: var(--space-lg) var(--space-sm);
	}

	.logo-grid {
		flex-direction: column;
		gap: var(--space-sm);
	}

	.cta-section {
		padding: var(--space-xl) var(--space-lg);
		margin: var(--space-2xl) 0;
		text-align: left;
	}

	.cta-title {
		font-size: 22px;
		text-wrap: balance;
	}

	.cta-text {
		text-wrap: pretty;/* ← 追加（末尾1語だけ残るのを防ぐ） */
	}
	.faq-item {
		margin-bottom: var(--space-lg);
		padding-bottom: var(--space-lg);
		border-bottom: 2px solid #f0f4f7;
	}

	.faq-question {
		font-size: 17px;
	}

	.faq-answer {
		padding-left: 0;
	}

}

@media (max-width: 480px) {
    .section-title {
        font-size: 18px;
        letter-spacing: 0;
    }

    .checklist-item {
        max-width: 100%;
    }

    .checklist-bg-image {
        width: 110px;
        opacity: 0.6;
    }
    .cta-title {
        font-size: 18px;
    }
    .cta-text {
        font-size: 15px;
    }
}



img {
	max-width: 100%;
	height: auto;
	vertical-align: middle;
	/*border-radius: 8px;*/ /* 角を少し丸くするとデザインに馴染みます */
}
.img-small { width: 50%; }


/* お客様の声 */
.testimonial {
	background: #fff;
	padding: 12px var(--space-lg);

	border-radius: 12px;
	margin: 6px 0;
	border-left: 5px solid var(--color-primary-light);
	box-shadow: var(--shadow-sm);
}

.testimonial:hover {
	transform: translateX(8px);
	box-shadow: var(--shadow-md);
}

.testimonial p {
	margin-bottom: var(--space-sm);
	line-height: 2;
}

.testimonial-age {
	font-size: 14px;
	color: var(--color-text-light);
	margin-top: var(--space-sm);
	text-align: right;
}

.testimonial-hidden {
	display: none;
}
.testimonial-more-btn {
	display: block;
	width: 100%;
	margin-top: 16px;
	padding: 12px;
	background: #fff;
	border: 2px solid var(--color-primary);
	border-radius: 8px;
	color: var(--color-primary);
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
	font-family: var(--font-ja);
}

.fixed-btn {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	text-align: center;
	padding: 12px 16px;
	background: rgba(255,255,255,0.95);
	box-shadow: 0 -2px 12px rgba(0,0,0,0.1);
	z-index: 100;
}

.price-grid {
    display: flex;
    gap: 16px;
    margin: 24px 0;
}

.price-box {
    flex: 1;
    border: 2px solid var(--color-border);
    border-radius: 12px;
    padding: 20px;
    text-align: center;
    background: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.price-box.featured {
    border-color: var(--color-primary-light);
    background: var(--color-secondary-light);
}

.price-box-label {
    font-weight: 700;
    font-size: 16px;
    color: var(--color-text-light);
    margin-bottom: 12px;
}

.featured .price-box-label {
    color: var(--color-primary);
}

.price-box-price {
    font-size: 26px;
    font-weight: 700;
    color: var(--color-text);
}

.featured .price-box-price {
    color: var(--color-primary);
}

.price-box-note {
    font-size: 12px;
    color: var(--color-text-lighter);
    margin-top: 4px;
}

.price-box-divider {
    border-top: 1px solid var(--color-border);
    margin: 12px 0;
}

.price-box-sub {
    font-size: 13px;
    color: var(--color-text-light);
    margin-bottom: 6px;
}


.column-box {
    border: 2px dashed var(--color-primary-light);
    border-radius: 12px;
    padding: var(--space-md) var(--space-lg);
    margin: var(--space-lg) 0;
    background: #fff;
    position: relative;
}

.column-box-label {
    display: inline-block;
    background: var(--color-primary-light);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    padding: 2px 10px;
    border-radius: 4px;
    margin-bottom: 12px;
    letter-spacing: 0.05em;
}
.column-box-label.beauty {
    background: #e8a87c;
}

.beauty-box {
    background: #fff;
    border: 2px dashed #e8a87c;
    border-left: 2px dashed #e8a87c;
}
