@charset "UTF-8";

/* ==========================================================================
   LP共通スタイル
   各LP（ボイス/ダンス/その他）で共有する構造・コンポーネントを定義。
   テーマ差分（色）は CSS カスタムプロパティで切り出し、
   各LP固有の style.css で上書きする設計。
   画像は CSS 変数で持たず、各 LP の style.css で該当セレクタに直接指定する
   （CSS 変数の url(...) は変数を使うファイル側から相対解決されるため）。
   ========================================================================== */


/* ==========================================================================
   1. テーマ変数（各LPの style.css で上書きする）
   ========================================================================== */

.lpvt {
	/* 色：意味（役割）で命名。"オレンジ" 等の見た目名は使わない */
	--lp-color-primary:       #FA6E57; /* CVボタン、見出し下線、流れSTEPなどメインアクセント（単色用） */
	--lp-color-primary-light: #F69E53; /* メリット見出し、強調コピーの装飾色 */
	--lp-color-accent-bg:     #FED95C; /* 特徴・コース・料金見出しなどの大型背景 */
	--lp-color-soft-bg:       #FAFAFA; /* 導入・講師・料金などの薄い背景 */
	--lp-color-pop-red:       #D32F2F; /* 「無料体験」等の赤強調 */

	/* グラデーション用：単色 LP では primary 単色と同値、グラデ LP では linear-gradient(...) を入れる。
	   background プロパティでのみ使用可能（border-color 等では使えない）。 */
	--lp-color-primary-gradient: var(--lp-color-primary);
}


/* ==========================================================================
   2. ベース・リセット
   ========================================================================== */

.lpvt {
	width: 100%;
	margin: 0;
	padding: 0;
	font-size: 16px;
	line-height: 1.5;
}
.lpvt ul {
	list-style: none;
}
.lpvt h2 {
	font-size: 32px;
	text-align: center;
}
@media only screen and (max-width: 767px) {
	.lpvt h2 {
		font-size: 18px;
	}
}

/* ==========================================================================
   3. ユーティリティ
   ========================================================================== */

/* SP時のみ <br> を表示 */
@media only screen and (min-width: 768px) {
  .lp-spbr br {
	  display: none;
  }
}

/* 画面幅 1080 を上限とするコンテナ（旧 .max-wid） */
.lp-container {
	width: 100%;
	max-width: 1080px;
	padding: 0 30px;
	margin: 0 auto;
}
@media only screen and (max-width: 767px) {
	.lp-container {
		padding: 0 20px;
	}
}

/* 共通見出し：下線装飾は .lp-heading-line 修飾子で付与 */
.lp-heading {
	text-align: center;
}
.lp-heading-line::after {
	content: '';
	display: block;
	width: 68px;
	height: 4px;
	margin: 16px auto 40px;
	background: var(--lp-color-primary-gradient);
}

/* 黄色マーカー：テキスト下部に黄色ハイライト */
.maker-style {
	background: linear-gradient(transparent 60%, #FEFF99 60%);
}


/* ==========================================================================
   4. コンポーネント
   ========================================================================== */

/* ----- CTAボタン ----- */
.lp-cv-btn {
	text-align: center;
  margin: 40px auto;
}
.lp-cv-btn a {
	display: flex;
  align-items: center;
  justify-content: space-around;
	position: relative;
	max-width: 340px;
	margin: auto;
	padding: 24px 86px;
  font-size: 18px;
	color: #FFFFFF;
	font-weight: bold;
	text-decoration: none;
	background-color: var(--lp-color-primary);
	border-radius: 100px;
	box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.4);
	overflow: hidden;
}
/* 矢印アイコンは各 LP の style.css で背景画像 or 疑似要素で指定する */
.lp-cv-btn a:hover {
	transform: translateY(3px);
	box-shadow: none;
}
/* ボタン上を流れるシャイン演出 */
.lp-cv-btn a::before {
	content: '';
	position: absolute;
	top: -180px;
	left: 0;
	display: inline-block;
	width: 30px;
	height: 100%;
	background-color: #FFFFFF;
	transition: 0.2s;
	animation: lp-shiny-btn 3s ease-in-out infinite;
}
@keyframes lp-shiny-btn {
	0%   { transform: scale(0)  rotate(45deg); opacity: 0; }
	80%  { transform: scale(0)  rotate(45deg); opacity: 0.5; }
	81%  { transform: scale(4)  rotate(45deg); opacity: 1; }
	100% { transform: scale(50) rotate(45deg); opacity: 0; }
}

