:root {
  font-size: 62.5%;
}
html, body {
  font-size: 1.6rem;
}
.pc-only {
  @media (max-width: 768px) {
    display: none;
  }
}
.section {
  padding-bottom: 14rem;
  @media (max-width: 768px) {
    padding-bottom: 8rem;
  }
  .container {
    width: 100%;
    max-width: 116rem;
    padding: 0 3rem;
  }
}
.btn-trigger {
    position: absolute;
    top: 0;
    right: 0;
    width: 6.5rem;
    height: 6.5rem;
    cursor: pointer;
    z-index: 10
}

.btn-trigger span {
    position: absolute;
    right: 0;
    left: 0;
    margin: auto;
    width: 2.75rem;
    height: 0.1rem;
  background-color: #000;
  transition: top .3s ease, bottom .3s ease, transform .3s ease, opacity .2s ease;
}

.btn-trigger span:first-of-type {
    top: 2.2rem
}

.btn-trigger span:nth-of-type(2) {
    top: 50%;
    transform: translateY(-50%);
}

.btn-trigger span:nth-of-type(3) {
    bottom: 2.2rem;
}

.is-menu-open {
  overflow: hidden;
}

.is-menu-open .btn-trigger span:first-of-type {
  top: 50%;
  transform: translateY(-50%) rotate(45deg);
}

.is-menu-open .btn-trigger span:nth-of-type(2) {
  opacity: 0;
}

