﻿@charset "utf-8";
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;700&family=Work+Sans:wght@300;400&family=Noto+Serif+JP:wght@500;600&display=swap');

html { width: 100%; overflow: auto; font-size: 2.5vw;}
body {
    text-align: center;
    font-family: 'Noto Sans JP', sans-serif;
    font-size:1.5rem;
    line-height: 1.65;
    letter-spacing: .3px;
    color: rgba(0,0,0,0.8);
    width: 100%;
    padding-top: 66px;
    position:relative;
    overflow:hidden;
}

/*@media all and (-ms-high-contrast: none) {
    
}*/

.minJP { font-family: 'Noto Serif JP', serif; font-weight: 500;}
.minJPB { font-family: 'Noto Serif JP', serif; font-weight: 600;}
.en300 { font-family: 'Work Sans', sans-serif; font-weight: 300; letter-spacing: 0.16em;}
.en400 { font-family: 'Work Sans', sans-serif; font-weight: 400; letter-spacing: 0.16em;}
.wMax { padding-left: 4.4vw; padding-right: 4.4vw; position: relative;}

@media screen and ( min-width:520px ){
  html { font-size: 1.22vw;}
  body { padding-top: 80px;}
}
@media screen and ( min-width:800px ){
  html { font-size: 62.5%;}
  body { padding-top: 0;}
  .wMax { max-width: 1200px; margin-left: auto; margin-right: auto; padding-left: 30px; padding-right: 30px;}
}


#goTop { position:fixed; z-index:1000; right:20px; bottom:20px; width:46px; height:46px; cursor:pointer;}
#goTop img { width:100%;}
#goTop:hover img { opacity:0.8; filter:alpha(opacity=80);}

/* ----------------------------------------------------------------------------
	header
---------------------------------------------------------------------------- */
header {
  position: fixed;
  z-index: 1000;
  left: 0; top: 0;
  width: 100%;
  height: 66px;
}
header .wMax { height: 100%; }
header h1 {
  position: absolute;
  left: 4vw; top: 50%;
  z-index: 50;
  transform: translate(0, -40%);
  width: 26%;
  max-width: 114px;
  padding: 0; margin: 0;
}
#hamMenu {
  position: absolute;
  right: 5vw; top: 50%; transform: translate(0, -50%);
  z-index: 50;
  display: -webkit-flex; display: flex; -webkit-justify-content: flex-end; justify-content:flex-end; -webkit-align-items: center; align-items: center;
}
#hamMenu .txt { font-size: 1.3rem; margin-right: .5em; line-height: 1.0; opacity: 0;}
#hamMenu .line { width: 38px; height: 27px; position: relative; z-index: 50;}
#hamMenu .line span { position: absolute; left: 0; top: 0; width: 80%; height: 3px; background: #000; display: block; }
#hamMenu .line span:nth-child(2) { width: 50%; top: 8px; }
#hamMenu .line span:nth-child(3) { top: 16px;}
#hamMenu .line span:nth-child(4) { width: 50%; top: 24px;}

.open #hamMenu .txt { opacity: 1; transition: opacity 0.3s ease-in 0.5s;}
.open #hamMenu .line span:nth-child(2),
.open #hamMenu .line span:nth-child(3) { animation: navBarCross0 ease-in 0.5s forwards 0.1s;}
.open #hamMenu .line span:nth-child(1) { animation: navBarCross1 ease-in 0.5s forwards 0.1s;}
.open #hamMenu .line span:nth-child(4) { animation: navBarCross4 ease-in 0.5s forwards 0.1s;}

