@charset "utf-8";
/* -------------------------

Webサイト制作 共通ベースCSS

【設計ルール】
- モバイルファーストで記述します。（スマホ向けベース → タブレット → PC）
- プロジェクトごとに大きく変わるデザイン（h1などの見出し、固有のヘッダー・フッター等）への直接指定は避け、
  汎用的に使用できるユーティリティクラス（.l-wrapper, .u-text-center等）を使用します。
- JavaScriptやバックエンドからの表示切り替えには状態管理クラス（.is-active, .is-hidden等）を使用します。

【ブレイクポイント設定】
※標準CSSの仕様上、メディアクエリ（@media）内では変数（var）が使えないため、数値を直接記述します。
変更が必要な場合はファイル内の一括置換を行ってください。
- タブレット: 768px 以上  (@media screen and (min-width: 768px))
- PC        : 1024px 以上 (@media screen and (min-width: 1024px))

------------------------- */

/* ----------
【変数設定】テーマカラー等の共通定義
プロジェクトに応じて値を変更してください。
---------- */
:root {
	/* ----------------------
	コーポレートカラー指定
	---------------------- */
	/* メインカラー */
	--main_grad_direction: to right;
	/* グラデーション方向 */
	--main_grad_start: #E7D223;
	/* グラデーションカラー（スタート） */
	--main_grad_end: #E3AE1C;
	/* グラデーションカラー（エンド） */

	--corporate_main: var(--main_grad_direction), var(--main_grad_start), var(--main_grad_end);

	/* サブカラー */
	--sub_grad_direction: to right;
	/* グラデーション方向 */
	--sub_grad_start: #444444;
	/* グラデーションカラー（スタート） */
	--sub_grad_end: #444444;
	/* グラデーションカラー（エンド） */

	--corporate_sub: var(--sub_grad_direction), var(--sub_grad_start), var(--sub_grad_end);

	/* テキスト・背景色 */
	--color-text-main: #333333;
	--color-text-sub: #777777;
	--color-bg-main: #FFFFFF;
	--color-bg-sub: #F5F5F5;

	/* 余白・基本サイズ */
	--space-base: 10px;
	--container-max-width: 1100px;
}

/* ----------
【ベーススタイル】スマホ向け（共通ベース）
---------- */
body {
	color: var(--color-text-main);
	background-color: var(--color-bg-main);
	font-family: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
	line-height: 1.6;
	word-wrap: break-word;
}

img {
	max-width: 100%;
	height: auto;
}

a {
	color: var(--color-primary);
	text-decoration: none;
	transition: opacity 0.3s ease;
}

a:hover {
	opacity: 0.7;
}

/* クリック可能な要素のカーソル指定 */
.wholeLink {
	cursor: pointer;
}

/* ----------
【状態管理クラス】ステートメント（ルール12準拠）
JSやバックエンドからの制御用に使用します。
---------- */
/* 非表示状態 */
.is-hidden {
	display: none !important;
}

/* アクティブ状態（表示や強調など、用途に応じてスタイルを追加） */
.is-active {
	display: block;
}

/* ----------
【レイアウトクラス (.l-)】
大枠のレイアウトを構築するためのクラス群
---------- */
/* コンテンツ幅の固定と中央揃え */
.l-container {
	width: 90%;
	max-width: var(--container-max-width);
	margin: 0 auto;
}

/* セクション等の大きな括り用ラッパー */
.l-wrapper {
	padding: 40px 0;
}

/* フレックスボックスの汎用コンテナ */
.l-flex {
	display: flex;
	flex-wrap: wrap;
}

.l-flex-center {
	display: flex;
	justify-content: center;
	align-items: center;
}

.l-flex-between {
	display: flex;
	justify-content: space-between;
	align-items: center;
}

/* ----------
【ユーティリティクラス (.u-)】
余白、テキスト配置、デバイス別の表示切り替えなどの汎用クラス群
---------- */

/* テキスト配置 */
.u-text-left {
	text-align: left !important;
}

.u-text-center {
	text-align: center !important;
}

.u-text-right {
	text-align: right !important;
}

/* 余白（マージン） */
.u-mt-0 {
	margin-top: 0 !important;
}

.u-mb-0 {
	margin-bottom: 0 !important;
}

.u-mt-10 {
	margin-top: 10px !important;
}

.u-mb-10 {
	margin-bottom: 10px !important;
}

.u-mt-20 {
	margin-top: 20px !important;
}