/* ----- 固定CTA：PCはヘッダー右、SPはフッター ----- */
.lp-fix-head {
	position: fixed;
	z-index: 999;
	top: 11px;
	right: 10%;
}
.lp-fix-head-btn {
  display: block;
  text-align: center;
	width: 180px;
	padding: 0.6em 0;
	color: #FFFFFF;
	font-size: 14px;
	font-weight: bold;
	letter-spacing: 0.05em;
	text-decoration: none;
	background: var(--lp-color-primary-gradient);
	border-radius: 24px;
}

.lp-fix-foot {
	position: fixed;
	z-index: 999;
	bottom: 0;
	left: 0;
	width: 100%;
	text-align: center;
	background: rgba(0, 0, 0, 0.58);
}
.lp-fix-foot-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	width: 96%;
	margin: 0.5em auto;
	padding: 1em 0;
	color: #FFFFFF;
	font-size: 18px;
	font-weight: bold;
	letter-spacing: 0.05em;
	text-decoration: none;
	background: var(--lp-color-primary-gradient);
}
.lp-fix-foot-btn::before {
	content: '';
	position: absolute;
	right: 15px;
	width: 7px;
	height: 7px;
	border-top: 2px solid #FFFFFF;
	border-right: 2px solid #FFFFFF;
	transform: rotate(45deg);
}


/* ==========================================================================
   5. セクション基本
   ========================================================================== */

.lp-sec {
	margin: 0 auto;
	padding: 20px 0;
}


/* ==========================================================================
   6. 各セクション
   ========================================================================== */

/* ----- メインビジュアル -----
   lp-sec のデフォルト padding を 0 で打ち消す。
   MV は固定 height（560px）＋ 背景画像で構成され、上下に padding が入ると
   box-sizing: border-box によりコンテンツが内側に押し込まれて位置がずれるため。
   背景画像（PC/SP）は各 LP の style.css で定義。 */
.lp-sec-mv {
	height: 560px;
	padding: 0;
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}
.lp-mv-title h1 img {
	margin-top: 0;
}
@media only screen and (max-width: 767px) {
	.lp-sec-mv {
		position: relative;
	}
	.lp-mv-title h1 {
		padding: 24px 8px;
	}
	/* SP では lp-container 内に入った構造の影響で position:absolute だけだとボタンが
	   lp-container の左 padding 分（20px）に寄ってしまう。
	   left:0/right:0 で offset parent（lp-sec-mv）全幅に広げ、内側の <a> を margin:0 auto で中央寄せ。 */
	.lp-sec-mv .lp-cv-btn {
		position: absolute;
		top: 440px;
		left: 0;
		right: 0;
	}
}

/* ----- 導入：インフォメーション + 悩み ----- */
.lp-sec-intro {
	background-color: var(--lp-color-soft-bg);
}

/* インフォメーション（折りたたみ） */
.lp-information {
	max-width: 760px;
	margin: 16px auto 48px;
}
.lp-information-option {
	position: relative;
	margin-bottom: 1em;
	border: solid 1px #EEEEEE;
}
.lp-information-toggle {
	display: none;
}
.lp-information-title,
.lp-information-body {
	backface-visibility: hidden;
	transform: translateZ(0);
	transition: all 0.3s;
}
.lp-information-title {
	display: block;
	padding: 1em;
	color: #333333;
}
.lp-information-title::after,
.lp-information-title::before {
	content: '';
	position: absolute;
	top: 1.25em;
	right: 1.25em;
	width: 2px;
	height: 0.75em;
	background-color: #999999;
	transition: all 0.3s;
}
.lp-information-title::after {
	transform: rotate(90deg);
}
.lp-information-toggle:checked + .lp-information-title + .lp-information-body {
	max-height: 100%;
	transition: all 1s;
}
.lp-information-toggle:checked + .lp-information-title::before {
	transform: rotate(90deg);
}
.lp-information-body {
	max-height: 0;
	overflow: hidden;
}
.lp-information-inner {
	margin: 0;
	padding: 40px;
	font-size: 0.9em;
	line-height: 1.5;
	background-color: #FFFFFF;
	border-top: solid 1px #EEEEEE;
}
.lp-information-h {
	margin: 0 0 21px;
	font-size: 21px;
	font-weight: bold;
}
@media only screen and (max-width: 767px) {
	.lp-information-title {
		font-size: 12px;
	}
}

