@charset "UTF-8";

/* 共通部分
----------------------------------------- */
*,::before,::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}  /* *は全ての要素に適用するが、疑似要素には適用しないため「::before,::after」を追加 */

:root {
  --colorText: #432;  /* font-colorの変数 */
  --colorMain: #0bd;  /* font-colorの変数 */
}  
html {
  font-size: 10px;
}
body {
  font-size: 1.6em;
  font-family: "Noto Sans JP", sans-serif;
  color: var(--colorText);   /* font-color(colorText)の呼び出し */
  /* overflow-x: hidden;   要素からはみ出た部分を表示させない */
}
.font-english {
  font-family: "Philosopher", sans-serif;
  font-weight: normal;
  line-height: 1.7;
}
h1,h2,h3,h4,h5,h6 {
  font-size: 1em;
}
a {
  text-decoration: none;
  color: inherit;  /* 親要素と同じ値にする */
}
img {
  max-width: 100%;
  vertical-align: bottom; /* imgと親要素の高さを同じにする(画像の下端を文字のbase-lineではなく、bottom-lineに合わせる) */
}
main {
  padding: 0 1em;
  margin: 0 auto;
  max-width: 1120px;
}

/* ヘッダー
----------------------------------------- */
body>header {
  width: 100%;
  position: absolute;  /* relativeがないため、親要素のbodyに適用 */
}
.logo {
  /* text-align: center; */
  padding-top: .5em; /* 親要素(h1)の文字高に対して */
  padding-left: 1em;
}
.logo a {
  display: block;
}
.logo a img {
  width: 210px;
}
#Nav,
#Nav+label {  /* #Navの次の要素であるlabel */
  display: none;
} 
body>header nav ul {
  display: flex;
  justify-content: center;
  list-style: none;
  font-size: 1.5em;
  gap: 1.75em;  /* 子要素同士の上下左右の余白 */
}

/* 画面サイズ800px以上の場合 */
@media (min-width: 800px) {
  body>header {
    display: flex;
    justify-content: space-between;
    padding: 1em 1em 0;
    max-width: 1120px;
    left: 50%;
    transform: translateX(-50%);  /* 指定要素の50%分を左に変形(移動)させる */
  }
  .logo {
    padding-top: 0; /* 親要素(h1)の文字高に対して */
  }
  body>header nav {
    padding-top: .9em;
  }
  body>header nav ul {
    font-size: 2em;
    line-height: 1; /* 文字の高さを文字高に変更 */
    gap: 1.25em;  /* 余白 */
  }
  body>header nav ul li a:hover {
    color: var(--colorMain);
  }
  body>header nav ul li a {
    transition: .5s;
  }
}
@media (max-width: 799px) {
  #Nav+label {
    display: flex;
    align-items: center;
    width: 10vw;
    aspect-ratio: 1/1;
    position: absolute;
    top: 1em;
    right: 1em;
    z-index: 1;
  }
  #Nav+label span,
  #Nav+label span::before,
  #Nav+label span::after {
    content: "";   /* 疑似要素を活用する際は必要 */
    display: block;
    width: 100%;
    background: var(--colorMain);
    transition: 0.5s;
  }
  #Nav+label span {
    position: relative;
    height: 10%;
  }
  #Nav+label span::before,
  #Nav+label span::after {
    position: absolute;
    height: 100%;
  }
  #Nav+label span::before {
    bottom: 300%;   /* spanのtopから3倍離れた位置に設定 */
  }
  #Nav+label span::after {
    top: 300%;
  }
  #Nav:checked+label span {
    background: transparent;
  }
  #Nav:checked+label span::before {  /* チェックが付いているときの疑似要素 */
    bottom: 0px;
    rotate:  -315deg;
  }
  #Nav:checked+label span::after {  /* チェックが付いているときの疑似要素 */
    top: 0px;
    rotate: 315deg;
  }
  body>header {
    position: fixed;
    z-index: 9999;  /* headerを手前に */
  }
  body>header nav ul {
    justify-content: center;
    font-size: 2.5em;
    gap: 1em;  /* 子要素同士の上下左右の余白 */
    flex-direction: column;
    align-items: center;
    background: #fffd;
    position: fixed;
    top: 0;
    right: 0;
    width: 75%;
    height: 100vh;
    translate: 100% 0;
    transition: .5s;
  }
  body>header nav #Nav:checked~ul {
    translate: 0;
  }
}

