:root {
  --bg: #09090b;
  --bg2: #18181b;
  --surface: #27272a;
  --text: #fafafa;
  --muted: #a1a1aa;
  --muted2: #71717a;
  --line: rgba(255, 255, 255, 0.08);
  --accent: #d4d4d8;
  --accent-soft: #52525b;
  --accent-deep: #f4f4f5;
  --hero-grad-0: #3f3f46;
  --hero-grad-1: #18181b;
  --hero-glow: rgba(255, 255, 255, 0.09);
  --shadow: 0 20px 50px rgba(0, 0, 0, 0.55);
  --radius: 18px;
  --container: 1080px;
  --header-h: 48px;
  --hero-phone-h: min(56vh, 460px);
  --hero-slide-max-w: min(88%, 340px);
  --hero-visual-min-h: min(52vh, 440px);
}

@keyframes motion-fade-up {
  from {
    opacity: 0;
    transform: translateY(18px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.motion-in {
  opacity: 0;
  animation: motion-fade-up 1.2s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.motion-in--d1 {
  animation-delay: 0.18s;
}

.motion-in--d2 {
  animation-delay: 0.36s;
}

.motion-in--d3 {
  animation-delay: 0.52s;
}

.reveal-on-scroll {
  opacity: 0;
  transform: translateY(22px);
  transition:
    opacity 1.05s cubic-bezier(0.22, 1, 0.36, 1),
    transform 1.05s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* 機能紹介：ヒーロー／ダウンロード帯と同じ motion-fade-up（スクロールで .is-visible 時に再生） */
.section--spots .reveal-on-scroll:not(.is-visible) {
  opacity: 0;
  transform: translateY(18px);
  transition: none;
}

.section--spots .reveal-on-scroll.is-visible {
  animation: motion-fade-up 1.2s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

@media (prefers-reduced-motion: reduce) {
  .motion-in,
  .motion-in--d1,
  .motion-in--d2,
  .motion-in--d3 {
    animation: none;
    opacity: 1;
    transform: none;
  }

  .reveal-on-scroll {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .section--spots .reveal-on-scroll,
  .section--spots .reveal-on-scroll.is-visible {
    animation: none;
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero__slide {
    transition: none;
  }

  .hero__slide:not(.is-active) {
    visibility: hidden;
  }
}

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
}

body {
  margin: 0;
  font-family: "Noto Sans JP", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial,
    "Apple Color Emoji", "Segoe UI Emoji";
  color: var(--text);
  background: linear-gradient(180deg, #18181b 0%, var(--bg) 42%, #050507 100%);
  overflow-x: hidden;
}

a {
  color: inherit;
  text-decoration: none;
}

.page {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}

.container {
  width: min(100% - 48px, var(--container));
  margin-inline: auto;
}

/* 参考LPに近い上部バー：左上ロゴ＋アプリ名 */
.site-header {
  height: var(--header-h);
  background: rgba(9, 9, 11, 0.88);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(10px);
}

.site-header__inner {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.site-brand {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 2px 0;
}

.site-brand__logo {
  width: 28px;
  height: 28px;
  object-fit: contain;
  flex-shrink: 0;
  border-radius: 8px;
}

.site-brand__name {
  font-weight: 700;
  font-size: 17px;
  letter-spacing: 0.04em;
  color: var(--text);
  line-height: 1.2;
}

.hero {
  position: relative;
  padding: 24px 0 0;
  overflow-x: visible;
  overflow-y: visible;
}

.hero__gradient {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    165deg,
    var(--hero-grad-0) 0%,
    var(--hero-grad-1) 42%,
    rgba(24, 24, 27, 0.94) 72%,
    rgba(9, 9, 11, 0.35) 100%
  );
  pointer-events: none;
}

/* 参考LP：見出し → 端末 → 説明文（ダウンロード帯は .container 外で全幅） */
.hero__grid {
  position: relative;
  display: grid;
  gap: 24px 0;
  grid-template-columns: 1fr;
  grid-template-areas:
    "masthead"
    "visual"
    "body";
  align-items: start;
}

.hero__masthead {
  grid-area: masthead;
  min-width: 0;
  text-align: center;
}

.hero__body {
  grid-area: body;
  min-width: 0;
  width: 100%;
  max-width: min(62ch, 100%);
  margin-inline: auto;
}

.hero__tagline {
  margin: 0 0 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--accent-deep);
  letter-spacing: 0.06em;
}

.hero__title {
  margin: 0;
  font-size: clamp(26px, 4.2vw, 42px);
  line-height: 1.22;
  letter-spacing: -0.02em;
  font-weight: 700;
  color: var(--text);
}

.hero__titleSub {
  display: block;
  margin-top: 10px;
  font-weight: 600;
  color: var(--muted);
  font-size: clamp(15px, 2vw, 19px);
  letter-spacing: 0.01em;
}

.hero__lead {
  margin: 0 0 4px;
  color: var(--muted);
  line-height: 1.85;
  font-size: 15px;
}

.hero__visual {
  grid-area: visual;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  min-height: var(--hero-visual-min-h);
  padding: 8px 0 4px;
}

.hero__visualGlow {
  position: absolute;
  left: 50%;
  bottom: 10%;
  transform: translateX(-50%);
  width: min(72%, 340px);
  height: 44%;
  max-height: 200px;
  border-radius: 50%;
  background: radial-gradient(ellipse at center, var(--hero-glow) 0%, transparent 70%);
  pointer-events: none;
}

.hero__phones {
  position: relative;
  z-index: 1;
  width: min(100%, 420px);
  height: var(--hero-phone-h);
  margin-inline: auto;
}

.hero__slide {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  height: auto;
  max-height: var(--hero-phone-h);
  width: auto;
  max-width: var(--hero-slide-max-w);
  object-fit: contain;
  opacity: 0;
  transition: opacity 1.05s ease;
  pointer-events: none;
}

.hero__slide.is-active {
  opacity: 1;
  z-index: 1;
}

/* 参考LP風：ヒーロー直下のストア誘導帯 */
.download-banner {
  position: relative;
  padding: 40px 20px 44px;
  background: linear-gradient(
    135deg,
    #a8a8b0 0%,
    #8f8f98 34%,
    #76767f 68%,
    #5e5e67 100%
  );
  color: #fff;
}

/* ヒーロー直下・コンテナより外側＝ページ幅いっぱい（100vw による左ズレを避ける） */
.hero__download {
  width: 100%;
  max-width: none;
  margin-top: 24px;
  margin-bottom: 0;
  box-sizing: border-box;
}

.hero__download .download-banner {
  width: 100%;
}

.download-banner__inner {
  width: min(100% - 48px, var(--container));
  max-width: var(--container);
  margin-inline: auto;
  box-sizing: border-box;
}

.download-banner__title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(12px, 3vw, 20px);
  margin: 0 0 28px;
}

.download-banner__line {
  flex: 1 1 0;
  max-width: min(120px, 18vw);
  height: 1px;
  background: rgba(255, 255, 255, 0.9);
}

.download-banner__label {
  flex-shrink: 0;
  font-size: clamp(17px, 2.4vw, 21px);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-align: center;
}

.download-banner__stores {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: flex-start;
  align-content: center;
  gap: 14px 16px;
  width: 100%;
}

.store-badge--asset {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 0 0 auto;
  padding: 0;
  border: none;
  background: transparent;
  border-radius: 10px;
  line-height: 0;
}

.store-badge--asset img {
  display: block;
  width: min(100%, 158px);
  max-width: 100%;
  height: auto;
  aspect-ratio: 366 / 112;
  border-radius: 8px;
}

@media (min-width: 400px) {
  .store-badge--asset img {
    width: min(100%, 186px);
  }
}

.section {
  padding: 48px 0;
}

.section__title {
  margin: 0;
  font-size: 22px;
  letter-spacing: 0.01em;
  font-weight: 700;
}

.section--audience {
  padding: clamp(18px, 3.5vw, 28px) 0 clamp(32px, 4.5vw, 48px);
  background:
    radial-gradient(ellipse 100% 58% at 50% -10%, rgba(255, 255, 255, 0.06), transparent 56%),
    radial-gradient(ellipse 70% 45% at 12% 88%, rgba(63, 63, 70, 0.35), transparent 62%),
    linear-gradient(
      168deg,
      rgba(24, 24, 27, 0.98) 0%,
      rgba(18, 18, 20, 0.96) 32%,
      rgba(12, 12, 14, 0.94) 62%,
      rgba(9, 9, 11, 0.98) 100%
    );
}

.section--audience .section__title {
  margin: 0;
  text-align: center;
  font-size: clamp(24px, 3.9vw, 32px);
  line-height: 1.28;
  letter-spacing: 0.015em;
}

.audience-list {
  margin: clamp(16px, 2.8vw, 22px) auto 0;
  padding: 0;
  list-style: none;
  max-width: min(52ch, 100%);
  display: flex;
  flex-direction: column;
  gap: clamp(11px, 2vw, 15px);
}

.audience-list li {
  position: relative;
  padding-left: 1.25em;
  font-size: 15px;
  line-height: 1.75;
  color: var(--text);
}

.audience-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: linear-gradient(145deg, var(--accent-soft), var(--accent));
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12);
}

.section--download-footer {
  padding-top: clamp(36px, 4.8vw, 48px);
  padding-bottom: 40px;
  border-top: 1px solid rgba(255, 255, 255, 0.18);
  background: linear-gradient(
    135deg,
    #a8a8b0 0%,
    #8f8f98 34%,
    #76767f 68%,
    #5e5e67 100%
  );
  color: #fff;
}

.section--download-footer__title {
  margin-bottom: 22px;
  text-align: center;
  font-size: clamp(19px, 2.4vw, 24px);
  color: #fff;
}

.section--spots {
  padding-top: 40px;
  padding-bottom: clamp(40px, 5.5vw, 56px);
  border-top: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(15, 15, 17, 0.98), rgba(9, 9, 11, 1));
}

.section--spots__title {
  margin-bottom: clamp(28px, 5vw, 40px);
  text-align: center;
  font-size: clamp(24px, 3.9vw, 32px);
  line-height: 1.28;
  letter-spacing: 0.015em;
}

.section--spots .container {
  display: flex;
  flex-direction: column;
  gap: clamp(32px, 5vw, 48px);
}

.feature-spot {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px 28px;
  align-items: center;
  padding: clamp(18px, 3.8vw, 28px);
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, 0.09);
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.35);
}

.feature-spot--panel0 {
  background:
    radial-gradient(ellipse 92% 62% at 50% 10%, rgba(255, 255, 255, 0.06), transparent 56%),
    linear-gradient(
      160deg,
      rgba(39, 39, 42, 0.95) 0%,
      rgba(31, 31, 34, 0.92) 45%,
      rgba(24, 24, 27, 0.88) 100%
    );
}

.feature-spot--panel1 {
  background:
    radial-gradient(ellipse 85% 70% at 18% 22%, rgba(255, 255, 255, 0.05), transparent 52%),
    linear-gradient(
      155deg,
      rgba(34, 34, 37, 0.96) 0%,
      rgba(28, 28, 31, 0.92) 55%,
      rgba(22, 22, 25, 0.88) 100%
    );
}

.feature-spot--panel2 {
  background:
    radial-gradient(ellipse 90% 65% at 82% 18%, rgba(255, 255, 255, 0.04), transparent 55%),
    linear-gradient(
      205deg,
      rgba(30, 30, 33, 0.92) 0%,
      rgba(26, 26, 29, 0.94) 45%,
      rgba(20, 20, 23, 0.9) 100%
    );
}

.feature-spot--panel3 {
  background:
    radial-gradient(ellipse 100% 55% at 50% 0%, rgba(255, 255, 255, 0.07), transparent 50%),
    linear-gradient(
      180deg,
      rgba(36, 36, 39, 0.94) 0%,
      rgba(28, 28, 31, 0.9) 70%,
      rgba(18, 18, 21, 0.92) 100%
    );
}

.feature-spot--panel4 {
  background:
    radial-gradient(ellipse 70% 80% at 75% 75%, rgba(63, 63, 70, 0.25), transparent 58%),
    linear-gradient(
      195deg,
      rgba(32, 32, 35, 0.92) 0%,
      rgba(26, 26, 29, 0.94) 40%,
      rgba(20, 20, 23, 0.9) 100%
    );
}

.feature-spot--panel5 {
  background:
    radial-gradient(ellipse 75% 70% at 22% 78%, rgba(82, 82, 91, 0.2), transparent 58%),
    linear-gradient(
      165deg,
      rgba(34, 34, 37, 0.95) 0%,
      rgba(28, 28, 31, 0.9) 50%,
      rgba(22, 22, 25, 0.88) 100%
    );
}

.feature-spot--panel6 {
  background:
    radial-gradient(ellipse 80% 60% at 50% 100%, rgba(63, 63, 70, 0.22), transparent 52%),
    linear-gradient(
      175deg,
      rgba(36, 36, 39, 0.94) 0%,
      rgba(28, 28, 31, 0.9) 55%,
      rgba(18, 18, 21, 0.92) 100%
    );
}

.feature-spot__media {
  display: flex;
  justify-content: center;
}

.feature-spot__media img {
  width: min(72vw, 168px);
  max-width: 100%;
  height: auto;
}

.feature-spot__copy {
  text-align: center;
  max-width: 38ch;
  margin-inline: auto;
}

.feature-spot__title {
  margin: 0;
  font-size: clamp(20px, 3.1vw, 26px);
  font-weight: 700;
  line-height: 1.32;
  letter-spacing: 0.01em;
}

.feature-spot__text {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: clamp(16px, 2.15vw, 18px);
  line-height: 1.75;
}

@media (min-width: 720px) {
  .feature-spot {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 24px clamp(28px, 4vw, 48px);
    align-items: center;
  }

  .feature-spot__media {
    justify-content: center;
  }

  .feature-spot__copy {
    text-align: center;
    margin-inline: auto;
    max-width: min(40ch, 100%);
    justify-self: center;
    width: 100%;
  }

  .feature-spot--reverse .feature-spot__media {
    order: 2;
    justify-content: center;
  }

  .feature-spot--reverse .feature-spot__copy {
    order: 1;
  }

  .feature-spot__media img {
    width: min(100%, 240px);
  }
}

.section--related-lps {
  padding-top: clamp(20px, 3vw, 28px);
  padding-bottom: clamp(20px, 3vw, 28px);
  border-top: 1px solid var(--line);
  background:
    radial-gradient(ellipse 88% 48% at 50% 0%, rgba(82, 82, 91, 0.28), transparent 58%),
    linear-gradient(180deg, rgba(20, 20, 23, 0.98) 0%, rgba(12, 12, 14, 0.99) 55%, rgba(9, 9, 11, 1) 100%);
}

.section--related-lps__title {
  margin-bottom: clamp(12px, 1.8vw, 16px);
  text-align: center;
  font-size: clamp(12px, 1.55vw, 13px);
  line-height: 1.35;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--muted);
}