@keyframes navBarCross0 {
    0% { }
    30% { width: 0;}
    100% { width: 0; }
}
@keyframes navBarCross1 {
    0% { top: 0; left: 0; transform: rotate(0deg);}
    30% { width: 0; top: 0; left: 0; transform: rotate(0deg);}
    70% { width: 0; top: 45%; left: 50%; transform: translate(-50%, 0) rotate(-45deg);}
    100% { width: 90%; top: 45%; left: 50%; transform: translate(-50%, 0) rotate(-45deg);}
}
@keyframes navBarCross4 {
    0% { top: 24px; left: 0; transform: rotate(0deg);}
    30% { width: 0; top: 24px; left: 0; transform: rotate(0deg);}
    70% { width: 0; top: 45%; left: 50%; transform: translate(-50%, 0) rotate(45deg);}
    100% { width: 90%; top: 45%; left: 50%; transform: translate(-50%, 0) rotate(45deg);}
}

@media screen and ( min-width:520px ){
  header { height: 80px; }
  header h1 { left: 2.7vw; transform: translate(0, -46%);}
  #hamMenu { right: 3vw;}
}
@media screen and ( min-width:800px ){
  #hamMenu { display: none;}
  header { height: 80px; position: relative; }
  header h1 { left: 30px;}
}