/* ファーストビュー
----------------------------------------- */
.fv {
  height: 528px;
  padding-top: 140px;
}
.index .fv {
  background: url(../_img/cover-home-s.webp) center/cover;
  height: 800px;
}
.news .fv {
  background: url(../_img/cover-news-s.webp) center/cover;
}
.menu .fv {
  background: url(../_img/cover-menu-s.webp) center/cover;
}
.contact .fv {
  background: url(../_img/cover-contact-s.webp) center/cover;
}
.pageTitle {
  font-size: 3em;
  text-align: center;
  line-height: 1.4;
}

/* 画面サイズ800px以上の場合 */
@media (min-width: 800px) {
  .fv {
    height: auto;
    min-height: 400px;
    /* aspect-ratio: 9/5; */  /* 比率を指定 */
    margin-bottom: 4em;
  }
  .index .fv {
    background-image: url(../_img/cover-home-l.webp);
    min-height: 800px;
  }
  .news .fv {
    background-image: url(../_img/cover-news-l.webp);
  }
  .menu .fv {
    background-image: url(../_img/cover-menu-l.webp);
  }
  .contact .fv {
    background-image: url(../_img/cover-contact-l.webp);
  }
  .pageTitle {
    font-size: 5em;
  }
}

/* フッター
----------------------------------------- */
footer {
  background: url(../_img/footer-s.webp) center/cover;
  padding-top: 12em;
}
footer h2 {
  font-size: 3em;
  text-align: center;
}
table.info {
  width: calc(100% - 3em); /* 幅100%の中で3emの余白 */
  max-width: 544px;
  /* border-spacing: 0; */ /* 隣り合っているtableの余白を0にする */
  border-collapse: collapse;   /* 隣り合っているtableの罫線を重ねる */
  margin: 0 auto;
}
table.info tr th,
table.info tr td {
  border-bottom: 1px solid #c9c2bc;
}
table.info tr th {
  text-align: left;
  font-weight: 400;
  padding: 1em;
}
table.info tr td {
  padding: 1em 0;
}
footer small {
  display: block;
  background: var(--colorText);
  color: #fff;
  text-align: center;
  padding: 2em 0;
  margin-top: 6em;
}

/* 画面サイズ800px以上の場合 */
@media (min-width: 800px) {
  footer {
    background: url(../_img/footer-l.webp) center/cover;
    padding-top: 12em;
  }
  footer h2 {
    font-size: 4em;
  }
}

/* トップページ
----------------------------------------- */
.index main section {
  display: flex;
  flex-flow: column;   /* 子要素を縦に並べる flex-directionでも可 */
  align-items: center;  /* 子要素を左右中央で並べる(初期値はstretch) */
  max-width: 736px;
  margin: 0 auto;
}
.index main section h3 {
  font-size: 3em;
  text-align: center;
}
.index main section p {
  margin: 1em 0 3em;
  text-align: justify;  /* 文章を両端揃え */
}
.index main section a {
  background: var(--colorMain);  /* font-color(colorMain)の呼び出し */
  color: #fff;
  font-size: 1.5em;
  padding: .5em 1.5em;
  border-radius: .8rem;
  transition: 0.5s ease-in-out;  /* アニメーション */
  /* position: relative;
  left: 0; */
  /* transform-origin: center top;   */  /* 変形する基準の変更 */
} 

/* 画面サイズ800px以上の場合 */
@media (min-width: 800px) {
  .index main section h3 {
    font-size: 4em;
  }
  .index main section a:hover {
    background: #0090aa;
    /* left: 200px; */  /* 左に移動 */
    /* scale: .9; */  /* 大きさ */
    /* height: 200px; */   /* 周りのレイアウトに影響だ生じる */
    /* rotate: -15deg; */  /* 回転 */
    translate: 0 5%;   /* 移動 */
  }   
}

