@charset "utf-8";

/* ---------------------------------------------------------------
	Reset
--------------------------------------------------------------- */
html, body, video {
    margin:0;
    padding:0;
    border:0;
    outline:0;
}
.lp01 a {
    margin:0;
    padding:0;
    font-size:100%;
    vertical-align:baseline;
    background:transparent;
}
.lp01 picture{
	display: block;
}


/* ---------------------------------------------------------------
	Base
--------------------------------------------------------------- */
html{
	scroll-behavior: smooth;
}
.lp01 {
	color: #000;
	font-size: 15px;
	font-weight: normal;
	font-family: "游ゴシック体", YuGothic, "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, arial, sans-serif;
	line-height: 1.5;
	word-break: normal;
	overflow-wrap: break-word;
	word-wrap: break-word;
	background-color: #fff;
	-webkit-font-smoothing: antialiased;
	text-align: left;
}
/* PCのみ */
@media all and (min-width: 479px) {
	.lp01{
		min-width: 478px;
		width: 478px;
		margin: auto;
	}
}
/* SPのみ */
@media all and (max-width: 478px) {
	.lp01{
		width: 100%;
		min-width: 320px;
	}
}


/* ---------------------------------------------------------------
	Content
--------------------------------------------------------------- */

/* common
---------------------------------------------------------- */
.lp01 img{
	max-width: 100%;
	height: auto !important;
	display: block;
	margin: auto;
	border-style: none;
}
.lp01 video{
	display: block;
	max-width: 100%;
}
.lp01 h1{
	margin: 0;
}

/* CV
---------------------------------------------------------- */
.lp01 .cv01,
.lp01 .cv02{
	position: relative;
}
.lp01 .cv01 > a,
.lp01 .cv02 > a{
	position: absolute;
	z-index: 2;
	display: block;
}
.lp01 .cv01 > a img,
.lp01 .cv02 > a img{
	width: 100%;
	max-width: none;
}
.lp01 .cv01 > a:nth-of-type(1):not(:only-of-type){ /* btn_55off */
	top: 48.0%;
	left: 0.8%;
	width: 98.4%;
}
.lp01 .cv01 > a:nth-of-type(2){ /* btn_10off */
	top: 79.4%;
	left: 8.0%;
	width: 84.0%;
}
.lp01 .cv01 > a:only-of-type{ /* btn_7day */
	top: 60.3%;
	left: 13.33%;
	width: 73.33%;
}
.lp01 .cv02 > a:nth-of-type(1){ /* btn_55off */
	top: 66.5%;
	left: 0.8%;
	width: 98.4%;
}