.related-lps {
  margin: 0 auto;
  padding: 0;
  list-style: none;
  width: min(520px, 100%);
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: stretch;
  gap: 10px;
}

.related-lps__item {
  flex: 1 1 0;
  min-width: 0;
}

.related-lps__link {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 100%;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.09);
  background:
    radial-gradient(ellipse 85% 70% at 14% 18%, rgba(255, 255, 255, 0.05), transparent 52%),
    linear-gradient(
      155deg,
      rgba(39, 39, 42, 0.92) 0%,
      rgba(30, 30, 33, 0.94) 48%,
      rgba(24, 24, 27, 0.9) 100%
    );
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
  text-decoration: none;
  color: inherit;
  transition:
    border-color 0.18s ease,
    background 0.18s ease,
    box-shadow 0.18s ease;
}

.related-lps__link:hover {
  border-color: rgba(251, 191, 36, 0.22);
  background:
    radial-gradient(ellipse 85% 70% at 14% 18%, rgba(255, 255, 255, 0.07), transparent 52%),
    linear-gradient(
      155deg,
      rgba(48, 48, 52, 0.95) 0%,
      rgba(36, 36, 40, 0.96) 50%,
      rgba(28, 28, 31, 0.94) 100%
    );
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.42);
}

.related-lps__link:focus-visible {
  outline: 1px solid rgba(251, 191, 36, 0.45);
  outline-offset: 2px;
}

