@charset "UTF-8";

/* ------------------------------------------------------------------
   Site loader + subtle scroll reveal
   ------------------------------------------------------------------ */

body.is-loading {
  overflow: hidden;
}

html.loader-skip #site-loader {
  display: none !important;
}

.l-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--white);
  transition:
    opacity 0.55s ease,
    visibility 0.55s ease;
}

.l-loader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.l-loader__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(500px, calc(100vw - 64px));
}

.l-loader__logo {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 2000 / 711;
  object-fit: contain;
  animation: loader-logo 1.6s ease-in-out infinite;
}

.js-reveal {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 0.78s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.78s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--reveal-delay, 0s);
  will-change: opacity, transform;
}

.js-reveal.is-inview {
  opacity: 1;
  transform: none;
}

/* TOP 経営のお悩み：フェードイン無し */
.p-worries.js-reveal,
.p-worries .js-reveal {
  opacity: 1;
  transform: none;
  transition: none;
}

/* 他社との違い：roles others はアニメーション無し */
.p-difference-roles__others.js-reveal,
.p-difference-roles__others .js-reveal {
  opacity: 1;
  transform: none;
  transition: none;
  will-change: auto;
}

/* select ポップアップ対策: CTA 配下に compositing / clip を残さない */
.p-cta-block,
.p-cta-block__card,
.p-cta-block__form,
.p-cta-block__form--cf7,
.p-cta-block__form-inner,
.p-cta-block__fields,
.p-cta-block__field,
.p-cta-block__select-wrap,
.p-cta-block__select-wrap .wpcf7-form-control-wrap {
  transform: none !important;
  filter: none !important;
  perspective: none !important;
  contain: none !important;
  will-change: auto !important;
  overflow: visible !important;
}

.p-services__grid > .js-reveal,
.p-strengths__grid > .js-reveal,
.p-cases__grid > .js-reveal,
.p-voices__grid > .js-reveal,
.p-column__grid > .js-reveal,
.p-flow__steps .p-flow__step.js-reveal {
  transition:
    opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: 0s;
}

/* 他の専門家との違い：標準 js-reveal（0.78s）に合わせる */
.p-difference-role-card--highlight.js-reveal,
.p-difference-process__summary.js-reveal {
  transition:
    opacity 0.78s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.78s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: 0s;
}

/* サービスカード: transformだとTB↔PC境界でグリッドが崩れるため opacity のみ */
.p-services__grid > .p-service-card.js-reveal,
.p-services__grid > .p-service-card.js-reveal.is-inview {
  min-width: 0;
  max-width: 100%;
  transform: none;
  will-change: opacity;
  transition: opacity 0.95s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: 0s;
}

.p-services__grid > .p-service-card.js-reveal {
  opacity: 0;
}

.p-services__grid > .p-service-card.js-reveal.is-inview {
  opacity: 1;
}

.p-flow__step-arrow.js-reveal {
  opacity: 0;
  transform: rotate(-90deg) scaleY(-1);
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

.p-flow__step-arrow.js-reveal.is-inview {
  opacity: 1;
  transform: rotate(-90deg) scaleY(-1);
}

@media (max-width: 767px) {
  .p-flow__step-arrow.js-reveal,
  .p-flow__step-arrow.js-reveal.is-inview {
    transform: scaleY(-1);
  }
}

.p-achievements__grid > .js-reveal {
  transition:
    opacity 0.88s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.88s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: 0s;
}

.l-page--sub .js-reveal:not(.js-reveal-seq):not(.js-reveal-cta):not(.js-reveal-fade) {
  transform: translateY(14px);
}

.l-page--sub .js-reveal.is-inview:not(.js-reveal-seq):not(.js-reveal-cta):not(.js-reveal-fade) {
  transform: none;
}

.p-column-page__grid > .js-reveal {
  transition:
    opacity 0.88s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.88s cubic-bezier(0.22, 1, 0.36, 1);
}

.p-cases-page .js-reveal-fade {
  opacity: 0;
  transform: none;
  will-change: opacity;
  transition: opacity 0.78s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--reveal-delay, 0s);
}

.p-cases-page .js-reveal-fade.is-inview {
  opacity: 1;
  transform: none;
}

@keyframes loader-logo {
  0%,
  100% {
    opacity: 0.72;
    transform: scale(0.985);
  }

  50% {
    opacity: 1;
    transform: scale(1);
  }
}

/* Hero title typewriter (TOP) */
.p-hero__title-line--type .p-hero__char {
  display: inline-block;
  opacity: 0;
  transform: translate3d(-0.12em, 0, 0);
  filter: blur(3px);
  will-change: opacity, transform, filter;
}

.p-hero__title-line--type .p-hero__char.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
  transition:
    opacity 0.44s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.44s cubic-bezier(0.16, 1, 0.3, 1),
    filter 0.44s cubic-bezier(0.16, 1, 0.3, 1);
}

.p-hero__catch-design {
  opacity: 0;
  transform: translate3d(0, 10px, 0) scale(0.96);
  will-change: opacity, transform;
}

.p-hero__catch-design.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  transition:
    opacity 0.55s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
}

/* ------------------------------------------------------------------
   Button / link hover scale (CTA・詳しく見る・詳細はこちら)
   ------------------------------------------------------------------ */

.c-btn,
.p-service-card__link,
.p-company-table__link,
.p-cta-block__submit,
.p-cases-page .p-case-detail__cta-btn {
  transform: scale(1);
  transform-origin: center center;
  transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.p-service-card__link,
.p-company-table__link {
  display: inline-block;
}

.c-btn:hover,
.p-service-card__link:hover,
.p-company-table__link:hover,
.p-cta-block__submit:hover,
.p-cases-page .p-case-detail__cta-btn:hover {
  transform: scale(1.04);
}

.p-cases-page .p-case-detail__cta-btn {
  transition:
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.2s ease;
}

@media (prefers-reduced-motion: reduce) {
  .l-loader,
  .l-loader__logo,
  .js-reveal {
    animation: none !important;
    transition: none !important;
  }

  .js-reveal {
    opacity: 1;
    transform: none;
  }

  .p-hero__title-line--type .p-hero__char,
  .p-hero__title-line--type .p-hero__char.is-visible,
  .p-hero__catch-design,
  .p-hero__catch-design.is-visible {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none !important;
  }

  .c-btn,
  .p-service-card__link,
  .p-company-table__link,
  .p-cta-block__submit,
  .p-cases-page .p-case-detail__cta-btn,
  .c-btn:hover,
  .p-service-card__link:hover,
  .p-company-table__link:hover,
  .p-cta-block__submit:hover,
  .p-cases-page .p-case-detail__cta-btn:hover {
    transform: none;
    transition: none;
  }
}
