@layer page {
  .home-loop {
    --loop-logo-width: 390px;
    --loop-gap: 120px;
    position: relative;
    padding-block: 20px;
    opacity: 0.1;
    width: calc(100vw - var(--scrollbar-width));
    max-width: 100vw;
    overflow: hidden;
  }
  @media screen and (max-width: 767px) {
    .home-loop {
      --loop-logo-width: 133px;
      --loop-gap: 40px;
      padding-block: 10px;
    }
  }
  .home-loop__logos {
    display: flex;
    align-items: center;
    gap: 0 var(--loop-gap);
    transform: translateX(0);
    will-change: transform;
    animation: loop-text-left 30s linear infinite;
  }
  .home-loop__logos span {
    display: block;
    width: var(--loop-logo-width);
    height: 40px;
    flex-shrink: 0;
  }
  @media screen and (max-width: 767px) {
    .home-loop__logos span {
      height: 13px;
    }
  }
  .home-loop__logos span img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
  }
  .home-loop__logos.is-right {
    transform: translateX(calc((var(--loop-logo-width) + var(--loop-gap)) * -4));
    animation: loop-text-right 30s linear infinite;
  }
  @keyframes loop-text-left {
    0% {
      transform: translateX(0);
    }
    100% {
      transform: translateX(calc((var(--loop-logo-width) + var(--loop-gap)) * -4));
    }
  }
  @keyframes loop-text-right {
    0% {
      transform: translateX(calc((var(--loop-logo-width) + var(--loop-gap)) * -4));
    }
    100% {
      transform: translateX(0);
    }
  }
  .home-hero {
    position: relative;
    margin-top: calc(var(--header-h) * -1);
    color: #fff;
    overflow: hidden;
  }
  @media screen and (min-width: 768px) {
    .home-hero {
      aspect-ratio: 192/108;
    }
  }
  .home-hero__inner {
    height: 100%;
  }
  @media screen and (min-width: 768px) {
    .home-hero__movie {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
  }
  @media screen and (max-width: 767px) {
    .home-hero__movie {
      position: relative;
      aspect-ratio: 1;
      line-height: 1;
    }
  }
  .home-hero__movie video {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  @media screen and (min-width: 768px) {
    .home-hero__content {
      position: absolute;
      inset-inline: 0;
      bottom: 60px;
      display: flex;
      justify-content: space-between;
      gap: 50px;
      width: min(100% - 80px, 1680px);
      margin-inline: auto;
      padding-inline: 30px;
      z-index: 1;
    }
  }
  @media screen and (max-width: 767px) {
    .home-hero__content {
      padding-block: 20px 40px;
      background-color: var(--gray07);
    }
  }
  .home-hero__ttl {
    width: clamp(25rem, calc(25rem + 472 * (100vw - 375px) / 1545), 54.5rem);
  }
  @media screen and (max-width: 767px) {
    .home-hero__ttl {
      width: 90%;
      margin-inline: auto;
      margin-bottom: 2em;
    }
  }
  .home-hero__ttl img {
    width: 100%;
  }
  @media (768px <= width <= 1100px) {
    .home-hero__bnr {
      width: 32.6923076923vmin;
    }
  }
  @media screen and (max-width: 767px) {
    .home-hero__bnr {
      width: 80%;
      margin-inline: auto;
    }
  }
  .home-hero__bnr a {
    display: block;
  }
  @media (hover: hover) {
    .home-hero__bnr a {
      transition: transform 0.3s;
    }
    .home-hero__bnr a:hover {
      transform: scale(1.05);
    }
  }
  @media screen and (max-width: 767px) {
    .home-hero__bnr img {
      width: 100%;
    }
  }
  .home-hero__scroll {
    position: absolute;
    left: 22px;
    bottom: 0;
    padding-bottom: 78px;
    font-family: var(--en-sans);
    font-size: clamp(0.75rem, calc(0.75rem + 4 * (100vw - 375px) / 1545), 1rem);
    font-weight: 500;
    letter-spacing: 0.1em;
    writing-mode: vertical-rl;
  }
  .home-hero__scroll::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    display: block;
    width: 1px;
    height: 70px;
    background-color: #fff;
    animation: scroll-line 1.5s cubic-bezier(1, 0, 0, 1) infinite;
  }
  @keyframes scroll-line {
    0% {
      transform: scale(1, 0);
      transform-origin: 0 0;
    }
    50% {
      transform: scale(1, 1);
      transform-origin: 0 0;
    }
    50.1% {
      transform: scale(1, 1);
      transform-origin: 0 100%;
    }
    100% {
      transform: scale(1, 0);
      transform-origin: 0 100%;
    }
  }
  .home-about {
    padding-block: 182px;
    background: url(../../img/home/about-bg.webp) no-repeat center/1920px 100%;
    color: #fff;
  }
  @media (1920px <= width) {
    .home-about {
      background-size: cover;
    }
  }
  @media screen and (min-width: 768px) {
    .home-about {
      min-height: 820px;
    }
  }
  @media screen and (max-width: 767px) {
    .home-about {
      padding-block: 40px;
      background-image: url(../../img/home/about-bg-sp.webp);
      background-size: cover;
    }
  }
  .home-about__inner {
    padding-inline: 30px;
  }
  .home-about__txt-wrap {
    width: min(100%, 480px);
  }
  @media screen and (max-width: 767px) {
    .home-about__txt-wrap .p-ttl__h2 {
      margin-right: -1em;
    }
  }
  .home-about__txt {
    margin-top: 28px;
  }
  .home-about__btn {
    margin-top: 30px;
    margin-left: auto;
  }
  .home-group {
    padding-block: 200px;
    background: url(../../img/home/group-bg.webp) no-repeat center/1920px 100%;
  }
  @media (1920px <= width) {
    .home-group {
      background-size: cover;
    }
  }
  @media screen and (min-width: 768px) {
    .home-group {
      min-height: 1122px;
    }
  }
  @media (width <= 1100px) {
    .home-group {
      padding-block: 100px;
      background: none;
      background-color: var(--gray07);
    }
  }
  @media screen and (max-width: 767px) {
    .home-group {
      padding-block: 40px;
    }
  }
  .home-group__inner {
    display: grid;
    grid-template: "img .. header" "img .. txt" "img .. ...." 2.5em "img .. list" 1fr/47% 50px 1fr;
    align-items: start;
  }
  @media (width <= 1100px) {
    .home-group__inner {
      grid-template: "header" "img" "..." 1em "txt" "..." 1em "list"/100%;
    }
  }
  .home-group__header {
    grid-area: header;
  }
  .home-group__txt {
    grid-area: txt;
  }
  .home-group__logo {
    aspect-ratio: 400/61;
    width: clamp(14.25rem, calc(14.25rem + 172 * (100vw - 375px) / 1545), 25rem);
    height: auto;
    margin-bottom: 20px;
  }
  .home-group__logo img {
    width: 100%;
  }
  .home-group__img {
    grid-area: img;
    align-self: end;
    text-align: center;
  }
  @media (1450px <= width) {
    .home-group__img {
      margin-left: -110px;
    }
  }
  .home-group__list {
    grid-area: list;
  }
  .home-service {
    background: url(../../img/home/service-bg.webp) no-repeat center/cover;
    overflow: clip;
  }
  .home-service__inner {
    width: min(100% - 40px, 1280px);
    margin-inline: auto;
    padding-block: 120px 75px;
  }
  @media screen and (max-width: 767px) {
    .home-service__inner {
      padding-block: 60px;
    }
  }
  .home-service__header {
    position: relative;
    z-index: 2;
    width: min(100%, 880px);
    margin-inline: auto;
  }
  .home-service__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 40px;
    position: relative;
    margin-top: 50px;
  }
  @media screen and (max-width: 767px) {
    .home-service__list {
      flex-direction: column;
    }
  }
  .home-service__item {
    flex: 0 0 min(50% - 40px, 400px);
    display: grid;
    grid-template-rows: auto 1fr;
    gap: 2em;
    position: relative;
    padding-block: 30px 20px;
    padding-inline: 25px;
    background-color: #fff;
    border-radius: 20px;
    overflow: hidden;
    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.16);
  }
  @media screen and (max-width: 767px) {
    .home-service__item {
      flex: 0 0 100%;
      padding-block: 20px;
      padding-inline: 20px;
      border-radius: 10px;
    }
  }
  .home-service__item:nth-child(1) .home-service__content::before {
    content: "01";
  }
  .home-service__item:nth-child(2) .home-service__content::before {
    content: "02";
  }
  .home-service__item:nth-child(3) .home-service__content::before {
    content: "03";
  }
  .home-service__item:nth-child(4) .home-service__content::before {
    content: "04";
  }
  .home-service__item:nth-child(5) .home-service__content::before {
    content: "05";
  }
  .home-service__content {
    position: relative;
    display: grid;
    grid-template-rows: auto 1fr auto;
  }
  .home-service__content::before {
    position: absolute;
    top: -40px;
    left: -30px;
    font-family: var(--en-sans);
    font-size: 9.375rem;
    font-style: italic;
    font-weight: 500;
    line-height: 1;
    color: var(--main);
    opacity: 0.05;
  }
  @media screen and (max-width: 767px) {
    .home-service__content::before {
      font-size: 6.25rem;
    }
  }
  .home-service__ttl {
    margin-bottom: 0.3em;
  }
  .home-service__btn {
    margin-top: 0.5em;
    text-align: right;
  }
  .home-service__img img {
    border-radius: 8px;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .home-works {
    width: calc(100vw - var(--scrollbar-width));
    padding-block: 155px;
    overflow-x: clip;
  }
  @media screen and (max-width: 767px) {
    .home-works {
      padding-block: 75px 35px;
    }
  }
  .home-works__btn {
    margin-top: 50px;
  }
  .home-news {
    padding-block: 100px;
  }
  @media screen and (max-width: 767px) {
    .home-news {
      padding-block: 30px 35px;
    }
  }
  .home-news__btn {
    margin-top: 30px;
  }
  .home-company {
    padding-block: 155px 250px;
  }
  @media screen and (max-width: 767px) {
    .home-company {
      padding-block: 30px 60px;
    }
  }
  @media screen and (min-width: 768px) {
    .home-company__inner {
      display: grid;
      grid-template: "ttl  .. img" "list .. img" 1fr/1fr 45px 46%;
    }
  }
  .home-company__item {
    border-bottom: 1px solid var(--gray04);
  }
  .home-company__item:first-child {
    border-top: 1px solid var(--gray04);
  }
  .home-company__link {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding-block: 15px;
    padding-inline: 5px;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--main);
    text-decoration: none;
  }
  @media screen and (max-width: 767px) {
    .home-company__link {
      padding-block: 11px;
      font-size: 1.125rem;
    }
  }
  @media (hover: hover) {
    .home-company__link {
      background: linear-gradient(to right, var(--main) 50%, transparent 50%) no-repeat left center/0 100%;
      transition: 0.3s;
      transition-property: background-size, color;
    }
    .home-company__link .c-icon__circle-arrow {
      transition: background-color 0.3s;
    }
    .home-company__link .c-icon__circle-arrow::after {
      transition: border-color 0.3s;
    }
    .home-company__link:hover {
      background-size: 200% 100%;
      color: #fff;
    }
    .home-company__link:hover .c-icon__circle-arrow {
      background-color: #fff;
    }
    .home-company__link:hover .c-icon__circle-arrow::after {
      border-color: var(--main);
    }
  }
  .home-company__ttl {
    grid-area: ttl;
  }
  .home-company__list {
    grid-area: list;
  }
  .home-company__img {
    grid-area: img;
  }
  @media screen and (max-width: 767px) {
    .home-company__img {
      margin-top: 23px;
      text-align: center;
    }
  }
  .home-company__img img {
    border-radius: 4px;
  }
  .home-recruit {
    padding-top: 80px;
  }
  @media screen and (max-width: 767px) {
    .home-recruit {
      padding-top: 40px;
    }
  }
  .home-recruit__bnr {
    display: block;
    width: min(100%, 824px);
    margin-inline: auto;
  }
  .home-recruit__bnr a {
    display: block;
  }
  @media (hover: hover) {
    .home-recruit__bnr a {
      transition: transform 0.3s;
    }
    .home-recruit__bnr a:hover {
      transform: scale(1.05);
    }
  }
  .home-recruit__bnr img {
    border-radius: 6px;
  }
}