@charset "utf8";

/** 定義 */
:root {
  /** color */
  --default-background-color: #fff;
  --default-font-color: #000;
  --default-hover-background-color: #ccc;
  --default-shadow-color: rgba(132, 132, 132, 0.5);
  --default-title-color: #222b64;
  --default-border-color: #ddd;

  --white-font-color: #fff;
  --gray-font-color: #666;
  --black-border-color: #000;

  /** font-size */
  --default-h1-size: 1.8rem;
  --default-h2-size: 2.0rem;
  --default-h3-size: 1.5rem;
  --default-h4-size: 1.3rem;
  --default-h5-size: 1.2rem;
  --default-h6-size: 1.1rem;

  --default-article-size: 1.0rem;
}

/** reset */
* {
  box-sizing: border-box;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
}

body {
  padding: 0;
  margin: 0;
  background-color: var(--default-background-color);
  color: var(--default-font-color);
  font-family: 'Noto Serif JP', 'Lato', 'メイリオ', 'Meiryo', 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif;

  letter-spacing: 0.1rem;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0;
  padding: 0;
}

a {
  color: var(--default-font-color);
  text-decoration: none;
}

p {
  margin: 0;
  padding: 0;
}

ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

/** header */
header {
  width: 100%;
  height: auto;
  background-color: var(--default-background-color);
  box-shadow: 0px 2px 5px 0px var(--default-shadow-color);
  margin-bottom: 0.25rem;
  position: sticky;
  top: 0;
  left: 0;
  z-index: 10;
}

header > h1 {
  text-align: center;
  font-size: var(--default-h1-size);
}

header > nav {
  width: 100%;
  max-width: 950px;
  margin: 0 auto 0;
}

header > nav > ul {
  display: flex;
  flex-direction: row;
  align-items: center;
  width: 100%;
}

header > nav > ul > li {
  display: block;
  width: 20%;
  height: calc(2rem - 1px);
  perspective: 800px;
  overflow: hidden;
  cursor: pointer;
}

header > nav > ul > li > span {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  transform-style: preserve-3d;
  transform-origin: center center -1rem;
  transition: transform 0.5s ease;
}

header > nav > ul > li:hover > span {
  transform: rotateX(-90deg);
}

header > nav > ul > li > span > span {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}

header > nav > ul > li > span > span.top {
  transform: rotateX(90deg) translateY(-16px) translateZ(48px);
}

header > nav > ul > li > span > span.front {
  transform: rotateX(0deg) translateZ(0);
}

header > nav > ul > li a {
  display: block;
  width: 100%;
  text-align: center;
}

header > nav > ul > li > a:hover {
  background-color: var(--default-hover-background-color);
}

header > nav > input,
header > nav > label {
  display: none;
}

@media (max-width: 950px) {
  header > nav > ul {
    display: none;
    width: 100vw;
    height: 100vh;
    position: fixed;
    background-color: var(--default-background-color);
  }

  header > nav > ul > li {
    width: 100%;
    min-height: 52px;
    border-bottom: 1px solid var(--default-border-color);
    perspective: unset;
  }

  header > nav > ul > li:first-child {
    border-top: 1px solid var(--default-border-color);
  }

  header > nav > ul > li > span {
    transition: none;
  }

  header > nav > ul > li a {
    text-align: left;
    padding: 0 0 0 1rem;
  }

  header > nav > ul > li:hover > span {
    transform: none;
  }

  header > nav > label {
    display: block;
    width: 44px;
    height: 44px;
    position: fixed;
    top: 0;
    right: 0;
  }

  header > nav > input:checked + label + ul {
    display: block;
  }

  header > nav > label > span {
    display: block;
    position: relative;
    top: 20px;
    width: 90%;
    height: 1px;
    margin: 0 auto 0;
    background-color: var(--default-font-color);
    cursor: pointer;
  }

  header > nav > label > span::before,
  header > nav > label > span::after {
    content: '';
    display: block;
    position: relative;
    height: 1px;
    background-color: var(--default-font-color);
  }

  header > nav > label > span::before {
    top: -10px;
  }

  header > nav > label > span::after {
    bottom: -9px;
  }

  header > nav > input:checked + label > span {
    background-color: transparent;
  }

  header > nav > input:checked + label > span::before {
    top: 0px;
    transform: rotateZ(45deg);
    transform-origin: center center;
  }

  header > nav > input:checked + label > span::after {
    top: 0px;
    transform: rotateZ(-45deg);
    transform-origin: center center;
  }
}

/** main */
main {
  width: 100%;
}

main > section {
  width: 100%;
  margin: 0 0 1rem 0;
  padding: 1rem 0 1rem;
}

main > section > div.contents {
  max-width: 950px;
  width: 100%;
  margin: 0 auto 0;
  padding: 1rem 0 1rem;
}