.is-menu-open .btn-trigger span:nth-of-type(3) {
  top: 50%;
  bottom: auto;
  transform: translateY(-50%) rotate(-45deg);
}
@media (max-width: 768px) {
  header {
    position: relative;
    height: 6.5rem;
    background: rgba(255,255,255,.9);
    position: fixed;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 100;
    .header__logo {
      position: absolute;
      padding: 0;
      width: 4rem;
      left: 2rem;
      top: 50%;
      transform: translateY(-50%);
    }
    
  }
  body.top .header__logo {
    opacity: 0;
    transition: opacity .5s ease-in;
  }
  body.top.scrolled .header__logo {
    opacity: 1;
  }
  main {
    padding-top: 7rem;
  }
  .page main {
    padding-top: 12rem;
    overflow-x: visible;
  }
  .header__ctnav {
    opacity: 0;
    visibility: hidden; 
    pointer-events: none;
    transform: translateY(10px);
    transition: opacity .4s ease-out, transform .4s ease-out, visibility .4s;
    height: 100vh;
    background: rgba(255,255,255,.9);
    padding-top: 6rem;
    overflow-y: auto;
    .header__nav__list {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 3rem;
      .header__nav__list__item {
        list-style: none;
        text-align: center;
        .header__nav__list__anchor {
          display: inline-block;
          padding: 0.3rem 0.5rem;
          background: #000;
          color: #fff;
          font-weight: 700;
          line-height: 1;
          transition: .3s ease-in;
          &:hover {
            opacity: 0.7;
          }
        }
        .header__nav__sublist {
          margin-top: 0.8rem;
          display: flex;
          flex-direction: column;
          align-items: center;
          gap: 1rem;
          max-height: 100%;
          position: static;
          left: 0;
          background: none;
          box-shadow: none;
          clip-path: none;
          width: 100%;
          min-width: 100%;
          .header__nav__sublist__anchor {
            font-size: 1.2rem;
            background: #000;
            padding: 0.2rem 0.4rem;
            color: #fff;
            font-weight: 700;
            transition: .3s ease-in;
            &::before {
              content: "";
              margin: 0;
            }
            &:hover {
              opacity: 0.7;
            }
          }
        }
      }
    }
  }
  .is-menu-open .header__ctnav {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
  }
}
footer {
  border-top: 1px solid #000;
  padding-top: 6rem;
  .container {
    width: 100%;
    max-width: 116rem;
    padding: 0 3rem;
    @media (max-width: 768px) {
      padding: 0 1.5rem;
    }
  }
  .footer__row {
    display: grid;
    grid-template-columns: 31rem 1fr;
    justify-content: center;
    @media (max-width: 1024px) {
      display: flex;
      flex-direction: column;
      gap: 4rem;
    }
    @media (max-width: 768px) {
      display: flex;
      flex-direction: column;
      gap: 4rem;
    }
  }
  .footer_logo {
    display: flex;
    align-items: center;
    justify-content: center;
    @media (max-width: 768px) {
      img {
        width: 12.5rem;
      }
    }
  }
  .footer__nav {
    display: flex;
    justify-content: space-between;
    @media (max-width: 768px) {
      display: grid;
      grid-template-rows: repeat(2, auto);
      grid-auto-flow: column;
      grid-auto-columns: auto;
      gap: 2rem;
    }
  }
  .footer__nav__item {
    list-style: none;
    .footer__nav__anchor {
      display: inline-block;
      white-space: nowrap;
      font-weight: 700;
      font-size: 1.2rem;
      line-height: 1;
      transition: .3s ease-in;
      &:hover {
        opacity: 0.7;
      }
    }
    .footer__nav__sublist {
      margin-top: 0.5rem;
    }
    .footer__nav__sublist__anchor {
      font-size: 1.1rem;
      white-space: nowrap;
      font-weight: 700;
      transition: .3s ease-in;
      &::before {
        content: "ー";
        font-weight: 500;
        margin-right: 0.3rem;
        @media (max-width: 768px) {
          content: "";
          margin: 0;
        }
      }
      &:hover {
        opacity: 0.7;
      }
    }
  }
  .footer__sns {
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
    margin-top: -3rem;
    padding-bottom: 3rem;
    a {
      transition: .3s ease-in;
      &:hover {
        opacity: 0.7;
      }
    }
  }
}
.home__logo {
  display: flex;
  justify-content: center;
  padding-bottom: 5rem;

  a {
    display: inline-block;
    width: 7.5rem;
  }
}
.home_tagline {
  font-size: 2.1rem;
  margin-bottom: 2rem;
  padding-top: 2rem;
  font-weight: 700;
  letter-spacing: .1em;
}
.row_section {
  display: grid;
  grid-template-columns: minmax(34rem, max-content) 1fr;
  gap: 6rem;
  &.is-line {
    .col_section {
      border-bottom: 1px solid #000;
      padding-bottom: 8rem;
      margin-bottom: 8rem;
      @media (max-width: 768px) {
        padding-bottom: 6rem;
        margin-bottom: 6rem;
      }
      ul {
        display: flex;
        flex-direction: column;
        gap: 2rem;
        margin: 6rem 0;
        &:last-child {
          margin-bottom: 0;
        }
        @media (max-width: 768px) {
          margin: 4rem 0;
        }
      }
      li {
        display: flex;
        align-items: center;
        gap: 1rem;
        font-weight: 700;
        @media (max-width: 768px) {
          font-size: 1.4rem;
        }
        &::before {
          content: "";
          width: 6.5rem;
          height: 0.1rem;
          background: #000;
          @media (max-width: 768px) {
            width: 3rem;
          }
        }
      }
    }
  }
  &.is-company {
    margin: 6rem 0;
    @media (max-width: 768px) {
      margin: 4rem 0;
    }

    .hdg_section03 {
      font-size: 3.2rem;
      @media (max-width: 768px) {
        font-size: 2rem;
      }
    }
  }
  @media (max-width: 1024px) {
    grid-template-columns: 26rem 1fr;
    gap: 4rem;
  }
  @media (max-width: 768px) {
    grid-template-columns: 1fr;
    gap: 3rem;
  }

  .hdg_section01 {
    text-align: right;
    font-size: 3.5rem;
    font-weight: 700;
    &.is-company {
      text-align: left;
    }
    @media (max-width: 1024px) {
      font-size: 2.8rem;
    }
    @media (max-width: 768px) {
      text-align: left;
      font-size: 2.4rem;
    }
  }
  .hdg_section03 {
    text-align: right;
    font-size: 2.4rem;
    font-weight: 700;
    @media (max-width: 768px) {
      text-align: left;
      font-size: 2rem;
    }
  }

  .col_section {
    p {
      font-size: 1.6rem;
      line-height: 4rem;
      font-weight: 600;
      letter-spacing: .05em;
      @media (max-width: 768px) {
        font-size: 1.4rem;
        line-height: 2;
      }
    }
  }
  
}
.align-center {
  display: flex;
  justify-content: center;
}
.hdg_section02 {
  font-size: 3.5rem;
  font-weight: 700;
  letter-spacing: .02em;
  margin-bottom: 2rem;
  @media (max-width: 1024px) {
    font-size: 2.8rem;
  }
  @media (max-width: 768px) {
    font-size: 2rem;
    margin-bottom: 0;
  }
}
@media (min-width: 769px) {
  .categories {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "item1 .    "
      ".     item2"
      "item3 .    "
      ".     item4"
      "item5 .    "
  }
  .category__item {
    position: relative;
    padding: 4rem 0 4rem 5rem;
    box-sizing: border-box;

    .hdg_section03 {
      font-size: 2.8rem;
      font-weight: 700;
      margin-bottom: 1.5rem;
      position: relative;
      letter-spacing: .03em;

      span {
        position: absolute;
        line-height: 1;
        display: block;
        padding: 0.3rem;
        background: #fff;
        font-size: 3.2rem;
        left: -5.2rem;
        top: -6.2rem;
      }
    }
    p {
      font-weight: 700;
      line-height: 2;
      margin-bottom: 1.5rem;
    }
    a {
      display: inline-block;
      background: #000;
      color: #fff;
      padding: 0.5rem 1rem;
      font-weight: 600;
      text-decoration: none;
      transition: background 0.3s ease;
      &:hover {
        background: #333;
      }
    }
  }
  .category__item:nth-child(even) {
    .hdg_section03 {
      span {
        left: -7rem;
      }
    }
  }
  .category__item:nth-child(1) { 
    grid-area: item1; 
  }
  .category__item:nth-child(2) { 
    grid-area: item2; 
  }
  .category__item:nth-child(3) { 
    grid-area: item3; 
  }
  .category__item:nth-child(4) { 
    grid-area: item4; 
  }
  .category__item:nth-child(5) { 
    grid-area: item5; 
  }

  .category__item::before {
    content: "";
    position: absolute;
    top: 0;
    width: 1px;
    height: 100%;
    background-image: linear-gradient(to bottom, #000 50%, transparent 50%);
    background-size: 1px 10px;
  }
  .category__item:nth-child(odd)::before { 
    left: 2rem; 
  } /* gapの半分 */
  .category__item:nth-child(even)::before { 
    left:0; 
  }
  .category__item::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 2rem;
    width: calc(100% - 2rem); /* コンテンツ幅 + gap分 */
    height: 1px;
    background-image: linear-gradient(to right, #000 50%, transparent 50%);
    background-size: 10px 1px;
  }
  .category__item:nth-child(even)::after { 
    left: calc(-100% + 2rem); 
  }
  .category__item:last-child::after {
    display: none;
  }
  .category__item:first-child {
    padding-top: 12rem;
  }
}
.navigation {
  padding-bottom: 7rem;

  .navigation__list {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 2rem;
    flex-wrap: wrap;
  }
  .navigation__list__item {
    list-style: none;
    .navigation__list__anchor {
      display: inline-block;
      font-weight: 700;
      line-height: 1;
      transition: .3s ease-in;
      &:hover {
        opacity: 0.7;
      }
    }
    .navigation__list__anchor.is-next {
      padding-right: 11.5rem;
      background-image: url("../img/common/arr_next.svg");
      background-repeat: no-repeat;
      background-position: right bottom;
      @media (max-width: 768px) {
        padding-right: 6rem;
        background-size: 5rem 0.4rem;
      }
    }
    .navigation__list__anchor.is-prev {
      padding-left: 11.5rem;
      background-image: url("../img/common/arr_prev.svg");
      background-repeat: no-repeat;
      background-position: left bottom;
      @media (max-width: 768px) {
        padding-left: 6rem;
        background-size: 5rem 0.4rem;
      }
    }
  }
}
@media (max-width: 768px) {
  .categories {
    .category__item {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 1.5rem;
      padding-top: 8rem;
      position: relative;
      &::after {
        content: "";
        position: absolute;
        top: 2rem;
        left: 50%;
        transform: translateX(-50%);
        width: 1px;
        height: 5rem;
        background-image: linear-gradient(to bottom, #000 50%, transparent 50%);
        background-size: 1px 10px;
      }
      .hdg_section03 {
        font-size: 2rem;
        text-align: center;
        font-weight: 700;
        span {
          &::after {
            content: " - ";
          }
        }
      }
      p {
        font-weight: 700;
        font-size: 1.2rem;
      }
      a {
        font-size: 1.2rem;
        display: inline-block;
        background: #000;
        color: #fff;
        padding: 0.5rem;
        font-weight: 600;
        text-decoration: none;
      }
    }
  }
}
.flow-container {
  text-align: center;;
}

.page-experience .container {
  position: relative;
  &::after {
    content: "EXPERIENCE DESIGN";
    font-size: 18rem;
    color: #fbfbfb;
    font-weight: 700;
    position: absolute;
    transform: rotate(90deg);
    transform-origin: left bottom;
    top: -9rem;
    left: 0;
    white-space: nowrap;
    line-height: 1;
    letter-spacing: -0.05em;
    z-index: -1;
    @media (max-width: 768px) {
      font-size: 13.5rem;
      left: -1rem;
    }
  }
}

.company {
  .container {
    max-width: 116rem;
    padding-left: 14rem;
    @media (max-width: 1024px) {
      padding: 0 3rem;
    }
    @media (max-width: 768px) {
      padding: 0 2rem;
    }
  }
  .philosophy {
    
    .container {
      overflow: hidden;
      padding-left: 0;
      @media (max-width: 768px) {
        padding: 0 2rem;
      }
    }
  }
  .row_section.is-company {
    grid-template-columns: minmax(24rem, max-content) 1fr;
    .hdg_section04 {
      font-size: 2.4rem;
      font-weight: 700;
      letter-spacing: .03em;
      text-align: right;
      @media (max-width: 768px) {
        text-align: left;
        font-size: 2rem;
      }
    }
    &.is-mission {
      padding-top: 4rem;
    }
    &.is-mission,
    &.is-vision {
      p {
        font-size: 1.8rem;
        @media (max-width: 768px) {
          font-size: 1.5rem;
        }
      }
    }
    &.is-values {
      margin-bottom: 0;
      dl {
        margin-top: 0.6rem;
        dt {
          display: flex;
          align-items: center;
          gap: 1rem;
          font-weight: 700;
          font-size: 1.8rem;
          margin-bottom: 1rem;
          @media (max-width: 768px) {
            font-size: 1.7rem;
          }
          &::before {
            content: "";
            width: 4.8rem;
            height: 0.1rem;
            background: #000;
            @media (max-width: 768px) {
              width: 3rem;
            }
          }
        }
        dd {
          font-weight: 700;
          margin-bottom: 4rem;
          line-height: 2;
          @media (max-width: 768px) {
            font-size: 1.4rem;
          }
        }
      }
    }
    @media (max-width: 768px) {
      grid-template-columns: 1fr;
      gap: 1.5rem;
    }
  }
  .company_information {
    padding-top: 18rem;
    @media (max-width: 768px) {
      padding-top: 8rem;
    }
  }
  .company__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6rem;
    @media (max-width: 768px) {
      grid-template-columns: 1fr;
      gap: 0rem;
    }
  }
  .company__info {
    font-size: 1.5rem;
    line-height: 1.8;
    font-weight: 700;
    @media (max-width: 1024px) {
      font-size: 1.2rem;
    }
    dt {
      margin-bottom: 3rem;
      width: 30%;
    }
    dd {
      margin-bottom: 3rem;
      width: 70%;
    }
  }
  .access {
    padding: 24rem 0 26rem;
    @media (max-width: 768px) {
      padding: 6rem 0;
    }
    .access__bg {
      height: 100%;
    }
  }
  .access__row {
    display: grid;
    grid-template-columns: 4fr 5fr;
    gap: 4rem;
    @media (max-width: 768px) {
      grid-template-columns: 1fr;
      gap: 3rem;
    }
    .access__box {
      margin: 0;
      .access__hdg {
        font-size: 3.2rem;
        font-weight: 700;
        margin-bottom: 4rem;
      }
      p {
        font-size: 1.5rem;
        line-height: 2;
        margin-bottom: 2rem;
        font-weight: 700;
        @media (max-width: 768px) {
          font-size: 1.2rem;
        }
      }
    }
    .access__map {
      margin: 0;
      width: auto;
    }
  }
}
.page main {
  overflow-x: visible;
}
.hdg_info {
  font-size: 3.2rem;
  font-weight: 700;
  margin-bottom: 4rem;
  @media (max-width: 768px) {
    font-size: 2.6rem;
    margin-bottom: 4rem;
  }
}

.journey {
  .journey__history {
    display: grid;
    grid-template-columns: 16rem 1fr;
    margin-top: 14rem;
    @media (max-width: 768px) {
      grid-template-columns: 1fr;
      margin-top: 8rem;
    }
    dt {
      font-size: 1.2rem;
      font-weight: 700;
      line-height: 2;
      margin-bottom: 2rem;
      @media (max-width: 768px) {
        margin-bottom: 0.5rem;
      }
    }
    dd {
      font-size: 1.2rem;
      font-weight: 700;
      line-height: 2;
      margin-bottom: 2rem;
    }
  }
  .journey__logo {
    text-align: right;
    @media (max-width: 768px) {
      text-align: center;
    }
    img {
      width: 18rem;
      @media (max-width: 768px) {
        width: 10rem;
      }
    }
  }
  .journey__logo__ttl {
    font-size: 2.4rem;
    font-weight: 700;
    margin-bottom: 1rem;
  }
  .journey__logo__txt {
    font-size: 1.6rem;
    line-height: 2;
  }
}

.contact__box-dm {
  max-width: 75rem;
  border: 2px solid #000;
  margin: 7rem auto;
  padding: 5rem;
  display: flex;
  flex-direction: column; /* 要素を縦に並べる */
  align-items: center;    /* 子要素を中央に寄せる */
  & > * {
    text-align: left;       /* 各要素内のテキストは左揃え */
    width: 100%;            /* 必要であれば幅を制限したブロック要素にする */
    max-width: 32.5rem;
  }
  h4 {
    font-size: 2.2rem;
    font-weight: 700;
    margin-bottom: 2rem;
  }
  p {
    font-size: 1.6rem;
    line-height: 2;
    font-weight: 700;
    margin-bottom: 2rem;
  }
  a {
    display: inline-block;
    background: #000;
    color: #fff;
    padding: 0.5rem 1rem;
    font-size: 1.9rem;
    font-weight: 700;
    text-decoration: none;
    transition: background 0.3s ease;
    &:hover {
      background: #333;
    }
  }
}
