@charset "utf-8";
/* CSS Document */
::-moz-selection {
    background: #ebebeb;
	color: #52c3f1;
}
::selection {
    background: #ebebeb;
	color: #52c3f1;
}
body {
	font-family:"Zen Kaku Gothic New","游ゴシック体", YuGothic, "游ゴシック Medium", "Yu Gothic Medium", "游ゴシック", "Yu Gothic", sans-serif, "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, "ＭＳ Ｐゴシック";
	font-size:15px;
	line-height: 1.5;
	font-weight: 500;
	text-align: center;
	color: #52c3f1;
}
*{vertical-align: top; box-sizing: border-box; word-break: break-all;}
a{color: #52c3f1; display: inline-block; text-indent: 0; text-decoration: underline;}
a:hover{opacity: 0.6; text-decoration: none;}
.sp{display: none;}
#wrapper{width: 100%; overflow: hidden;}
/*=====================================================================================
***************************************************************************************
　　動きの設定
***************************************************************************************
=====================================================================================*/
.fade-in{
  opacity: 0;
  /*transform: translateY(24px);*/
  transition:
    opacity 1.6s cubic-bezier(.2,.8,.3,1),
    transform 1.6s cubic-bezier(.34,1.56,.64,1);
}
.fade-in.is-visible{
  opacity: 1;
  /*transform: translateY(0);*/
}
/* 浮遊アニメーションはラッパーに */
.float-wrap{
  animation: floating-y 1.8s ease-in-out infinite alternate-reverse;
}
@keyframes floating-y{
  0%{ transform: translateY(-3%); }
  100%{ transform: translateY(3%); }
}
/* img自体はJSがtransformを制御するので、CSS側は何も指定しない */
.float-wrap img{
  display:block;
}
#message .parts01 img,
#message .parts02 img,
#message .parts03,
#service .parts01 img,
#service .parts02 img
{
  opacity: 0; /* 初期状態。JSで制御します */
}
/*=====================================================================================
***************************************************************************************
　　header
***************************************************************************************
=====================================================================================*/
header{
	position: fixed;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	z-index: 10;
	background-color: #fff;
	padding: 10px 50px;
	transition: background-color 0.4s ease;
}
header img{width: 115px;}
header ul{display: flex; font-size: 20px; font-weight: bold;}
header ul a{text-decoration: none;}
/*header ul li:nth-child(odd){margin-right: 65px;}*/
/*header ul li:nth-child(1) > a{
	background: url("../img/shop_icon.svg") left center no-repeat;
	background-size: 30px;
	padding-left: 40px;
}*/
header ul li:nth-child(1) > a{
	background: url("../img/menu_icon.svg") left center no-repeat;
	background-size: 20px;
	padding-left: 30px;
}
/* ドロップダウンパネル */
.menu-panel{
  position:absolute;
  top: calc(100% + 10px);
  right: 20px;
  width: 220px;
  background: #fff;
  border-radius: 22px;
  box-shadow: 0 20px 46px rgba(11,58,83,.28);
  padding: 18px 22px;
  transform-origin: top right;
  transform: translateY(-10px) scale(.85);
  opacity: 0;
  pointer-events:none;
  transition: transform .5s cubic-bezier(.31,1.7,.44,1), opacity .3s ease;
}
.menu-panel.show{
  transform: translateY(0) scale(1);
  opacity: 1;
  pointer-events:auto;
}
.menu-panel a{
  display:block;
  font-family:"Zen Maru Gothic", sans-serif;
  font-weight:700;
  font-size:14px;
  color:#0B3A53;
  text-decoration:none;
  padding: 10px 2px;
  border-bottom: 1px solid #EAF3F8;
  opacity:0;
  transform: translateY(8px);
  transition: opacity .4s ease, transform .4s cubic-bezier(.34,1.56,.64,1), color .2s ease;
}
.menu-panel a:last-child{ border-bottom:none; }
.menu-panel a:hover{ color:#E85C88; }
.menu-panel a:nth-child(1){ transition-delay: 0s; }
.menu-panel a:nth-child(2){ transition-delay: .06s; }
.menu-panel a:nth-child(3){ transition-delay: .12s; }
.menu-panel a:nth-child(4){ transition-delay: .18s; }
.menu-panel a:nth-child(5){ transition-delay: .24s; }
.menu-panel.show a{
  opacity: 1;
  transform: translateY(0);
}
header.is-scrolled {
	background-color: #fff;
	padding: 10px 50px;
}
@media screen and (max-width: 750px) {
	header{padding: 10px 20px;}
	header.is-scrolled{padding: 10px 20px;}
}
/*=====================================================================================
***************************************************************************************
　　MV
***************************************************************************************
=====================================================================================*/
#mv {
	position: relative;
	z-index: 3;
	width: 100%;
}
#mv .sp{display: none;}
#mv img{width: 100%;}
/* スライドショー（フェード） */
#mv ul {
	display: grid;
}
#mv ul li {
	grid-area: 1 / 1;          /* 全スライドを同じ位置に重ねる */
	opacity: 0;
	transition: opacity 1.8s ease;
}
#mv ul li.is-active {
	opacity: 1;
	z-index: 1;
}
#mv img {
	display: block;
}
/* ドット */
#mv .mv-dots {
	position: absolute;
	left: 50%;
	bottom: 20px;
	z-index: 2;
	display: flex;
	gap: 10px;
	transform: translateX(-50%);
}
#mv .mv-dots button {
	width: 10px;
	height: 10px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background-color: #fff;
	cursor: pointer;
	transition: background-color 0.3s ease;
}
#mv .mv-dots button.is-active {
	background-color: #52c3f1;
}
@media screen and (max-width: 750px) {
}
@media screen and (max-width: 500px) {
	#mv{padding-top: 70px;}
	#mv .sp{display: block;}
	#mv .pc{display: none;}
}
/*=====================================================================================
***************************************************************************************
　　メッセージ
***************************************************************************************
=====================================================================================*/
#message{
	background: url("../img/message_bg.jpg") top center no-repeat;
	background-size: cover;
	padding-bottom: 190px;
	position: relative;
}
#message h2{
	padding-top: 220px;
	position: relative;
}
#message h2::before{
	content: "";
	display: block;
	position: absolute;
	width: 2px;
	height: 200px;
	background: #52c3f1;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	z-index: 1;
}
#message p{
	font-size: 20px;
	font-weight: bold;
	line-height: 2;
	margin-top: 65px;
}
#message .parts01{
	position: absolute;
	top: 65px;
	right: 20px;
}
#message .parts02{
	position: absolute;
	bottom: 140px;
	left: 0;
}
#message .parts03{
	position: absolute;
	bottom: 140px;
	right: 70px;
}
#message .parts04{display: none;}
@media screen and (max-width: 1250px) {
	#message .parts01{display: flex; justify-content: flex-end;}
	#message .parts01 img{width: 25%;}
	#message .parts02 img{width: 25%;}
	#message .parts03{width: 22%;}
	#message h2 img{width:20%;}
	#message p{font-size: 1.6vw;}
}
@media screen and (max-width: 750px) {
	#message{padding-bottom: 190px;}
	#message h2{padding-top: 130px;}
	#message h2::before{height: 120px;}
	#message h2 img{width:160px;}
	#message p{font-size: 14px; margin-top: 40px;}
	#message p br.sp{display: block;}
	#message .parts01{top: -10px; right: 5px;}
	#message .parts01 img{width: 35%;}
	#message .parts02{bottom: 20px;}
	#message .parts02 img{width: 35%;}
	#message .parts03{display: none; width: 35%; bottom: 20px; right: 10px;}
	#message .parts04{display: block; position: absolute; width: 30%; bottom: 40px; right: 10px;}
}
/*=====================================================================================
***************************************************************************************
　　動画
***************************************************************************************
=====================================================================================*/
#movie{
	background: url("../img/movie_bg.jpg") top right no-repeat;
	background-size: cover;
	padding: 90px 0 170px;
}
#movie > div{
	max-width: 1200px;
	width: 90%;
	margin: 0 auto;
	text-align: left;
}
#movie h2{margin-bottom: 30px;}
  /* ▼▼▼ ここから動画ポップアップ部分 ▼▼▼ */
  .video-section{
    position:relative; 
	  z-index:1;
    display:flex; 
	  justify-content:flex-start;
	  padding-left: 100px;
  }
  .watch-btn{
    display:inline-flex;
    align-items:center;
    gap:10px;
    border: none;
    padding: 20px;
    font-weight:700;
    font-size:16px;
    cursor:pointer;
	  background: #52c3f1;
    transition: transform .3s cubic-bezier(.34,1.56,.64,1);
  }
  .watch-btn:hover{ transform: translateY(-3px) scale(1.04); }
  .watch-btn:active{ transform: scale(.94); }
  .watch-btn-icon{
    width:26px; height:26px;
    border-radius:50%;
    background: var(--pink);
    color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:11px;
  }
  .modal-backdrop{
    position:fixed; inset:0;
    background: rgba(11,58,83,.0);
    backdrop-filter: blur(0px);
    z-index: 40;
    opacity:0;
    pointer-events:none;
    transition: opacity .45s ease, backdrop-filter .45s ease;
  }
  .modal-backdrop.show{
    opacity:1;
    background: rgba(11,58,83,.45);
    backdrop-filter: blur(6px);
    pointer-events:auto;
  }
