@charset "UTF-8";

/* ============================================================
   Container
============================================================ */

html {
   background: #FFF;
}

body {
   position: relative;
}

body.open {
   width: 100%;
}

/* SP nav オーバーレイ */
body::before {
   content: "";
   position: fixed;
   inset: 0;
   background-color: rgb(255 255 255 / 1);
   opacity: 0;
   visibility: hidden;
   z-index: 1002;
   /* 閉じるとき: メニューが右に隠れてから白を遅れて消す */
   transition: opacity 0.3s 0.2s, visibility 0.3s 0.2s;
}

body.open::before {
   opacity: 1;
   visibility: visible;
   /* 開くとき: 遅延なしでメニューと一緒に出す */
   transition: opacity 0.3s 0s, visibility 0.3s 0s;
}

#wrapper {
   width: 100%;
   position: relative;
   margin: 0 auto;
}

/* ============================================================
   Header
============================================================ */

header {
   width: 100%;
   position: fixed;
   top: 0;
   left: 50%;
	transform: translate(-50%, 0);
	background-color: rgb(255 255 255 / 0);
   padding: 0;
   z-index: 1003;
   transition: all 0.3s;
}

#header-inner {
   width: 100%;
   position: relative;
}

.headerbg {
   background-color: rgb(255 255 255 / 1);
}

#header-logo {
   width: 15%;
   max-width: 200px;
   position: absolute;
	top: 50%;
	left: 5%;
	transform: translate(0, -50%);
   font-size: clamp(1rem, 1vw, 1.4rem);
   line-height: 1;
	white-space: nowrap;
   z-index: 5;
   transition: all .5s;
}
#header-logo span {
	display: inline-block;
	vertical-align: middle;
	margin-left: 1.5em;
}
#header-logo a:hover {
	opacity: 1;
}
.headerbg #header-logo {
	width: 15%;
}

#header-logo img {
   width: 100%;
	max-width: 200px;
   display: inline-block;
   vertical-align: middle;
}

/* ============================================================
   Hamburger
============================================================ */

.header-spmenu {
   display: none;
   width: 80px;
   height: 60px;
   position: relative;
   cursor: pointer;
   text-align: center;
   background-color: #e3030d;
	border-radius: 0;
	right: 0;
   z-index: 2;
}

.header-spmenu > div {
   width: 40px;
   height: 30px;
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
}

.header-spmenu > div span,
.header-spmenu > div span::before,
.header-spmenu > div span::after {
   content: "";
   display: block;
   position: absolute;
   width: 100%;
   height: 2px;
   background-color: #FFF;
   transform-origin: center;
   transition: all 0.3s;
}

.header-spmenu > div span {
   top: 50%;
   transform: translateY(-50%);
}

.header-spmenu > div span::before {
   top: -10px;
}

.header-spmenu > div span::after {
   bottom: -10px;
}

.open .header-spmenu {
   background-color: #e3030d;
}
.open .header-spmenu > div span {
   background-color: transparent;
}

.open .header-spmenu > div span::before {
   top: 0;
	background-color: #FFF;
   transform: rotate(45deg);
}

.open .header-spmenu > div span::after {
   bottom: 0;
	background-color: #FFF;
   transform: rotate(-45deg);
}

/* ============================================================
   Nav
============================================================ */

nav {
   width: 75%;
   max-width: 1000px;
   position: relative;
   margin: 0 0 0 auto;
	padding: 20px 0;
}

nav > ul {
   width: 100%;
   display: flex;
   flex-wrap: nowrap;
	
	justify-content: flex-end;
}

nav > ul > li {
   position: relative;
}

nav > ul > li > a {
   width: 100%;
   display: block;
   position: relative;
   color: #000;
   font-size: clamp(1.4rem, 1.6vw, 1.6rem);
   line-height: 1.4;
   text-align: left;
   text-decoration: none;
   overflow: hidden;
   padding: 18px clamp(.5em, 3vw, 3em); 
	transition: color 0.3s, background-color 0.3s, filter 0.3s;
}
nav > ul > li.contact > a {
	color: #FFF;
	background-color: #e3030d;
	overflow: hidden;
}
nav > ul > li.contact > a > span {
	position: relative;
	z-index: 2;
}
nav > ul > li.contact > a::before {
	content: "";
	position: absolute;
	top: 0;
	left: -100%;
	width: 100%;
	height: 100%;
	background-color: #e9523b;
	z-index: 1;
	transition: left 0.2s;
}

