@charset "UTF-8";
@layer reset, swiper, base;
@layer swiper{

/**
 * Swiper 12.1.4
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * https://swiperjs.com
 *
 * Copyright 2014-2026 Vladimir Kharlampidi
 *
 * Released under the MIT License
 *
 * Released on: April 29, 2026
 */

:root {
  --swiper-theme-color: #007aff;
  /*
  --swiper-preloader-color: var(--swiper-theme-color);
  --swiper-wrapper-transition-timing-function: initial;
  */
}
:host {
  position: relative;
  display: block;
  margin-left: auto;
  margin-right: auto;
  z-index: 1;
}
.swiper {
  margin-left: auto;
  margin-right: auto;
  position: relative;
  overflow: hidden;
  list-style: none;
  padding: 0;
  /* Fix of Webkit flickering */
  z-index: 1;
  display: block;
}
.swiper-vertical > .swiper-wrapper {
  flex-direction: column;
}
.swiper-wrapper {
  position: relative;
  width: 100%;
  height: 100%;
  z-index: 1;
  display: flex;
  transition-property: transform;
  transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);
  box-sizing: content-box;
}
.swiper-android .swiper-slide,
.swiper-ios .swiper-slide,
.swiper-wrapper {
  transform: translate3d(0px, 0, 0);
}
.swiper-horizontal {
  touch-action: pan-y;
}
.swiper-vertical {
  touch-action: pan-x;
}
.swiper-slide {
  flex-shrink: 0;
  width: 100%;
  height: 100%;
  position: relative;
  transition-property: transform;
  display: block;
}
.swiper-slide-invisible-blank {
  visibility: hidden;
}
/* Auto Height */
.swiper-autoheight,
.swiper-autoheight .swiper-slide {
  height: auto;
}
.swiper-autoheight .swiper-wrapper {
  align-items: flex-start;
  transition-property: transform, height;
}
.swiper-backface-hidden .swiper-slide {
  transform: translateZ(0);
  backface-visibility: hidden;
}
/* 3D Effects */
.swiper-3d.swiper-css-mode .swiper-wrapper {
  perspective: 1200px;
}
.swiper-3d .swiper-wrapper {
  transform-style: preserve-3d;
}
.swiper-3d {
  perspective: 1200px;
  .swiper-slide,
  .swiper-cube-shadow {
    transform-style: preserve-3d;
  }
}

/* CSS Mode */
.swiper-css-mode {
  > .swiper-wrapper {
    overflow: auto;
    scrollbar-width: none; /* For Firefox */
    -ms-overflow-style: none; /* For Internet Explorer and Edge */
    &::-webkit-scrollbar {
      display: none;
    }
  }
  > .swiper-wrapper > .swiper-slide {
    scroll-snap-align: start start;
  }
  &.swiper-horizontal {
    > .swiper-wrapper {
      scroll-snap-type: x mandatory;
    }
    > .swiper-wrapper > .swiper-slide:first-child {
      margin-inline-start: var(--swiper-slides-offset-before);
      scroll-margin-inline-start: var(--swiper-slides-offset-before);
    }
    > .swiper-wrapper > .swiper-slide:last-child {
      margin-inline-end: var(--swiper-slides-offset-after);
    }
  }
  &.swiper-vertical {
    > .swiper-wrapper {
      scroll-snap-type: y mandatory;
    }
    > .swiper-wrapper > .swiper-slide:first-child {
      margin-block-start: var(--swiper-slides-offset-before);
      scroll-margin-block-start: var(--swiper-slides-offset-before);
    }
    > .swiper-wrapper > .swiper-slide:last-child {
      margin-block-end: var(--swiper-slides-offset-after);
    }
  }
  &.swiper-free-mode {
    > .swiper-wrapper {
      scroll-snap-type: none;
    }
    > .swiper-wrapper > .swiper-slide {
      scroll-snap-align: none;
    }
  }
  &.swiper-centered {
    > .swiper-wrapper::before {
      content: '';
      flex-shrink: 0;
      order: 9999;
    }
    > .swiper-wrapper > .swiper-slide {
      scroll-snap-align: center center;
      scroll-snap-stop: always;
    }
  }
  &.swiper-centered.swiper-horizontal {
    > .swiper-wrapper > .swiper-slide:first-child {
      margin-inline-start: var(--swiper-centered-offset-before);
    }
    > .swiper-wrapper::before {
      height: 100%;
      min-height: 1px;
      width: var(--swiper-centered-offset-after);
    }
  }
  &.swiper-centered.swiper-vertical {
    > .swiper-wrapper > .swiper-slide:first-child {
      margin-block-start: var(--swiper-centered-offset-before);
    }
    > .swiper-wrapper::before {
      width: 100%;
      min-width: 1px;
      height: var(--swiper-centered-offset-after);
    }
  }
}

/* Slide styles start */
/* 3D Shadows */
.swiper-3d {
  .swiper-slide-shadow,
  .swiper-slide-shadow-left,
  .swiper-slide-shadow-right,
  .swiper-slide-shadow-top,
  .swiper-slide-shadow-bottom,
  .swiper-slide-shadow,
  .swiper-slide-shadow-left,
  .swiper-slide-shadow-right,
  .swiper-slide-shadow-top,
  .swiper-slide-shadow-bottom {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 10;
  }
  .swiper-slide-shadow {
    background: rgba(0, 0, 0, 0.15);
  }
  .swiper-slide-shadow-left {
    background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  }
  .swiper-slide-shadow-right {
    background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  }
  .swiper-slide-shadow-top {
    background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  }
  .swiper-slide-shadow-bottom {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  }
}
.swiper-lazy-preloader {
  width: 42px;
  height: 42px;
  position: absolute;
  left: 50%;
  top: 50%;
  margin-left: -21px;
  margin-top: -21px;
  z-index: 10;
  transform-origin: 50%;
  box-sizing: border-box;
  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
  border-radius: 50%;
  border-top-color: transparent;
}
.swiper:not(.swiper-watch-progress),
.swiper-watch-progress .swiper-slide-visible {
  .swiper-lazy-preloader {
    animation: swiper-preloader-spin 1s infinite linear;
  }
}
.swiper-lazy-preloader-white {
  --swiper-preloader-color: #fff;
}
.swiper-lazy-preloader-black {
  --swiper-preloader-color: #000;
}
@keyframes swiper-preloader-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
/* Slide styles end */
}
@layer swiper{
.swiper-fade {
  &.swiper-free-mode {
    .swiper-slide {
      transition-timing-function: ease-out;
    }
  }
  .swiper-slide {
    pointer-events: none;
    transition-property: opacity;
    .swiper-slide {
      pointer-events: none;
    }
  }
  .swiper-slide-active {
    pointer-events: auto;
    & .swiper-slide-active {
      pointer-events: auto;
    }
  }
}
}
@layer swiper{
:root {
  /*
  --swiper-pagination-color: var(--swiper-theme-color);
  --swiper-pagination-left: auto;
  --swiper-pagination-right: 8px;
  --swiper-pagination-bottom: 8px;
  --swiper-pagination-top: auto;
  --swiper-pagination-fraction-color: inherit;
  --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);
  --swiper-pagination-progressbar-size: 4px;
  --swiper-pagination-bullet-size: 8px;
  --swiper-pagination-bullet-width: 8px;
  --swiper-pagination-bullet-height: 8px;
  --swiper-pagination-bullet-border-radius: 50%;
  --swiper-pagination-bullet-inactive-color: #000;
  --swiper-pagination-bullet-inactive-opacity: 0.2;
  --swiper-pagination-bullet-opacity: 1;
  --swiper-pagination-bullet-horizontal-gap: 4px;
  --swiper-pagination-bullet-vertical-gap: 6px;
  */
}
.swiper-pagination {
  position: absolute;
  text-align: center;
  transition: 300ms opacity;
  transform: translate3d(0, 0, 0);
  z-index: 10;
  &.swiper-pagination-hidden {
    opacity: 0;
  }
  .swiper-pagination-disabled > &,
  &.swiper-pagination-disabled {
    display: none !important;
  }
}
/* Common Styles */
.swiper-pagination-fraction,
.swiper-pagination-custom,
.swiper-horizontal > .swiper-pagination-bullets,
.swiper-pagination-bullets.swiper-pagination-horizontal {
  bottom: var(--swiper-pagination-bottom, 8px);
  top: var(--swiper-pagination-top, auto);
  left: 0;
  width: 100%;
}
/* Bullets */
.swiper-pagination-bullets-dynamic {
  overflow: hidden;
  font-size: 0;
  .swiper-pagination-bullet {
    transform: scale(0.33);
    position: relative;
  }
  .swiper-pagination-bullet-active {
    transform: scale(1);
  }
  .swiper-pagination-bullet-active-main {
    transform: scale(1);
  }
  .swiper-pagination-bullet-active-prev {
    transform: scale(0.66);
  }
  .swiper-pagination-bullet-active-prev-prev {
    transform: scale(0.33);
  }
  .swiper-pagination-bullet-active-next {
    transform: scale(0.66);
  }
  .swiper-pagination-bullet-active-next-next {
    transform: scale(0.33);
  }
}
.swiper-pagination-bullet {
  width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));
  height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));
  display: inline-block;
  border-radius: var(--swiper-pagination-bullet-border-radius, 50%);
  background: var(--swiper-pagination-bullet-inactive-color, #000);
  opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);
  button& {
    border: none;
    margin: 0;
    padding: 0;
    box-shadow: none;
    appearance: none;
  }
  .swiper-pagination-clickable & {
    cursor: pointer;
  }

  &:only-child {
    display: none !important;
  }
}
.swiper-pagination-bullet-active {
  opacity: var(--swiper-pagination-bullet-opacity, 1);
  background: var(--swiper-pagination-color, var(--swiper-theme-color));
}