/* 悩み枠 */
.lp-intro-frame {
	margin: 32px auto;
	border: solid 1px #000000;
	border-radius: 8px;
	background-repeat: no-repeat;
	background-position: bottom 0 right 80px;
	background-size: 124px;
	/* 女の子の背景画像は各 LP の style.css で定義 */
}
.lp-intro-frame h2 {
	position: relative;
	top: -24px;
	max-width: 760px;
	margin: 0 auto;
	background: var(--lp-color-soft-bg);
}
.lp-intro-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	width: 720px;
	margin: 0;
	padding: 24px 40px;
}
.lp-intro-list li {
	width: 50%;
	padding-left: 1.5em;
	margin-bottom: 1em;
	background-repeat: no-repeat;
	background-position: left center;
	background-size: 1em;
	/* チェックアイコンの背景画像は各 LP の style.css で定義 */
}
@media only screen and (max-width: 767px) {
	.lp-intro-frame {
		background-position: bottom 0 right 12px;
	}
	.lp-intro-frame h2 {
		width: 80%;
	}
	.lp-intro-list {
		width: 100%;
		padding: 24px 16px;
	}
	.lp-intro-list li {
		width: 100%;
	}
}

/* ----- メリット ----- */
h2.lp-merit-copy {
	margin: 40px auto 0;
	font-size: 24px;
	font-weight: bold;
	text-align: center;
	line-height: 2;
}
.lp-merit-copy span {
	margin-top: 8px;
	font-size: 32px;
	color: var(--lp-color-primary-light);
	text-decoration: underline wavy;
	text-underline-offset: 0.5em;
}
.lp-merit-list {
	padding: 72px 0;
}
.lp-merit-list > li {
	margin: 0 auto 32px;
}
.lp-merit-text h3 {
	margin: 0 0 1.5em;
	font-size: 24px;
	color: var(--lp-color-primary-light);
}
.lp-merit-text p {
	font-weight: bold;
	line-height: 2;
}
@media only screen and (min-width: 768px) {
	.lp-merit-list li {  
    display: flex;
    justify-content: space-between;
    align-items: center;
	}
  .lp-merit-list li > * {
	  flex: 0 0 42%;
    max-width: 42%;
  }
  .lp-merit-list li:nth-child(even) > img {
    order: 2;
  }
}
@media only screen and (max-width: 767px) {
	h2.lp-merit-copy {
		font-size: 18px;
	}
	.lp-merit-copy span {
		font-size: 24px;
	}
	.lp-merit-list {
		padding: 36px 0 0;
  }
	.lp-merit-text {
		margin-top: 1.5em;
	}
  .lp-merit-text h3 {
	  margin: 0 0 .5em;
  }
	.lp-merit-text p {
		margin: 8px auto;
	}
	.lp-merit-list > li:nth-child(odd) .lp-merit-text,
	.lp-merit-list > li:nth-child(even) .lp-merit-text {
	}
}

/* ----- 5つの特徴 ----- */
.lp-sec-feature {
	background: var(--lp-color-accent-bg);
}
.lp-feature-title {
	max-width: 720px;
	margin: 0 auto;
	padding: 40px 0 0;
}
.lp-feature-title img {
	max-width: 160px;
	vertical-align: middle;
}
.lp-feature-title h2 {
	display: inline;
	vertical-align: middle;
}
.lp-feature-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	margin: 0 auto;
	padding-left: 0;
}
.lp-feature-list > li {
	width: 32%;
	margin: 0 auto 24px;
}
.lp-feature-list > li h3 {
	margin: 0;
}
@media only screen and (max-width: 767px) {
	/* lp-sec-feature の SP padding は左右 12px にして、コンテンツ幅を確保 */
	.lp-sec-feature .lp-container {
		padding: 0 12px;
	}
	.lp-feature-title {
		overflow: hidden;
		clear: both;
		padding: 20px 0 0;
	}
	.lp-feature-title img {
		display: block;
		float: left;
		width: 30%;
	}
	.lp-feature-title h2 {
		display: block;
		float: left;
		width: 70%;
		margin: 0;
		padding: 30px 0 0;
		text-align: left;
	}
	.lp-feature-list > li {
		width: 48%;
	}
}