.related-lps__logo {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 9px;
  object-fit: contain;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06);
}

.related-lps__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  text-align: left;
}

.related-lps__name {
  font-size: clamp(13px, 1.65vw, 14px);
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--text);
}

.related-lps__desc {
  font-size: clamp(11px, 1.45vw, 12px);
  line-height: 1.45;
  color: var(--muted);
}

@media (max-width: 480px) {
  .related-lps {
    flex-direction: column;
    flex-wrap: wrap;
    max-width: 360px;
  }

  .related-lps__item {
    flex: 1 1 auto;
    width: 100%;
  }
}

.footer {
  margin-top: auto;
  padding: 20px 0;
  border-top: 1px solid var(--line);
  background: rgba(9, 9, 11, 0.98);
}

.footer__inner {
  display: flex;
  justify-content: center;
  align-items: center;
}

.footer__copyright {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--muted2);
  text-decoration: none;
}

.footer__copyright:hover {
  color: var(--accent-deep);
}

@media (min-width: 900px) {
  .hero {
    --hero-phone-h: min(62vh, 520px);
    --hero-slide-max-w: min(82%, 380px);
    --hero-visual-min-h: min(62vh, 520px);
    padding: 32px 0 0;
  }

  .hero__grid {
    grid-template-columns: minmax(300px, 1fr) minmax(280px, 44%);
    grid-template-rows: auto auto;
    grid-template-areas:
      "masthead visual"
      "body visual";
    column-gap: clamp(28px, 4vw, 52px);
    row-gap: 18px;
    align-items: center;
  }

  .hero__download {
    margin-top: 28px;
  }

  .hero__masthead {
    text-align: left;
    align-self: end;
    padding-bottom: 0;
    margin-bottom: 0;
  }

  .hero__body {
    margin-inline: 0;
    align-self: start;
    max-width: min(48ch, 100%);
    margin-top: 0;
    padding-right: 0;
  }

  .hero__visual {
    grid-row: 1 / span 2;
    grid-column: 2;
    min-height: var(--hero-visual-min-h);
    justify-content: center;
    align-items: flex-end;
    padding: 0;
    align-self: end;
  }

  .hero__visualGlow {
    width: min(85%, 400px);
    bottom: 12%;
    left: 50%;
    right: auto;
    transform: translateX(-50%);
  }

  .hero__phones {
    width: 100%;
    max-width: min(100%, 500px);
    height: var(--hero-phone-h);
    margin-inline: auto;
  }

  .hero__slide {
    max-height: var(--hero-phone-h);
    max-width: var(--hero-slide-max-w);
  }
}