/* movie
---------------------------------------------------------- */
.lp01 .movie{
	position: relative;
}
.lp01 .movie > img{
	position: relative;
	z-index: 1;
}
.lp01 .movie video{
	position: absolute;
	top: 41.2%;
	left: 0;
	z-index: 2;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

/* graph
---------------------------------------------------------- */
.lp01 .graph{
	position: relative;
	overflow: hidden;
}
.lp01 .graph .graph-line{
	position: absolute;
	z-index: 2;
	width: auto;
	max-width: none;
	opacity: 0;
	clip-path: inset(0 100% 0 0);
	transition: clip-path 2.2s ease-out, opacity 1s ease;
}
.lp01 .graph.is-visible .graph-line{
	opacity: 1;
	clip-path: inset(0 0 0 0);
}
.lp01 .graph01 .graph-line{
	top: 48.5%;
	left: 31.9%;
	width: 47.73%;
}
.lp01 .graph02 .graph-line{
	top: 42.0%;
	left: 36.0%;
	width: 35.47%;
}

/* fadeIn
----------------------------------------------------------
	jpg画像の上にpng画像を重ね、スクロールで画面内に入った
	タイミングでpngをふわっと表示する。
*/
.lp01 .fadeIn{
	position: relative;
}
.lp01 .anchor-point{
	position: absolute;
	left: 0;
	display: block;
	width: 1px;
	height: 1px;
	pointer-events: none;
}
.lp01 .anchor-voice{
	top: 80%;
}
/* 2枚目（png）をjpgの上に重ねる */
.lp01 .fadeIn img:nth-of-type(2){
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	width: 100%;
	opacity: 0;
	transition: opacity 2.5s ease;
}
/* 画面内に入ったらふわっと出現 */
.lp01 .fadeIn.is-visible img:nth-of-type(2){
	opacity: 1;
}
/* h1（ヒーロー）はページ先頭にあり、JSの表示タイミングに依存せず
   確実にフェードさせたいので、CSSアニメーションで表示する。
   jpg（1枚目）は最初から表示し、pngオーバーレイ（2枚目）だけを
   ページを開いた直後にフェードインさせる。 */
.lp01 h1.fadeIn img:nth-of-type(2){
	animation: heroOverlayFadeIn 2.8s ease 0.2s both;
}
@keyframes heroOverlayFadeIn{
	from{ opacity: 0; }
	to{ opacity: 1; }
}
/* 各画像が画面内に入ったタイミングで個別にフェードイン */
.lp01 .fadeIn .fadeIn03-0,
.lp01 .fadeIn .fadeIn03-1,
.lp01 .fadeIn .fadeIn03-2,
.lp01 .fadeIn .fadeIn03-3,
.lp01 .fadeIn .fadeIn03-4,
.lp01 .fadeIn .fadeIn22-text{
	position: absolute;
	left: 0;
	right: 0;
	width: 100%;
	opacity: 0;
	transition: opacity 2.5s ease;
}
.lp01 .fadeIn .fadeIn03-0.is-visible,
.lp01 .fadeIn .fadeIn03-1.is-visible,
.lp01 .fadeIn .fadeIn03-2.is-visible,
.lp01 .fadeIn .fadeIn03-3.is-visible,
.lp01 .fadeIn .fadeIn03-4.is-visible,
.lp01 .fadeIn .fadeIn22-text.is-visible{
	opacity: 1;
}
.lp01 .fadeIn .fadeIn22-text{
	transition-duration: 3.8s;
}
/* 個別位置調整 */
.lp01 .fadeIn01 {
	top: 2.5%!important;
} 
.lp01 .fadeIn02 {
	top: 12.5% !important;
	width: 88.5% !important;
} 
.lp01 .fadeIn03-0 {
	top: 0% !important;
} 
.lp01 .fadeIn03-1 {
	top: 18% !important;
} 
.lp01 .fadeIn03-2 {
	top: 38% !important;
} 
.lp01 .fadeIn03-3 {
	top: 58% !important;
} 
.lp01 .fadeIn03-4 {
	top: 78% !important;
} 
.lp01 .fadeIn04 {
	top: 27.2% !important;
	left: 16.5% !important;
	width: 83.5% !important;
}
.lp01 .fadeIn22-text1 {
	top: 52.8% !important;
}
.lp01 .fadeIn22-text2 {
	top: 63.5% !important;
}
.lp01 .fadeIn22-text3 {
	top: 74.2% !important;
}
.lp01 .fadeIn22-text4 {
	top: 84.2% !important;
}

/* slide
---------------------------------------------------------- */
.lp01 .slide{
	position: relative;
	overflow: hidden;
}
.lp01 .slide .slide-bg{
	position: relative;
	z-index: 1;
}
.lp01 .slide .slide-photo-loop{
	position: absolute;
	top: 3%;
	z-index: 2;
	left: 0;
	max-width: none;
	display: flex;
	width: 318.67%;
	animation: slidePhotoLoop 24s linear infinite;
}
.lp01 .slide .slide-photo-loop img{
	flex: 0 0 auto;
	width: 50%;
	max-width: none;
	margin: 0 12px;
}
@keyframes slidePhotoLoop{
	0%{
		transform: translateX(0);
	}
	100%{
		transform: translateX(-50%);
	}
}
.lp01 .slide .uv-slider{
	position: absolute;
	top: 38.5%;
	left: 50%;
	z-index: 3;
	width: 84.27%;
	transform: translateX(-50%);
}
.lp01 .slide .uv-slider img{
	width: 100%;
}
.lp01 .slide .slick-list{
	overflow: hidden;
}
.lp01 .slide .slick-arrow{
	position: absolute;
	top: 50%;
	z-index: 4;
	width: 31px;
	height: 62px;
	padding: 0;
	border: 0;
	font-size: 0;
	line-height: 0;
	color: transparent;
	background-color: transparent;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	cursor: pointer;
	transform: translateY(-50%);
}
.lp01 .slide .slick-prev{
	left: -37px;
	background-image: url("../images/arrow_l.png");
}
.lp01 .slide .slick-next{
	right: -37px;
	background-image: url("../images/arrow_r.png");
}
.lp01 .slide .slick-dots{
	position: absolute;
	left: 0;
	right: 0;
	bottom: -34px;
	display: flex;
	justify-content: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.lp01 .slide .slick-dots button{
	display: block;
	width: 14px;
	height: 14px;
	padding: 0;
	border: 2px solid #fff;
	border-radius: 50%;
	font-size: 0;
	line-height: 0;
	color: transparent;
	background: transparent;
	cursor: pointer;
}
.lp01 .slide .slick-dots .slick-active button{
	background: #fff;
}
@media all and (max-width: 478px) {
	.lp01 .slide .slick-arrow{
		width: 6.4vw;
		height: 12.8vw;
	}
	.lp01 .slide .slick-prev{
		left: -7.87vw;
	}
	.lp01 .slide .slick-next{
		right: -7.87vw;
	}
	.lp01 .slide .slick-dots{
		bottom: -4.53vw;
		gap: 1.33vw;
	}
	.lp01 .slide .slick-dots button{
		width: 1.87vw;
		height: 1.87vw;
		border-width: 0.27vw;
	}
	.lp01 .slide .slide-photo-loop img{
		margin: 0 1.5vw;
	}
}

/* qa（よくあるご質問アコーディオン）
---------------------------------------------------------- */
.lp01 .qa{
	margin-top: 1.6%;
}
/* 質問＝クリックで開閉するヘッダー */
.lp01 .qa-q{
	position: relative;
	display: block;
	width: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}
.lp01 .qa-q img,
.lp01 .qa-a-inner img{
	width: 97.33%; /* 730 / 750 */
}
/* 開閉アイコン（閉=img_q_open.png ▽ / 開=img_q_close.png ▲） */
.lp01 .qa-icon{
	position: absolute;
	top: 50%;
	right: 5.5%;
	width: 32px;
	height: 20px;
	transform: translateY(-50%);
	background: url("../images/img_q_open.png") no-repeat center / contain;
	pointer-events: none;
}
.lp01 .qa.open .qa-icon{
	background-image: url("../images/img_q_close.png");
}
/* 回答＝開閉アニメーション（高さ0→自動） */
.lp01 .qa-a{
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows 0.4s ease;
}
.lp01 .qa-a-inner{
	overflow: hidden;
}
.lp01 .qa.open .qa-a{
	grid-template-rows: 1fr;
}
@media all and (max-width: 478px) {
	.lp01 .qa-icon{
		width: 4.27vw;
		height: 2.67vw;
	}
}

/* float banner
---------------------------------------------------------- */
.lp01{
	padding-bottom: 104px;
}
.lp01 .float-banner{
	position: fixed;
	left: 50%;
	bottom: 16px;
	z-index: 3;
	display: block;
	width: 478px;
	max-width: 100%;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: translate(-50%, 16px);
	/* transitionは読み込み完了後（.is-anim）に有効化。
	   初期表示時にtransitionが発火してバナーが動いて見えるのを防ぐ。 */
}
.lp01 .float-banner.is-anim{
	transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s ease;
}
.lp01 .float-banner.is-visible{
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: translate(-50%, 0);
}
.lp01 .float-banner.is-visible:hover{
	opacity: 0.7;
}
.lp01 .float-banner img{
	width: 100%;
}
@media all and (max-width: 478px) {
	.lp01{
		padding-bottom: 14.13vw;
	}
	.lp01 .float-banner{
		bottom: 2.4vw;
		width: 100%;
		transform: translate(-50%, 2.4vw);
	}
	.lp01 .float-banner.is-visible{
		transform: translate(-50%, 0);
	}
}

/* CTA button animation
---------------------------------------------------------- */
.lp01 a img[src*="btn_55off.png"]{
	animation: ctaButtonPulse 2s ease-in-out infinite;
	transform-origin: center center;
	will-change: transform;
}
.lp01 a img[src*="btn_55off.png"],
.lp01 a img[src*="btn_10off.png"]{
	transition: opacity 0.25s ease;
}
.lp01 a:hover img[src*="btn_55off.png"],
.lp01 a:hover img[src*="btn_10off.png"]{
	opacity: 0.7;
}
@keyframes ctaButtonPulse{
	0%,
	64%,
	100%{
		transform: scale(1);
	}
	74%{
		transform: scale(1.06);
	}
	84%{
		transform: scale(0.96);
	}
	92%{
		transform: scale(1.02);
	}
}

/* PC layout
----------------------------------------------------------
	PCでも SP と同様にページ全体でスクロールする。
	（旧仕様＝中央の角丸パネル内スクロールは廃止。
	コンテンツ幅478px・中央揃えは Base の指定のまま）
*/
@media all and (min-width: 479px) {
	.lp01 header{
		display: none;
	}
	#top,
	#voice,
	#product,
	#feature1,
	#feature2,
	#feature3,
	#recommend,
	#faq,
	#order{
		scroll-margin-top: 20px;
	}
}

/* PC logo and nav size update
---------------------------------------------------------- */
@media all and (min-width: 1200px) {
	.lp01 .pc-logo{
		width: 280px;
	}
	.lp01 .pc-nav{
		box-sizing: border-box;
		width: 300px;
		padding: 36px 30px;
		border-radius: 22px;
	}
	.lp01 .pc-nav > ul:not(.pc-nav-list){
		display: none;
	}
	.lp01 .pc-nav ul{
		margin: 0;
		padding: 0;
		list-style: none;
	}
	.lp01 .pc-nav li + li{
		margin-top: 22px;
	}
	.lp01 .pc-nav a{
		font-size: 19px;
		line-height: 1.3;
	}
	.lp01 .pc-nav a[href="#product"]{
		color: #27a8c2;
		font-size: 23px;
	}
}

/* PC固定背景・サイドロゴ・アンカーメニュー
----------------------------------------------------------
	PC表示では左右の余白いっぱいに背景画像を固定表示し、
	左にロゴ、右にアンカーメニューを固定表示する
	（いずれもスクロールに追従＝画面に固定）。
*/
.pc-bg,
.pc-logo,
.pc-nav{
	display: none; /* SPでは非表示 */
}
/* PC：左右の余白（コンテンツ478pxの外側）いっぱいに背景画像を固定表示 */
@media all and (min-width: 479px) {
	.lp01 .pc-bg{
		display: block;
		position: fixed;
		top: 0;
		bottom: 0;
		z-index: -1;
		width: 50%;
		background-repeat: no-repeat;
		background-position: center;
		background-size: cover;
	}
	.lp01 .pc-bg-l{
		left: 0;
		background-image: url("../images/bk_pc_l.jpg");
	}
	.lp01 .pc-bg-r{
		right: 0;
		background-image: url("../images/bk_pc_r.jpg");
	}
}
/* PC（左右に余白が十分ある幅）：ロゴ・メニューを表示 */
@media all and (min-width: 1200px) {
	.lp01 .pc-logo,
	.lp01 .pc-nav{
		display: block;
		position: fixed;
		top: 50%;
		z-index: 4;
	}
	/* ロゴ：左側の余白の中央 */
	.lp01 .pc-logo{
		left: calc(25% - 119.5px); /* 左余白の中央（=25vw - LP半幅/2） */
		width: 190px;
		transform: translate(-50%, -50%);
	}
	.lp01 .pc-logo img{
		width: 100%;
	}
	/* メニュー：右側の余白の中央 */
	.lp01 .pc-nav{
		left: calc(75% + 119.5px); /* 右余白の中央 */
		transform: translate(-50%, -50%);
		padding: 28px 26px;
		background: #fff;
		border-radius: 16px;
		box-shadow: 0 6px 24px rgba(0, 0, 0, 0.07);
	}
	.lp01 .pc-nav ul{
		margin: 0;
		padding: 0;
		list-style: none;
	}
	.lp01 .pc-nav li + li{
		margin-top: 20px;
	}
	.lp01 .pc-nav a{
		display: block;
		text-align: center;
		white-space: nowrap;
		font-size: 15px;
		font-weight: bold;
		line-height: 1.2;
		color: #8e8e8e;
		text-decoration: none;
		transition: color 0.2s ease;
	}
	/* マウスオンで色が変わる */
	.lp01 .pc-nav a:hover{
		color: #27a8c2;
	}
}

/* PC final overrides
---------------------------------------------------------- */
@media all and (min-width: 1200px) {
	.lp01 .pc-logo{
		width: 280px;
	}
	.lp01 .pc-nav{
		box-sizing: border-box;
		width: 300px;
		padding: 36px 30px;
		border-radius: 22px;
	}
	.lp01 .pc-nav > ul:not(.pc-nav-list){
		display: none;
	}
	.lp01 .pc-nav li + li{
		margin-top: 22px;
	}
	.lp01 .pc-nav a{
		font-size: 19px;
		line-height: 1.3;
	}
	.lp01 .pc-nav a[href="#product"]{
		color: #27a8c2;
		font-size: 23px;
	}
}

/* PCナビ：通常は均一・ホバーで拡大／ロゴ拡大・メニュー幅調整
----------------------------------------------------------
	- 全リンクを通常時は同じサイズ・色にし、マウスオンで拡大＋ティール
	  （「商品紹介」の常時拡大・着色を打ち消す）
	- メニュー幅を少し狭く、ロゴをさらに大きく（余白に収まる範囲で）
*/
@media all and (min-width: 1200px) {
	/* ロゴをさらに大きく（左余白に収まる範囲で最大化） */
	.lp01 .pc-logo{
		width: min(330px, calc(50% - 264px));
	}
	/* メニュー幅を少し狭く */
	.lp01 .pc-nav{
		width: min(260px, calc(50% - 264px));
		padding: 36px 18px;
	}
	/* 通常時は全リンク同じ大きさ・色（商品紹介の個別指定も打ち消す） */
	.lp01 .pc-nav a,
	.lp01 .pc-nav a[href="#product"]{
		font-size: 19px;
		color: #8e8e8e;
		transform: scale(1);
		transform-origin: center center;
		transition: color 0.2s ease, transform 0.2s ease;
		will-change: transform;
	}
	/* マウスオン時に大きく＆ティールに（全リンク共通） */
	.lp01 .pc-nav a:hover{
		font-size: 19px;
		transform: scale(1.21);
		color: #27a8c2;
	}
}

/* SP：追従バナーの揺れ抑止
----------------------------------------------------------
	btn_55off / btn_10off の脈動（scale 1.06）でボタンが一時的に
	画面幅を超え、横方向のオーバーフローでレイアウトビューポート幅が
	脈動のたびに変動し、固定バナー（left:50% + translateX(-50%)）の
	中央計算がズレて見える。横はみ出しをルートで遮断して
	画面幅を常に一定に保つ。 */
@media all and (max-width: 750px) {
	html,
	body{
		overflow-x: hidden; /* 旧ブラウザ向けフォールバック */
		overflow-x: clip;   /* スクロールコンテナ化せずに遮断 */
	}
}


.slick-prev:before, .slick-next:before {
	display: none !important;
}

.slick-dots li button:before {
	display: none !important;
}

#lp-form {
	max-width: 940px;
	margin-inline: auto;
	background-color: #fff;
	/* コンテンツ幅478pxより広いため、左右余白の固定背景（.pc-bg）より前面に置く */
	position: relative;
	z-index: 2;
}

.footer__pc .footer {
    position: relative;
    z-index: 3;
}