@charset "UTF-8";
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}

/* 2. Remove default margin */
*:not(dialog) {
  margin: 0;
}

/* 3. Enable keyword animations */
@media (prefers-reduced-motion: no-preference) {
  html {
    interpolate-size: allow-keywords;
  }
}
body {
  /* 4. Increase line-height */
  line-height: 1.5;
  /* 5. Improve text rendering */
  -webkit-font-smoothing: antialiased;
}

/* 6. Improve media defaults */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
}

/* 7. Remove list styles */
ul,
ol {
  list-style: none;
  padding: 0;
}

/* 8. Remove anchor styles */
a {
  text-decoration: none;
  color: inherit;
}

/* 9. Inherit fonts for form controls */
input,
button,
textarea,
select {
  font: inherit;
}

/* 10. Remove button styles */
button {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}

/* 11. Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

/* 12. Improve line wrapping */
p {
  text-wrap: pretty;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  text-wrap: balance;
}

/* 13. Create a root stacking context */
#root,
#__next {
  isolation: isolate;
}

html,
body {
  overflow-x: hidden;
}

body {
  font-family: "cinzel", "acumin-pro", "noto-sans-cjk-jp", "source-han-serif-japanese", "zen-kaku-gothic-new", sans-serif;
  background-color: #1e1e20;
  color: #f0f0f0;
  -webkit-font-smoothing: antialiased;
}

img {
  height: auto;
}

@media screen and (min-width: 768px) {
  .u-sp-only {
    display: none !important;
  }
}

.u-tab-only {
  display: none !important;
}
@media screen and (min-width: 768px) {
  .u-tab-only {
    display: revert !important;
  }
}
@media screen and (min-width: 1200px) {
  .u-tab-only {
    display: none !important;
  }
}

.u-pc-only {
  display: none !important;
}
@media screen and (min-width: 1200px) {
  .u-pc-only {
    display: revert !important;
  }
}

.u-sp-none {
  display: none !important;
}
@media screen and (min-width: 768px) {
  .u-sp-none {
    display: revert !important;
  }
}

@media screen and (min-width: 1000px) {
  .u-lap-none {
    display: none !important;
  }
}

@media screen and (min-width: 1200px) {
  .u-pc-none {
    display: none !important;
  }
}

.site-logo {
  position: fixed;
  top: 25px;
  left: 30px;
  z-index: 200;
  -webkit-transition: opacity 0.3s ease;
  transition: opacity 0.3s ease;
}
@media screen and (min-width: 1200px) {
  .site-logo {
    top: 33.5px;
    left: 36px;
  }
}
.site-logo .site-logo__link {
  display: grid;
  grid-template-columns: auto auto;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 20px;
}
@media screen and (min-width: 1200px) {
  .site-logo .site-logo__link {
    gap: 13px;
  }
}
.site-logo .site-logo__img {
  width: 38px;
}
@media screen and (min-width: 768px) {
  .site-logo .site-logo__img {
    width: 58px;
  }
}
@media screen and (min-width: 1200px) {
  .site-logo .site-logo__img {
    width: 38.5px;
  }
}
.site-logo .site-logo__company {
  font-family: "cinzel";
  font-size: 12px;
  font-weight: 400;
  color: #f0f0f0;
  line-height: 3.33;
  letter-spacing: 0.08em;
}
@media screen and (min-width: 768px) {
  .site-logo .site-logo__company {
    font-size: 18px;
  }
}
@media screen and (min-width: 1200px) {
  .site-logo .site-logo__company {
    font-size: 12px;
    line-height: 4;
    letter-spacing: 0.12em;
  }
}

.header {
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  z-index: 100;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
}
@media screen and (min-width: 1200px) {
  .header {
    display: block;
    width: 135px;
    height: 100%;
    background-color: #101012;
    opacity: 0.9;
  }
}
@media screen and (min-width: 1200px) {
  .header .header__inner {
    padding: 0 32px;
    height: 100%;
  }
}
@media screen and (min-width: 1200px) {
  .header .header__wrapper {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
        -ms-flex-pack: justify;
            justify-content: space-between;
    height: 100%;
    padding-top: 91px;
    padding-bottom: 52px;
  }
}
@media screen and (min-width: 1200px) {
  .header .header__menu {
    display: grid;
    gap: 45.5px;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
        -ms-flex-pack: center;
            justify-content: center;
  }
}
.header .header__nav {
  display: none;
}
@media screen and (min-width: 1200px) {
  .header .header__nav {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
}
.header .header__nav-list {
  display: grid;
  gap: 30.5px;
  text-align: center;
}
.header .header__nav-link {
  display: block;
  font-family: "cinzel";
  font-size: 13px;
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.08em;
  -webkit-transition: opacity 0.2s;
  transition: opacity 0.2s;
}
.header .header__nav-item--instagram {
  justify-self: center;
}
.header .header__tagline {
  display: none;
  -webkit-align-self: center;
      -ms-flex-item-align: center;
          align-self: center;
}
@media screen and (min-width: 1200px) {
  .header .header__tagline {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    font-family: "cinzel";
    font-size: 9px;
    font-weight: 400;
    letter-spacing: 0.3em;
    -webkit-writing-mode: vertical-rl;
        -ms-writing-mode: tb-rl;
            writing-mode: vertical-rl;
    color: #ababab;
  }
}

.header.is-fv-out {
  opacity: 0;
  pointer-events: none;
}

body.is-checked .header {
  opacity: 0;
  pointer-events: none;
}

.header__nav-link:hover {
  opacity: 0.5;
}

/* ==========================================================================
   hamburger-btn : ハンバーガーボタン（ace-corp と同仕様 / 1本線 + ::before/::after）
   ========================================================================== */
.header__menu-btn {
  position: fixed;
  top: 30px;
  right: 25px;
  width: 36px;
  height: 24px;
  z-index: 200;
  display: block;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 0;
}
@media screen and (min-width: 768px) {
  .header__menu-btn {
    top: 44px;
    right: 50px;
    width: 56px;
  }
}
@media screen and (min-width: 1200px) {
  .header__menu-btn {
    top: 36px;
    right: 39.5px;
  }
}

.header__menu-btn .btn-line {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  width: 36px;
  height: 1px;
  background: transparent;
}
@media screen and (min-width: 768px) {
  .header__menu-btn .btn-line {
    width: 56px;
  }
}

.header__menu-btn .btn-line::before,
.header__menu-btn .btn-line::after {
  content: "";
  position: absolute;
  left: 0;
  width: 100%;
  height: 1px;
  background: #f0f0f0;
  -webkit-transition: top 0.3s ease, -webkit-transform 0.3s ease;
  transition: top 0.3s ease, -webkit-transform 0.3s ease;
  transition: transform 0.3s ease, top 0.3s ease;
  transition: transform 0.3s ease, top 0.3s ease, -webkit-transform 0.3s ease;
}

.header__menu-btn .btn-line::before {
  top: -6px;
}

.header__menu-btn .btn-line::after {
  top: 6px;
}

.header__menu-btn .btn-line.open::before {
  top: 0;
  -webkit-transform: rotate(20deg);
          transform: rotate(20deg);
}

.header__menu-btn .btn-line.open::after {
  top: 0;
  -webkit-transform: rotate(-20deg);
          transform: rotate(-20deg);
}

/* ==========================================================================
   header__drawer : 右からスライドインするオーバーレイメニュー（ace-corp 同仕様）
   ========================================================================== */
.header__drawer {
  position: fixed;
  inset: 0;
  z-index: 150;
  visibility: hidden;
  -webkit-transition: visibility 0s linear 0.55s;
  transition: visibility 0s linear 0.55s;
}

/* 薄暗の黒幕は ::before に分離（opacity フェードを黒幕だけに効かせ、
   パネルには影響させないため。親の opacity は子要素にも合成されるので、
   同じ要素で背景opacityとパネルを兼ねるとパネルもフェードしてしまう） */
.header__drawer::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0;
  -webkit-transition: opacity 0.55s ease;
  transition: opacity 0.55s ease;
}