.modal{
  position:fixed;
  top:50%; left:50%;
  width: min(760px, 88vw);
  z-index: 41;
  transform: translate(-50%,-50%) scale(.92);
  opacity:0;
  pointer-events:none;
  transition:
    transform .35s cubic-bezier(.2,.7,.3,1),
    opacity .3s ease;
}
.modal.show{
  transform: translate(-50%,-50%) scale(1);
  opacity:1;
  pointer-events:auto;
}
  .modal.closing{
    transform: translate(-50%,-50%) scale(.75);
    opacity:0;
    transition: transform .3s cubic-bezier(.4,0,1,1), opacity .3s ease;
  }
  .modal-video{
    background:#0B3A53;
    overflow:hidden;
    aspect-ratio: 16/9;
    box-shadow: 0 30px 60px rgba(0,0,0,.35);
    border: 5px solid var(--white);
  }
  .video-placeholder{
    width:100%; height:100%;
    display:flex; flex-direction:column;
    align-items:center; justify-content:center;
    gap:10px;
    color: rgba(255,255,255,.75);
    font-family:"Zen Maru Gothic";
  }
.video-placeholder iframe{width: 100%; height: 100%;}
  .video-placeholder span{
    width:56px; height:56px;
    border-radius:50%;
    background: var(--pink);
    color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:18px;
  }
  .modal-close{
    position:absolute;
    top:-46px; right:0;
    border:none;
    color: #FFFFFF;
    font-size:25px;
    font-weight:700;
	  background: none;
    cursor:pointer;
    transition: transform .25s cubic-bezier(.34,1.56,.64,1), background .2s;
  }
  .modal-close:hover{ background: var(--pink); color:#fff; }
  .modal-close:active{ transform: scale(.8); }
  /* ▲▲▲ ここまで動画ポップアップ部分 ▲▲▲ */
@media screen and (max-width: 950px) {
	.video-section{width: 100%; padding-left: 0;}
	.watch-btn{width: 100%;}
	.watch-btn img{width: 100%;}
}
@media screen and (max-width: 700px) {
	#movie{padding: 90px 0 90px;}
}
/*=====================================================================================
***************************************************************************************
　　サービス
***************************************************************************************
=====================================================================================*/
#service{
	background: #52c3f1;
	position: relative
}
#service h2{
	padding-top: 220px;
	position: relative;
	color: #FFFFFF;
}
#service h2::before{
	content: "";
	display: block;
	position: absolute;
	width: 2px;
	height: 200px;
	background: #FFFFFF;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	z-index: 1;
}
#service .box{
	max-width: 1200px;
	width: 90%;
	margin: 0 auto;
	position: relative;
}
#service .box p{
	color: #FFFFFF;
	font-size: 35px;
}
#service .list{
	display: flex;
	justify-content: space-between;
	margin: 70px auto 80px;
	position: relative;
	z-index: 2;
}
#service .list li{width: 32%; position: relative;}
#service .list img{width: 100%;}
#service .list li a{transition: transform .3s cubic-bezier(.34,1.56,.64,1);}
#service .list li a:hover{ transform: translateY(-3px) scale(1.04); opacity: 1;}
#service .list li .box_link{
	position: absolute;
	bottom: 3%;
	width: 70%;
	left: 50%;
	transform: translateX(-50%);
}
#service .list li:last-child .box_link{
	bottom: 6%;
}
#service .list li a{
	display: block;
	background: #FFFFFF;
	width: 100%;
	margin: 0 auto;
	text-decoration: none;
	font-weight: bold;
	padding: 7% 2%;
	border-radius: 50px;
	font-size: 0.8vw;
	margin-bottom: 4%;
}
#service .parts01{
	position: absolute;
	top: -10px;
	right: 16%;
	z-index: 1;
	width: 17%;
}
#service .parts02{
	position: absolute;
	bottom: 140px;
	left: 10px;
	z-index: 3;
	width: 12%;
}
#service .parts01 img{width: 100%;}
#service .parts02 img{width: 100%;}
/* 動き */
.card{
	opacity: 0;
	transform: translateY(46px) scale(.86) rotate(-3deg);
	transition:
	opacity .7s cubic-bezier(.2,.8,.3,1),
	transform .85s cubic-bezier(.34,1.56,.64,1);
}
.card.in{
	opacity:1;
	transform: translateY(0) scale(1) rotate(0deg);
}
@keyframes infinity-scroll-left {
from {
  transform: translateX(0);
}
  to {
  transform: translateX(-100%);
}
}
.scroll-infinity__wrap {
  display: flex;
  overflow: hidden;
	padding: 80px 0 40px;
}
.scroll-infinity__list {
  display: flex;
  list-style: none;
  padding: 0
}
.scroll-infinity__list--left {
  animation: infinity-scroll-left 80s infinite linear 0.5s both;
}
.scroll-infinity__item {
  width: calc(100vw / 3);
}
.scroll-infinity__item>img {
  width: 100%;
	padding-right: 70px;
}
.ambient{
  position: fixed;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 1;
}
.amb-bubble{
  position: absolute;
  bottom: -140px;
  background-image: url('../img/awa.png'); /* 実際のパスに置き換えてください */
  background-size: contain;
  background-repeat: no-repeat;
  animation: rise linear infinite;
  will-change: transform, opacity;
}
@keyframes rise{
  0%   { transform: translateY(0) translateX(0) rotate(0deg); opacity: 0; }
  8%   { opacity: .9; }
  88%  { opacity: .85; }
  100% { transform: translateY(-118vh) translateX(var(--drift)) rotate(var(--spin)); opacity: 0; }
}
@media screen and (max-width: 1500px) {
	#service .list li a{font-size: 1.2vw;}
}
@media screen and (max-width: 750px) {
	/*.ambient{display: none;}*/
	#service .list img.sp{display: block;}
	#service .list img.pc{display: none;}
	#service h2{padding-top: 130px;}
	#service h2::before{height: 120px;}
	#service .list{display: block; margin: 40px auto 0;}
	#service .list li{width: 100%; margin: 10px auto 0;}
	#service .list li:nth-child(2){margin-top: 20px;}
	#service .list li:nth-child(3){margin-top: 20px;}
	/* スマホではカードのフェードインを止めて最初から表示 */
	#service .list .card{
		opacity: 1;
		transform: none;
		transition: none;
	}
	#service .list li a{font-size: 3.6vw;}
	#service .list li .box_link{bottom: 2%;}
	#service .list li:last-child .box_link{bottom: 2%;}
	#service .box p{font-size: 24px; margin-top: 40px;}
	#service .box p .sp{display: block;}
	#service .parts01{
		top: -10px;
		right: 0;
		width: 35%;
		z-index: 2;
	}
	#service .parts02{
		position: absolute;
		bottom: 90px;
		left: 10px;
		z-index: 3;
		width: 30%;
	}
	.scroll-infinity__item {width: calc(100vw / 1);}
	.scroll-infinity__item>img {padding-right: 20px;}
}
/*=====================================================================================
***************************************************************************************
　　VOICE
***************************************************************************************
=====================================================================================*/
#voice{position: relative;}
#voice .txt_box{position: relative;}
#voice .txt_box > .bg{width: 100%;}
#voice .txt_box h2{
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	margin: auto 0;
	left: 15%;
	width: 25%;
}
#voice .txt_box h2 img{width: 100%;}
#voice .parts02{
	position: absolute; 
	bottom: -60px;
    right: 120px;
	width: 15%;
}
#voice .voice_box{
	padding: 150px 0;
	/*background: url("../img/voice_bg.png") no-repeat;
	background-size: cover;*/
	background: #52c3f1;
}
#voice ul{
	display: flex;
}
#voice li{
	position: relative;
	width: 500px;
	transition: 0.8s;
	cursor: pointer;
	margin-right: 80px;
}
#voice li .ura{width: 100%;}
#voice li .omote{
	width: 100%;
	position: absolute;
	right: 0;
	bottom: 20px;
	z-index: 1;
	transition: 0.3s;
}
#voice li .shohin{
	position: absolute;
	z-index: 2;
	bottom: -2%;
	right: -2%;
	transition: 0.3s;
	width: 15%;
}
#voice li .shohin.uv{width: 18%;right: -5%;}
#voice li:hover .shohin{
	transform: rotate(20deg);
	transition: 0.3s;
}
#voice li:hover .omote{
	transform-origin: left bottom;
	transform: rotate(-5deg);
	transition: 0.3s;
}
/* ▼クリックで付与するクラス */
#voice li.active .omote{
	transform: translate(-80%, -50%);
	transition: 0.6s;
}
#voice li.active .shohin{
	transform: rotate(20deg);
	transition: 0.3s;
}
  /* ==========================================================
     スライドショー全体
     ========================================================== */
  .voiceSlider {
    position: relative;
    width: 90%;
    margin: 0 auto;
  }
  /* 実際に横並びで動く帯(トラック) */
  #voiceList {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 20px;
    transition: transform .4s ease;
    will-change: transform;
  }
  /* 各スライド(li) */
  #voiceList > li {
    position: relative; /* 中のimg(shohin/omote/ura)の絶対配置の基準 */
    flex: 0 0 calc((100% - 40px) / 3); /* gap20px×2本ぶんを引いて3等分 */
    min-width: 0;
    /* 上の方にある古い #voice li { width:500px; margin-right:80px; ... } を
       このスライダーのliには効かせたくないので明示的に打ち消す */
    width: auto;
    margin-right: 0;
    cursor: default;
  }