/* スライダー
----------------------------------------- */
/* ↓　検証ツールでクラス名を確認 */
.slider {
  margin-top: 3em;
}
.slick-next {
  right: 1rem;
}
.slick-prev {
  left: 1rem;
  z-index: 1;
}

/* ニュース
----------------------------------------- */
.news article {
  margin-bottom: 4em;
}
.news article header h2 {
  font-size: 1.5em;
  font-weight: 400;
}
.news article header ul {
  list-style: none;
  display: flex;
  font-size: .875em;  /* 7/8の値　1/8=0.125に刻む */
  margin: 1.5em 0 3em 0;
  gap: 1em;
}
.news article header ul li a {
  background: #faf7f0;
  padding: .25em .75em;
  border-radius: 0.8rem;
}
.news article figure img {
  border-radius: 1em;
}
.news article p {
  margin-top: 1.5em;
  line-height: 2;
}
.news aside dl {
  text-align: center;
}
.news aside dl:nth-child(n+2) { /* 2つ目以降のdlに適用 */
  margin-top: 3em;
}
.news aside dl dt {
  font-size: 3em;
}
.news aside dl dd {
  border-bottom: 1px solid #c9c2bc;
}
.news aside dl dd a {
  padding: 1em 0;
  display: block;
}
.news aside:has(img) {  /* imgの子要素を持つ.news aside */
  margin-top: 3em;
}

/* 画面サイズ800px以上の場合 */
@media (min-width: 800px) {
  .news main {
  display: flex;
  justify-content: space-between;
  }
  .news article {
    width: 60%;
  }
  .nigews article header h2 {
    font-size: 2em;
  }
  .news aside:has(dl) {
    width: 22%;
  }
  .news aside:has(img) {
    order: -1;    /* flexの先頭に配置(デフォルトの値　0)  */
    margin-top: 0;
  }
  /* .news aside dl:first-child {  
    margin-top: 0em;
  }*/  /* 1つ目のdlのみにルール  */
}

/* メニュー
----------------------------------------- */
.menu main {
  margin-top: 15%;  /* 親要素の横幅を100%にした場合の割合  */
}
.menu main ul {
  display: grid;
  gap: 2rem 1.5rem;
  grid-template-columns: repeat(2, 1fr);  /* 指定する比率で2つの要素を並べる  */
  list-style: none;
}
/* .menu main ul li {
  border: #0bd 20px solid;
  outline: #0bd 20px solid;
  outline-offset: -20px;
} */
 /* 以下の2つのルールはjQueryの画像アニメーションのため */
.menu main ul li figure img {
  border-radius: 1em;
  translate: -100%;  /* 画面外の左に移動  */
  opacity: 0;
  transition: 1s;
}
.menu main ul li figure img.on {
  translate: 0;  /* 画面内に移動  */
  opacity: 1;
}
.menu main ul li figure figcaption {
  font-size: .875em;
  margin-top: .5em;
}
.menu main ul li figure figcaption dl {
  display: flex;
  flex-flow: column;
}
.menu main ul li figure figcaption dl dd {
  margin-left: auto;  /* 右寄せ 親要素がflexの時  */
}
.menu main ul li figure figcaption dl dd span {
  font-size: 1rem;
}
@media (min-width: 800px) {
  .menu main {
    margin-top: 120px;  /* 親要素の横幅を100%にした場合の割合  */
  }
  .menu main ul {
    gap: 3em 2em;
    grid-template-columns: repeat(3, 1fr);  /* 指定する比率で2つの要素を並べる  */
  }
  .menu main ul li.big {
    grid-column: 1/3;  /* 1～3まで使う */
    grid-row: 1/3;
  }
  .menu main ul li.big figure  {
    height: 100%;
  }
  .menu main ul li.big figure img {
    width: 100%;
    height: calc(100% - 2.2em);
    object-fit: cover;
  }
  .menu main ul li figure figcaption {
    font-size: 1em;
  }
  .menu main ul li figure figcaption dl {
    flex-flow: row;  /* 子要素を左から右に並べる flex-directionの初期値 */
  }
}