main > section > h2 {
  font-size: var(--default-h2-size);
  color: var(--default-title-color);
  font-weight: 600;
  text-align: center;
}

@media (max-width: 950px) {
  main > section > div.contents {
    padding: 1rem 1rem 1rem;
  }
}

/** main visual */
div.main-visual {
  width: 100%;
  max-width: 950px;
  margin: 0 auto 1rem;
}

div.main-visual img {
  display: block;
  width: 100%;
}

/** contents */
div.contents h4 {
  padding: 0 0 0.5rem 0;
  font-size: var(--default-h4-size);
  color: var(--default-title-color);
  font-weight: 600;
  text-align: center;
}

div.contents p.description {
  margin: 0 0 1rem 0;
  font-size: var(--default-h5-size);
  font-weight: 600;
  text-align: left;
}

div.contents p {
  text-indent: 1rem;
  text-align: left;
}

div.contents p+h4 {
  margin: 1rem 0 0 0;
}

div.contents img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/** company */
section#company div {}

/** service */
section#service {}

section#service div.flex > div.card-component {
  width: calc(33% - 1rem);
}

/** news */
section#news {
  background-color: var(--default-hover-bacground-color);
}

/** contact us */
section#contact {}

section#contact div.flex > div > h4,
section#contact div.flex > div > p {
  font-size: var(--default-h4-size);
  text-align: center;
  text-indent: 0;
}

section#contact div.flex > div.card-component {
  width: calc(50% - 1rem);
}

section#contact div.flex > div.card-component > div.card-image {
  height: 240px;
}

section#contact div.flex > div.card-component > div.card-text h4+p {
  text-align: center;
  text-indent: 0;
}

section#contact div.flex > div.card-component > div.card-text address> p {
  display: flex;
  align-items: center;
  margin: 0 0 1rem 0;
}

section#contact div.flex > div.card-component iframe {
  width: 100%;
  height: 100%;
}

/** flex box */
div.flex {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
}

div.flex > div {
  width: calc(50% - 1rem);
  min-width: calc(390px - 2rem);
}

@media (max-width: 950px) {
  div.flex {
    justify-content: center;
  }

  div.flex > div {
    width: 100%;
  }

  div.flex.sp-reverse {
    flex-direction: column-reverse;
  }
}

/** card component */
div.flex:has(div.card-component) {
  align-items: stretch;
}

div.flex > div.card-component {
  min-width: unset;
}

div.card-component {
  height: 480px;
  background-color: var(--default-background-color);
  border: 1px solid var(--default-border-color);
  border-radius: 12px;
  overflow: hidden;
}

div.card-component > div.card-image {
  width: 100%;
  height: 240px;
  overflow: hidden;
}

div.card-component > div.card-text {
  width: 100%;
  height: 240px;
  padding: 0.5rem;
}

@media (max-width: 950px) {
  div.flex:has(div.card-component) {
    flex-direction: column;
    align-items: center;
  }

  div.flex > div.card-component {
    min-width: calc(390px - 2rem);
    max-width: 420px;
    width: 100%;
  margin: 0 0 1rem 0;
  }
}

/** accordion */
div.accordion label {
  display: flex;
  align-items: center;
  justify-content: left;
  width: 100%;
  padding: 1rem;
  font-size: 1.5rem;
  cursor: pointer;
  background-color: var(--default-background-color);
  border-bottom: 1px solid var(--default-border-color);
}

div.accordion label > h5 {
  display: flex;
  flex-direction: column;
}

div.accordion label > h5 date {
  font-size: var(--default-article-size);
  color: var(--gray-font-color);
}

div.accordion label > div {
  margin-left: auto;
  transition: 0.3s all ease;
}

div.accordion input:checked + label > div {
  transform: rotateZ(180deg);
}

div.accordion input[type='checkbox'] {
  display: none;
}

div.accordion label + article {
  width: 100%;
  max-height: 0;
  padding: 0 1rem 0;
  margin: 0 0 1rem 0;
  line-height: 1.5;
  letter-spacing: 1px;
  overflow: hidden;
  background-color: var(--default-background-color);
  transition: 0.3s all ease;
}

div.accordion input:checked + label + article {
  max-height: 1000px;
}

div.accordion label + article > div {
  padding: 1rem 0 1rem;
}

div.accordion label + article > div > p.b {
  font-weight: 600;
  margin: 1rem 0 1rem;
}

/** footer */
footer {
  width: 100%;
  border-top: 1px solid var(--default-border-color);
}

footer > p {
  text-align: center;
}

/** slider navigation */
#sliderNavigation {
  max-height: 240px;
}

#sliderNavigation a {
  display: block;
  width: 100%;
  height: 100%;
}

#sliderNavigation img {
  width: 100%;
  height: 100%;
  pointer-events: none;
}

/** swiper custom */
.swiper-wrapper {
  transition-timing-function: linear;
}
.swiper-slide {
  width: 240px;
  height: 165px;
}