.u-mb-20 {
	margin-bottom: 20px !important;
}

.u-mt-30 {
	margin-top: 30px !important;
}

.u-mb-30 {
	margin-bottom: 30px !important;
}

/* ボタン汎用ベース */
.u-btn {
	display: inline-block;
	padding: 10px 20px;
	background-color: var(--color-primary);
	color: #FFFFFF;
	text-align: center;
	border-radius: 5px;
	cursor: pointer;
	border: none;
	transition: background-color 0.3s ease, opacity 0.3s ease;
}

.u-btn:hover {
	opacity: 0.8;
}

/* 表示切り替え（デバイス別） - スマホベースではPCとタブレット用を隠す */
.u-hidden-sp {
	display: none !important;
}

.u-hidden-tab {
	display: block;
}

.u-hidden-pc {
	display: block;
}

/* =========================================================
   タブレット画面向けの上書き（768px 以上）
========================================================= */
@media screen and (min-width: 768px) {

	/* レイアウトの余白調整 */
	.l-wrapper {
		padding: 60px 0;
	}

	/* 余白拡張 */
	.u-mt-40 {
		margin-top: 40px !important;
	}

	.u-mb-40 {
		margin-bottom: 40px !important;
	}

	/* 表示切り替え（タブレット） */
	.u-hidden-sp {
		display: block !important;
	}

	.u-hidden-tab {
		display: none !important;
	}

}

/* =========================================================
   PC画面向けの上書き（1024px 以上）
========================================================= */
@media screen and (min-width: 1024px) {

	/* レイアウトの余白調整 */
	.l-wrapper {
		padding: 80px 0;
	}

	/* 表示切り替え（PC） */
	.u-hidden-tab {
		display: block !important;
	}

	.u-hidden-pc {
		display: none !important;
	}

	/* ホバーエフェクト（PCのみ有効にする場合など） */
	a:hover {
		text-decoration: underline;
	}
}

/* =========================================================
   （オプション）固定ヘッダーにする場合のスタイル
   プロジェクトの仕様に合わせてコメントアウトを外して調整してください。
========================================================= */
/*
#header {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 100;
}
*/
.u-word-break {
	word-break: break-all;
}

/* =========================================================
   Components (Buttons, Titles, etc.)
========================================================= */
/* ----------
   ボタン (Buttons)
---------- */
.c-btn-main {
	display: inline-block;
	background: linear-gradient(var(--corporate_main));
	color: #FFFFFF;
	font-size: 20px;
	font-weight: bold;
	padding: 15px 40px;
	border-radius: 50px;
	box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
	text-decoration: none;
	text-align: center;
	border: none;
	cursor: pointer;
}

.c-btn-main:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 15px rgba(0, 0, 0, 0.3);
	opacity: 1;
	/* override common.css hover */
	color: #FFFFFF;
	text-decoration: none;
}

.c-btn-sub {
	display: inline-block;
	background: #CCCCCC;
	color: #333333;
	font-size: 16px;
	font-weight: bold;
	padding: 15px 40px;
	border-radius: 50px;
	transition: transform 0.3s ease, opacity 0.3s ease;
	text-decoration: none;
	text-align: center;
	border: none;
	cursor: pointer;
}

.c-btn-sub:hover {
	transform: translateY(-2px);
	opacity: 0.8;
}

.c-btn-text {
	display: inline-block;
	background: transparent;
	color: #666666;
	font-size: 16px;
	padding: 5px;
	border: none;
	cursor: pointer;
	text-decoration: underline;
	transition: opacity 0.3s ease;
	-webkit-appearance: none;
	appearance: none;
}

.c-btn-text:hover {
	opacity: 0.7;
}

/* ----------
   アラートメッセージ
---------- */
.c-alert {
	padding: 15px 20px;
	border-radius: 5px;
	margin-bottom: 20px;
}

.c-alert ul {
	margin: 0;
	padding-left: 20px;
}

.c-alert li {
	margin-bottom: 5px;
}

.c-alert li:last-child {
	margin-bottom: 0;
}

.c-alert--danger {
	background-color: #FFF0F0;
	border: 1px solid #FFCCCC;
	color: #E60000;
}

.c-alert--danger ul {
	color: #E60000;
}

/* ----------
   セクション共通タイトル
---------- */
.c-section-title {
	font-size: 32px;
	font-weight: bold;
	margin-bottom: 40px;
	position: relative;
	display: flex;
	flex-direction: column;
}

