:root {
  --bg: #f0f9ff;
  --bg2: #cffafe;
  --surface: #ffffff;
  --text: #0f172a;
  --muted: #334155;
  --muted2: #64748b;
  --line: rgba(8, 145, 178, 0.14);
  --accent: #06b6d4;
  --accent-soft: #a5f3fc;
  --accent-deep: #0e7490;
  --hero-grad-0: #38bdf8;
  --hero-grad-1: #ecfeff;
  --hero-glow: rgba(6, 182, 212, 0.35);
  --shadow: 0 20px 50px rgba(8, 145, 178, 0.12);
  --banner-grad: linear-gradient(135deg, #0891b2 0%, #0e7490 48%, #155e75 100%);
  --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, #bae6fd 0%, var(--bg) 38%, #f8fcff 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(240, 249, 255, 0.94);
  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(207, 250, 254, 0.65) 72%,
    rgba(255, 255, 255, 0.25) 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: var(--banner-grad);
  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.78), transparent 56%),
    radial-gradient(ellipse 70% 45% at 12% 88%, rgba(165, 243, 252, 0.22), transparent 62%),
    linear-gradient(
      168deg,
      rgba(255, 255, 255, 0.97) 0%,
      rgba(240, 249, 255, 0.94) 32%,
      rgba(224, 242, 254, 0.9) 62%,
      rgba(186, 230, 253, 0.76) 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;
}

.about-app__lead {
  margin: clamp(16px, 2.8vw, 22px) auto 0;
  font-size: 15px;
  line-height: 1.75;
  color: var(--text);
  text-align: center;
}

.section--download-footer {
  padding-top: clamp(36px, 4.8vw, 48px);
  padding-bottom: 40px;
  border-top: 1px solid rgba(255, 255, 255, 0.18);
  background: var(--banner-grad);
  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(248, 252, 255, 0.92), rgba(207, 250, 254, 0.78));
}

.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(8, 145, 178, 0.12);
  box-shadow: 0 10px 32px rgba(8, 145, 178, 0.07);
}

.feature-spot--panel0 {
  background:
    radial-gradient(ellipse 92% 62% at 50% 10%, rgba(255, 255, 255, 0.82), transparent 56%),
    linear-gradient(
      160deg,
      rgba(255, 255, 255, 0.98) 0%,
      rgba(231, 246, 255, 0.93) 45%,
      rgba(186, 230, 253, 0.72) 100%
    );
}

.feature-spot--panel1 {
  background:
    radial-gradient(ellipse 85% 70% at 18% 22%, rgba(255, 255, 255, 0.75), transparent 52%),
    linear-gradient(
      155deg,
      rgba(255, 255, 255, 0.96) 0%,
      rgba(207, 250, 254, 0.88) 55%,
      rgba(186, 230, 253, 0.72) 100%
    );
}

.feature-spot--panel2 {
  background:
    radial-gradient(ellipse 90% 65% at 82% 18%, rgba(255, 255, 255, 0.65), transparent 55%),
    linear-gradient(
      205deg,
      rgba(236, 254, 255, 0.65) 0%,
      rgba(207, 250, 254, 0.92) 45%,
      rgba(165, 243, 252, 0.55) 100%
    );
}

.feature-spot--panel3 {
  background:
    radial-gradient(ellipse 100% 55% at 50% 0%, rgba(255, 255, 255, 0.85), transparent 50%),
    linear-gradient(
      180deg,
      rgba(252, 253, 255, 0.94) 0%,
      rgba(224, 242, 254, 0.82) 70%,
      rgba(56, 189, 248, 0.38) 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: rgba(255, 255, 255, 0.55);
}

.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(--muted2);
}

.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(2, 132, 199, 0.08);
  background: rgba(255, 255, 255, 0.65);
  box-shadow: none;
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.related-lps__link:hover {
  border-color: rgba(2, 132, 199, 0.16);
  background: rgba(255, 255, 255, 0.9);
}

.related-lps__link:focus-visible {
  outline: 1px solid var(--accent);
  outline-offset: 2px;
}

.related-lps__logo {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 9px;
  object-fit: contain;
  box-shadow: none;
}

.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(--muted);
}

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

@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(255, 255, 255, 0.85);
}

.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);
    }
  }
}