.voiceSlider__viewport {
  padding: 0 40px;
  margin: 0 -40px;
}
@media (max-width: 750px) {
  .voiceSlider__viewport {
    padding: 0 20px;
    margin: 0 -20px;
  }
}
@media (max-width: 750px) {
  #voiceList {
    gap: 0;
  }
  #voiceList > li {
    flex-basis: 100%; /* 750px以下は1枚表示 */
  }
}
  /* ==========================================================
     コントロール(矢印・ドット)
     ========================================================== */
  .voiceSlider__arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 50%;
    background: rgba(0,0,0,0.6);
    color: #fff;
    font-size: 18px;
    cursor: pointer;
    z-index: 10; /* はみ出す画像より手前に出したい場合 */
  }
  .voiceSlider__arrow--prev { left: -50px; }
  .voiceSlider__arrow--next { right: -50px; }
  .voiceSlider__dots {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 30px;
  }
  .voiceSlider__dots button {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: none;
    background: #FFFFFF;
    cursor: pointer;
    padding: 0;
  }
  .voiceSlider__dots button.is-active {
    background: #00459b;
  }
  @media (max-width: 600px) {
    .voiceSlider__arrow--prev { left: 0; }
    .voiceSlider__arrow--next { right: 0; }
  }
@media screen and (max-width: 750px) {
	#voice .txt_box .pc{display: none;}
	#voice .txt_box .sp{display: block;}
	#voice .txt_box h2{
		position: absolute;
		top: 5%;
		transform: none;
		margin: auto 0;
		left: 10%;
		width: 80%;
	}
	#voice .voice_box{padding: 140px 0 100px;}
	.voiceSlider__arrow{top: 100%;}