.gnavi { visibility: hidden; opacity: 0; height: 0;}
.open .gnavi {
  visibility: visible;
  opacity: 1;
  width: 100vw;
  height: 100vh;
  background: #fff;
  position: fixed;
  left: 0; top: 0;
  z-index: 10;
  padding: 70px 5vw 14vw;
  text-align: left;
  overflow-y: auto;
  transition: opacity 0.3s ease-out;
}
.navWrap {
  opacity: 0;
  width: 100%; height: 100%;
  display: -webkit-flex; display: flex; -webkit-flex-direction: column; flex-direction: column; -webkit-justify-content: center; justify-content: center;
}
.open .navWrap {
  opacity: 1;
  transition: opacity 0.4s ease-out 0.5s;
}
.gnavi a { color: inherit; text-decoration: none;}
.gnavi .menu { position: relative; font-size: 2.5rem; line-height: 1.4;}
.gnavi .menu:before { content: ""; width: 1px; height: 100%; background: #BEBEBE; display: block; position: absolute; left: 0.4em; top: 0; z-index: 0;}
.gnavi .menu li { background: #fff; position: relative; z-index: 1;}
.gnavi .menu li:not(:first-child) { margin-top: 20vw;}
.gnavi .menu li a { display: block; padding: 0.3em 0; position: relative;}
.gnavi .scLinkWrap { display: -webkit-flex; display: flex; -webkit-align-items: center; align-items: center; margin-top: 19vw;}
.gnavi .scLinkWrap p { font-size: 1.7rem; margin-right: 1.8em;}
.gnavi .scLinkWrap ul { display: -webkit-inline-flex; display: inline-flex; justify-content: center; -webkit-align-items: center; align-items: center;}
.gnavi .scLinkWrap li { width: 2.4em; margin-right: 1.7em; }

@media screen and ( min-width:800px ){
  .gnavi { visibility: visible; opacity: 1; height: 100%;}
  .navWrap { opacity: 1; padding-left: 190px; -webkit-flex-direction: row; flex-direction:row; -webkit-justify-content: flex-start; justify-content: flex-start; -webkit-align-items: center; align-items: center;}
  .gnavi .scLinkWrap { display: none;}
  .gnavi .menu:before { content: none;}
  .gnavi .menu { display: -webkit-flex; display: flex; font-size: 1.6rem;}
  .gnavi .menu li { margin: 0 3em 0 0 !important; }
  .gnavi .menu li a { padding: 0.3em 0 0.5em 0;}
  .gnavi .menu li a:before { content: ""; width: 0; height: 0; background: #555; display: block; position: absolute; left: 0; bottom: -4px; transition: width 0.25s ease-out;}
  .gnavi .menu li a:hover:before { width: 100%; height: 1px;}
}

/* ----------------------------------------------------------------------------
	contents
---------------------------------------------------------------------------- */
.contents { text-align: left;}

h2.line {
  font-size: 1.6rem;
  padding: 2em 0 4em;
  position: relative;
}
h2.line .line {
  display: block;
  width: 1px;
  height: 3.2em;
  overflow: hidden;
  position: absolute;
  left: 1.1em;
  bottom: 0.4em;
}
h2.line .line:before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: #BEBEBE;
  position: absolute;
  left: 0;
  top: 0;
  animation: downLine ease 2s infinite;
}
@keyframes downLine {
    0% { top: 0; height: 0;}
    30% { top: 0; height: 100%;}
    70% { top: auto; bottom: 0; height: 100%;}
    100% { top: auto; bottom: 0; height: 0;}
}
@media screen and ( min-width:520px ){
  h2.line {
    margin-top: 1em;
    padding: 2em 0 5em;
  }
  h2.line .line {bottom: .6em;}
}
@media screen and ( min-width:800px ){
  h2.line {margin-top: 2em;}
  h2.line .line { height: 3.6em; bottom: 0.8em;}
}




.enLink { text-align: right; margin-top: 1.2em; letter-spacing: 0.1em;}
.enLink p {
  display: inline-block;
  background: url("../img/link_bg.svg") no-repeat left center;
  background-size: contain;
  font-size: 1.2rem;
  line-height: 1.0;
  padding: 1.5em 0 1.5em 2.5em;
  position: relative;
}
.enLink p span.line { position: absolute; left: 0; top: 50%; transform: translate(-50%, 0); width: 3em; height: 0.6px; overflow: hidden; display: block;}
.enLink p span.line:before { content: ""; display: block; background: #666; width: 100%; height: 100%; position: absolute; right: 0; top: 0;}
.enLink p span.link, .enLink a { display: inline-block; background: #fff; padding: 0.4em 0; text-decoration: none; color: inherit;}

@media screen and ( min-width:800px ){
  a:hover .enLink p span.line:before,
  .enLink a:hover span.line:before { animation: enLink ease 1.4s forwards;}
}

@keyframes enLink {
  0%    { right: 0; left: auto; width: 100%;}
  30%  { right: 0; left: auto; width: 0;}
  40%  { right: auto; left: 0; width: 0;}
  70%  { right: auto; left: 0; width: 100%;}
  100%{ right: auto; left: 0; width: 100%;}
}


/* ----------------------------------------------------------------------------
	footer
---------------------------------------------------------------------------- */
footer {
  text-align: left;
  background: #E8E8E8;
  padding: 16vw 0 10vw;
  margin-top: 18vw;
}
footer a { text-decoration: none; color: inherit;}
footer .name { width: 36%; max-width: 130px; margin: 0 auto;}
footer .scLink { -webkit-flex: flex; display: flex; -webkit-justify-content: center; justify-content: center; margin: 2.5em 0 2.2em;}
footer .scLink li { width: 2.3em; margin-right: 2em;}
footer .scLink li:last-child { margin-right: 0;}
footer .txtLink { -webkit-flex: flex; display: flex; -webkit-flex-wrap: wrap; flex-wrap: wrap; -webkit-justify-content: center; justify-content: center; font-size: 1.3rem; margin: 0 -1em; }
footer .txtLink li { margin: 0 1.4em 1em;}
footer .copyRight { font-size: 1.2rem; letter-spacing: 0.1em; text-align: center; margin-top: 2.3em;}
@media screen and ( min-width:520px ){
  footer {padding: 10vw 0 5vw; margin-top: 12vw;}
}
@media screen and ( min-width:800px ){
  footer {padding: 50px 0 50px; margin-top: 110px;}
  footer .wMax{ -webkit-flex: flex; display: flex;  -webkit-flex-wrap: wrap; flex-wrap: wrap; -webkit-align-items: center; align-items: center; }
  footer .name { max-width: 120px; margin: 0;}
  footer .scLink { margin: 0 auto 0 3.6em; font-size: 1.1rem;}
  footer .scLink a:hover img { transform:scale(1.04,1.04);}
  footer .txtLink a:hover { text-decoration: underline;}
  footer .copyRight { width: 100%; text-align: left; font-size: 1.1rem;}
}