/* ─────────────────────────────────────────────────────────────
   AirSync Marketing Site — Shared Styles
   Tokens / Layout / Nav / Footer / Hero strip / Buttons / Reveal
   Mirrors index_v2.html design language (Money Forward neighbor)
   ───────────────────────────────────────────────────────────── */

* { box-sizing: border-box; }

:root {
  --bg:        #FFFFFF;
  --surface:   #FFFFFF;
  --paper:     #F7F8FA;
  --ink:       #14110F;
  --ink-2:     #2A2520;
  --ink-3:     #5A5048;
  --ink-4:     #8A8278;
  --line:      #E6E8EC;
  --line-2:    #D4D7DC;
  --primary:   #1F6FEB;
  --primary-h: #1A5BC4;
  --hero-bg:   #1F6FEB;
  --hero-fg:   #FFFFFF;
  --hero-soft: rgba(255,255,255,0.78);
  --section-pad-y: 120px;
  --fill:      #F2F4F7;
  --fill-2:    #F7F8FA;
}

html, body {
  margin: 0; background: var(--bg); color: var(--ink);
  font-family: var(--font-jp);
  font-feature-settings: "palt";
  -webkit-font-smoothing: antialiased;
  font-size: 16px;
  line-height: 1.8;
}

a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }

.wrap { max-width: 1200px; margin: 0 auto; padding: 0 32px; }

/* ───────── Nav ───────── */
.nav-wrap {
  background: #fff; border-bottom: 1px solid var(--line);
  position: sticky; top: 0; z-index: 30;
}
.nav { display: flex; align-items: center; gap: 36px; padding: 18px 32px; max-width: 1280px; margin: 0 auto; }
.brand { display: flex; align-items: center; gap: 10px; font-size: 19px; font-weight: 700; letter-spacing: -0.01em; }
.brand-mark {
  width: 30px; height: 30px; border-radius: 8px; background: var(--primary);
  color: #fff; display: grid; place-items: center; font-family: var(--font-latin);
  font-weight: 800; font-size: 15px; letter-spacing: -0.04em;
}
.nav-links { display: flex; gap: 28px; list-style: none; padding: 0; margin: 0; font-size: 14.5px; font-weight: 600; }
.nav-links a { color: var(--ink-2); transition: color .14s; }
.nav-links a:hover { color: var(--primary); }
.nav-actions { margin-left: auto; display: flex; gap: 10px; align-items: center; }