.swiper-vertical > .swiper-pagination-bullets,
.swiper-pagination-vertical.swiper-pagination-bullets {
  right: var(--swiper-pagination-right, 8px);
  left: var(--swiper-pagination-left, auto);
  top: 50%;
  transform: translate3d(0px, -50%, 0);
  .swiper-pagination-bullet {
    margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;
    display: block;
  }
  &.swiper-pagination-bullets-dynamic {
    top: 50%;
    transform: translateY(-50%);
    width: 8px;
    .swiper-pagination-bullet {
      display: inline-block;
      transition:
        200ms transform,
        200ms top;
    }
  }
}
.swiper-horizontal > .swiper-pagination-bullets,
.swiper-pagination-horizontal.swiper-pagination-bullets {
  .swiper-pagination-bullet {
    margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);
  }
  &.swiper-pagination-bullets-dynamic {
    left: 50%;
    transform: translateX(-50%);
    white-space: nowrap;
    .swiper-pagination-bullet {
      transition:
        200ms transform,
        200ms left;
    }
  }
}
.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
  transition:
    200ms transform,
    200ms right;
}
/* Fraction */
.swiper-pagination-fraction {
  color: var(--swiper-pagination-fraction-color, inherit);
}
/* Progress */
.swiper-pagination-progressbar {
  background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));
  position: absolute;
  .swiper-pagination-progressbar-fill {
    background: var(--swiper-pagination-color, var(--swiper-theme-color));
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    transform: scale(0);
    transform-origin: left top;
  }
  .swiper-rtl & .swiper-pagination-progressbar-fill {
    transform-origin: right top;
  }
  .swiper-horizontal > &,
  &.swiper-pagination-horizontal,
  .swiper-vertical > &.swiper-pagination-progressbar-opposite,
  &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {
    width: 100%;
    height: var(--swiper-pagination-progressbar-size, 4px);
    left: 0;
    top: 0;
  }
  .swiper-vertical > &,
  &.swiper-pagination-vertical,
  .swiper-horizontal > &.swiper-pagination-progressbar-opposite,
  &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {
    width: var(--swiper-pagination-progressbar-size, 4px);
    height: 100%;
    left: 0;
    top: 0;
  }
}
.swiper-pagination-lock {
  display: none;
}
}
:root {
  /* calc */
  --rem: 1rem / 16;
  /* inner */
  --inner-value: 1460;
  --inner: 1460px;
  --padding-pc: 32px;
  --padding-sp: 20px;
  /* font */
  --base-font: "Noto Serif JP", serif;
  --en-font: "Oswald", sans-serif;
  --fw-extralight: 200;
  --fw-light: 300;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
  --fw-extrabold: 800;
  --fw-black: 900;
  /* color */
  --color-black: #000;
  --color-white: #fff;
  --color-text: #18191c;
  --color-border: #b1b1b1;
  --color-muted: #707070;
  --color-light-gray: #d8d8d8;
  --color-main: #272d3d;
  --color-main-dark: #1b2030;
  --color-deep: #2f335a;
  --color-yellow: #fff227;
  --color-gold: #9c974a;
  --color-bg: #18191c;
  --color-bg-ivory: #fcfcfc;
  --color-bg-soft: #eee;
  --color-surface: #fff;
  /* z-index */
  --z-index-header: 100;
  --z-index-hamburger: 101;
  --z-index-outer-before: 99;
  --z-index-drawer: 90;
  /* header */
  --header-height: max(50px, 72 * var(--rem));
}
@media screen and (max-width: 767px) {
  :root {
    --header-height: calc(60 * var(--rem));
  }
}
html {
  scroll-padding-top: var(--header-height);
}
:root:has(body.is-scroll-lock) {
  overflow: hidden;
  scrollbar-gutter: stable;
}
body {
  container-type: inline-size;
  font-family: var(--base-font);
  font-weight: var(--fw-regular);
  font-feature-settings: "pwid";
  line-height: 1.5;
  color: var(--color-text);
  background-color: var(--color-bg);
}
img {
  display: block;
  max-width: 100%;
  height: auto;
}
body.is-scroll-lock {
  overflow: hidden;
}
/* リキッドレイアウト対応 */
@layer base {
  html {
    font-size: 16px;
  }
  @media (width <= 1080px) {
    html {
      font-size: calc(16 / var(--inner-value) * 100cqi);
    }
  }
  @media screen and (max-width: 767px) {
    html {
      font-size: 16px;
    }
  }
  @media (width <= 375px) {
    html {
      font-size: 4.2666666667cqi;
    }
  }
}
.inner {
  width: 100%;
  max-width: calc(var(--inner) + var(--padding-pc) * 2);
  padding-inline: var(--padding-pc);
  margin-inline: auto;
}
@media screen and (max-width: 767px) {
  .inner {
    max-width: 640px;
    padding-inline: var(--padding-sp);
  }
}
.inner[data-size=sm] {
  max-width: calc(var(--inner-sm) + var(--padding-pc) * 2);
}
@media screen and (max-width: 767px) {
  .inner[data-size=sm] {
    max-width: 660px;
  }
}
.outer {
  --scrollbar: calc(100vw - 100cqw);
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr auto;
  grid-template-columns: 100%;
  min-block-size: 100svh;
  isolation: isolate;
}
.outer::before {
  position: fixed;
  inset: 0;
  z-index: var(--z-index-outer-before);
  block-size: var(--header-height);
  content: "";
  background-image: linear-gradient(to bottom, #18191c 0%, rgba(51, 52, 54, 0.74) 37.24%, rgba(93, 93, 94, 0.34) 73.23%, rgba(128, 128, 128, 0) 100%);
  mix-blend-mode: multiply;
}
.outer::after {
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  content: "";
  background-image: linear-gradient(90deg, color-mix(in srgb, var(--color-border) 20%, transparent) 1px, transparent 1px);
  background-repeat: repeat-x;
  background-position: 50% 0;
  background-size: 25.3645833333% 100%;
  opacity: 0.6;
}
@media screen and (max-width: 767px) {
  .outer::after {
    background-size: 22.9333333333% 100%;
  }
}
body:has(.loader) .outer {
  opacity: 0;
}
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-block-size: 3rem;
  padding-block: 0.75rem;
  padding-inline: 1.5rem;
  font-weight: var(--fw-bold);
  line-height: 1.2;
  color: var(--color-white);
  background-color: var(--color-main);
  border: 1px solid var(--color-main);
  border-radius: 0.25rem;
  transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}