/* コンタクト
----------------------------------------- */
.contact h2 {
  font-size: 3em;
  text-align: center;
}
.information {
  margin-top: 3em;
}
iframe {
  width: 100%;
}
.information>iframe {
  aspect-ratio: 1/1;
  margin-top: 2em;
}
.contact main aside>div {
  margin-top: 2em;
}
.contact main aside>div iframe {
  aspect-ratio: 16/9;
  vertical-align: bottom;
}
.contact main aside>div iframe+iframe {
  margin-top: 1em;
}
@media (min-width: 600px) {
  .information>iframe {
    aspect-ratio: 3/2;
  }
}
@media (min-width: 800px) {
  .information {
    display: flex;
    justify-content: space-between;
  }
  .information>div {
    width: 32%;
  }
  .information>iframe {
    width: 64%;
    margin-top: 0;
    aspect-ratio: auto; /* 割合を指定なし */
  }
  .contact main aside {
    display: flex;
    justify-content: space-between;
  }
  .contact main aside>div {
    /* flex: 1; */
    width: 31%;
  }
}

/* メールフォーム
----------------------------------------- */
.mailform {
  background: #faf7f0;
  border-radius: 3em;
  max-width: 916px;
  margin: 3em auto 0;
  padding: 1.5em 2.5em 2.5em;
}
.mailform table {
  width: 100%;
  margin-top: 2em;
  border-collapse: collapse;  /* セルの余白を削除 */
}
.mailform table th,
.mailform table td {
  padding: .5em 0;
  vertical-align: top;  /* thの文字をtopに配置(tableの配置のみ) */
}
.mailform table th {
  width: 25%;
}
.mailform table td {
  width: 75%;
}
.mailform table td ul {
  list-style: none;
  display: flex;
  gap: 2em;
}
.mailform input[type="text"],
.mailform input[type="email"],
.mailform textarea,
.mailform select {
  width: 100%;
  font: inherit;
  padding: .25wm .75em;
  border: 1px solid var(--colorMain);
  transition: 0.5s;  /* :focusのアニメーション  */
}
.mailform input[type="text"]:focus, 
.mailform input[type="email"]:focus,
.mailform textarea:focus,
.mailform select:focus {   /* :focusは選択されている状態の疑似要素  */
outline: 2px solid var(--colorMain);  /* outline(線)の追加  */
outline-offset: 5px;  /* 要素の外側から離れた位置にoutline  */
background: #ffc;  /* 選択されている要素の背景  */
}
.mailform textarea {
  height: 10em;
  resize: vertical;  /* 横幅のサイズ固定 */
}
.mailform input[type="radio"] {
  scale: 1.5;
  transform-origin: left center; /* 位置の変形 */
  margin-right: .75em;
}
.mailform div {
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 2em;
}
.mailform div input {
  appearance: none;  /* inputをiphone,ipadに反映させるため */
  -webkit-appearance: none;  /* inputをsafari,chromに反映させるため */
  border: none;
  color: #fff;
  padding: .5em 1em;
  border-radius: .5em;
  cursor: pointer;
}

.mailform div input[type="submit"] {
  background: var(--colorMain);
  font-size: 1.5em;
}
.mailform div input[type="reset"] {
  background: var(--colorText);
}
@media (max-width: 799px) {
  .mailform table,
  .mailform table tbody,
  .mailform table tr,
  .mailform table th,
  .mailform table td {
    display: block;   /* 縦並びにする */
    width: 100%;
  }
  .mailform table th {
    padding-bottom: 0;
  }
  .mailform div {
    flex-direction: column;
    gap: 1em;
    margin-top: 1em;
  }
}

/* オープニング
----------------------------------------- */
.opening {
  background: #fff;
  position: fixed;
  top: 0;  /* 下記のbottomまでで表示画面に全体に表示 */
  left: 0;
  right: 0;
  bottom: 0;
    /* アニメーションの開始はflex */
  display: none;
  justify-content: center;
  align-items: center;
  animation: openingDiv2 1s 3s both;
}
@keyframes openingDiv {  /* アニメーション詳細 */
  100% {
    top: -100%;
    bottom: 100%;
  }
}
@keyframes openingDiv2 {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    display: none;  /* 非表示(ボタン等を押せるようにするため) */
  }
}
.opening img {
  animation: openingImg 1s 1s linear both;
}
@keyframes openingImg {    /* アニメーション詳細 */
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}