.header__drawer.is-checked {
  visibility: visible;
  -webkit-transition: visibility 0s linear 0s;
  transition: visibility 0s linear 0s;
}

.header__drawer.is-checked::before {
  opacity: 1;
}

/* 右からスライドインするメニューパネル */
.header__drawer > nav {
  position: absolute;
  top: 0;
  right: 0;
  width: 78%;
  max-width: 480px;
  height: 100%;
  background: #1e1e20;
  padding: 120px 32px 60px;
  overflow-y: auto;
  -webkit-transform: translateX(100%);
          transform: translateX(100%);
  -webkit-transition: -webkit-transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  transition: -webkit-transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1), -webkit-transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}
@media screen and (min-width: 768px) {
  .header__drawer > nav {
    width: 420px;
    padding: 160px 60px 60px;
  }
}
@media screen and (min-width: 1200px) {
  .header__drawer > nav {
    padding: 140px 60px 60px;
  }
}

.header__drawer.is-checked > nav {
  -webkit-transform: translateX(0);
          transform: translateX(0);
}

.header__drawer .header__drawer-list {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
      -ms-flex-align: start;
          align-items: flex-start;
  gap: 30px;
  list-style: none;
  padding: 0;
  margin: 0;
}
@media screen and (min-width: 768px) {
  .header__drawer .header__drawer-list {
    gap: 40px;
  }
}

.header__drawer .header__drawer-item {
  text-align: left;
}

.header__drawer .header__drawer-link {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 24px;
  font-family: "cinzel";
  color: #f0f0f0;
  font-size: 18px;
  font-weight: 400;
  letter-spacing: 0.08em;
  -webkit-transition: opacity 0.3s ease;
  transition: opacity 0.3s ease;
}
@media screen and (min-width: 768px) {
  .header__drawer .header__drawer-link {
    font-size: 20px;
  }
}

.header__drawer .header__drawer-link::before {
  content: "";
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
  width: 10px;
  height: 1px;
  background: #f0f0f0;
}

/* Instagram アイコンの行は横線だけ非表示にし、
   gap と擬似要素の幅は残してアイコンを本文テキストの開始位置に揃える */
.header__drawer .header__nav-item--instagram .header__drawer-link::before {
  background: transparent;
}

.header__drawer .header__nav-item--instagram .header__drawer-link img {
  width: 15px;
  height: auto;
}

/* CORPORATE SITE 行の外部リンクアイコン */
.header__drawer .header__drawer-link-icon {
  width: 13px;
  height: auto;
  display: inline-block;
  margin-left: 8px;
  vertical-align: middle;
}

.header__drawer .header__drawer-link:hover {
  opacity: 0.6;
}

.header__drawer .header__drawer-link-sub {
  display: block;
  font-family: "source-han-serif-japanese";
  color: #f0f0f0;
  font-size: 12px;
  font-weight: 200;
  letter-spacing: 0.15em;
  margin-top: 6px;
}
@media screen and (min-width: 768px) {
  .header__drawer .header__drawer-link-sub {
    font-size: 14px;
  }
}

/* メニュー項目内で英字＋サブ和文を縦並びにするためのラッパ */
.header__drawer .header__drawer-link-body {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
}

/* メニューオープン中は背景固定＋PCサイドヘッダー・ロゴを隠す */
body.is-checked {
  overflow: hidden;
}

body.is-checked .site-logo {
  opacity: 0;
  pointer-events: none;
}

.footer {
  background-color: #1f1f21;
}
.footer .footer__inner {
  padding: 0 20px;
}
@media screen and (min-width: 768px) {
  .footer .footer__inner {
    padding: 0 75px;
  }
}
@media screen and (min-width: 1200px) {
  .footer .footer__inner {
    padding: 0 37.5px 0 67.5px;
  }
}
.footer .footer__wrapper {
  display: grid;
  padding-top: 80px;
  padding-bottom: 25px;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}
@media screen and (min-width: 1200px) {
  .footer .footer__wrapper {
    padding-top: 67.5px;
    padding-bottom: 40px;
    grid-template-columns: auto 1fr auto;
    -webkit-box-align: start;
    -webkit-align-items: start;
        -ms-flex-align: start;
            align-items: start;
    -webkit-column-gap: 145px;
       -moz-column-gap: 145px;
            column-gap: 145px;
  }
}
.footer .footer__logo {
  display: grid;
  justify-items: center;
}
.footer .footer__logo img {
  width: 100%;
  height: auto;
  display: block;
  width: 38px;
}
@media screen and (min-width: 768px) {
  .footer .footer__logo img {
    width: 45px;
  }
}
@media screen and (min-width: 1200px) {
  .footer .footer__logo img {
    gap: 8.5px;
    width: 38.5px;
  }
}
.footer .footer__nav {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}
.footer .footer__company {
  font-family: "Cinzel", serif;
  font-size: 18px;
  font-weight: 400;
  color: #f0f0f0;
  line-height: 3.3;
  letter-spacing: 0.08em;
}
@media screen and (min-width: 1200px) {
  .footer .footer__company {
    font-size: 12px;
  }
}
.footer .footer__nav-list {
  margin-top: 40px;
  display: grid;
  gap: 20px 90px;
  -webkit-box-align: start;
  -webkit-align-items: start;
      -ms-flex-align: start;
          align-items: start;
  justify-self: center;
  grid-template-rows: repeat(4, auto);
  grid-auto-flow: column;
}
@media screen and (min-width: 768px) {
  .footer .footer__nav-list {
    grid-template-rows: repeat(4, auto);
    gap: 40px 150px;
  }
}
@media screen and (min-width: 1000px) {
  .footer .footer__nav-list {
    grid-template-rows: repeat(3, auto);
  }
}
@media screen and (min-width: 1200px) {
  .footer .footer__nav-list {
    margin-top: 0;
    gap: 17px 100px;
  }
}
@media screen and (min-width: 1440px) {
  .footer .footer__nav-list {
    gap: 17.5px 150px;
  }
}
.footer .footer__nav-item {
  text-align: left;
}
.footer .footer__nav-link {
  font-family: "Cinzel", serif;
  font-size: 14px;
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.08em;
  text-decoration: none;
  -webkit-transition: opacity 0.2s;
  transition: opacity 0.2s;
}
.footer .footer__corporate {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-column-gap: 5px;
     -moz-column-gap: 5px;
          column-gap: 5px;
}
.footer .footer__corporate img {
  width: 12px;
  height: auto;
}
.footer .footer__copyright {
  margin-top: 85px;
  font-family: "zen-kaku-gothic-new";
  font-size: 12px;
  font-weight: 300;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 768px) {
  .footer .footer__copyright {
    font-size: 10px;
  }
}
@media screen and (min-width: 1200px) {
  .footer .footer__copyright {
    margin-top: 257.5px;
    text-align: right;
  }
}

.footer__nav-link:hover {
  opacity: 0.5;
}

.footer__corporate:hover {
  opacity: 0.6;
}

/* ==========================================================================
   Scroll Animation : data-anim 属性ベース（ace-corp と同仕様）
   ※ JSが正常に動いた時のみ `.is-anim-ready` を付与し、初めて隠れる仕様。
      JS停止／GSAP未読込でも要素は通常通り表示される（フェイルセーフ）。
   ========================================================================== */
[data-anim].is-anim-ready {
  opacity: 0;
  will-change: opacity, transform;
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  transition-property: opacity, transform;
  transition-property: opacity, transform, -webkit-transform;
  -webkit-transition-duration: 1.1s;
          transition-duration: 1.1s;
  -webkit-transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
          transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
  -webkit-transition-delay: 0s;
          transition-delay: 0s;
}

[data-anim=fade-up].is-anim-ready {
  -webkit-transform: translate3d(0, 16px, 0);
          transform: translate3d(0, 16px, 0);
}

[data-anim=fade-in].is-anim-ready {
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
}

[data-anim=fade-left].is-anim-ready {
  -webkit-transform: translate3d(-16px, 0, 0);
          transform: translate3d(-16px, 0, 0);
}