@media (max-width: 719px) {
  .section--spots__title {
    padding-inline: 4px;
  }
}

@media (max-width: 540px) {
  .download-banner__stores {
    flex-direction: column;
    gap: 12px;
    align-items: center;
  }

  .store-badge--asset {
    width: min(100%, 186px);
    max-width: 100%;
    margin-inline: 0;
  }

  .store-badge--asset img {
    width: 100%;
    margin-inline: 0;
  }

  .site-header {
    padding-inline: 0;
  }

  .hero {
    --hero-phone-h: min(48vh, 360px);
    --hero-slide-max-w: min(88%, 340px);
    --hero-visual-min-h: min(46vh, 400px);
  }

  .hero__grid {
    gap: 20px 0;
  }

  .hero__visual {
    min-height: var(--hero-visual-min-h);
    padding: 8px 0 4px;
  }

  .hero__phones {
    height: var(--hero-phone-h);
  }

  .hero__slide {
    max-height: var(--hero-phone-h);
    max-width: var(--hero-slide-max-w);
  }
}

/* モバイル UI の表示／非表示で vh が変わってヒーローが伸び縮みしないよう、svh（small viewport）を優先 */
@supports (height: 1svh) {
  :root {
    --hero-phone-h: min(56svh, 460px);
    --hero-visual-min-h: min(52svh, 440px);
  }

  @media (min-width: 900px) {
    .hero {
      --hero-phone-h: min(62svh, 520px);
      --hero-visual-min-h: min(62svh, 520px);
    }
  }

  @media (max-width: 540px) {
    .hero {
      --hero-phone-h: min(48svh, 360px);
      --hero-visual-min-h: min(46svh, 400px);
    }
  }
}