.is-light #navi-inner > li:not(.close-button) > a {
   color: #fff;
}

@media (hover: hover) {
	nav > ul > li:hover > a {
      color: #e3030d;
   }
   nav > ul > li > a:hover {
      opacity: 1;
   }
	nav > ul > li.contact > a:hover {
		color: #FFF!important;
	}
	nav > ul > li.contact > a:hover::before {
		left: 0;
	}
	nav > ul > li:not(.close-button) a:hover {
		color: #e3030d;
	}
	
   .is-rollover-ready > li:not(.close-button) > a {
      overflow: hidden;
      padding: 0;
   }

   .is-rollover-ready > li:not(.close-button) > a .text-clone {
      position: absolute;
      left: 0;
      top: 100%;
      width: 100%;
   }
	
}

/* サブメニュー */
nav > ul > li > ul {
   width: 160%;
   position: absolute;
   top: 100%;
   left: -30%;
   height: 0;
   overflow: hidden;
   visibility: hidden;
   opacity: 0;
   text-align: center;
   background-color: #fff;
	border-radius: 5px;
   padding: 0 5%;
   z-index: 1;
   transition: all .2s ease;
}

nav > ul > li:hover > ul {
   height: auto;
   visibility: visible;
   opacity: 1;
   padding: 10px 5%;
   z-index: 2;
}

nav > ul > li > ul li {
   width: 100%;
}

nav > ul > li > ul li a {
   width: 100%;
   display: block;
   position: relative;
   color: #000;
   font-size: clamp(1rem, 1.2vw, 1.4rem);
   line-height: 1.4;
   text-align: left;
   text-decoration: none;
	background-image: url("../../images/arrow_r.png");
	background-position: right 10px center;
	background-repeat: no-repeat;
	background-size: 9px;
   border-bottom: 1px solid #eee;
   padding: 10px .5em 10px .5em;
}

nav > ul > li > ul li a::before {
   content: "-";
   display: inline-block;
   color: #e3030d;
   vertical-align: middle;
   margin-right: .5em;
}

nav > ul > li > ul li:last-of-type a {
   border-bottom: none;
}

nav > ul > li > ul li p {
   width: 100%;
   color: #000;
   font-size: clamp(1rem, 1.2vw, 1.4rem);
   line-height: 1.4;
   text-align: left;
   background-color: #eee;
   padding: 10px 0 10px 1em;
}

@media (hover: hover) {
   nav > ul > li > ul li a:hover {
      opacity: 1;
      color: #e3030d!important;
   }
}


.close-button p {
   width: 70%;
	max-width: 200px;
	display: block;
   cursor: pointer;
   color: #FFF;
   font-size: 1.5rem;
   line-height: 1.6;
   text-align: center;
   background-color: #999;
   border-radius: 5px;
	border: none;
   margin: 20px auto 0;
   padding: 10px 1.5em;
   transition: all 0.3s;
}


.pc-only { display: block; }
.sp-only { display: none; }

/* ============================================================
   Contents
============================================================ */

#contents {
   width: 100%;
   position: relative;
	overflow: clip;
   margin: 0 auto;
   z-index: 5;
}

#contents-page {
   width: 100%;
   position: relative;
   margin: min(8%, 100px) auto 0;
   z-index: 5;
}

.opt-load {
   opacity: 0;
   transition: opacity 0.5s;
}
.load .opt-load {
   opacity: 1;
}
.masked-image {
   width: 100%;
   clip-path: inset(0 0 0 0);
}
.sp-title {}
.js-fade-in {}
.js-stagger {}

.js-anim .js-fade-in[data-force-delay] {
   opacity: 0;
}
.anchor-wrap {
   position: relative;
}

.anchor-item {
   position: absolute;
   top: -160px;
   left: 0;
   width: 1px;
   height: 1px;
}

/* --- 汎用パララックス --- */