[data-anim=fade-right].is-anim-ready {
  -webkit-transform: translate3d(16px, 0, 0);
          transform: translate3d(16px, 0, 0);
}

[data-anim=zoom-in].is-anim-ready {
  -webkit-transform: scale(1.04);
          transform: scale(1.04);
}

[data-anim=clip-up].is-anim-ready {
  -webkit-clip-path: inset(100% 0 0 0);
          clip-path: inset(100% 0 0 0);
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
  will-change: opacity, transform, clip-path;
  -webkit-transition-property: opacity, -webkit-transform, -webkit-clip-path;
  transition-property: opacity, -webkit-transform, -webkit-clip-path;
  transition-property: opacity, transform, clip-path;
  transition-property: opacity, transform, clip-path, -webkit-transform, -webkit-clip-path;
}

/* line-reveal : マスクワイプ + 下からのスライドアップ（FV キャッチ向け） */
[data-anim=line-reveal].is-anim-ready {
  -webkit-transform: translate3d(0, 110%, 0);
          transform: translate3d(0, 110%, 0);
  opacity: 1;
  -webkit-transition-duration: 1.4s;
          transition-duration: 1.4s;
  -webkit-transition-timing-function: cubic-bezier(0.77, 0, 0.175, 1);
          transition-timing-function: cubic-bezier(0.77, 0, 0.175, 1);
}

[data-anim].is-anim-ready.is-inview {
  opacity: 1;
  -webkit-transform: translate3d(0, 0, 0) scale(1);
          transform: translate3d(0, 0, 0) scale(1);
}

[data-anim=clip-up].is-anim-ready.is-inview {
  -webkit-clip-path: inset(0 0 0 0);
          clip-path: inset(0 0 0 0);
}

/* stagger 用 delay（data-anim-delay="1〜8" を想定） */
[data-anim-delay="1"].is-anim-ready {
  -webkit-transition-delay: 0.12s;
          transition-delay: 0.12s;
}

[data-anim-delay="2"].is-anim-ready {
  -webkit-transition-delay: 0.24s;
          transition-delay: 0.24s;
}

[data-anim-delay="3"].is-anim-ready {
  -webkit-transition-delay: 0.36s;
          transition-delay: 0.36s;
}

[data-anim-delay="4"].is-anim-ready {
  -webkit-transition-delay: 0.48s;
          transition-delay: 0.48s;
}

[data-anim-delay="5"].is-anim-ready {
  -webkit-transition-delay: 0.6s;
          transition-delay: 0.6s;
}

[data-anim-delay="6"].is-anim-ready {
  -webkit-transition-delay: 0.72s;
          transition-delay: 0.72s;
}

[data-anim-delay="7"].is-anim-ready {
  -webkit-transition-delay: 0.84s;
          transition-delay: 0.84s;
}

[data-anim-delay="8"].is-anim-ready {
  -webkit-transition-delay: 0.96s;
          transition-delay: 0.96s;
}

/* line-reveal は専用に強めの stagger（0.18s 刻み）で高級感を出す */
[data-anim=line-reveal][data-anim-delay="1"].is-anim-ready {
  -webkit-transition-delay: 0.33s;
          transition-delay: 0.33s;
}

[data-anim=line-reveal][data-anim-delay="2"].is-anim-ready {
  -webkit-transition-delay: 0.51s;
          transition-delay: 0.51s;
}

[data-anim=line-reveal][data-anim-delay="3"].is-anim-ready {
  -webkit-transition-delay: 0.69s;
          transition-delay: 0.69s;
}

[data-anim=line-reveal][data-anim-delay="4"].is-anim-ready {
  -webkit-transition-delay: 0.87s;
          transition-delay: 0.87s;
}

[data-anim=line-reveal][data-anim-delay="5"].is-anim-ready {
  -webkit-transition-delay: 1.05s;
          transition-delay: 1.05s;
}

/* prefers-reduced-motion 対応はあえて入れない
   ：このサイトはアニメ表現が高級感の核なので、設定ONのユーザーにも見せる */
.fv {
  position: relative;
  background-color: #0d0d0d;
  overflow: hidden;
}
.fv .fv__wrapper {
  text-align: center;
}
.fv .fv__bg {
  overflow: hidden;
}
.fv .fv__img {
  display: block;
}
.fv .fv__img img {
  width: 100%;
  height: 100vh;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}