/* ----- 生徒の声 ----- */
.lp-review-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	margin: 0 auto;
	padding: 0;
}
.lp-review-list > li {
	width: 48%;
	max-width: 448px;
	margin: 0 auto 24px;
	padding: 24px;
	background: #EDEDED;
	border-radius: 8px;
}
.lp-review-list > li img {
	float: left;
	width: 80px;
}
.lp-review-avatar {
	border-radius: 100%;
}
.lp-review-h {
	float: left;
	max-width: 304px;
	padding-left: 16px;
}
.lp-review-h h3 {
	margin: 0 auto 12px;
}
.lp-review-h p {
	font-size: 14px;
}
.lp-review-text {
	clear: both;
	padding: 16px 0 0;
	border-top: solid 1px #FFFFFF;
	overflow: hidden;
}
@media only screen and (max-width: 767px) {
	.lp-review-list > li {
		width: 100%;
	}
	.lp-review-list > li img {
		width: 20%;
	}
	.lp-review-h {
		max-width: 80%;
	}
}

/* ----- 大CTA：3アイコン + CV画像 + ボタン ----- */
.lp-sec-promise h2 {
	margin: 32px auto;
	font-size: 32px;
	color: var(--lp-color-primary-light);
}
.lp-promise-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	margin-bottom: 24px;
}
.lp-promise-list > li {
	width: 33.333%;
	text-align: center;
	border-right: dotted 4px var(--lp-color-accent-bg);
}
.lp-promise-list > li:first-child {
	border-left: dotted 4px var(--lp-color-accent-bg);
}
.lp-promise-list > li img {
	width: 64px;
}
.lp-promise-list > li p {
	font-size: 21px;
	font-weight: bold;
}
@media only screen and (max-width: 767px) {
	.lp-sec-promise h2 {
		margin-top: 0;
		font-size: 24px;
	}
	.lp-promise-list > li img {
		padding: 8px;
	}
	.lp-promise-list > li p {
		font-size: 12px;
	}
}

/* ----- 講師陣 ----- */
.lp-sec-teachers {
	padding: 48px 0;
	background: var(--lp-color-soft-bg);
}
.lp-teachers-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	padding: 0;
}
.lp-teachers-list > li {
	width: 32%;
	max-width: 296px;
	text-align: center;
	background: #FFFFFF;
}
.lp-teachers-copy {
	margin: 0;
	padding: 8px;
	background: #EFEFEF;
}
.lp-teachers-list > li img {
	max-width: 160px;
	margin: 16px auto 0;
}
.lp-teachers-list > li h3 {
	margin: 16px auto 0;
	font-size: 21px;
}
.lp-teachers-text {
	margin: 16px;
	padding: 6px 0 0;
	font-size: 14px;
	line-height: 2;
	text-align: left;
	border-top: solid 1px #EFEFEF;
}
@media only screen and (max-width: 767px) {
	.lp-teachers-list > li {
		width: 100%;
		max-width: 100%;
		margin-bottom: 16px;
	}
}

/* ----- コース一覧 ----- */
.lp-sec-course {
	background: var(--lp-color-accent-bg);
}
.lp-course-text {
	max-width: 760px;
	margin: 0 auto;
	line-height: 2;
}
.lp-sec-course .card-list {
	margin: 32px auto;
}
.lp-sec-course .card-list > li {
	background: #FFFFFF;
  text-align: center;
  margin-bottom: 12px;
}
.lp-sec-course h3 {
  margin: 0 auto 8px;
  font-size: 100%;
}
@media only screen and (max-width: 767px) {
	.lp-course-text {
		font-size: 14px;
	}
  .lp-sec-course h3 {
    font-size: 12px;
  }
}