@media (any-hover: hover) {
  .button:hover {
    color: var(--color-main);
    background-color: var(--color-white);
  }
}
.feature-item {
  --_img: minmax(0, 633px);
  --_column-gap: minmax(32px, 1fr);
  --_body: minmax(0, 673px);
  display: grid;
  grid-template-areas: "img . body";
  grid-template-columns: var(--_img) var(--_column-gap) var(--_body);
  align-items: center;
  color: var(--color-white);
}
@media screen and (max-width: 767px) {
  .feature-item {
    grid-template-areas: "img" "body";
    grid-template-columns: minmax(0, 1fr);
    gap: 2.5rem;
  }
}
.feature-item__img {
  grid-area: img;
  overflow: clip;
  box-shadow: 0 0 3.75rem rgba(0, 0, 0, 0.3);
  will-change: opacity, filter;
}
@media screen and (max-width: 767px) {
  .feature-item__img {
    box-shadow: 0 0 1.875rem rgba(0, 0, 0, 0.3);
  }
}
.feature-item__img img {
  inline-size: 100%;
  aspect-ratio: 633/500;
  object-fit: cover;
}
@media screen and (max-width: 767px) {
  .feature-item__img img {
    aspect-ratio: 335/255;
  }
}
.feature-item__body {
  display: grid;
  grid-area: body;
  will-change: opacity, filter;
}
@media screen and (max-width: 767px) {
  .feature-item__body {
    gap: 1.375rem;
  }
}
.feature-item__label {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
  font-family: var(--en-font);
  color: var(--color-yellow);
}
.feature-item__label-en {
  position: relative;
  font-size: clamp(12px, round(nearest, calc(12px + (16 - 12) * ((100cqi - 768px) / (1920 - 768))), 1px), 16px);
  font-weight: var(--fw-regular);
  line-height: 1.5;
  letter-spacing: 0.1em;
}
@media screen and (max-width: 767px) {
  .feature-item__label-en {
    bottom: 2px;
    font-size: 1rem;
  }
}
.feature-item__label-num {
  font-size: max(32px, 2.5rem);
  font-weight: var(--fw-regular);
}
@media screen and (max-width: 767px) {
  .feature-item__label-num {
    font-size: 2.5rem;
  }
}
.feature-item__title {
  margin-block-start: 1.125rem;
  font-size: clamp(18px, round(nearest, calc(18px + (26 - 18) * ((100cqi - 768px) / (1920 - 768))), 1px), 26px);
  font-weight: var(--fw-bold);
  line-height: 2.1538461538;
  letter-spacing: 0.012em;
}
@media screen and (max-width: 767px) {
  .feature-item__title {
    margin-block-start: 2px;
    font-size: 1.375rem;
    line-height: 1.9090909091;
    letter-spacing: 0;
  }
}
.feature-item__text {
  margin-block-start: 2.625rem;
  font-size: clamp(12px, round(nearest, calc(12px + (16 - 12) * ((100cqi - 768px) / (1920 - 768))), 1px), 16px);
  line-height: 2.5;
  letter-spacing: 0.012em;
}
@media screen and (max-width: 767px) {
  .feature-item__text {
    margin-block-start: initial;
    font-size: 1rem;
    line-height: 2;
  }
}
/* !------------------------------
* footer *
------------------------------ */
.footer {
  padding-block: 3.125rem 0.75rem;
}
@media screen and (max-width: 767px) {
  .footer {
    padding-block: 2.5rem 1.6875rem;
  }
}
.footer__layout {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: 2.5rem;
  align-items: center;
}
@media screen and (max-width: 767px) {
  .footer__layout {
    grid-template-columns: minmax(0, 1fr);
    gap: 2.5rem;
  }
}
.footer__company {
  display: block flow;
  font-size: max(18px, 1.75rem);
  font-weight: var(--fw-bold);
  line-height: 1.4285714286;
  color: var(--color-white);
  transition: color ease 0.3s, opacity ease 0.3s;
}
@media (any-hover: hover) {
  .footer__company:hover {
    color: var(--color-yellow);
    opacity: 0.8;
  }
}
@media screen and (max-width: 767px) {
  .footer__company {
    font-size: 1.125rem;
    line-height: 1.4444444444;
    letter-spacing: 0.024em;
  }
}
.footer__address {
  margin-block-start: clamp(8px, round(nearest, calc(8px + (16 - 8) * ((100cqi - 375px) / (1920 - 375))), 1px), 16px);
  font-size: max(10px, 0.875rem);
  font-weight: var(--fw-medium);
  line-height: 1.7142857143;
  color: var(--color-white);
  letter-spacing: 0.024em;
  opacity: 0.6;
}
@media screen and (max-width: 767px) {
  .footer__address {
    font-size: 0.75rem;
    letter-spacing: 0;
  }
}
.footer__tel {
  display: flex;
  gap: 0.4375rem;
  align-items: baseline;
  margin-block-start: 7px;
  font-size: max(14px, 1.0625rem);
  font-weight: var(--fw-semibold);
  line-height: 1.4117647059;
  color: var(--color-white);
  letter-spacing: 0.08em;
  transition: color ease 0.3s, opacity ease 0.3s;
}
@media screen and (max-width: 767px) {
  .footer__tel {
    gap: 5px;
    font-size: 1.0625rem;
  }
}
@media (any-hover: hover) {
  .footer__tel:hover {
    color: var(--color-yellow);
    opacity: 0.8;
  }
}
.footer__tel span {
  font-size: 0.8235294118em;
  font-weight: var(--fw-regular);
  line-height: 1.7142857143;
  letter-spacing: 0;
}
.footer__nav {
  --_column-gap: min(40 / 1920 * 100vw, 40px);
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem var(--_column-gap);
  align-items: center;
  margin-inline-start: auto;
}
@media screen and (max-width: 767px) {
  .footer__nav {
    --_column-gap: calc(20 * var(--rem));
    row-gap: 0.875rem;
    inline-size: 93.1343283582%;
    margin-inline-start: initial;
  }
}
.footer__nav-item {
  flex-shrink: 0;
}
.footer__nav-link {
  position: relative;
  display: block grid;
  font-size: max(12px, 0.9375rem);
  font-weight: var(--fw-semibold);
  line-height: 1.6;
  color: var(--color-white);
  letter-spacing: 0.024em;
  transition: color ease 0.3s;
}
@media screen and (max-width: 767px) {
  .footer__nav-link {
    font-size: 0.875rem;
    line-height: 1.4285714286;
    letter-spacing: 0;
  }
}
@media (any-hover: hover) {
  .footer__nav-link:hover {
    color: var(--color-yellow);
  }
}
.footer__nav-link::before {
  position: absolute;
  inset: calc(var(--_column-gap) / 2 * -1);
  content: "";
}
.footer__nav-link::after {
  inline-size: 100%;
  block-size: 1px;
  content: "";
  background-color: currentcolor;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform ease 0.3s;
}
@media (any-hover: hover) {
  .footer__nav-link:hover::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
}
.footer__copyright {
  margin-block-start: 2.625rem;
  text-align: center;
}
@media screen and (max-width: 767px) {
  .footer__copyright {
    margin-block-start: 2.5rem;
  }
}
.footer__copyright small {
  font-size: max(12px, 0.8125rem);
  font-weight: var(--fw-regular);
  line-height: 1.5833333333;
  color: var(--color-white);
  letter-spacing: 0.06em;
  opacity: 0.8;
}
@media screen and (max-width: 767px) {
  .footer__copyright small {
    font-size: 0.75rem;
    line-height: 1.4166666667;
    letter-spacing: 0;
  }
}
/* !------------------------------
* header *
------------------------------ */
.header {
  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: var(--z-index-header);
  block-size: var(--header-height);
}
.header__inner {
  position: relative;
  z-index: var(--z-index-hamburger);
  display: flex;
  gap: 2.5rem;
  align-items: center;
  justify-content: space-between;
  block-size: 100%;
  container-type: inline-size;
}
@media screen and (max-width: 767px) {
  .header__inner {
    padding-inline: 0.875rem;
  }
}
.header__logo {
  display: grid;
  align-items: center;
  block-size: 100%;
}
.header__logo-link {
  display: block grid;
  place-items: center;
  block-size: 100%;
  padding-inline: min(1.6666666667cqi, 2rem);
  font-size: clamp(18px, round(nearest, calc(18px + (28 - 18) * ((100cqi - 768px) / (1920 - 768))), 1px), 28px);
  font-weight: var(--fw-black);
  line-height: 1;
  color: var(--color-white);
  letter-spacing: 0.036em;
  transition: color ease 0.3s, opacity ease 0.3s;
}
@media screen and (max-width: 767px) {
  .header__logo-link {
    padding: 1.125rem 0;
    font-size: 1rem;
    line-height: 1.5;
    letter-spacing: 0.024em;
  }
}
@media (any-hover: hover) {
  .header__logo-link:hover {
    color: var(--color-yellow);
    opacity: 0.8;
  }
}
.header__nav {
  display: flex;
  gap: min(2.1875cqi, 2.625rem);
  block-size: 100%;
}
@media screen and (max-width: 767px) {
  .header__nav {
    display: none;
  }
}
.header__nav-list {
  display: flex;
  gap: min(1.8229166667cqi, 2.1875rem);
}
.header__nav-item {
  display: block grid;
  flex-shrink: 0;
  align-items: stretch;
}
.header__nav-link {
  align-content: center;
  font-size: clamp(13px, round(nearest, calc(13px + (18 - 13) * ((100cqi - 768px) / (1920 - 768))), 1px), 18px);
  font-weight: var(--fw-semibold);
  line-height: 1.3333333333;
  color: var(--color-white);
  letter-spacing: 0.02em;
  transition: color ease 0.3s, opacity ease 0.3s;
}
.header__nav-link::after {
  position: relative;
  inset-block-end: -4px;
  display: block flow;
  inline-size: 100%;
  block-size: 1px;
  content: "";
  background-color: currentcolor;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform ease 0.3s;
}
@media (any-hover: hover) {
  .header__nav-link:hover {
    color: var(--color-yellow);
  }
  .header__nav-link:hover::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
}
.header__nav-button {
  position: relative;
  display: flex;
  gap: 3px;
  align-items: center;
  padding: 0.8em min(1.8229166667cqi, 2.1875rem);
  font-size: clamp(12px, round(nearest, calc(12px + (15 - 12) * ((100cqi - 768px) / (1920 - 768))), 1px), 15px);
  font-weight: var(--fw-bold);
  line-height: 1.6;
  color: var(--color-main);
  background-color: var(--color-yellow);
}
@media (any-hover: hover) {
  .header__nav-button:hover::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
}
.header__nav-button::before {
  position: relative;
  z-index: 1;
  inline-size: 0.8666666667em;
  aspect-ratio: 13/16;
  content: "";
  background-color: currentcolor;
  mask-image: url("../images/icon_phone.svg");
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}
.header__nav-button::after {
  position: absolute;
  inset: 0;
  content: "";
  background-color: var(--color-yellow);
  filter: saturate(2);
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform ease 0.3s;
}
.header__nav-button span {
  position: relative;
  z-index: 1;
}
.header__hamburger {
  --_line-rotate: 45deg;
  display: none;
}
@media screen and (max-width: 767px) {
  .header__hamburger {
    position: relative;
    display: block grid;
    flex-shrink: 0;
    place-items: center;
    inline-size: 1.9375rem;
    aspect-ratio: 1;
    padding: 0.375rem;
  }
}
.header__hamburger-line {
  position: relative;
  inline-size: 100%;
  block-size: 1px;
  background-color: var(--color-white);
  transition: background-color ease 0.3s;
}
.header__hamburger-line::before,
.header__hamburger-line::after {
  position: absolute;
  display: block flow;
  inline-size: 100%;
  block-size: 1px;
  content: "";
  background-color: var(--color-white);
  transform-origin: center;
  transition: rotate ease 0.3s, inset-block-start ease 0.3s;
}
.header__hamburger-line::before {
  inset-block-start: -0.375rem;
}
.header__hamburger-line::after {
  inset-block-start: 0.375rem;
}
.header__hamburger[aria-expanded=true] .header__hamburger-line::before {
  inset-block-start: 0;
  rotate: var(--_line-rotate);
}
.header__hamburger[aria-expanded=true] .header__hamburger-line {
  background-color: transparent;
}
.header__hamburger[aria-expanded=true] .header__hamburger-line::after {
  inset-block-start: 0;
  rotate: calc(var(--_line-rotate) * -1);
}
/* !------------------------------
* drawer *
------------------------------ */
.drawer {
  display: none;
}
@media screen and (max-width: 767px) {
  .drawer {
    position: fixed;
    inset: 0;
    z-index: var(--z-index-drawer);
    display: block flow;
    visibility: hidden;
    min-block-size: 100svh;
    padding-block: 6.25rem 2.5rem;
    overflow-y: auto;
    background-color: var(--color-bg);
    opacity: 0;
    transition: opacity ease 0.3s, visibility ease 0.3s;
  }
}
@media screen and (max-width: 767px) {
  .drawer.is-open {
    visibility: visible;
    opacity: 1;
  }
}
.drawer__inner {
  --padding-sp: 30px;
}
.drawer__list {
  --_border: 1px solid rgb(255 255 255 / 20%);
  border-block-start: var(--_border);
}
.drawer__item {
  border-block-end: var(--_border);
}
.drawer__link {
  display: block grid;
  padding-block: 1.25rem;
  font-size: 1.125rem;
  font-weight: var(--fw-semibold);
  line-height: 1.3333333333;
  color: var(--color-white);
  letter-spacing: 0.02em;
}
.drawer__contact {
  display: block flex;
  gap: 3px;
  align-items: center;
  justify-content: center;
  padding: 1.5625rem;
  margin-block-start: 2.5rem;
  font-size: 0.9375rem;
  font-weight: var(--fw-semibold);
  line-height: 1.6;
  color: var(--color-main);
  background-color: var(--color-yellow);
}
.drawer__contact::before {
  position: relative;
  inset-block-start: 1px;
  flex-shrink: 0;
  inline-size: 0.8666666667em;
  aspect-ratio: 13/16;
  content: "";
  background-color: currentcolor;
  mask-image: url("../images/icon_phone.svg");
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}
/* !------------------------------
* hero *
------------------------------ */
.hero {
  /* row */
  --_row-start: calc(100 * var(--rem));
  --_row-inner: 1fr;
  --_row-end: calc(60 * var(--rem));
  /* column */
  --_outer-start: minmax(0, calc(47 * var(--rem)));
  --_inner: minmax(0, 1fr);
  --_outer-end: minmax(0, calc(50 * var(--rem)));
  position: relative;
  z-index: 2;
  display: block grid;
  grid-template-rows: [row-start] var(--_row-start) [row-inner-start] var(--_row-inner) [row-inner-end] var(--_row-end) [row-end];
  grid-template-columns: [col-start] var(--_outer-start) [col-inner-start] var(--_inner) [col-inner-end] var(--_outer-end) [col-end];
  place-items: end start;
  block-size: max(600px, 100svh);
  overflow: clip;
}
@media screen and (max-width: 767px) {
  .hero {
    /* row */
    --_row-start: calc(90 * var(--rem));
    --_row-inner: 1fr;
    --_row-end: calc(30 * var(--rem));
    /* column */
    --_outer-start: minmax(0, calc(12 / 375 * 100%));
    --_inner: minmax(0, 1fr);
    --_outer-end: auto;
  }
}
.hero__slider {
  grid-area: row-start/col-start/row-end/col-end;
  inline-size: 100%;
  block-size: 100%;
}
.hero__slider picture {
  block-size: 100%;
}
.hero__slide img {
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
  scale: 1.2;
}
.hero__slider:not(.swiper-initialized) .hero__slide:first-child img,
.hero__slide.is-zooming img {
  animation: hero-zoom 6s linear forwards;
}
@keyframes hero-zoom {
  from {
    scale: 1.1;
  }
  to {
    scale: 1;
  }
}
.hero__content {
  z-index: 1;
  grid-area: row-inner-start/col-inner-start/row-inner-end/col-inner-end;
  inline-size: 100%;
  container-type: inline-size;
}
.hero__copy {
  color: var(--color-white);
}
@media screen and (max-width: 767px) {
  .hero__copy {
    inset-inline: var(--padding-sp);
    inline-size: auto;
  }
}
.hero__copy-main {
  font-size: clamp(22px, round(nearest, calc(22px + (40 - 22) * ((100cqi - 375px) / (1823 - 375))), 1px), 40px);
  font-weight: var(--fw-semibold);
  line-height: 1;
  letter-spacing: 0.06em;
}
@media screen and (max-width: 767px) {
  .hero__copy-main {
    letter-spacing: 0;
  }
}
.js-hero-copy-main span {
  display: inline flow-root;
  opacity: 0;
  transform: translateY(20%);
}
.js-hero-copy-sub,
.js-hero-copy-accent {
  clip-path: inset(110% 0 -10% 0);
}
.hero__copy-sub {
  margin-block-start: 1.625rem;
  font-family: var(--en-font);
  font-size: clamp(36px, round(nearest, calc(36px + (130 - 36) * ((100cqi - 346px) / (1823 - 346))), 1px), 130px);
  font-weight: var(--fw-extralight);
  line-height: 1.2307692308;
  letter-spacing: 0.013em;
}
@media screen and (max-width: 767px) {
  .hero__copy-sub {
    margin-block-start: 0.625rem;
    line-height: 1.2;
    letter-spacing: 0;
  }
}
.hero__copy-accent {
  display: inline flow-root;
  font-style: normal;
  font-weight: var(--fw-semibold);
  color: var(--color-yellow);
  letter-spacing: 0.013em;
}
@media screen and (max-width: 767px) {
  .hero__copy-accent {
    letter-spacing: 0;
  }
}
.hero__copy-accent:nth-child(1 of .hero__copy-accent) {
  margin-inline-end: 0.5625rem;
}
@media screen and (max-width: 767px) {
  .hero__copy-accent:nth-child(1 of .hero__copy-accent) {
    margin-inline-end: 0.125rem;
  }
}
.hero__copy-accent:nth-child(2 of .hero__copy-accent) {
  display: inline flow-root;
  margin-inline-start: 0.25rem;
}
@media screen and (max-width: 767px) {
  .hero__copy-accent:nth-child(2 of .hero__copy-accent) {
    margin-inline-start: 0.125rem;
  }
}
.hero__pagination {
  display: block flex;
  gap: 0.875rem;
  padding-inline-start: 0.875rem;
  margin-block-start: 2.5rem;
}
@media screen and (max-width: 767px) {
  .hero__pagination {
    gap: 6px;
    padding-inline-start: initial;
    margin-block-start: 1.5rem;
  }
}
@scope (.hero__pagination) {
  .swiper-pagination-bullet {
    position: relative;
    inline-size: clamp(50px, round(nearest, calc(50px + (150 - 50) * ((100cqi - 346px) / (1823 - 346))), 1px), 150px);
    block-size: 3px;
    margin: initial;
    background-color: var(--color-white);
    border-radius: 0;
    opacity: 0.4;
    transition: opacity ease 0.3s;
  }
  @media (any-hover: hover) {
    .swiper-pagination-bullet:hover {
      opacity: 0.8;
    }
  }
  .swiper-pagination-bullet::before {
    position: absolute;
    inset: -0.625rem 0;
    content: "";
  }
  .swiper-pagination-bullet-active {
    opacity: 1;
  }
}
.hero__scroll {
  --_scroll-size: calc(124 * var(--rem));
  --_scroll-dot: 7px;
  --_scroll-position: 3px;
  --_scroll-duration: 3.8s;
  position: relative;
  z-index: 1;
  display: grid;
  grid-area: row-inner-start/col-inner-end/row-end/col-end;
  grid-template: "text" "line";
  gap: 0.5rem;
  justify-items: center;
  font-family: var(--en-font);
  font-size: clamp(12px, round(nearest, calc(12px + (18 - 12) * ((100cqi - 375px) / (1920 - 375))), 1px), 18px);
  font-weight: var(--fw-extralight);
  line-height: 1.4444444444;
  color: var(--color-white);
  letter-spacing: 0.01em;
}
@media screen and (max-width: 767px) {
  .hero__scroll {
    --_scroll-position: 1px;
    --_scroll-duration: 3.4s;
    grid-area: row-start/col-inner-end/row-end/col-end;
    align-self: center;
    line-height: 1.4166666667;
  }
}
.js-hero-opening-header,
.js-hero-opening-pagination,
.js-hero-opening-scroll {
  visibility: hidden;
  opacity: 0;
}
.hero__scroll span {
  grid-area: text;
  writing-mode: vertical-rl;
}
.hero__scroll::before {
  position: relative;
  inset-inline-end: var(--_scroll-position);
  grid-area: line;
  inline-size: 1px;
  block-size: var(--_scroll-size);
  content: "";
  background-color: var(--color-white);
}
.hero__scroll::after {
  position: relative;
  inset-inline-end: var(--_scroll-position);
  grid-area: line;
  inline-size: var(--_scroll-dot);
  aspect-ratio: 1;
  content: "";
  background-color: var(--color-yellow);
  border-radius: 50%;
  animation: scroll-down var(--_scroll-duration) ease-out infinite;
}
@keyframes scroll-down {
  0% {
    opacity: 0;
    transform: translateY(0);
  }
  20%, 80% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(calc(var(--_scroll-size) - var(--_scroll-dot) / 1.5));
  }
}
/* !------------------------------
* about *
------------------------------ */
.about {
  padding-block-start: 9.75rem;
  overflow-x: clip;
  background-image: url("../images/bg_about.avif");
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}
@media screen and (max-width: 767px) {
  .about {
    padding-block: 4.875rem 4.5rem;
    background-image: url("../images/bg_about-sp.avif");
  }
}
.about__inner {
  position: relative;
  z-index: 2;
}
.about__layout {
  /* row */
  --_row1: minmax(0, 592fr);
  --_row2: minmax(0, 124fr);
  --_row3: minmax(0, 200fr);
  --_row4: minmax(0, 166fr);
  --_row5: minmax(0, min(517 / 1920 * 100vw, 517px));
  /* column */
  --_content: minmax(390px, 652fr);
  --_img3-offset: minmax(0, 161fr);
  --_content-overlap: minmax(32px, 161fr);
  --_img1: minmax(240px, 487fr);
  display: grid;
  grid-template-rows: [row-1 row-start] var(--_row1) [row-2 content-row-end] var(--_row2) [row-3 gap-row-end] var(--_row3) [row-4 img1-row-end] var(--_row4) [row-5 img2-row-end img3-row-start] var(--_row5) [row-6 row-end];
  grid-template-columns: [col-1 inner-start content-start img2-start] var(--_content) [col-2 img3-start] var(--_img3-offset) [col-3 content-end] var(--_content-overlap) [col-4 img1-start] var(--_img1) [col-5 inner-end];
  align-items: start;
}
@media screen and (max-width: 767px) {
  .about__layout {
    /* row */
    --_row1: fit-content(calc(532 * var(--rem)));
    --_row2: minmax(0, 187fr);
    --_row3: minmax(0, 256fr);
    --_row4: minmax(0, 165fr);
    /* column */
    --_column1: minmax(0, 122fr);
    --_column2: minmax(0, 56fr);
    --_column3: minmax(0, 150fr);
    grid-template-rows: [row-start] var(--_row1) [content-row-end] var(--_row2) [gap-row-end] var(--_row3) [img2-row-end] var(--_row4) [row-end];
    grid-template-columns: [inner-start] var(--_column1) [center-start] var(--_column2) [center-end] var(--_column3) [inner-end];
  }
}
.about__content {
  display: grid;
  grid-area: row-start/content-start/content-row-end/content-end;
  gap: clamp(32px, round(nearest, calc(32px + (64 - 32) * ((100cqi - 375px) / (1920 - 375))), 1px), 64px);
  padding-block-start: 6.125rem;
}
@media screen and (max-width: 767px) {
  .about__content {
    grid-area: row-start/inner-start/content-row-end/inner-end;
    align-self: start;
    padding-block: 0 2rem;
  }
}
.about__text {
  font-size: clamp(14px, round(nearest, calc(14px + (22 - 14) * ((100cqi - 768px) / (1920 - 768))), 1px), 22px);
  font-weight: var(--fw-semibold);
  line-height: 2.5454545455;
  color: var(--color-white);
  letter-spacing: 0.012em;
}
@media screen and (max-width: 767px) {
  .about__text {
    font-size: 1.125rem;
    line-height: 2.2222222222;
  }
}
.about__img {
  --_parallax-frame-offset: 24px;
  --_parallax-image-offset: 6px;
  position: relative;
  aspect-ratio: var(--_aspect-ratio);
  overflow: hidden;
  box-shadow: 0 0 3.75rem rgba(0, 0, 0, 0.3);
}
.about__img[data-index="1"] {
  --_aspect-ratio: 487 / 930;
  --_parallax-frame-offset: 56px;
  --_parallax-image-offset: 38px;
  grid-area: row-1/col-4/row-4/col-5;
}
@media screen and (max-width: 767px) {
  .about__img[data-index="1"] {
    --_parallax-frame-offset: 48px;
    --_parallax-image-offset: 26px;
    grid-area: content-row-end/center-start/img2-row-end/inner-end;
  }
}
.about__img[data-index="2"] {
  --_aspect-ratio: 487 / 512;
  --_parallax-frame-offset: 72px;
  --_parallax-image-offset: 48px;
  grid-area: row-3/col-1/row-6/col-2;
  inline-size: 74.6932515337%;
}
@media screen and (max-width: 767px) {
  .about__img[data-index="2"] {
    --_parallax-frame-offset: 36px;
    --_parallax-image-offset: 22px;
    grid-area: gap-row-end/inner-start/img2-row-end/center-end;
    inline-size: 100%;
  }
}
.about__img[data-index="3"] {
  --_aspect-ratio: 974 / 545;
  --_parallax-frame-offset: 64px;
  --_parallax-image-offset: 42px;
  grid-area: row-5/col-2/row-6/col-5;
  inline-size: clamp(100% + var(--padding-pc), 50.7291666667vw, 60.875rem);
}
@media screen and (max-width: 767px) {
  .about__img[data-index="3"] {
    --_aspect-ratio: 296 / 166;
    --_parallax-frame-offset: 30px;
    --_parallax-image-offset: 18px;
    grid-area: img2-row-end/inner-start/row-end/inner-end;
    justify-self: end;
    inline-size: 88.3582089552%;
  }
}
.about__img img {
  position: absolute;
  inset-block-start: calc(var(--_parallax-image-offset) * -1);
  inset-inline-start: 0;
  inline-size: 100%;
  block-size: calc(100% + var(--_parallax-image-offset) * 2);
  object-fit: cover;
}
/* !------------------------------
* business *
------------------------------ */
.business {
  padding-block: 9.125rem 9.375rem;
  background-color: var(--color-bg-ivory);
}
@media screen and (max-width: 767px) {
  .business {
    padding-block: 2.5rem;
  }
}
.business__inner {
  --_img: minmax(0, 636px);
  --_column-gap: minmax(32px, 1fr);
  --_content: minmax(0, 673px);
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-areas: "heading heading heading" "img . content";
  grid-template-columns: var(--_img) var(--_column-gap) var(--_content);
  row-gap: 5rem;
  align-items: center;
}
@media screen and (max-width: 767px) {
  .business__inner {
    grid-template-areas: "heading" "img" "content";
    grid-template-columns: minmax(0, 1fr);
    row-gap: initial;
  }
}
.business__heading {
  grid-area: heading;
}
.business__img {
  grid-area: img;
  box-shadow: 0 0 3.75rem rgba(0, 0, 0, 0.3);
}
@media screen and (max-width: 767px) {
  .business__img {
    margin-block-start: 2.3125rem;
    box-shadow: 0 0 1.875rem rgba(0, 0, 0, 0.3);
  }
}
.business__img img {
  inline-size: 100%;
  aspect-ratio: 636/600;
  object-fit: cover;
}
@media screen and (max-width: 767px) {
  .business__img img {
    aspect-ratio: 335/267;
  }
}
.business__content {
  display: grid;
  grid-area: content;
  gap: clamp(18px, round(nearest, calc(18px + (45 - 18) * ((100cqi - 375px) / (1920 - 375))), 1px), 45px);
  padding-block: 2.5rem 7.5rem;
}
@media screen and (max-width: 767px) {
  .business__content {
    padding-block: initial;
    margin-block-start: 2.5rem;
  }
}
.business__title {
  font-size: clamp(18px, round(nearest, calc(18px + (26 - 18) * ((100cqi - 768px) / (1920 - 768))), 1px), 26px);
  font-weight: var(--fw-bold);
  line-height: 1.4230769231;
  letter-spacing: 0.012em;
}
@media screen and (max-width: 767px) {
  .business__title {
    font-size: 1.5rem;
    line-height: 1.4583333333;
  }
}
.business__text {
  font-size: clamp(14px, round(nearest, calc(14px + (16 - 14) * ((100cqi - 768px) / (1920 - 768))), 1px), 16px);
  font-weight: var(--fw-semibold);
  line-height: 2.5;
  letter-spacing: 0.012em;
}
@media screen and (max-width: 767px) {
  .business__text {
    font-size: 1rem;
    line-height: 2;
  }
}
/* !------------------------------
* features *
------------------------------ */
.features {
  --features-scroll-size: 500svh;
  position: relative;
  z-index: 2;
  display: block;
  padding-block: 7.5rem;
  color: var(--color-white);
}
@media screen and (max-width: 767px) {
  .features {
    padding-block: 2.5rem;
  }
}
.features[data-features-animation=animated] {
  block-size: var(--features-scroll-size);
}
.features[data-features-animation=animated] .features__wrapper {
  position: sticky;
  inset-block-start: 0;
  min-block-size: 100svh;
}
.features__inner {
  --_outer: minmax(40px, 1fr);
  --_inner: minmax(0, 1460px);
  display: grid;
  grid-template-areas: ". heading ." "pagination items .";
  grid-template-columns: var(--_outer) var(--_inner) var(--_outer);
  row-gap: 5rem;
  align-content: center;
  min-block-size: 100svh;
}
@media screen and (max-width: 767px) {
  .features__inner {
    --_outer: minmax(var(--padding-sp), 1fr);
    --_inner: minmax(0, 600px);
    grid-template-areas: ". heading ." ". items .";
    row-gap: 2.5rem;
    min-block-size: initial;
  }
}
.features__heading {
  grid-area: heading;
}
.features__pagination {
  display: grid;
  grid-area: pagination;
  gap: 0.875rem;
  place-content: center;
  justify-self: start;
  padding-inline: 40.8695652174%;
}
@media screen and (max-width: 767px) {
  .features__pagination {
    display: none;
  }
}
.features__pagination span {
  inline-size: 3px;
  block-size: 3.75rem;
  background-color: var(--color-white);
  opacity: 0.4;
  transition: opacity ease 0.3s;
}
.features__pagination span.is-current {
  opacity: 1;
}
.features__items {
  display: grid;
  grid-area: items;
  grid-template: "feature";
}
.features__items > * {
  grid-area: feature;
}
.features[data-features-animation=stacked] .features__items {
  display: grid;
  grid-template: none;
  gap: 7.5rem;
}
@media screen and (max-width: 767px) {
  .features[data-features-animation=stacked] .features__items {
    gap: 6.25rem;
  }
}
.features[data-features-animation=stacked] .features__items > * {
  grid-area: auto;
}
/* !------------------------------
* works *
------------------------------ */
.works {
  position: relative;
  z-index: 2;
  padding-block: 8.125rem 7rem;
  background-color: #eee;
}
@media screen and (max-width: 767px) {
  .works {
    padding-block: 2.5rem;
  }
}
.works__inner {
  --_content: minmax(320px, 497fr);
  --_column-gap: minmax(0, 290fr);
  --_list: minmax(360px, 673fr);
  display: block grid;
  grid-template-areas: "body . list";
  grid-template-columns: var(--_content) var(--_column-gap) var(--_list);
  align-items: start;
}
@media screen and (max-width: 767px) {
  .works__inner {
    grid-template-areas: "body" "list";
    grid-template-columns: minmax(0, 1fr);
    gap: 2.5rem;
  }
}
.works__body {
  display: block grid;
  grid-area: body;
  gap: clamp(32px, round(nearest, calc(32px + (48 - 32) * ((100vw - 375px) / (1920 - 375))), 1px), 48px);
  container-name: works-body;
  container-type: inline-size;
}
.works__text {
  font-size: clamp(14px, round(nearest, calc(14px + (16 - 14) * ((100cqi - 335px) / (497 - 335))), 1px), 16px);
  font-weight: var(--fw-semibold);
  line-height: 2.5;
  letter-spacing: 0.012em;
}
@media screen and (max-width: 767px) {
  .works__text {
    font-size: 1rem;
    line-height: 2;
  }
}
.works__list {
  --_color-border: color-mix(in srgb, var(--color-border) 40%, transparent);
  --_border: 1px solid var(--_color-border);
  display: block grid;
  grid-area: list;
  grid-template-columns: max-content minmax(0, 1fr);
  column-gap: 4.375rem;
  container-name: works-list;
  container-type: inline-size;
  border-block-start: var(--_border);
}
@media screen and (max-width: 767px) {
  .works__list {
    grid-template-columns: minmax(0, 1fr);
  }
}
.works__item {
  display: block grid;
  grid-template-columns: subgrid;
  grid-column: span 2;
  align-items: center;
  padding-block: 0.9375rem;
  border-block-end: var(--_border);
}
@media screen and (max-width: 767px) {
  .works__item {
    grid-column: span 1;
    gap: 0.9375rem;
    padding-block: 1.125rem;
  }
}
:is(.works__client, .works__title) {
  font-size: clamp(14px, round(nearest, calc(14px + (18 - 14) * ((100cqi - 345px) / (673 - 345))), 1px), 18px);
  font-weight: var(--fw-semibold);
  line-height: 1.4444444444;
  letter-spacing: 0;
}
@media screen and (max-width: 767px) {
  :is(.works__client, .works__title) {
    font-size: 1rem;
    line-height: 1.5;
  }
}
/* !------------------------------
* company *
------------------------------ */
.company {
  position: relative;
  z-index: 2;
  padding-block: 7.5rem 5.625rem;
  background-color: var(--color-white);
}
@media screen and (max-width: 767px) {
  .company {
    padding-block: 2.5rem;
  }
}
.company__inner {
  display: block grid;
  grid-template-columns: max-content minmax(0, 1020px);
  gap: clamp(24px, round(nearest, calc(24px + (120 - 24) * ((100cqi - 375px) / (1920 - 375))), 1px), 120px);
  justify-content: space-between;
}
@media screen and (max-width: 767px) {
  .company__inner {
    grid-template-columns: minmax(0, 1fr);
  }
}
.company__heading {
  padding-top: 1.5625rem;
}
@media screen and (max-width: 767px) {
  .company__heading {
    padding-top: initial;
  }
}
.company__list {
  --_color-border: color-mix(in srgb, var(--color-border) 40%, transparent);
  --_border: 1px solid var(--_color-border);
  display: block grid;
  grid-template-columns: minmax(8em, 1fr) 73.5294117647%;
  column-gap: 4.375rem;
  border-block-start: var(--_border);
}
@media screen and (max-width: 767px) {
  .company__list {
    grid-template-columns: minmax(0, 1fr);
  }
}
.company__item {
  display: block grid;
  grid-template-columns: subgrid;
  grid-column: span 2;
  padding-block: 0.9375rem;
  border-block-end: var(--_border);
}
@media screen and (max-width: 767px) {
  .company__item {
    grid-column: span 1;
    padding-block: 1.125rem;
  }
}
:is(.company__term, .company__desc-text) {
  font-size: clamp(14px, round(nearest, calc(14px + (18 - 14) * ((100cqi - 768px) / (1920 - 768))), 1px), 18px);
  font-weight: var(--fw-semibold);
  line-height: 1.4444444444;
}
@media screen and (max-width: 767px) {
  :is(.company__term, .company__desc-text) {
    font-size: 1rem;
    line-height: 1.5;
  }
}
@media screen and (max-width: 767px) {
  .company__desc {
    margin-block-start: 0.9375rem;
  }
}
.company__desc-map {
  margin-block-start: 1.5625rem;
}
@media screen and (max-width: 767px) {
  .company__desc-map {
    margin-block-start: 0.9375rem;
  }
}
.company__desc-map iframe {
  inline-size: 100%;
  block-size: 100%;
  aspect-ratio: 749/380;
  border: 0;
}
.company__desc-button {
  --_base-color: #1a3d9c;
  display: block flex;
  gap: 0.5rem;
  align-items: center;
  inline-size: fit-content;
  padding: 0.3125rem 1.4285714286em;
  margin-block-start: 10px;
  font-size: max(14px, 0.875rem);
  font-weight: var(--fw-bold);
  line-height: 1.4285714286;
  color: var(--_base-color);
  background-color: var(--color-white);
  border: 1px solid var(--_base-color);
  border-radius: calc(infinity * 1px);
  transition: color ease 0.3s, background-color ease 0.3s;
}
@media screen and (max-width: 767px) {
  .company__desc-button {
    margin-block-start: 0.875rem;
  }
}
.company__desc-button::before {
  inline-size: 1em;
  aspect-ratio: 14/21;
  content: "";
  background-color: var(--color-main);
  mask-image: url("../images/icon_pin.svg");
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
  transition: background-color ease 0.3s;
}
.company__desc-button span {
  text-box: trim-both cap alphabetic;
  letter-spacing: 0.016em;
}
@media (any-hover: hover) {
  .company__desc-button:hover {
    color: var(--color-white);
    background-color: var(--_base-color);
  }
  .company__desc-button:hover::before {
    background-color: var(--color-white);
  }
}
/* !------------------------------
* contact *
------------------------------ */
.contact {
  position: relative;
  z-index: 2;
  display: grid;
  align-items: center;
  min-block-size: 31.25rem;
  padding-block: 5rem 4.375rem;
  color: var(--color-white);
  background-image: url("../images/bg_contact.avif");
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}
@media screen and (max-width: 767px) {
  .contact {
    min-block-size: initial;
    padding-block: 2.5rem;
    background-image: url("../images/bg_contact-sp.avif");
    background-position-y: top;
    background-size: 100% auto;
  }
}
.contact::before {
  position: absolute;
  inset: 0;
  content: "";
  background-color: var(--color-main);
  opacity: 0.89;
}
.contact__inner {
  --inner: 1340px;
  position: relative;
}
.contact__layout {
  --_start: minmax(0, 1fr);
  --_center: minmax(0, 538px);
  --_end: minmax(0, 670px);
  display: grid;
  grid-template-areas: ". body info";
  grid-template-columns: var(--_start) var(--_center) var(--_end);
  align-items: center;
}
@media screen and (max-width: 767px) {
  .contact__layout {
    grid-template-areas: "body" "info";
    grid-template-columns: minmax(0, 1fr);
  }
}
.contact__body {
  --_side: minmax(16px, 1fr);
  display: grid;
  grid-area: body;
  grid-template-columns: var(--_side) minmax(0, 358px) var(--_side);
  row-gap: 0.625rem;
  padding-block-start: 0.75rem;
}
.contact__body > * {
  grid-column: 2;
}
@media screen and (max-width: 767px) {
  .contact__body {
    grid-template-columns: minmax(0, 470px);
    gap: 1.5625rem;
    justify-content: center;
    padding-block: 0 1.5625rem;
  }
  .contact__body > * {
    grid-column: initial;
  }
}
.contact__text {
  font-size: clamp(12px, round(nearest, calc(12px + (16 - 12) * ((100cqi - 768px) / (1920 - 768))), 1px), 16px);
  font-weight: var(--fw-semibold);
  line-height: 2;
  letter-spacing: 0.012em;
}
@media screen and (max-width: 767px) {
  .contact__text {
    font-size: 1rem;
  }
}
.contact__info {
  position: relative;
  display: grid;
  grid-area: info;
  gap: 1.0625rem;
  place-items: center;
}
@media screen and (max-width: 767px) {
  .contact__info {
    gap: 0.75rem;
    padding-block-start: 1.25rem;
  }
}
.contact__info::before {
  position: absolute;
  inset-block: 0;
  inset-inline-start: 0;
  block-size: 117.3228346457%;
  content: "";
  border-inline-start: 1px solid color-mix(in srgb, var(--color-white) 40%, transparent);
}
@media screen and (max-width: 767px) {
  .contact__info::before {
    inset-inline: 0;
    border-block-start: 1px solid color-mix(in srgb, var(--color-white) 40%, transparent);
    border-inline-start: initial;
  }
}
.contact__tel {
  display: flex;
  gap: 0.375rem;
  align-items: center;
  font-size: clamp(32px, round(nearest, calc(32px + (60 - 32) * ((100vw - 768px) / (1920 - 768))), 1px), 60px);
  font-weight: var(--fw-bold);
  line-height: 1.4333333333;
  color: var(--color-yellow);
  letter-spacing: 0.06em;
}
@media screen and (max-width: 767px) {
  .contact__tel {
    gap: 3px;
    font-size: 2.3125rem;
    line-height: 1.4594594595;
  }
}
.contact__tel::before {
  position: relative;
  inset-block-start: 0.25rem;
  inline-size: 0.65em;
  aspect-ratio: 39/51;
  content: "";
  background-color: currentcolor;
  mask-image: url("../images/icon_phone.svg");
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}
@media screen and (max-width: 767px) {
  .contact__tel::before {
    inset-block-start: 2px;
  }
}
.contact__hours {
  display: inline-flex;
  gap: 1rem;
  align-items: center;
  padding-inline-end: min(3.5416666667vw, 4.25rem);
  font-size: clamp(12px, round(nearest, calc(12px + (20 - 12) * ((100cqi - 768px) / (1920 - 768))), 1px), 20px);
  font-weight: var(--fw-medium);
  line-height: 1.6;
}
@media screen and (max-width: 767px) {
  .contact__hours {
    padding-inline-end: 1.25rem;
    font-size: 1rem;
    line-height: 2;
  }
}
.contact__hours span {
  font-size: 1.5em;
  line-height: 1.0666666667;
}
@media screen and (max-width: 767px) {
  .contact__hours span {
    font-size: 1.5em;
    line-height: 1.3333333333;
  }
}
.contact__totop {
  --_scroll-size: 40px;
  --_scroll-position: 2px;
  position: absolute;
  inset-block-end: 0;
  inset-inline-end: 0.875rem;
  display: grid;
  grid-template: "text" "line";
  gap: 8px;
  justify-items: center;
  font-family: var(--en-font);
  font-size: max(14px, 0.875rem);
  font-weight: var(--fw-extralight);
  line-height: 1.5;
  color: var(--color-white);
  letter-spacing: 0.08em;
  transition: color ease 0.3s;
}
@media screen and (max-width: 767px) {
  .contact__totop {
    inset-inline-end: 0;
  }
}
@media (any-hover: hover) {
  .contact__totop:hover {
    color: var(--color-yellow);
  }
}
.contact__totop span {
  grid-area: text;
  writing-mode: vertical-rl;
}
.contact__totop::before {
  position: relative;
  inset-inline-end: var(--_scroll-position);
  grid-area: line;
  inline-size: 1px;
  block-size: var(--_scroll-size);
  content: "";
  background-color: var(--color-white);
}
.contact__totop::after {
  position: relative;
  inset-inline-end: var(--_scroll-position);
  grid-area: line;
  inline-size: 7px;
  aspect-ratio: 1;
  content: "";
  background-color: var(--color-yellow);
  border-radius: 50%;
  transition: scale ease 0.3s;
  animation: scroll-up 3s ease-out infinite;
}
@keyframes scroll-up {
  0% {
    opacity: 0;
    transform: translateY(calc(var(--_scroll-size) - 4px));
  }
  20%, 80% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(0);
  }
}
/* !------------------------------
* section-heading *
------------------------------ */
.section-heading {
  --_color-en: var(--color-yellow);
  --_color-ja: var(--color-white);
  display: grid;
  gap: 2px;
}
@media screen and (max-width: 767px) {
  .section-heading {
    gap: initial;
  }
}
.section-heading[data-section=light] {
  --_color-en: var(--color-gold);
  --_color-ja: var(--color-text);
}
.section-heading[data-size=small] {
  gap: 0;
}
.js-section-heading .section-heading__en {
  opacity: 0;
  clip-path: inset(100% 0% 0% 0%);
}
.js-section-heading .section-heading__en span {
  display: inline-block;
  opacity: 0;
  transform: translateY(1.25rem);
}
@media screen and (max-width: 767px) {
  .js-section-heading .section-heading__en span {
    transform: translateY(0.75rem);
  }
}
.js-section-heading .section-heading__ja {
  clip-path: inset(100% 0% 0% 0%);
}
.section-heading__en {
  font-family: var(--en-font);
  font-size: clamp(16px, round(nearest, calc(16px + (24 - 16) * ((100vw - 375px) / (1920 - 375))), 1px), 24px);
  font-weight: var(--fw-regular);
  line-height: 1.5;
  color: var(--_color-en);
  letter-spacing: 0.06em;
  opacity: 0.8;
}
.section-heading__ja {
  font-size: clamp(28px, round(nearest, calc(28px + (48 - 28) * ((100vw - 768px) / (1920 - 768))), 1px), 48px);
  font-weight: var(--fw-bold);
  line-height: 1.4166666667;
  color: var(--_color-ja);
  letter-spacing: 0.06em;
}
@media screen and (max-width: 767px) {
  .section-heading__ja {
    font-size: 2rem;
    line-height: 1.40625;
  }
}
.section-heading[data-size=small] .section-heading__ja {
  font-size: clamp(28px, round(nearest, calc(28px + (42 - 28) * ((100vw - 768px) / (1920 - 768))), 1px), 42px);
}
@media screen and (max-width: 767px) {
  .section-heading[data-size=small] .section-heading__ja {
    font-size: 2rem;
  }
}
/* ---------- anchor-nav ---------- */
.anchor-nav {
  display: block flex;
  flex-wrap: wrap;
  gap: 1.25rem 3rem;
  align-items: center;
  padding: 1.5rem 5.3333333333%;
  background-color: var(--color-white);
  border-radius: 0.625rem;
}
@media screen and (max-width: 767px) {
  .anchor-nav {
    column-gap: 1.875rem;
  }
}
.anchor-nav__link {
  --_icon-size: calc(30 * var(--rem));
  --_icon-color: var(--color-primary);
  position: relative;
  display: inline grid;
  grid-template-areas: "label icon";
  grid-template-columns: minmax(0, 1fr) minmax(0, var(--_icon-size));
  gap: 0.625rem;
  align-items: center;
}
@media screen and (max-width: 767px) {
  .anchor-nav__link {
    --_icon-size: calc(26 * var(--rem));
  }
}
.anchor-nav__icon {
  position: relative;
  display: inline grid;
  grid-area: icon;
  grid-template: "icon";
  place-items: center;
  inline-size: var(--_icon-size);
  aspect-ratio: 1;
  overflow: clip;
  border-radius: 50%;
}
.anchor-nav__icon-default,
.anchor-nav__icon-hover {
  display: inline grid;
  grid-area: icon;
  place-items: center;
  inline-size: 100%;
  block-size: 100%;
  border-radius: inherit;
}
.anchor-nav__icon-default {
  background-color: var(--color-white);
  border: 1px solid var(--_icon-color);
}
.anchor-nav__icon-hover {
  background-color: var(--_icon-color);
  translate: 0 -100%;
}
.anchor-nav__icon-default::before,
.anchor-nav__icon-hover::before {
  inline-size: 0.375rem;
  aspect-ratio: 1;
  content: "";
  border-block-start: 1px solid currentcolor;
  border-inline-end: 1px solid currentcolor;
  rotate: 135deg;
}
.anchor-nav__icon-default::before {
  color: var(--_icon-color);
}
.anchor-nav__icon-hover::before {
  color: var(--color-white);
}
.anchor-nav__text {
  grid-area: label;
  font-size: max(12px, 1rem);
  font-weight: var(--fw-bold);
  line-height: 1;
  letter-spacing: 0.08em;
}
@media screen and (max-width: 767px) {
  .anchor-nav__text {
    font-size: 0.875rem;
  }
}
@media (any-hover: hover) {
  .anchor-nav__link.is-enter .anchor-nav__icon-default::before {
    animation: anchor-nav-icon-default-enter 0.6s ease forwards;
  }
}
@media (any-hover: hover) {
  .anchor-nav__link.is-leave .anchor-nav__icon-default::before {
    animation: none;
  }
}
@media (any-hover: hover) {
  .anchor-nav__link.is-enter .anchor-nav__icon-hover {
    animation: anchor-nav-icon-hover-enter 0.48s ease 0.12s forwards;
  }
}
@media (any-hover: hover) {
  .anchor-nav__link.is-leave .anchor-nav__icon-hover {
    animation: anchor-nav-icon-hover-leave 0.6s ease forwards;
  }
}
@keyframes anchor-nav-icon-default-enter {
  to {
    translate: 0 var(--_icon-size);
  }
}
@keyframes anchor-nav-icon-hover-enter {
  from {
    translate: 0 -100%;
  }
  to {
    translate: 0;
  }
}
@keyframes anchor-nav-icon-hover-leave {
  from {
    translate: 0;
  }
  to {
    translate: 0 100%;
  }
}
.breadcrumbs {
  --_text-color: var(--color-text);
}
.breadcrumbs__inner {
  display: block flex;
  flex-wrap: wrap;
  gap: 0.625rem;
  align-items: center;
}
.breadcrumbs__item {
  position: relative;
  font-size: max(14px, 0.875rem);
  font-weight: var(--fw-medium);
  line-height: 1;
  letter-spacing: 0.08em;
}
.breadcrumbs__item[data-font=noto] {
  font-family: var(--second-font);
}
.breadcrumbs__separator {
  display: block flow;
  flex-shrink: 0;
  inline-size: 0.375rem;
  aspect-ratio: 1;
  border-block-start: 1px solid currentcolor;
  border-inline-end: 1px solid currentcolor;
  rotate: 45deg;
}
/* !------------------------------
* gallery *
------------------------------ */
.gallery {
  position: relative;
  z-index: 2;
  display: flex;
  overflow-x: clip;
}
.gallery__list {
  --_duration: 60s;
  display: flex;
  animation: loop var(--_duration) linear infinite;
}
@media screen and (max-width: 767px) {
  .gallery__list {
    --_duration: 48s;
  }
}
.gallery__item {
  inline-size: min(42.6041666667vw, 818px);
  aspect-ratio: 818/554;
}
@media screen and (max-width: 767px) {
  .gallery__item {
    inline-size: 16.0625rem;
    aspect-ratio: 257/174;
  }
}
.gallery__item:nth-child(even) {
  inline-size: min(38.8541666667vw, 746px);
  aspect-ratio: 746/554;
}
@media screen and (max-width: 767px) {
  .gallery__item:nth-child(even) {
    inline-size: 14.625rem;
    aspect-ratio: 234/174;
  }
}
.gallery__item img {
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
}
@keyframes loop {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-100%);
  }
}
.page-404 {
  position: relative;
  padding-block: 7.5rem;
}
@media screen and (max-width: 767px) {
  .page-404 {
    padding-block: 5rem;
  }
}
.page-404__contents {
  margin-top: 5rem;
}
@media screen and (max-width: 767px) {
  .page-404__contents {
    margin-top: 3.75rem;
  }
}
.page-404__panel {
  display: block grid;
  gap: 2.5rem;
  justify-items: center;
  text-align: center;
}
@media screen and (max-width: 767px) {
  .page-404__panel {
    gap: 2rem;
  }
}
.page-404__title {
  font-size: max(22px, 1.75rem);
  font-weight: var(--fw-bold);
  line-height: 1.6;
  color: var(--color-yellow);
  letter-spacing: 0.08em;
  word-break: keep-all;
}
@media screen and (max-width: 767px) {
  .page-404__title {
    font-size: 1.5rem;
  }
}
.page-404__texts {
  font-size: max(14px, 1rem);
  font-weight: var(--fw-medium);
  line-height: 2;
  letter-spacing: 0.08em;
  word-break: keep-all;
}
@media screen and (max-width: 767px) {
  .page-404__texts {
    gap: 0.375rem;
    font-size: 0.875rem;
  }
}
.pagination {
  --_base-color: var(--color-text);
  --_current-color: #acacac;
  --_hover-color: var(--color-yellow);
  display: block flow;
}
.pagination__list {
  display: block flex;
  gap: 0.625rem;
  align-items: center;
  justify-content: center;
}
@media screen and (max-width: 767px) {
  .pagination__list {
    gap: 0.625rem;
  }
}
.pagination__item {
  flex-shrink: 0;
}
.pagination__link {
  display: block flow;
  padding: 0.3125rem 0.8125rem;
  font-size: max(18px, 1.125rem);
  font-weight: var(--fw-medium);
  line-height: 1.4444444444;
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 0.25rem;
  transition: color ease 0.3s, text-decoration-color ease 0.3s;
}
@media screen and (max-width: 767px) {
  .pagination__link {
    padding: 0.375rem;
  }
}
.pagination__link.is-current {
  color: var(--_current-color);
  text-decoration-color: currentcolor;
}
@media (any-hover: hover) {
  .pagination a.pagination__link:hover {
    text-decoration-color: currentcolor;
  }
}
.pagination__arrow {
  display: block grid;
  place-items: center;
  inline-size: 2.25rem;
  aspect-ratio: 1;
  border: 1px solid;
  border-radius: 2px;
  transition: background-color ease 0.3s;
}
@media screen and (max-width: 767px) {
  .pagination__arrow {
    inline-size: 2rem;
  }
}
@media (any-hover: hover) {
  .pagination .pagination__arrow:hover {
    background-color: currentcolor;
  }
}
.pagination__arrow::before {
  display: block;
  inline-size: 0.5rem;
  aspect-ratio: 1;
  content: "";
  border-block-start: 1px solid currentcolor;
  border-inline-end: 1px solid currentcolor;
  rotate: 45deg;
  transition: border-color ease 0.3s;
}
.pagination__arrow img {
  display: none;
}
.pagination__arrow[data-type=prev] {
  padding-right: 5.5555555556%;
  margin-right: 2.25rem;
}
@media screen and (max-width: 767px) {
  .pagination__arrow[data-type=prev] {
    margin-right: 0.625rem;
  }
}
.pagination__arrow[data-type=next] {
  padding-left: 5.5555555556%;
  margin-left: 2.25rem;
}
@media screen and (max-width: 767px) {
  .pagination__arrow[data-type=next] {
    margin-left: 0.625rem;
  }
}
.pagination__arrow[data-type=prev]::before {
  rotate: -135deg;
}
@media (any-hover: hover) {
  .pagination .pagination__arrow:hover::before {
    background-color: var(--color-white);
  }
}
.pagination__dots {
  display: block flow;
  font-size: 1.125rem;
  font-weight: var(--fw-medium);
  line-height: 1;
  letter-spacing: 0.04em;
}
/* ---------- single ---------- */
.post-single {
  position: relative;
  padding-block: 12.25rem 8.875rem;
}
@media screen and (max-width: 767px) {
  .post-single {
    padding-block: 5rem;
  }
}
.post-single__panel {
  padding: 4rem 2.5rem 6.25rem;
  margin-block-start: 2.5rem;
  background-color: var(--color-white);
  border-radius: 1.25rem;
}
@media screen and (max-width: 767px) {
  .post-single__panel {
    padding: 1.875rem 1.25rem 2.5rem;
    border-radius: 0.75rem;
  }
}
.post-single__contents {
  width: min(100%, 840px);
  margin-inline: auto;
}
.post-single__header {
  display: grid;
  gap: 2rem;
}
@media screen and (max-width: 767px) {
  .post-single__header {
    gap: 1.5rem;
  }
}
.post-single__title {
  font-size: max(24px, 1.75rem);
  font-weight: var(--fw-bold);
  line-height: 1.6;
  color: var(--color-yellow);
  letter-spacing: 0.08em;
}
@media screen and (max-width: 767px) {
  .post-single__title {
    font-size: 1.5rem;
  }
}
.post-single__meta {
  display: flex;
  gap: 1.25rem;
  align-items: center;
}
.post-single__date {
  align-self: start;
  font-family: var(--second-font);
  font-size: max(14px, 0.875rem);
  font-weight: var(--fw-medium);
  line-height: 1.3;
}
@media screen and (max-width: 767px) {
  .post-single__date {
    font-size: 0.875rem;
  }
}
.post-single__cats {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}
.post-single__cat {
  font-size: max(14px, 0.875rem);
  font-weight: var(--fw-medium);
  line-height: 1.3;
  color: transparent;
  letter-spacing: 0.08em;
  background-image: var(--color-gradient);
  background-clip: text;
}
@media screen and (max-width: 767px) {
  .post-single__cat {
    font-size: 0.875rem;
  }
}
.post-single__thumb img {
  inline-size: auto;
  block-size: 100%;
  max-block-size: 50rem;
  object-fit: contain;
}
@media screen and (max-width: 767px) {
  .post-single__thumb img {
    max-block-size: 37.5rem;
  }
}
.post-single__content {
  margin-block-start: 2.5rem;
  font-size: max(16px, 1rem);
  font-weight: var(--fw-medium);
  line-height: 2.2;
}
@media screen and (max-width: 767px) {
  .post-single__content {
    line-height: 1.8;
  }
}
:where(.post-single__content) > * + * {
  margin-block-start: 2.5rem;
}
@media screen and (max-width: 767px) {
  :where(.post-single__content) > * + * {
    margin-block-start: 2rem;
  }
}
:where(.post-single__content) h2 + * {
  margin-block-start: 1.5rem;
}
@media screen and (max-width: 767px) {
  :where(.post-single__content) h2 + * {
    margin-block-start: 1.25rem;
  }
}
:where(.post-single__content) h3 + * {
  margin-block-start: 1.25rem;
}
@media screen and (max-width: 767px) {
  :where(.post-single__content) h3 + * {
    margin-block-start: 1rem;
  }
}
:where(.post-single__content) h4 + * {
  margin-block-start: 1rem;
}
@media screen and (max-width: 767px) {
  :where(.post-single__content) h4 + * {
    margin-block-start: 0.75rem;
  }
}
.post-single__content h2 {
  padding: 0.3125rem 1rem;
  font-size: max(20px, 1.25rem);
  font-weight: var(--fw-medium);
  line-height: 1.6;
  color: var(--color-white);
  letter-spacing: 0.08em;
  background-color: var(--color-yellow);
  border-radius: 5px;
}
@media screen and (max-width: 767px) {
  .post-single__content h2 {
    font-size: 1.25rem;
  }
}
.post-single__content h3 {
  padding: 0.625rem;
  font-size: max(18px, 1.125rem);
  font-weight: var(--fw-medium);
  line-height: 1.6;
  color: var(--color-yellow);
  letter-spacing: 0.08em;
  border-block-end: 1px solid;
}
@media screen and (max-width: 767px) {
  .post-single__content h3 {
    font-size: 1.125rem;
  }
}
.post-single__content h4 {
  position: relative;
  padding-inline-start: 0.875rem;
  font-size: max(16px, 1rem);
  font-weight: var(--fw-medium);
  line-height: 1.6;
  color: var(--color-yellow);
  letter-spacing: 0.08em;
}
@media screen and (max-width: 767px) {
  .post-single__content h4 {
    font-size: 1rem;
  }
}
.post-single__content h4::before {
  position: absolute;
  top: 50%;
  left: 0;
  inline-size: 3px;
  block-size: 76.9230769231%;
  content: "";
  background-color: currentcolor;
  translate: 0 -50%;
}
.post-single__content ul li {
  position: relative;
  padding-left: 1.125em;
}
.post-single__content ul li::before {
  position: absolute;
  top: 0.5lh;
  left: 0;
  inline-size: 0.5625em;
  aspect-ratio: 1;
  content: "";
  background-color: var(--color-yellow);
  border-radius: 50%;
  translate: 0 -50%;
}
.post-single__content ol {
  list-style: decimal;
  list-style-position: inside;
}
.post-single__content ol li::marker {
  color: var(--color-yellow);
}
.post-single__content a:not([class]) {
  color: var(--color-yellow);
  text-decoration-line: underline;
  text-decoration-thickness: 1px;
  text-decoration-color: color-mix(in srgb, var(--color-yellow) 50%, transparent);
  text-underline-offset: 2px;
  transition: opacity ease 0.3s;
}
@media (any-hover: hover) {
  .post-single__content a:not([class]):hover {
    opacity: 0.7;
  }
}
.post-single__nav {
  display: grid;
  grid-template-areas: "prev all next";
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 1.25rem;
  align-items: center;
  justify-content: space-between;
  margin-block-start: 4rem;
}
@media screen and (max-width: 767px) {
  .post-single__nav {
    gap: 1rem;
    margin-block-start: 3.125rem;
  }
}
.post-single__nav-link,
.post-single__nav-all {
  font-size: max(15px, 0.9375rem);
  font-weight: var(--fw-bold);
  line-height: 1.4666666667;
  color: #99a9b0;
  letter-spacing: 0.08em;
  transition: color ease 0.3s;
}
@media screen and (max-width: 767px) {
  .post-single__nav-link,
  .post-single__nav-all {
    font-size: 0.8125rem;
  }
}
.post-single__nav-link[data-page=prev] {
  grid-area: prev;
  justify-self: start;
}
.post-single__nav-all {
  grid-area: all;
  text-decoration-line: underline;
  text-underline-offset: 0.1875rem;
}
.post-single__nav-link[data-page=next] {
  grid-area: next;
  justify-self: end;
}
.post-single__nav-link {
  display: inline flex;
  gap: 0.875rem;
  align-items: center;
}
@media screen and (max-width: 767px) {
  .post-single__nav-link {
    gap: 0.5rem;
  }
}
.post-single__nav-icon {
  display: block grid;
  place-items: center;
  inline-size: 2.1333333333em;
  aspect-ratio: 1;
  padding-inline-start: 1.5625%;
  background-color: currentcolor;
  border-radius: 2px;
}
@media screen and (max-width: 767px) {
  .post-single__nav-icon {
    inline-size: 1.5384615385em;
  }
}
.post-single__nav-link[data-page=prev] .post-single__nav-icon {
  scale: -1;
}
.post-single__nav-icon img {
  inline-size: 0.4666666667em;
  aspect-ratio: 7/12;
  object-fit: contain;
  filter: brightness(0) invert(1);
}
@media (any-hover: hover) {
  :is(.post-single__nav-all, .post-single__nav-link):hover {
    color: var(--color-yellow);
  }
}
/* ---------- loop ---------- */
.loop {
  --_duration: 20s;
  animation: loop var(--_duration) linear infinite;
}
.loop[data-direction=right] {
  animation-direction: reverse;
}
@keyframes loop {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-100%);
  }
}
/* ---------- js-fade-in ---------- */
.js-fadeIn,
.js-fade-in {
  opacity: 0;
  transform: translateY(1.25rem);
}
.js-fadeIns:not([data-fade-targets]) > *,
.js-fade-ins:not([data-fade-targets]) > * {
  opacity: 0;
  transform: translateY(1.25rem);
}
.js-appear-title-sub {
  --_before-opacity: 0;
  --_after-opacity: 0;
}
.js-appear-title-sub::before {
  opacity: var(--_before-opacity);
}
.js-appear-title-sub::after {
  opacity: var(--_after-opacity);
}
.js-appear-title-sub-text {
  opacity: 0;
  translate: 0 0.625rem;
}
.js-appear-title-main {
  opacity: 0;
  translate: 0 0.625rem;
}
.js-scale-in {
  opacity: 0;
  scale: 0.75;
}
.js-scaleOut {
  --_scale-out: 1.02;
}
@keyframes pikopiko {
  0% {
    rotate: -6deg;
  }
  25% {
    rotate: 6deg;
  }
  50% {
    rotate: -6deg;
  }
  75% {
    rotate: 6deg;
  }
  100% {
    rotate: -6deg;
  }
}
@keyframes pikokaku {
  0% {
    rotate: -30deg;
  }
  100% {
    rotate: 4deg;
  }
}
@keyframes icon-stroke {
  to {
    stroke-dashoffset: 0;
  }
}
/* ---------- hover-gradient ---------- */
.hover-gradient {
  --_text-color: var(--color-text);
  --_hover-start: 33%;
  --_hover-end: 66%;
  --_hover-color: #55a0c7 var(--_hover-start), #05316d var(--_hover-end);
  --_hover-angle: 95deg;
  --_hover-duration: 1.2s;
}
.hover-gradient > span {
  color: transparent;
  background-image: linear-gradient(var(--_hover-angle), var(--_text-color, #737373) var(--_hover-start), var(--_hover-color), var(--_text-color, #737373) var(--_hover-end));
  background-repeat: no-repeat;
  background-position: 100% 0;
  background-clip: text;
  background-size: 300% 100%;
}
.hover-gradient-img {
  --_text-color: var(--color-text);
  --_hover-start: 33%;
  --_hover-end: 66%;
  --_hover-color: #55a0c7 var(--_hover-start), #05316d var(--_hover-end);
  --_hover-angle: 95deg;
  --_hover-duration: 1.2s;
}
.hover-gradient-img > .hover-gradient-img__mask {
  background-image: linear-gradient(var(--_hover-angle), var(--_text-color, #737373) var(--_hover-start), var(--_hover-color), var(--_text-color, #737373) var(--_hover-end));
  background-repeat: no-repeat;
  background-position: 100% 0;
  background-size: 300% 100%;
}
@media (any-hover: hover) {
  .hover-gradient.is-active > span {
    animation: hover-gradient-pass var(--_hover-duration) ease forwards;
  }
  .hover-gradient-img.is-active > .hover-gradient-img__mask {
    animation: hover-gradient-pass var(--_hover-duration) ease forwards;
  }
  .hover-gradient-img.is-active .hover-gradient > span {
    animation: hover-gradient-pass var(--_hover-duration) ease forwards;
  }
}
@keyframes hover-gradient-pass {
  from {
    background-position: 100% 0;
  }
  to {
    background-position: 0% 0;
  }
}
.container {
  container-type: inline-size;
}
.inline-block {
  display: inline-block;
}
.pc-only {
  display: block;
}
@media screen and (max-width: 767px) {
  .pc-only {
    display: none;
  }
}
br.pc-only {
  display: inline;
}
@media screen and (max-width: 767px) {
  br.pc-only {
    display: none;
  }
}
.safari {
  --size: 400px;
}
.safari__dummy {
  position: fixed;
  z-index: -1;
  transform: translate3d(0, 0, -1px);
}
.safari::before,
.safari::after {
  position: fixed;
  left: 0;
  z-index: 9999;
  width: 100%;
  height: var(--size);
  content: "";
  background-color: var(--gray5);
  transform: translate3d(0, 0, 9999px);
}
.safari::before {
  top: calc(var(--size) * -1);
}
.safari::after {
  bottom: calc(var(--size) * -1);
}
.sp-only {
  display: none;
}
@media screen and (max-width: 767px) {
  .sp-only {
    display: block;
  }
}
.visually-hidden {
  position: absolute;
  inset: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
  white-space: nowrap;
  clip-path: inset(50%);
}