#voice .parts02{
	bottom: -60px;
    right: 30px;
	width: 25%;
}
	/*#voice ul{display: block; padding: 0;}
	#voice li{width: 80%; margin: 0 auto 80px;;}
	#voice li .shohin{width: 70px;bottom: -20px;right: -20px;}*/
}
/*=====================================================================================
***************************************************************************************
　　こだわり
***************************************************************************************
=====================================================================================*/
#commitment{
  background: url("../img/commitment_bg.jpg") top center no-repeat;
  background-size: cover;
  padding-bottom: 190px;
  position: relative;
}
#commitment h2{
  padding-top: 220px;
  position: relative;
}
#commitment h2::before{
  content: "";
  display: block;
  position: absolute;
  width: 2px;
  height: 200px;
  background: #52c3f1;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
}
#commitment .commitment-list {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 1200px;
  margin: 2% auto 0;
  padding: 0 20px;
  gap: 10px;
}
#commitment .commitment-list picture,
#commitment .commitment-list img {
  display: block;
  max-width: 100%;
  height: auto;
}
/* --- ロゴ & コピーライトエリア --- */
#commitment .commitment-footer {
  margin-top: 80px; /* リストとの間の余白 */
  text-align: center;
}
#commitment .commitment-logo img {
  max-width: 100%;
  width: auto;
  height: auto;
  margin: 0 auto;
  display: block;
}
/* コピーライトテキスト */
#commitment .copyright {
  display: block;
  margin-top: 24px;
  font-size: 13pt;
  color: #009fe8;
  font-family: inherit, "Zen Kaku Gothic New", sans-serif;
  letter-spacing: 0.05em;
  font-style: normal;
}
.osae{
	padding: 120px 0 70px;
	max-width: 80%;
}
.x_shindan{
	display: inline-block;
	margin: 0 auto 60px;
}
/*=====================================================================================
  SP表示設定（750px以下）
=====================================================================================*/
@media screen and (max-width: 750px) {
  #commitment {
    padding-bottom: clamp(60px, 12vw, 120px);
  }
  #commitment h2 {
    padding-top: clamp(80px, 15vw, 150px);
  }
  #commitment h2 img {
    width: 90%;
    height: auto;
    margin: 10% auto 0;
    display: block;
  }
  #commitment h2::before {
    height: clamp(80px, 15vw, 150px);
  }
  #commitment .commitment-list {
    gap: clamp(16px, 5vw, 32px);
    margin: 10% auto 0;
    padding: 0 4vw;
  }
  #commitment .commitment-list picture {
    width: 100%;
  }
  #commitment .commitment-list img {
    width: 100%;
  }
  /* SP時のロゴ・コピーライト微調整 */
  #commitment .commitment-footer {
    margin-top: clamp(40px, 8vw, 60px);
    padding: 0 4vw;
  }
  #commitment .commitment-logo img {
    max-width: 80%;
  }
  #commitment .copyright {
    font-size: clamp(10px, 3vw, 13pt); 
    margin-top: 16px;
  }
	.osae{padding: 60px 0 40px;}
	.x_shindan{margin: 0 auto 40px; width: 80%;}
	.x_shindan img{width: 100%;}
}