/* ----- 料金 ----- */
.lp-sec-price {
	background: var(--lp-color-soft-bg);
}
.lp-price-table h3 {
	margin: 0 auto;
	padding: 16px;
	font-size: 21px;
	text-align: center;
	background: var(--lp-color-accent-bg);
}
.lp-price-table table {
	width: 100%;
	border-spacing: 4px;
}
.lp-price-table th,
.lp-price-table td {
	padding: 16px;
	text-align: center;
	font-weight: bold;
}
.lp-price-table th {
	background: #DEDEDE;
}
.lp-price-table td {
	background: #FFFFFF;
}
/* 「人気」「おすすめ」バッジ（背景画像は各 LP で定義） */
.lp-pop-ninki th::before,
.lp-pop-osusume th::before {
	content: '';
	position: relative;
	top: 4px;
	left: -8px;
	display: block;
	height: 40px;
	margin-top: -40px;
	background-repeat: no-repeat;
	background-position: left bottom;
	background-size: 40px;
}
@media only screen and (max-width: 767px) {
	.lp-price-table table {
		border-spacing: 2px;
	}
	.lp-price-table th,
	.lp-price-table td {
		padding: 12px;
		font-size: 12px;
	}
	.lp-price-table p {
		margin: 8px auto;
		font-size: 12px;
	}
}

/* ----- オファー（背景画像付きCTA、背景画像は各 LP で定義） ----- */
.lp-sec-offer {
	padding: 48px 0;
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}

/* ----- 校舎（mygroup 指定時のリスト表示） ----- */
.lp-school-copy {
	font-size: 24px;
	font-weight: bold;
	text-align: center;
}
.lp-school-copy span {
	color: var(--lp-color-pop-red);
}
.lp-school-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	margin: 32px auto;
	padding: 0;
}
.lp-school-list > li {
	width: 100%;
	max-width: 448px;
	margin: 0 auto 24px;
	padding: 24px 24px 16px;
	text-align: center;
	background: #FFFFFF;
	border: solid 1px #EFEFEF;
}
.lp-school-list > li iframe {
	width: 100%;
	height: 260px;
}
.lp-school-nomap {
	width: 100%;
	height: 260px;
	line-height: 260px;
	text-align: center;
	background: #CCCCCC;
}
.lp-school-list > li h4 {
	margin: 16px auto 8px;
	font-size: 21px;
}
.lp-school-list > li p {
	margin: 0 auto;
	padding: 8px;
	border-top: solid 1px #EEEEEE;
}
.lp-school-list > li p span {
	color: var(--lp-color-pop-red);
	font-size: 1.2em;
	font-weight: bold;
}

/* ----- 無料体験の流れ ----- */
.lp-flow-list {
	margin: 0 auto;
	padding: 0;
}
.lp-flow-list > li {
	padding-bottom: 24px;
}
/* ステップ間の矢印アイコン（背景画像は各 LP で定義） */
.lp-flow-list > li::after {
	content: '';
	position: relative;
	bottom: -12px;
	display: block;
	width: 100%;
	height: 36px;
	background-repeat: no-repeat;
	background-position: center;
}
.lp-flow-list > li.lp-flow-last::after {
	content: none;
}
.lp-flow-item {
	border: solid 2px var(--lp-color-primary);
}
.lp-flow-item > * {
  align-content: center;
}
.lp-flow-step {
	margin: 0;
	color: #FFFFFF;
	text-align: center;
	background: var(--lp-color-primary);
}
.lp-flow-text {
	margin: 0;
	padding: 16px;
}
.lp-flow-text h3,
.lp-flow-text p {
	margin: 0;
}
.lp-flow-text h3 {
	margin-bottom: 0.5em;
}
@media only screen and (min-width: 768px) {
  .lp-flow-list {
	  max-width: 760px;
  }
  .lp-flow-item {
    display: flex;
  }
  .lp-flow-step {
	  flex: 0 0 110px;
    margin-right: 20px;
  }
}
@media only screen and (max-width: 767px) {
	.lp-flow-step {
		padding: 8px;
	}
	.lp-flow-text h3 {
		margin: 0 0 8px;
    font-size: 100%;
	}
}

/* ----- 申し込みフォーム ----- */
.lp-sec-form h2 {
	margin: 4px auto;
	font-size: 32px;
	color: #FFFFFF;
}
@media only screen and (max-width: 767px) {
	.lp-sec-form h2 {
		margin: 0;
		font-size: 24px;
	}
}