.js-parallax {
	width: 100%;
	height: 100%;
	position: absolute;
   will-change: transform;
	pointer-events: none;
	z-index: 1;
	top: 0;
	left: 0;
}

.js-parallax img {
   display: block;
   width: 100%;
   height: auto;
}

@media print {
   header {
      position: absolute;
   }
}

/* ============================================================
   Button
============================================================ */

.button {
   width: 100%;
   max-width: 240px;
   display: block;
   position: relative;
   cursor: pointer;
   color: #FFF;
   font-size: clamp(1.2rem, 1.4vw, 1.6rem);
   line-height: 1.6;
   text-align: center;
   text-decoration: none;
   background-color: #000;
   overflow: hidden;
	border: 2px solid #000;
	border-radius: 60px;
   margin-top: min(6%, 60px);
   padding: .8em 1.5em;
   z-index: 1;
   transition: border 0.3s, color 0.3s;
}

.button span {
   display: block;
   position: relative;
   z-index: 2;
}
.button::after {
   content: "";
   position: absolute;
   width: 1.5em;
   aspect-ratio: 1;
   border-radius: 50%;
	background-color: #000;
	background-image: url("../../images/arrow.png");
	background-position: center center;
	background-repeat: no-repeat;
	background-size: 9px auto;
	top: 50%;
	right: 0;
   transform: translate(-30%, -50%);
	overflow: hidden;
   z-index: 2;
   transition: all 0.3s;
}
.button.blank::after {
	background-image: url("../../images/blank.png");
	background-size: 12px auto;
}

.button::before {
   content: "";
   position: absolute;
   top: 0;
   left: -100%;
   width: 100%;
   height: 100%;
   background-color: #FFF;
   z-index: 1;
   transition: left 0.2s;
}

.s-button {
	width: 90px;
	height: 90px;
	display: block;
	position: relative;
	overflow: hidden;
	border-radius: 20px;
	border: 1px solid #00138f;
	background-color: #fff;
	margin-top: 2em;
	transition: background-color 0.5s;
}
.s-button::before,.s-button::after {
	content: " ";
	display: block;
	position: absolute;
	width: 100%;
	height: 100%;
	background-image: url("../../images/arrow.png");
	background-position: center center;
	background-repeat: no-repeat;
	top: 0;
	left: 0;
	background-size: 10px auto;
	transition: left 0.2s;
	z-index: 1;
}
.s-button::after {
	background-image: url("../../images/arrow_w.png");
	top: 0;
	left: -100%;
	z-index: 2;
}
.s-button span {
	display: none;
}

@media (hover: hover) {
   .button:hover {
      opacity: 1;
		color: #000;
   }
	.button.bl:hover {
      color: #000;
   }
   .button:hover::before {
      left: 0;
   }
	.button.bl:hover::after {
		background: url("../../images/arrow.png") center / contain no-repeat;
	}
	
	.s-button:hover {
		opacity: 1;
		background-color: #00138f;
	}
	.s-button:hover::before {
		left: 100%;
	}
	.s-button:hover::after {
		left: 0;
	}
}

/* ============================================================
   Table
============================================================ */

.data-t-style {
   width: 100%;
   line-height: 1.6;
	background-color: #fff;
}

.data-t-style tr:nth-of-type(odd) {
   background-color: #eaeaea;
}

.data-t-style th {
   width: 12em;
   position: relative;
   color: #000;
   font-weight: 600;
   text-align: center;
   border-bottom: 2px solid #000;
   padding: 1.2em;
}

.data-t-style td {
   text-align: left;
   border-bottom: 2px solid #e3050d;
   padding: 1.2em;
}
.data-t-style td .button {
	margin-top: .5em;
}

.data-t-style-b {
   width: 100%;
	line-height: 1.6;
}

.data-t-style-b th {
   width: 16em;
   position: relative;
   color: #FFF;
   font-weight: 600;
   text-align: left;
	background-color: #e97135;
   border-bottom: 2px solid #FFF;
   padding: 2em 2em;
}

.data-t-style-b td {
   text-align: left;
	background-color: #eaeaea;
   border-bottom: 2px solid #FFF;
   padding: 2em 2em;
}