/* ───────── Buttons ───────── */
.btn {
  display: inline-flex; align-items: center; gap: 8px;
  height: 46px; padding: 0 22px;
  border-radius: 999px; border: 1px solid transparent;
  font-family: var(--font-jp); font-size: 14.5px; font-weight: 700;
  cursor: pointer; transition: all .14s;
  background: transparent; color: var(--ink); white-space: nowrap;
}
.btn-sm { height: 38px; padding: 0 16px; font-size: 13.5px; }
.btn-primary { background: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-h); }
.btn-secondary { background: #fff; color: var(--ink); border-color: var(--line-2); }
.btn-secondary:hover { border-color: var(--ink); }
.btn-on-hero { background: #fff; color: var(--ink); }
.btn-on-hero:hover { background: #F4F8FE; }
.btn-ghost-hero { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,0.5); }
.btn-ghost-hero:hover { border-color: #fff; background: rgba(255,255,255,0.08); }
.btn .arr { font-family: var(--font-mono); font-size: 12px; opacity: 0.85; }

/* ───────── Hero strip (sub-page) ─────────
   Smaller than the LP hero — used as a page header for sub-pages. */
.hero-strip {
  background: var(--hero-bg);
  color: var(--hero-fg);
  padding: 88px 0 96px;
  position: relative;
  overflow: hidden;
}
.hero-strip-inner {
  max-width: 1200px; margin: 0 auto; padding: 0 32px;
  text-align: left;
}
.hero-strip .eyebrow {
  display: inline-block; font-size: 12px; font-weight: 700;
  color: var(--hero-soft); letter-spacing: 0.10em;
  text-transform: uppercase; margin-bottom: 16px;
}
.hero-strip h1 {
  font-size: 40px; font-weight: 800; line-height: 1.45;
  letter-spacing: -0.015em; margin: 0 0 22px; color: #fff;
  max-width: 880px;
}
.hero-strip p {
  font-size: 16.5px; line-height: 1.9; color: var(--hero-soft);
  margin: 0; max-width: 720px;
}

/* ───────── Section ───────── */
section { padding: var(--section-pad-y) 0; border-bottom: 1px solid var(--line); }
section:last-of-type { border-bottom: 0; }
.section-head { text-align: center; margin: 0 auto 64px; max-width: 760px; }
.section-eyebrow {
  display: inline-block; font-size: 12px; font-weight: 700;
  color: var(--primary); letter-spacing: 0.08em;
  margin-bottom: 18px; text-transform: uppercase;
}
.section-h {
  font-size: 32px; font-weight: 800; line-height: 1.5;
  letter-spacing: -0.01em; margin: 0 0 18px; color: var(--ink);
}
.section-sub {
  font-size: 16px; color: var(--ink-3); line-height: 1.9; margin: 0;
}

/* ───────── Final CTA panel ───────── */
.cta-final {
  background: var(--hero-bg); color: #fff;
  padding: 0; border-bottom: 0;
  position: relative; overflow: hidden;
  transition: background-color 700ms cubic-bezier(0.2, 0, 0, 1);
}
.cta-final::before {
  content: ""; position: absolute; inset: -8%;
  background:
    radial-gradient(ellipse 60% 55% at 85% 20%, rgba(255,255,255,0.14) 0%, transparent 60%),
    radial-gradient(ellipse 50% 75% at 12% 88%, rgba(255,255,255,0.05) 0%, transparent 70%),
    radial-gradient(ellipse 90% 70% at 50% 50%, transparent 30%, rgba(0,0,0,0.10) 100%);
  opacity: 0.55;
  transform: scale(1) translateZ(0);
  transition: opacity 900ms cubic-bezier(0.2, 0, 0, 1),
              transform 1100ms cubic-bezier(0.2, 0, 0, 1);
  pointer-events: none;
}
.cta-final:hover { background-color: var(--primary-h); }
.cta-final:hover::before { opacity: 1; transform: scale(1.08); }
.cta-final-link { display: block; color: inherit; position: relative; z-index: 1; }
.cta-final-inner {
  max-width: 1280px; margin: 0 auto; padding: 110px 32px;
  display: grid; grid-template-columns: 1fr auto;
  gap: 56px; align-items: center;
}
.cta-final-copy {
  transition: transform 700ms cubic-bezier(0.2, 0, 0, 1);
}
.cta-final:hover .cta-final-copy { transform: translateX(6px); }
.cta-final-copy h2 {
  font-size: 36px; font-weight: 700; line-height: 1.5;
  letter-spacing: -0.015em; margin: 0 0 16px; color: #fff;
}
.cta-final-copy .lead {
  font-size: 16px; line-height: 1.9; color: var(--hero-soft);
  margin: 0; max-width: 540px;
}
.cta-arrow {
  display: inline-flex; align-items: center; gap: 18px;
  color: #fff; white-space: nowrap;
  transition: transform 700ms cubic-bezier(0.2, 0, 0, 1);
}
.cta-final:hover .cta-arrow { transform: translateX(-4px); }
.cta-arrow .circle {
  width: 56px; height: 56px; border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.55);
  display: grid; place-items: center;
  transition: border-color 380ms ease, background-color 380ms ease, transform 500ms cubic-bezier(0.2,0,0,1);
  flex-shrink: 0;
}
.cta-arrow .label { font-size: 15px; font-weight: 600; }
.cta-final:hover .cta-arrow .circle {
  border-color: #fff; background: rgba(255,255,255,0.12); transform: scale(1.06);
}
@media (max-width: 920px) {
  .cta-final-inner { grid-template-columns: 1fr; gap: 32px; padding: 80px 24px; }
  .cta-final-copy h2 { font-size: 28px; }
}

/* ───────── Footer ───────── */
footer.site-footer {
  background: #fff; padding: 64px 0 40px; border-top: 1px solid var(--line);
}
.footer-inner { max-width: 1200px; margin: 0 auto; padding: 0 32px; }
.footer-grid {
  display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 48px;
  padding-bottom: 48px; border-bottom: 1px solid var(--line);
}
.footer-grid h5 {
  font-size: 12px; font-weight: 700; letter-spacing: 0.06em;
  color: var(--ink-3); margin: 0 0 18px; text-transform: uppercase;
}
.footer-grid ul { list-style: none; padding: 0; margin: 0; }
.footer-grid li { padding: 6px 0; font-size: 14px; }
.footer-grid a { color: var(--ink-2); }
.footer-grid a:hover { color: var(--primary); }
.footer-brand { font-size: 14px; color: var(--ink-3); line-height: 1.85; }
.footer-bottom {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 24px; font-size: 12.5px; color: var(--ink-3);
}

/* ───────── Reveal motion ───────── */
.reveal {
  opacity: 0; transform: translateY(28px);
  transition: opacity .9s cubic-bezier(0.2, 0, 0, 1),
              transform .9s cubic-bezier(0.2, 0, 0, 1);
  will-change: opacity, transform;
}
.reveal.is-visible { opacity: 1; transform: none; }

.reveal-stagger > * {
  opacity: 0; transform: translateY(28px);
  transition: opacity .85s cubic-bezier(0.2, 0, 0, 1),
              transform .85s cubic-bezier(0.2, 0, 0, 1);
}
.reveal-stagger.is-visible > *:nth-child(1) { opacity: 1; transform: none; transition-delay: 60ms; }
.reveal-stagger.is-visible > *:nth-child(2) { opacity: 1; transform: none; transition-delay: 160ms; }
.reveal-stagger.is-visible > *:nth-child(3) { opacity: 1; transform: none; transition-delay: 260ms; }
.reveal-stagger.is-visible > *:nth-child(4) { opacity: 1; transform: none; transition-delay: 360ms; }
.reveal-stagger.is-visible > *:nth-child(5) { opacity: 1; transform: none; transition-delay: 460ms; }
.reveal-stagger.is-visible > *:nth-child(6) { opacity: 1; transform: none; transition-delay: 560ms; }

.section-head.reveal .section-eyebrow,
.section-head.reveal .section-h,
.section-head.reveal .section-sub {
  opacity: 0; transform: translateY(18px);
  transition: opacity .8s cubic-bezier(0.2, 0, 0, 1),
              transform .8s cubic-bezier(0.2, 0, 0, 1);
}
.section-head.reveal.is-visible .section-eyebrow { opacity: 1; transform: none; transition-delay: 80ms; }
.section-head.reveal.is-visible .section-h       { opacity: 1; transform: none; transition-delay: 200ms; }
.section-head.reveal.is-visible .section-sub     { opacity: 1; transform: none; transition-delay: 340ms; }

/* Sub-page hero entry */
.hero-strip .eyebrow,
.hero-strip h1,
.hero-strip p {
  opacity: 0; transform: translateY(24px);
  animation: hero-enter .9s cubic-bezier(0.2, 0, 0, 1) forwards;
}
.hero-strip .eyebrow { animation-delay: 100ms; }
.hero-strip h1       { animation-delay: 240ms; }
.hero-strip p        { animation-delay: 380ms; }
@keyframes hero-enter { to { opacity: 1; transform: none; } }

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-stagger > *,
  .hero-strip .eyebrow, .hero-strip h1, .hero-strip p,
  .section-head.reveal .section-eyebrow,
  .section-head.reveal .section-h,
  .section-head.reveal .section-sub {
    opacity: 1 !important; transform: none !important;
    animation: none !important; transition: none !important;
  }
}

/* ───────── Responsive ───────── */
@media (max-width: 920px) {
  :root { --section-pad-y: 80px; }
  .hero-strip { padding: 64px 0 72px; }
  .hero-strip h1 { font-size: 28px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  .nav-links { display: none; }
  .section-h { font-size: 26px; }
}

/* ───────── Card hover lift ───────── */
.lift {
  transition: transform .35s cubic-bezier(0.2, 0, 0, 1),
              box-shadow .35s cubic-bezier(0.2, 0, 0, 1);
}
.lift:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(20,17,15,0.06); }