.fv .fv__content {
  position: absolute;
  left: 0;
  right: 0;
  top: 55%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  z-index: 1;
  display: grid;
  gap: 20px;
  justify-items: center;
}
@media screen and (min-width: 768px) {
  .fv .fv__content {
    gap: 40px;
  }
}
.fv .fv__label {
  font-family: "zen-kaku-gothic-new";
  font-size: 10px;
  font-weight: 500;
  color: #f0f0f0;
  letter-spacing: 0.3em;
}
@media screen and (min-width: 768px) {
  .fv .fv__label {
    font-size: 20px;
  }
}
@media screen and (min-width: 1200px) {
  .fv .fv__label {
    font-size: 15px;
  }
}
.fv .fv__title {
  font-family: "cinzel";
  font-size: 32px;
  font-weight: 400;
  color: #f0f0f0;
  background: -webkit-gradient(linear, left top, right top, from(#fff4bf), color-stop(29%, #d7d7d7), color-stop(54%, #fff4bf), color-stop(76%, #d7d7d7), color-stop(96%, #fff4bf));
  background: linear-gradient(90deg, #fff4bf 0%, #d7d7d7 29%, #fff4bf 54%, #d7d7d7 76%, #fff4bf 96%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  line-height: 1.1;
  letter-spacing: 0.08em;
}
@media screen and (min-width: 768px) {
  .fv .fv__title {
    font-size: 64px;
  }
}
@media screen and (min-width: 1200px) {
  .fv .fv__title {
    font-size: 48px;
  }
}
.fv .fv__catch {
  font-family: "source-han-serif-japanese";
  font-size: 12px;
  font-weight: 300;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 768px) {
  .fv .fv__catch {
    font-size: 26px;
  }
}
@media screen and (min-width: 1200px) {
  .fv .fv__catch {
    font-size: 20px;
  }
}

/* Scroll Indicator : 既存の縦線（白→透明のグラデ）と完全同じ見た目に、
   上から下に明るい帯がスーッと走るアニメを重ねた「下にスクロールできますよ」表現 */
.fv__scroll-line {
  position: relative;
  display: block;
  width: 1px;
  height: 135px;
  background: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(transparent));
  background: linear-gradient(to bottom, #f0f0f0, transparent);
  overflow: hidden;
}

.fv__scroll-line-bar {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 40px;
  background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(50%, #ffffff), to(transparent));
  background: linear-gradient(to bottom, transparent, #ffffff 50%, transparent);
  -webkit-transform: translateY(-100%);
          transform: translateY(-100%);
  -webkit-animation: fvScrollLine 2.4s cubic-bezier(0.65, 0, 0.35, 1) infinite;
          animation: fvScrollLine 2.4s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}

@-webkit-keyframes fvScrollLine {
  0% {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  20% {
    opacity: 1;
  }
  80% {
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(135px);
            transform: translateY(135px);
    opacity: 0;
  }
}

@keyframes fvScrollLine {
  0% {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  20% {
    opacity: 1;
  }
  80% {
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(135px);
            transform: translateY(135px);
    opacity: 0;
  }
}
.about {
  background-color: #0d0d0d;
  background-image: url("../images/section_bg.webp");
  background-size: cover;
  background-position: center top;
  overflow: hidden;
}
@media screen and (min-width: 1200px) {
  .about {
    background-image: url("../images/section_bg-pc.webp");
  }
}
.about .about__inner {
  padding: 0 30px;
}
@media screen and (min-width: 768px) {
  .about .about__inner {
    padding: 0 75px;
  }
}
@media screen and (min-width: 1200px) {
  .about .about__inner {
    padding: 0 252.5px;
  }
}
.about .about__wrapper {
  padding-top: 70px;
  display: grid;
  gap: 50px;
}
@media screen and (min-width: 1200px) {
  .about .about__wrapper {
    padding-top: 163.5px;
    gap: 65px;
  }
}
.about .about__head {
  display: grid;
  gap: 12px;
}
@media screen and (min-width: 768px) {
  .about .about__head {
    gap: 0;
  }
}
.about .about__title-en {
  font-family: "cinzel";
  font-size: 26px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 0.04em;
  background: -webkit-gradient(linear, left top, right top, from(#fff4bf), color-stop(50%, #d7d7d7), color-stop(96%, #fff4bf));
  background: linear-gradient(90deg, #fff4bf 0%, #d7d7d7 50%, #fff4bf 96%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
@media screen and (min-width: 1000px) {
  .about .about__title-en {
    font-size: 36px;
    letter-spacing: 0.09em;
  }
}
.about .about__label {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 11px;
  font-family: "source-han-serif-japanese";
  font-size: 12px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .about .about__label {
    font-size: 16px;
    gap: 10px;
  }
}
.about .about__cols {
  display: grid;
  gap: 15px;
}
@media screen and (min-width: 768px) {
  .about .about__cols {
    gap: 60px;
  }
}
@media screen and (min-width: 1200px) {
  .about .about__cols {
    gap: 140px;
  }
}
.about .about__col--left {
  position: relative;
  padding-bottom: 108%;
}
@media screen and (min-width: 768px) {
  .about .about__col--left {
    padding-bottom: 600px;
  }
}
@media screen and (min-width: 1200px) {
  .about .about__col--left {
    padding-bottom: 0;
    padding-left: 47.5px;
  }
}
.about .about__col--right {
  position: relative;
  padding-bottom: 55px;
}
@media screen and (min-width: 1200px) {
  .about .about__col--right {
    padding-left: 350px;
    padding-top: 0;
    padding-bottom: 0;
  }
}
.about .about__block {
  display: grid;
  gap: 30px;
}
@media screen and (min-width: 768px) {
  .about .about__block {
    gap: 50px;
  }
}
@media screen and (min-width: 1000px) {
  .about .about__block {
    gap: 27.5px;
  }
}
.about .about__subtitle {
  font-family: "source-han-serif-japanese";
  font-size: 22px;
  font-weight: 200;
  letter-spacing: 0.2em;
  line-height: 1.8;
  background: linear-gradient(-30deg, #d7d7d7 5%, #f3f3f3 45%, #d7d7d7 96%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
@media screen and (min-width: 768px) {
  .about .about__subtitle {
    font-size: 28px;
  }
}
.about .about__text {
  font-family: "noto-sans-cjk-jp";
  font-size: 14px;
  font-weight: 200;
  color: #f0f0f0;
  line-height: 2.5;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .about .about__text {
    font-size: 15px;
    line-height: 2.66;
  }
}
.about .about__fig {
  overflow: hidden;
}
.about .about__fig img {
  width: 100%;
  height: auto;
  display: block;
}
.about .about__fig--01 {
  position: absolute;
  bottom: 0;
  left: -40px;
  width: 87%;
}
@media screen and (min-width: 768px) {
  .about .about__fig--01 {
    left: -75px;
    width: 525px;
  }
}
@media screen and (min-width: 1200px) {
  .about .about__fig--01 {
    bottom: -27.5px;
    left: 650px;
    width: 485px;
  }
}
.about .about__fig--02 {
  width: 45%;
  margin-left: auto;
  margin-bottom: 50px;
}
@media screen and (min-width: 1200px) {
  .about .about__fig--02 {
    margin-left: 0;
    margin-bottom: 0;
    position: absolute;
    left: -10px;
    top: 50px;
    width: 274.5px;
  }
}
.about .about__fig--03 {
  width: 45%;
  position: relative;
  z-index: 1;
  margin: 0 0 0 auto;
  /* PS: 乗算 / 不透明度10% / 角度140° / 距離15 / スプレッド20% / サイズ25
     → CSS: offset(+12, +10) / blur 25 / spread 5 / rgba(0,0,0,.1) */
  -webkit-box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
          box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
}
@media screen and (min-width: 768px) {
  .about .about__fig--03 {
    width: 420px;
  }
}
@media screen and (min-width: 1200px) {
  .about .about__fig--03 {
    margin: 135px 0 -10% auto;
    width: 470.5px;
  }
}
.about .about__fig--04 {
  position: absolute;
}
@media screen and (min-width: 1200px) {
  .about .about__fig--04 {
    top: 52.5px;
    left: -262px;
    width: 197.5px;
  }
}
.about .about__marquee {
  margin-top: 50px;
  padding-bottom: 60px;
}
@media screen and (min-width: 768px) {
  .about .about__marquee {
    margin-top: 80px;
    padding-bottom: 105px;
  }
}
@media screen and (min-width: 1200px) {
  .about .about__marquee {
    margin-top: 0;
    padding-bottom: 135px;
  }
}
.about .about__marquee p {
  display: grid;
  grid-template-columns: repeat(2, -webkit-max-content);
  grid-template-columns: repeat(2, max-content);
  width: -webkit-max-content;
  width: -moz-max-content;
  width: max-content;
  -webkit-animation: marquee-about 24s linear infinite;
          animation: marquee-about 24s linear infinite;
}
.about .about__marquee-text {
  font-family: "cinzel";
  font-size: 60px;
  font-weight: 400;
  color: #f0f0f0;
  opacity: 0.03;
  line-height: 1.06;
  letter-spacing: 0.08em;
  white-space: nowrap;
}
@media screen and (min-width: 768px) {
  .about .about__marquee-text {
    font-size: 100px;
  }
}
@media screen and (min-width: 1200px) {
  .about .about__marquee-text {
    font-size: 100px;
  }
}

.about__label::before {
  content: "";
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
  width: 33px;
  height: 0.5px;
  background-color: #f0f0f0;
}
@media screen and (min-width: 1200px) {
  .about__label::before {
    width: 21px;
  }
}

@-webkit-keyframes marquee-about {
  to {
    -webkit-transform: translateX(-50%);
            transform: translateX(-50%);
  }
}

@keyframes marquee-about {
  to {
    -webkit-transform: translateX(-50%);
            transform: translateX(-50%);
  }
}
.service {
  position: relative;
  background-color: #252527;
  overflow: hidden;
}
.service .service__inner {
  padding: 0 30px;
}
@media screen and (min-width: 768px) {
  .service .service__inner {
    padding: 0 75px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__inner {
    padding: 0 150px;
  }
}
@media screen and (min-width: 1440px) {
  .service .service__inner {
    padding: 0 297.5px;
  }
}
.service .service__wrapper {
  padding-top: 70px;
  padding-bottom: 30px;
}
@media screen and (min-width: 768px) {
  .service .service__wrapper {
    padding-top: 90px;
    padding-bottom: 30px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__wrapper {
    padding-top: 174.5px;
    padding-bottom: 210px;
  }
}
.service .service__head {
  display: grid;
  gap: 12px;
  padding: 0 30px;
}
@media screen and (min-width: 768px) {
  .service .service__head {
    padding: 0 75px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__head {
    gap: 0;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__head {
    padding: 0 0 0 490px;
  }
}
.service .service__intro {
  position: relative;
  margin-top: 50px;
}
@media screen and (min-width: 768px) {
  .service .service__intro {
    margin-top: 90px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__intro {
    margin-top: 53.5px;
    padding-left: 490px;
  }
}
.service .service__intro-block {
  display: grid;
  gap: 45px;
}
@media screen and (min-width: 768px) {
  .service .service__intro-block {
    gap: 60px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__intro-block {
    gap: 30px;
  }
}
.service .service__intro-fig {
  display: none;
  /* PS: 乗算/不透明度10%/角度140°/距離15/スプレッド20%/サイズ25
     → CSS: offset(+12, +10) / blur 25 / spread 5 / rgba(0,0,0,.1) */
  -webkit-box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
          box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
}
@media screen and (min-width: 1200px) {
  .service .service__intro-fig {
    display: block;
    position: absolute;
    top: -132.5px;
    left: 0;
    width: 40%;
    z-index: 1;
  }
}
@media screen and (min-width: 1440px) {
  .service .service__intro-fig {
    width: 678px;
  }
}
.service .service__intro-fig img {
  width: 100%;
  height: auto;
  display: block;
}
.service .service__intro-fig-sp-wrapper {
  width: 90%;
}
@media screen and (min-width: 1200px) {
  .service .service__intro-fig-sp-wrapper {
    display: none;
  }
}
.service .service__intro-fig-sp-wrapper .service__intro-fig-sp-img {
  width: 100%;
  height: auto;
  vertical-align: middle;
}
.service .service__title-en {
  font-family: "cinzel";
  font-size: 26px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 0.04em;
  background: -webkit-gradient(linear, left top, right top, from(#fff4bf), color-stop(50%, #d7d7d7), color-stop(96%, #fff4bf));
  background: linear-gradient(90deg, #fff4bf 0%, #d7d7d7 50%, #fff4bf 96%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
@media screen and (min-width: 1000px) {
  .service .service__title-en {
    font-size: 36px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__title-en {
    padding-left: 150px;
  }
}
@media screen and (min-width: 1440px) {
  .service .service__title-en {
    padding-left: 297.5px;
  }
}
.service .service__label {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 11px;
  font-family: "source-han-serif-japanese";
  font-size: 12px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .service .service__label {
    font-size: 16px;
    gap: 15px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__label {
    padding-left: 150px;
  }
}
@media screen and (min-width: 1440px) {
  .service .service__label {
    padding-left: 297.5px;
  }
}
.service .service__subtitle {
  font-family: "source-han-serif-japanese";
  font-size: 20px;
  font-weight: 200;
  letter-spacing: 0.2em;
  line-height: 1.8;
  background: linear-gradient(-30deg, #d7d7d7 5%, #f3f3f3 45%, #d7d7d7 96%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
@media screen and (min-width: 768px) {
  .service .service__subtitle {
    font-size: 28px;
  }
}
.service .service__text {
  font-family: "noto-sans-cjk-jp";
  font-size: 14px;
  font-weight: 200;
  color: #f0f0f0;
  line-height: 2.5;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .service .service__text {
    font-size: 15px;
    line-height: 2.66;
  }
}
.service .service__categories {
  display: grid;
  gap: 48px;
  margin-top: 75px;
  padding: 0 60px 0 30px;
}
@media screen and (min-width: 768px) {
  .service .service__categories {
    padding: 0 120px 0 75px;
    margin-top: 140px;
    gap: 80px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__categories {
    grid-template-columns: 28% 28% 28%;
    -webkit-box-align: start;
    -webkit-align-items: start;
        -ms-flex-align: start;
            align-items: start;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
        -ms-flex-pack: justify;
            justify-content: space-between;
    margin-top: 77.5px;
    gap: 50px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__categories {
    grid-template-columns: auto auto auto;
    padding: 0 150px;
    -webkit-box-pack: inherit;
    -webkit-justify-content: inherit;
        -ms-flex-pack: inherit;
            justify-content: inherit;
  }
}
@media screen and (min-width: 1440px) {
  .service .service__categories {
    padding: 0 297.5px;
  }
}
.service .service__cat {
  position: relative;
}
.service .service__cat-fig {
  display: grid;
  gap: 15px;
}
@media screen and (min-width: 1200px) {
  .service .service__cat-fig {
    gap: 4px;
    width: 95%;
  }
}
.service .service__cat-fig img {
  width: 100%;
  height: auto;
  display: block;
  /* PS: 乗算/不透明度10%/角度140°/距離15/スプレッド20%/サイズ25 */
  -webkit-box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
          box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
}
.service .service__cat-num {
  position: absolute;
  top: -30px;
  right: -30px;
  border-radius: 50%;
  border: 0.5px solid #f0f0f0;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  font-family: "cinzel";
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  width: 60px;
  height: 60px;
  font-size: 18px;
}
@media screen and (min-width: 768px) {
  .service .service__cat-num {
    top: -40px;
    right: -38px;
    font-size: 20px;
    width: 78px;
    height: 78px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__cat-num {
    right: -25px;
  }
}
.service .service__cat-en {
  position: absolute;
  top: 60px;
  right: -28px;
  -webkit-writing-mode: vertical-rl;
      -ms-writing-mode: tb-rl;
          writing-mode: vertical-rl;
  font-family: "cinzel";
  font-size: 16px;
  font-weight: 400;
  color: #ababab;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 768px) {
  .service .service__cat-en {
    font-size: 16px;
    right: -35px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__cat-en {
    right: -15px;
  }
}
.service .service__cat-name {
  font-family: "noto-sans-cjk-jp";
  font-size: 14px;
  font-weight: 100;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 768px) {
  .service .service__cat-name {
    font-size: 16px;
  }
}
.service .service__versatility {
  margin-top: 90px;
  display: grid;
  gap: 50px;
}
@media screen and (min-width: 1200px) {
  .service .service__versatility {
    margin-top: 43.5px;
    gap: 70px;
  }
}
.service .service__versatility-block {
  display: grid;
  gap: 15px;
}
@media screen and (min-width: 768px) {
  .service .service__versatility-block {
    gap: 40px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__versatility-block {
    gap: 15px;
  }
}
.service .service__cert {
  display: grid;
  gap: 40px;
  background-color: #363639;
  padding: 40px 25px;
}
@media screen and (min-width: 768px) {
  .service .service__cert {
    padding: 73px 57px 40px 71px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__cert {
    grid-template-columns: auto auto;
    gap: 80px;
    -webkit-box-align: center;
    -webkit-align-items: center;
        -ms-flex-align: center;
            align-items: center;
    padding: 42px 30px 40px 70px;
  }
}
.service .service__cert-content {
  display: grid;
  gap: 40px;
}
@media screen and (min-width: 768px) {
  .service .service__cert-content {
    gap: 30px;
  }
}
.service .service__cert-title {
  font-family: "source-han-serif-japanese";
  font-size: 22px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  position: relative;
  padding-bottom: 27px;
  text-align: center;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
  margin: 0 auto;
}
@media screen and (min-width: 1000px) {
  .service .service__cert-title {
    text-align: left;
    font-size: 20px;
    margin: 0;
  }
}
.service .service__cert-list {
  display: grid;
  gap: 16px;
  list-style: none;
}
@media screen and (min-width: 1200px) {
  .service .service__cert-list {
    gap: 12px;
  }
}
.service .service__cert-item {
  font-family: "noto-sans-cjk-jp";
  font-size: 14px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  padding-left: 50px;
  position: relative;
  line-height: 1.7;
}
@media screen and (min-width: 768px) {
  .service .service__cert-item {
    padding-left: 30px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__cert-item {
    font-size: 16px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__cert-fig {
    width: 330px;
  }
}
.service .service__cert-fig img {
  width: 100%;
  height: auto;
  display: block;
  /* PS: 乗算/不透明度10%/角度140°/距離15/スプレッド20%/サイズ25 */
  -webkit-box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
          box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
}
.service .service__strengths {
  margin-top: 60px;
  display: grid;
  gap: 30px;
}
@media screen and (min-width: 768px) {
  .service .service__strengths {
    margin-top: 160px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__strengths {
    margin-top: 127.5px;
    gap: 47.5px;
  }
}
.service .service__strengths-title {
  font-family: "source-han-serif-japanese";
  font-size: 24px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  text-align: center;
}
@media screen and (min-width: 768px) {
  .service .service__strengths-title {
    font-size: 28px;
  }
}
.service .service__strengths-grid {
  display: grid;
  gap: 20px;
}
@media screen and (min-width: 1000px) {
  .service .service__strengths-grid {
    grid-template-columns: 1fr 1fr;
    gap: 20px;
  }
}
.service .service__strength {
  display: grid;
  gap: 20px;
  padding: 50px 30px;
  border: 1px solid rgba(240, 240, 240, 0.12);
  text-align: center;
}
@media screen and (min-width: 768px) {
  .service .service__strength {
    padding: 60px 30px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__strength {
    gap: 20px;
    padding: 36px 20px;
  }
}
.service .service__strength-title {
  font-family: "source-han-serif-japanese";
  font-size: 20px;
  font-weight: 200;
  color: #c0c0c0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 768px) {
  .service .service__strength-title {
    font-size: 24px;
  }
}
.service .service__strength-text {
  font-family: "noto-sans-cjk-jp";
  font-weight: 200;
  color: #f0f0f0;
  line-height: 2;
  letter-spacing: 0.2em;
  font-size: 14px;
}
.service .service__engineer {
  position: relative;
  margin-top: 80px;
  display: grid;
  gap: 48px;
}
@media screen and (min-width: 768px) {
  .service .service__engineer {
    margin-top: 130px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__engineer {
    margin-top: 150px;
  }
}
.service .service__engineer-fig {
  /* スクロールアニメの transform と干渉しないよう、translateX(-50%) ではなく
     left:0 / right:0 / margin-inline:auto で中央寄せする */
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  margin-inline: auto;
  width: 275px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  row-gap: 20px;
}
@media screen and (min-width: 768px) {
  .service .service__engineer-fig {
    width: 350px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__engineer-fig {
    right: auto;
    margin-inline: 0;
    width: 300px;
    row-gap: 35px;
  }
}
.service .service__engineer-fig img {
  width: 100%;
  height: auto;
  display: block;
  /* PS: 乗算/不透明度10%/角度140°/距離15/スプレッド20%/サイズ25 */
  -webkit-box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
          box-shadow: 12px 10px 25px 5px rgba(0, 0, 0, 0.1);
}
.service .service__engineer-name {
  font-family: "source-han-serif-japanese";
  font-size: 18px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: end;
  -webkit-align-items: flex-end;
      -ms-flex-align: end;
          align-items: flex-end;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-column-gap: 10px;
     -moz-column-gap: 10px;
          column-gap: 10px;
}
@media screen and (min-width: 768px) {
  .service .service__engineer-name {
    font-size: 24px;
    -webkit-box-pack: left;
    -webkit-justify-content: left;
        -ms-flex-pack: left;
            justify-content: left;
  }
}
.service .service__engineer-name .service__engineer-name-font {
  font-size: 14px;
}
@media screen and (min-width: 768px) {
  .service .service__engineer-name .service__engineer-name-font {
    font-size: 16px;
  }
}
.service .service__engineer-name .service__representative_name {
  width: 120px;
  height: auto;
  display: block;
}
.service .service__engineer-body {
  display: grid;
  -webkit-align-content: start;
      -ms-flex-line-pack: start;
          align-content: start;
  padding-top: 410px;
}
@media screen and (min-width: 768px) {
  .service .service__engineer-body {
    padding-top: 530px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__engineer-body {
    padding-top: 0;
    padding-left: 355px;
  }
}
.service .service__engineer-block {
  display: grid;
  gap: 15px;
}
@media screen and (min-width: 768px) {
  .service .service__engineer-block {
    gap: 40px;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__engineer-block {
    gap: 25px;
  }
}
.service .service__engineer-certs {
  padding-top: 30px;
}
@media screen and (min-width: 768px) {
  .service .service__engineer-certs {
    padding-top: 50px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__engineer-certs {
    padding-top: 32.5px;
    padding-right: 167.5px;
  }
}
@media screen and (min-width: 1440px) {
  .service .service__engineer-certs {
    padding-right: 80px;
  }
}
.service .service__engineer-certs ul {
  display: grid;
  list-style: none;
}
.service .service__engineer-certs li {
  font-family: "noto-sans-cjk-jp";
  font-size: 12px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  line-height: 2.5;
}
@media screen and (min-width: 768px) {
  .service .service__engineer-certs li {
    font-size: 14px;
  }
}
.service .service__btn {
  margin-top: 50px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  font-family: "cinzel";
  font-size: 14px;
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  border: 1px solid rgba(240, 240, 240, 0.12);
  text-decoration: none;
  height: 50px;
  width: 100%;
  -webkit-transition: background-color 0.2s, color 0.2s;
  transition: background-color 0.2s, color 0.2s;
}
@media screen and (min-width: 768px) {
  .service .service__btn {
    font-size: 14px;
    height: 60px;
    width: 290px;
    margin: 60px auto 0;
  }
}
@media screen and (min-width: 1000px) {
  .service .service__btn {
    margin: 50px 0 0;
  }
}
.service .service__marquee {
  margin-top: 50px;
  padding-bottom: 30px;
}
@media screen and (min-width: 768px) {
  .service .service__marquee {
    margin-top: 80px;
    padding-bottom: 105px;
  }
}
@media screen and (min-width: 1200px) {
  .service .service__marquee {
    position: absolute;
    left: 37.5px;
    top: 0;
    height: 100%;
    margin-top: 0;
    padding-bottom: 0;
    overflow: hidden;
  }
}
.service .service__marquee p {
  display: grid;
  grid-template-columns: repeat(2, -webkit-max-content);
  grid-template-columns: repeat(2, max-content);
  width: -webkit-max-content;
  width: -moz-max-content;
  width: max-content;
  -webkit-animation: marquee-about 24s linear infinite;
          animation: marquee-about 24s linear infinite;
}
@media screen and (min-width: 1200px) {
  .service .service__marquee p {
    grid-template-columns: unset;
    grid-template-rows: repeat(2, -webkit-max-content);
    grid-template-rows: repeat(2, max-content);
    width: auto;
    -webkit-animation: marquee-service-vertical 24s linear infinite;
            animation: marquee-service-vertical 24s linear infinite;
  }
}
.service .service__marquee-text {
  font-family: "cinzel";
  font-size: 100px;
  font-weight: 400;
  color: #f0f0f0;
  opacity: 0.03;
  line-height: 1.06;
  letter-spacing: 0.08em;
  white-space: nowrap;
}
@media screen and (min-width: 1200px) {
  .service .service__marquee-text {
    font-size: 100px;
    -webkit-writing-mode: vertical-rl;
        -ms-writing-mode: tb-rl;
            writing-mode: vertical-rl;
  }
}

.service__label::before {
  content: "";
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
  width: 33px;
  height: 0.5px;
  background-color: #f0f0f0;
}
@media screen and (min-width: 1200px) {
  .service__label::before {
    width: 21px;
  }
}

@media screen and (min-width: 1000px) {
  .service__cat:nth-child(2) {
    margin-top: 75px;
  }
  .service__cat:nth-child(3) {
    margin-top: 150px;
  }
}
.service__cert-title::after {
  position: absolute;
  content: "";
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1.5px;
  background: -webkit-gradient(linear, left top, right top, from(#f0f0f0), to(transparent));
  background: linear-gradient(to right, #f0f0f0, transparent);
}
@media screen and (min-width: 1200px) {
  .service__cert-title::after {
    width: 280px;
  }
}

.service__cert-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 18px;
  height: 16px;
  background-image: url("../images/service_check.svg");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
@media screen and (min-width: 768px) {
  .service__cert-item::before {
    height: 32px;
  }
}

.service__btn:hover {
  background-color: #f0f0f0;
  color: #0d0d0d;
}

@-webkit-keyframes marquee-service {
  to {
    -webkit-transform: translateX(-50%);
            transform: translateX(-50%);
  }
}

@keyframes marquee-service {
  to {
    -webkit-transform: translateX(-50%);
            transform: translateX(-50%);
  }
}
@-webkit-keyframes marquee-service-vertical {
  to {
    -webkit-transform: translateY(-50%);
            transform: translateY(-50%);
  }
}
@keyframes marquee-service-vertical {
  to {
    -webkit-transform: translateY(-50%);
            transform: translateY(-50%);
  }
}
.works {
  overflow: hidden;
}
.works .works__swiper {
  overflow: hidden;
}
@media screen and (min-width: 1000px) {
  .works .works__swiper {
    width: 85%;
  }
}
.works .works__wrapper {
  padding-top: 80px;
  padding-bottom: 40px;
}
@media screen and (min-width: 1000px) {
  .works .works__wrapper {
    padding-top: 100px;
    padding-bottom: 0;
    padding-right: 140px;
    position: relative;
  }
}
@media screen and (min-width: 1200px) {
  .works .works__wrapper {
    padding-right: 250px;
  }
}
.works .works__head {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: end;
  -webkit-align-items: flex-end;
      -ms-flex-align: end;
          align-items: flex-end;
  margin-right: 20px;
  margin-bottom: 20px;
}
.works .works__head .works__title-en {
  -webkit-box-ordinal-group: 0;
  -webkit-order: -1;
      -ms-flex-order: -1;
          order: -1;
}
@media screen and (min-width: 768px) {
  .works .works__head {
    margin-right: 25px;
  }
  .works .works__head .works__title-en {
    -webkit-box-ordinal-group: 1;
    -webkit-order: 0;
        -ms-flex-order: 0;
            order: 0;
  }
}
@media screen and (min-width: 1000px) {
  .works .works__head {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: start;
    -webkit-align-items: flex-start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-pack: end;
    -webkit-justify-content: flex-end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    margin-bottom: 0;
    margin-right: 0;
  }
}
.works .works__label {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 11px;
  font-family: "source-han-serif-japanese";
  font-size: 12px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .works .works__label {
    -webkit-writing-mode: vertical-rl;
        -ms-writing-mode: tb-rl;
            writing-mode: vertical-rl;
    font-size: 16px;
  }
}
.works .works__title-en {
  font-family: "cinzel";
  font-size: 26px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 0.04em;
  background: -webkit-gradient(linear, left top, right top, from(#fff4bf), color-stop(50%, #d7d7d7), color-stop(96%, #fff4bf));
  background: linear-gradient(90deg, #fff4bf 0%, #d7d7d7 50%, #fff4bf 96%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
@media screen and (min-width: 1000px) {
  .works .works__title-en {
    -webkit-writing-mode: vertical-rl;
        -ms-writing-mode: tb-rl;
            writing-mode: vertical-rl;
    font-size: 36px;
  }
}
.works .works__controls {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: right;
  -webkit-justify-content: right;
      -ms-flex-pack: right;
          justify-content: right;
  gap: 20px;
  padding: 16px 24px 0;
}
@media screen and (min-width: 1000px) {
  .works .works__controls {
    padding: 8px 0 0;
  }
}
.works .works__column {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
}
@media screen and (min-width: 1000px) {
  .works .works__column {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: end;
    -webkit-align-items: flex-end;
        -ms-flex-align: end;
            align-items: flex-end;
    -webkit-column-gap: 48px;
       -moz-column-gap: 48px;
            column-gap: 48px;
  }
}
.works .works__prev,
.works .works__next {
  cursor: pointer;
  color: #f0f0f0;
  font-size: 16px;
}
@media screen and (min-width: 768px) {
  .works .works__prev,
  .works .works__next {
    font-size: 16px;
  }
}
.works .works__pagination {
  font-family: "cinzel";
  font-size: 12px;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  width: auto;
}
@media screen and (min-width: 768px) {
  .works .works__pagination {
    font-size: 12px;
  }
}
@media screen and (min-width: 1000px) {
  .works .works__pagination {
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
  }
}
.works .works__fig {
  overflow: hidden;
}
.works .works__fig img {
  width: 100%;
  height: auto;
  display: block;
}

.works__label::before {
  content: "";
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
  width: 33px;
  height: 0.5px;
  background-color: #f0f0f0;
}
@media screen and (min-width: 1000px) {
  .works__label::before {
    width: 0.5px;
    height: 33px;
  }
}

.works__prev::before,
.works__next::before {
  display: block;
}

.works__prev::before {
  content: "<";
}

.works__next::before {
  content: ">";
}

.faq {
  background-color: #1f1f21;
}
.faq .faq__inner {
  padding: 0 20px;
}
@media screen and (min-width: 768px) {
  .faq .faq__inner {
    padding: 0 75px;
  }
}
@media screen and (min-width: 1200px) {
  .faq .faq__inner {
    padding: 0 150px;
  }
}
@media screen and (min-width: 1440px) {
  .faq .faq__inner {
    padding: 0 250px;
  }
}
.faq .faq__wrapper {
  display: grid;
  padding-top: 40px;
  gap: 50px;
}
@media screen and (min-width: 768px) {
  .faq .faq__wrapper {
    padding-top: 60px;
    gap: 70;
  }
}
@media screen and (min-width: 1000px) {
  .faq .faq__wrapper {
    padding-top: 140px;
    gap: 65px;
  }
}
.faq .faq__head {
  display: grid;
  gap: 12px;
}
@media screen and (min-width: 1000px) {
  .faq .faq__head {
    gap: 11px;
  }
}
.faq .faq__title-en {
  font-family: "cinzel";
  font-size: 26px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 0.04em;
  background: -webkit-gradient(linear, left top, right top, from(#fff4bf), color-stop(50%, #d7d7d7), color-stop(96%, #fff4bf));
  background: linear-gradient(90deg, #fff4bf 0%, #d7d7d7 50%, #fff4bf 96%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
@media screen and (min-width: 1000px) {
  .faq .faq__title-en {
    letter-spacing: 0.08em;
    font-size: 36px;
  }
}
.faq .faq__label {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 11px;
  font-family: "source-han-serif-japanese";
  font-size: 12px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .faq .faq__label {
    font-size: 16px;
    gap: 10.5px;
  }
}
.faq .faq__list {
  padding: 0 10px;
}
@media screen and (min-width: 1000px) {
  .faq .faq__list {
    padding: 0 50px;
  }
}
.faq .faq__item {
  border-top: 0.5px solid #d2d2d2;
}
.faq .faq__item--last {
  border-bottom: 0.5px solid #d2d2d2;
}
.faq .faq__question {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  padding: 30px 20px;
  cursor: pointer;
  list-style: none;
}
@media screen and (min-width: 768px) {
  .faq .faq__question {
    gap: 25px;
  }
}
@media screen and (min-width: 1000px) {
  .faq .faq__question {
    gap: 18.5px;
    padding: 22.5px 22.5px;
  }
}
.faq .faq__icon {
  position: relative;
  width: 12px;
  height: 12px;
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
}
.faq .faq__num {
  font-family: "source-han-serif-japanese";
  font-size: 14px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.08em;
}
@media screen and (min-width: 1000px) {
  .faq .faq__num {
    font-size: 16px;
  }
}
.faq .faq__q-text {
  font-family: "source-han-serif-japanese";
  font-size: 14px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .faq .faq__q-text {
    font-size: 16px;
  }
}
.faq .faq__answer {
  overflow: hidden;
  max-height: 0;
  -webkit-transition: max-height 0.5s ease;
  transition: max-height 0.5s ease;
  border-top: 0.5px solid #d2d2d2;
}
.faq .faq__answer-inner {
  padding: 40px 20px;
}
@media screen and (min-width: 1000px) {
  .faq .faq__answer-inner {
    padding: 40px 17.5px;
  }
}
.faq .faq__a-text {
  font-family: "noto-sans-cjk-jp";
  font-size: 14px;
  font-weight: 200;
  color: #f0f0f0;
  line-height: 2;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 1000px) {
  .faq .faq__a-text {
    line-height: 2.1;
  }
}

.faq__label::before {
  content: "";
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
  width: 15px;
  height: 0.5px;
  background-color: #f0f0f0;
}
@media screen and (min-width: 1000px) {
  .faq__label::before {
    width: 21px;
  }
}

.faq__item.is-open .faq__icon::after {
  -webkit-transform: translate(-50%, -50%) rotate(0deg);
          transform: translate(-50%, -50%) rotate(0deg);
}

.faq__question::-webkit-details-marker {
  display: none;
}

.faq__icon::before,
.faq__icon::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 1px;
  background-color: #d2d2d2;
  -webkit-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
}

.faq__icon::after {
  -webkit-transform: translate(-50%, -50%) rotate(90deg);
          transform: translate(-50%, -50%) rotate(90deg);
}

.faq__item.is-open .faq__answer {
  max-height: 500px;
}

.banner .banner__inner {
  padding: 0 38px;
}
@media screen and (min-width: 768px) {
  .banner .banner__inner {
    padding: 0 75px;
  }
}
@media screen and (min-width: 1200px) {
  .banner .banner__inner {
    padding: 0 280px;
  }
}
@media screen and (min-width: 1440px) {
  .banner .banner__inner {
    padding: 0 395px;
  }
}
.banner .banner__wrapper {
  padding-top: 80px;
  padding-bottom: 80px;
}
@media screen and (min-width: 1000px) {
  .banner .banner__wrapper {
    padding-top: 100px;
    padding-bottom: 130px;
  }
}
.banner .banner__card {
  padding-top: 20px;
  padding-bottom: 20px;
  border: 1px solid #f0f0f0;
  overflow: hidden;
  display: grid;
  gap: 15px;
  background-color: #1e1e20;
  background-image: url("../images/banner.webp");
  background-size: cover, cover;
  background-position: center, center;
  background-repeat: no-repeat, no-repeat;
  -webkit-box-pack: left;
  -webkit-justify-content: left;
      -ms-flex-pack: left;
          justify-content: left;
}
@media screen and (min-width: 1000px) {
  .banner .banner__card {
    padding-top: 0;
    padding-bottom: 30px;
    gap: 22.5px;
    background-image: url("../images/banner-pc.webp");
  }
}
.banner .banner__block {
  display: grid;
  padding-left: 25px;
  padding-right: 50px;
  text-align: center;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
}
@media screen and (min-width: 1000px) {
  .banner .banner__block {
    padding-left: 48.5px;
    padding-right: 80px;
    padding-top: 25px;
  }
}
.banner .banner__title-en {
  justify-self: flex-start;
  font-family: "acumin-pro";
  font-size: 35px;
  font-weight: 100;
  color: #f0f0f0;
}
@media screen and (min-width: 1000px) {
  .banner .banner__title-en {
    font-size: 50px;
  }
}
.banner .banner__subtitle {
  font-family: "zen-kaku-gothic-new";
  font-size: 9px;
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.2em;
}
@media screen and (min-width: 768px) {
  .banner .banner__subtitle {
    font-size: 18px;
  }
}
@media screen and (min-width: 1000px) {
  .banner .banner__subtitle {
    font-size: 13px;
    margin-top: -10px;
  }
}
.banner .banner__cta {
  display: inline-grid;
  grid-template-columns: auto auto;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 15px;
  justify-self: center;
  border: 1px solid #f0f0f0;
  padding: 8px 15px 8px 30px;
  text-align: center;
  font-family: "zen-kaku-gothic-new";
  font-size: 9px;
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.3em;
  text-decoration: none;
  -webkit-transition: background-color 0.2s, color 0.2s;
  transition: background-color 0.2s, color 0.2s;
}
@media screen and (min-width: 1000px) {
  .banner .banner__cta {
    font-size: 13px;
    padding: 7.5px 13px 10px 30px;
    gap: 30px;
  }
}
.banner .banner__fig {
  overflow: hidden;
}
.banner .banner__fig img {
  width: 100%;
  height: auto;
  display: block;
}

.banner__cta::after {
  content: "";
  display: block;
  width: 4px;
  height: 8px;
  /* mask + background-color: currentColor で親の color に追従して矢印色が反転する */
  background-color: currentColor;
  -webkit-mask: url("../images/arrow.svg") no-repeat center/contain;
  mask: url("../images/arrow.svg") no-repeat center/contain;
}

.banner__cta:hover {
  background-color: #f0f0f0;
  color: #0d0d0d;
}

.contact {
  overflow: hidden;
}
.contact .contact__inner {
  padding: 0 20px;
  background-image: url("../images/preserve-bg-sp.jpg");
  background-size: cover;
}
@media screen and (min-width: 768px) {
  .contact .contact__inner {
    padding: 0 75px;
  }
}
@media screen and (min-width: 1000px) {
  .contact .contact__inner {
    background-image: url("../images/preserve-bg.jpg");
    padding: 0 230px;
  }
}
.contact .contact__wrapper {
  padding-top: 80px;
  padding-bottom: 80px;
  display: grid;
  gap: 60px;
}
@media screen and (min-width: 768px) {
  .contact .contact__wrapper {
    gap: 80px;
    padding-top: 100px;
    padding-bottom: 100px;
  }
}
@media screen and (min-width: 1000px) {
  .contact .contact__wrapper {
    padding-top: 87.5px;
    padding-bottom: 75px;
    gap: 10px;
  }
}
@media screen and (min-width: 1000px) {
  .contact .contact__deco {
    width: 90%;
    margin: 0 auto 45px;
  }
}
.contact .contact__deco .contact__deco-img {
  width: 100%;
  height: auto;
  vertical-align: middle;
}
.contact .contact__block {
  display: grid;
  gap: 40px;
  text-align: center;
}
@media screen and (min-width: 768px) {
  .contact .contact__block {
    gap: 60px;
  }
}
@media screen and (min-width: 1000px) {
  .contact .contact__block {
    gap: 12.5px;
  }
}
.contact .contact__tagline {
  font-family: "source-han-serif-japanese";
  font-size: 20px;
  font-weight: 200;
  color: #f0f0f0;
  letter-spacing: 0.2em;
  line-height: 1.7;
}
@media screen and (min-width: 1000px) {
  .contact .contact__tagline {
    font-size: 24px;
  }
}
.contact .contact__text {
  font-family: "noto-sans-cjk-jp";
  font-size: 14px;
  font-weight: 200;
  color: #f0f0f0;
  line-height: 2.14;
  letter-spacing: 0.2em;
}
.contact .contact__ctas {
  display: grid;
}
@media screen and (min-width: 1000px) {
  .contact .contact__ctas {
    grid-template-columns: 1fr 1fr;
  }
}
.contact .contact__cta {
  display: grid;
  grid-template-columns: 1fr auto;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  padding: 20px 25px;
  text-decoration: none;
  -webkit-transition: background-color 0.2s;
  transition: background-color 0.2s;
}
@media screen and (min-width: 768px) {
  .contact .contact__cta {
    padding: 60px;
  }
}
@media screen and (min-width: 1000px) {
  .contact .contact__cta {
    padding: 22.5px 45px;
  }
}
.contact .contact__cta-company {
  background-color: #423f38;
}
.contact .contact__cta-contact {
  background-color: #575757;
}
.contact .contact__cta-body {
  position: relative;
  display: grid;
  grid-template-columns: auto auto;
  gap: 20px;
  -webkit-box-pack: start;
  -webkit-justify-content: start;
      -ms-flex-pack: start;
          justify-content: start;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}
@media screen and (min-width: 1000px) {
  .contact .contact__cta-body {
    gap: 15px;
  }
}
.contact .contact__cta-en {
  font-family: "cinzel";
  font-size: 24px;
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.08em;
  line-height: 1.9;
}
@media screen and (min-width: 768px) {
  .contact .contact__cta-en {
    font-size: 32px;
    line-height: 1.6;
  }
}
.contact .contact__cta-ja {
  font-family: "zen-kaku-gothic-new";
  font-size: 14px;
  font-weight: 400;
  color: #f0f0f0;
  letter-spacing: 0.14em;
}

.contact__cta:hover {
  background-color: rgba(240, 240, 240, 0.04);
}

.contact__cta-body::after {
  position: absolute;
  content: "";
  display: block;
  width: 8px;
  height: 12px;
  right: 0;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  background-image: url("../images/arrow.svg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
@media screen and (min-width: 1000px) {
  .contact__cta-body::after {
    width: 12px;
    height: 12px;
  }
}

/* ==========================================================================
   Foundation
   ========================================================================== */
/* ==========================================================================
   Layout
   ========================================================================== */
/* ==========================================================================
   Object
   ========================================================================== */
/* Component
   ----------------------------------------------------------------- */
/* Project
   ----------------------------------------------------------------- */
/* Utility
   ----------------------------------------------------------------- */
/*# sourceMappingURL=style.css.map */