/* ============================================================
   Footer
============================================================ */

.pagetop {
   width: 150px;
   height: 45px;
   position: fixed;
   right: -150px;
   bottom: 140px;
   z-index: 1001;
   transition: right 0.3s;
}

@media (hover: hover) {
	.pagetop a:hover {
		opacity: 1;
	}
}
.pagetop-visible {
   right: 0;
}

footer {
   width: 100%;
   position: relative;
   background-color: #d7eaf1;
	background-image: url("../../images/corner.png");
	background-position: right bottom;
	background-repeat: no-repeat;
	background-size: auto 100%;
	margin-top: min(16%, 160px);
   z-index: 6;
}

footer .footer-button {
   width: 55%;
   max-width: 600px;
   display: block;
   position: relative;
   cursor: pointer;
   color: #FFF;
   font-size: clamp(1.8rem, 2vw, 2.4rem);
   line-height: 1.6;
   text-align: center;
   text-decoration: none;
   background-color: #d82d38;
	clip-path: polygon(25px 0, 100% 0, calc(100% - 25px) 100%, 0 100%);
   margin: 0 auto;
	padding: 1.2em clamp(70px, 8vw, 120px);
	transform: translate(0, -50%);
   z-index: 1;
   transition: border 0.3s, color 0.3s;
}

footer .footer-button span {
   display: block;
   position: relative;
   z-index: 2;
}
footer .footer-button::after {
   content: "";
   position: absolute;
   width: 2em;
   aspect-ratio: 1;
   border-radius: 50%;
	background-color: #d82d38;
	background-image: url("../../images/arrow.png");
	background-position: center center;
	background-repeat: no-repeat;
	background-size: 17px auto;
	top: 50%;
	right: 0;
   transform: translate(-50%, -50%);
	overflow: hidden;
   z-index: 2;
   transition: all 0.3s;
}

footer .footer-button::before {
   content: "";
   position: absolute;
   top: 0;
   left: -100%;
   width: 100%;
   height: 100%;
   background-color: #ff5a41;
   z-index: 1;
   transition: left 0.2s;
}

footer .footer-bottom {
   width: 100%;
   position: relative;
	overflow: hidden;
	padding: min(2%, 20px) 0 120px;
}
footer img {
   width: 100%;
	max-width: 100%;
	height: auto;
}

footer .footer-bottom .inner {
  width: 90%;
   max-width: 1280px;
	position: relative;
	display: flex;
	flex-flow: row wrap;
	justify-content: space-between;
	align-items: flex-start;
   margin: 0 auto;
}

footer .footer-bottom .inner .footer-profile {
   width: 25%;
}
footer .footer-bottom .inner .footer-profile h1 {
   font-size: clamp(2.2rem, 3vw, 3rem);
	line-height: 1.8;
}
footer .footer-bottom .inner .footer-profile h2 {
   font-size: clamp(1.4rem, 1.8vw, 1.8rem);
	line-height: 1.8;
	margin-top: 1em;
}
footer .footer-bottom .inner .footer-profile p {
   font-size: clamp(1.4rem, 1.6vw, 1.6rem);
	line-height: 1.8;
}
footer .footer-bottom .inner .footer-logo {
   width: 100%;
	max-width: 200px;
}

footer .footer-bottom .inner .footer-menu {
   width: 70%;
	display: flex;
	flex-flow: row wrap;
	line-height: 1.8;
   margin: 0 0 0 auto;
	padding-top: 1em;
}

footer .footer-bottom .inner .footer-menu > li {
	width: 25%;
}
footer .footer-bottom .inner .footer-menu > li a {
	width: 100%;
	display: block;
}
footer .footer-bottom .inner .footer-menu > li ul {
	margin: .5em 0;
}
footer .footer-bottom .inner .footer-menu > li ul li a {
	width: 100%;
	display: block;
	position: relative;
	font-size: clamp(1.4rem, 1.6vw, 1.6rem);
	line-height: 1.8;
	padding-left: 1em;
}
footer .footer-bottom .inner .footer-menu > li ul li a::before {
	content: "-";
	display: block;
	position: absolute;
	color: #d82d38;
	left: 0;
	z-index: 1;
}
footer .footer-bottom .inner .footer-menu > li ul li a span {
	width: 100%;
	display: block;
	font-size: clamp(1.2rem, 1.4vw, 1.4rem);
	line-height: 1.8;
}
footer .footer-bottom .inner .footer-menu > li ul li a span:nth-last-of-type(1) {
	margin-bottom: 1em;
}