.c-section-title span {
	font-size: 14px;
	color: var(--main_grad_start);
	margin-top: 5px;
}

/* ----------
   ヘッダー＆ナビゲーション (モバイルファースト)
---------- */
.c-header {
	background: #FFFFFF;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
	position: sticky;
	top: 0;
	z-index: 100;
	transition: transform 0.3s ease;
}

.c-header.is-hidden-up {
	transform: translateY(-100%);
}

.c-header__logo {
	font-size: 20px;
	font-weight: bold;
	padding: 15px 0;
}

/* スマホ向けナビ（デフォルト） */
.c-header__nav {
	display: none;
	/* 初期状態は非表示 */
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
	width: 100vw;
	background: #FFFFFF;
	box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
}

/* JSのslideToggleで制御するため、is-activeクラスでの制御は削除 */

.c-header__nav ul {
	display: block;
	/* .l-flexのflexを上書きして、意図しない隙間を防ぐ */
	width: 100%;
	margin: 0;
	padding: 0;
}

.c-header__nav li {
	width: 100%;
	margin: 0;
	padding: 0;
	list-style: none;
}

.c-header__nav a {
	display: block;
	width: 100%;
	padding: 15px 0;
	/* 少し狭めて間延び感をなくす */
	text-align: center;
	color: var(--color-text-main);
	font-weight: bold;
	border-bottom: 1px solid #F0F0F0;
	box-sizing: border-box;
}

/* ハンバーガーボタン（スマホ向けデフォルト） */
.c-hamburger {
	display: block;
	position: absolute;
	top: 10px;
	right: 15px;
	width: 40px;
	height: 40px;
	background: transparent;
	border: none;
	cursor: pointer;
	z-index: 110;
}

.c-hamburger span {
	display: block;
	position: absolute;
	width: 24px;
	height: 2px;
	background: var(--color-text-main);
	left: 8px;
	transition: all 0.3s;
}

.c-hamburger span:nth-child(1) {
	top: 12px;
}

.c-hamburger span:nth-child(2) {
	top: 19px;
}

.c-hamburger span:nth-child(3) {
	top: 26px;
}

/* バツ印アニメーション */
.c-hamburger.is-active span:nth-child(1) {
	top: 19px;
	transform: rotate(45deg);
}

.c-hamburger.is-active span:nth-child(2) {
	opacity: 0;
}

.c-hamburger.is-active span:nth-child(3) {
	top: 19px;
	transform: rotate(-45deg);
}

/* =========================================================
   PC・タブレット向けヘッダーの上書き（768px 以上）
========================================================= */
@media screen and (min-width: 768px) {

	/* ハンバーガーボタン非表示 */
	.c-hamburger {
		display: none;
	}

	/* ナビゲーションを横並びに */
	.c-header__nav {
		display: block !important;
		/* JSのdisplay:noneを無効化 */
		position: static;
		width: auto;
		left: auto;
		transform: none;
		box-shadow: none;
	}

	.c-header__nav ul {
		display: flex;
		/* PC向けは横並びにするためflexに戻す */
		flex-direction: row;
		gap: 20px;
	}

	.c-header__nav li {
		width: auto;
	}

	.c-header__nav a {
		padding: 15px 0;
		text-align: left;
		border-bottom: none;
	}
}

/* =========================================================
   Footer
========================================================= */
.c-footer {
	background: #222222;
	color: #FFFFFF;
	padding: 40px 0 20px;
}

.c-footer__info h2 {
	font-size: 24px;
	margin-bottom: 10px;
}

.c-footer .l-flex-between {
	flex-direction: column;
	text-align: center;
	gap: 20px;
}

.c-footer__nav {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 15px;
}

.c-footer__nav a {
	color: #DDDDDD;
}

.c-footer__nav a:hover {
	color: #FFFFFF;
}

.c-footer__copy {
	margin-top: 40px;
	border-top: 1px solid #444444;
	padding-top: 20px;
	color: #888888;
}

@media screen and (min-width: 768px) {
	.c-footer .l-flex-between {
		flex-direction: row;
		text-align: left;
		gap: 0;
	}

	.c-footer__nav {
		justify-content: flex-start;
		gap: 20px;
	}
}

/* =========================================================
   Animation (Fade-in)
========================================================= */
.js-fade-in {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.js-fade-in.is-visible {
	opacity: 1;
	transform: translateY(0);
}