@media (hover: hover) {
	footer .footer-button:hover {
      opacity: 1;
   }
   footer .footer-button:hover::before {
      left: 0;
   }
	footer .footer-bottom .inner .footer-menu li a:hover {
		opacity: 1;
		color: #d82d38!important;
	}

}

footer .footer-bottom #copyright {
   width: 90%;
	max-width: 1280px;
	font-size: clamp(1.4rem, 1.6vw, 1.6rem);
	color: #000;
	text-align: right;
   line-height: 1.4;
	margin: 1em auto 0;
	
}


/* ============================================================
   SP ( ~768px )
============================================================ */

@media only screen and (max-width: 768px) {

   #wrapper {
      min-width: 100%;
   }

   /* header */
   header {
		width: 100%;
		background-color: rgb(255 255 255 / 1);
		border-radius: 0;
      padding: 0;
	}

   #header-inner {
		width: 100%;
		background-color: rgb(255 255 255 / 1);
		border-radius: 0;
      margin: 0 auto;
		padding: 0;
   }

   #header-logo {
      width: 40%;
      max-width: 120px;
      line-height: 1;
   }
	
	.headerbg {
		background-color: transparent;
	}
   .headerbg #header-logo {
      width: 40%;
      max-width: 120px;
   }

   /* hamburger */
   .header-spmenu {
      display: block;
      margin: 0 0 0 auto;
   }

   .open .header-spmenu {
      margin: 0 0 0 auto;
   }

   .open .header-spmenu::after {
      content: "";
      position: absolute;
      inset: 0;
      z-index: 1;
   }

   /* nav */
   nav {
      width: 100%;
      height: 100dvh;
      position: fixed;
      top: 60px;
      right: -110%;
      margin: 0;
      padding: 0;
      z-index: 1003;
      transition: right 0.3s;
   }

   .open nav {
      right: 0;
   }

   .open nav > ul {
      height: 100%;
      overflow-y: scroll;
      overscroll-behavior-y: contain;
   }

   .open nav > ul::-webkit-scrollbar {
      width: 5px;
   }
   .open nav > ul::-webkit-scrollbar-track {
      background-color: #999;
   }
   .open nav > ul::-webkit-scrollbar-thumb {
      background-color: #666;
   }

   nav > ul {
      width: 100%;
      height: 100%;
      display: block;
      margin: 0 auto;
      padding: 30px 0;
   }

   nav > ul::after {
      content: "";
      display: block;
      width: 100%;
      aspect-ratio: 700 / 300;
      background-image: url("../../images/sp_bg.jpg");
      background-position: bottom center;
      background-repeat: no-repeat;
      background-size: 100% auto;
      margin-top: 40px;
   }

   nav > ul > li {
      width: 100%;
      display: block;
      flex: none;
      text-align: center;
      padding: 0;
   }

   nav > ul > li > a {
      width: 80%;
		display: block;
		position: relative;
      font-size: 1.5rem;
      line-height: 1.8;
		color: #000!important;
      text-align: left;
		
      margin: 0 auto;
		padding: 20px 1em 20px 40px;
   }
	nav > ul > li.contact > a {
		color: #FFF!important;
	}
	nav > ul > li > p {
      width: 80%;
		display: block;
		position: relative;
      font-size: 1.5rem;
      line-height: 1.8;
      text-align: left;
      margin: 0 auto;
      padding: 15px 1em 15px 40px;
   }
	nav > ul > li > a::after {
		content: " ";
		width: 31px;
		height: 30px;
		display: block;
		position: absolute;
		overflow: hidden;
		border-radius: 5px;
		border: 2px solid #e3030d;
		background-color: #fff;
		background-image: url("../../images/arrow_r.png");
		background-position: center center;
		background-repeat: no-repeat;
		background-size: 8px auto;
		top: 50%;
		left: 10px;
		transform: translate(0, -50%);
		z-index: 1;
	}
	nav > ul > li > p::after {
		content: " ";
		width: 45px;
		height: 45px;
		display: block;
		position: absolute;
		overflow: hidden;
		border-radius: 5px;
		border: 1px solid #00138f;
		background-color: #fff;
		top: 50%;
		left: 0;
		transform: translate(0, -50%);
		z-index: 1;
	}
	
	#navi-inner > li:not(.close-button) > a {
      overflow: hidden;
      padding: 15px 1em 15px 50px;
   }
	
	.close-button p::after {
		content: " ";
		display: none!important;
	}
	nav > ul > li.small > a::after {
		top: .8em;
	}
	
   
	nav > ul > li > ul {
      width: 80%;
		height: auto;
		display: flex;
		flex-wrap: wrap;
		position: relative;
      visibility: visible;
		border-bottom: 1px solid #CCC;
		opacity: 1;
      margin: 0 auto;
		background-color: transparent;
		border-radius: 0;
		left: 0;
      padding: 0 0 0;
   }
   nav > ul > li:hover > ul {
      padding: 0 0 0;
   }

   nav > ul > li > ul li {
      width: 100%;
      display: block;
      margin: 0;
      padding: 0;
   }

   nav > ul > li > ul li a {
      width: 100%;
      color: #000;
      font-size: 1.4rem;
      line-height: 1.6;
      text-align: left;
		background-size: 8px;
      margin: 0 0 0 auto;
      padding: .8em 1em .8em 50px;
   }
	nav > ul > li > ul li:nth-of-type(1) a {
		padding-top: 0;
	}

   /* contents */
   #contents-page {
      margin: 60px auto 0;
   }

   .anchor-item {
      top: -80px;
   }

   /* button */
   .button {
      max-width: 300px;
      text-align: center;
      padding: .8em 1em;
   }
	
	.s-button {
		width: 50px;
		height: 50px;
		border-radius: 10px;
	}

   /* table */
   .data-t-style {
      border: none;
   }
   .data-t-style th {
      width: 100%;
      display: block;
      background-color: #ddd;
      border: none;
      padding: 1em;
   }
   .data-t-style th br {
      display: none;
   }
   .data-t-style td {
      width: 100%;
      display: block;
      border: none;
      padding: 1em;
   }
   .data-t-style tr:nth-of-type(odd) {
      background-color: transparent;
   }
	
	.data-t-style-b {
		
	}

	.data-t-style-b th {
      width: 100%;
      display: block;
		text-align: center;
		border: none;
      padding: 1em;
   }
	.data-t-style-b td {
      width: 100%;
      display: block;
      border: none;
      padding: 1em;
   }

   /* footer */
   .pagetop {
      bottom: 100px;
   }

   .pagetop-visible {
      right: -100px;
   }

	
   footer {
		background-size: auto 40%;
	}
	footer .footer-button {
		width: 80%;
		max-width: 600px;
		overflow: hidden;
		clip-path: none;
		margin: 0 auto;
		padding: 1em 2.4em;
		transform: translate(0, -50%);
	}
	footer .footer-button::after {
		background-size: 15px auto;
		transform: translate(-30%, -50%);
	}
	
	footer .footer-bottom .inner .footer-profile {
		width: 50%;
	}
	footer .footer-bottom .inner .footer-profile h2 {
		margin-top: 1em;
	}
	footer .footer-bottom .inner .footer-profile p {
		line-height: 1.6;
		margin-top: 1em;
	}
	footer .footer-bottom .inner .footer-logo {
		width: 100%;
		max-width: 140px;
	}

	footer .footer-bottom .inner .footer-menu {
		width: 40%;
		flex-direction: column;
		padding-top: 0;
	}

	footer .footer-bottom .inner .footer-menu li {
		width: 100%;
	}
	footer .footer-bottom .inner .footer-menu li a {
		display: block;
		padding: 0 0 0;
	}
	footer .footer-bottom #copyright {
		text-align: left;
	}

   .sp-only { display: block;}
   .pc-only { display: none; }
}
