/* Yeleport Space Landing - handyman_portal_style_guide.md */

@import url('theme.css');

/* Shared hover treatment: touchpoint strip + “Built for the way you work” cards */
:root {
  --landing-hover-primary-border: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
  --landing-hover-primary-glow:
    0 0 0 1px color-mix(in srgb, var(--color-primary) 40%, transparent),
    0 0 18px color-mix(in srgb, var(--color-primary) 28%, transparent),
    0 0 36px color-mix(in srgb, var(--color-primary) 14%, transparent);
}

/* Nav */
.landing-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  padding: var(--space-gutter) 0;
  background: rgba(15, 23, 42, 0.85);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--color-border);
  transition: background 0.3s var(--ease);
}

.landing-nav-inner {
  position: relative;
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.landing-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: var(--color-text);
  font-weight: 700;
  font-size: 1.25rem;
}

.landing-logo-img {
  height: 36px;
  width: auto;
  display: block;
}

.landing-logo-text {
  color: inherit;
}

.landing-nav-links {
  display: none;
  align-items: center;
  gap: 24px;
}

@media (min-width: 768px) {
  .landing-nav-links {
    display: flex;
  }
}

.landing-nav-link {
  color: var(--color-text-muted);
  text-decoration: none;
  font-weight: 500;
  transition: color 0.2s var(--ease);
}

.landing-nav-link:hover {
  color: var(--color-primary);
}

.landing-nav-cta {
  display: inline-block;
  padding: 10px 20px;
  background: var(--color-primary);
  color: #1F2937;
  text-decoration: none;
  font-weight: 600;
  border-radius: var(--radius);
  box-shadow: 0 2px 4px rgba(255, 215, 0, 0.3);
  transition: background 0.2s var(--ease), box-shadow 0.2s var(--ease);
}

.landing-nav-cta:hover {
  background: var(--color-secondary);
  box-shadow: 0 2px 8px rgba(255, 215, 0, 0.4);
}

.landing-mobile-toggle {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  cursor: pointer;
  padding: 10px;
}

.landing-mobile-toggle span {
  display: block;
  height: 2px;
  background: var(--color-text);
}

@media (min-width: 768px) {
  .landing-mobile-toggle {
    display: none;
  }
}

@media (max-width: 767px) {
  .landing-nav.nav-open .landing-nav-links {
    display: flex;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    padding: var(--space-gutter);
    background: rgba(15, 23, 42, 0.98);
    border-bottom: 1px solid var(--color-border);
    gap: 16px;
  }
}

/* Hero */
.landing-hero {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 120px var(--space-gutter) 48px;
  text-align: center;
}

.landing-hero-content {
  max-width: 720px;
}

.landing-hero-title {
  font-family: var(--font-display);
  font-size: clamp(36px, 8vw, 56px);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: var(--color-white);
  margin-bottom: 24px;
  text-shadow: 0 0 40px rgba(255, 215, 0, 0.15);
}

.landing-hero-sub {
  font-size: 18px;
  line-height: 28px;
  color: var(--color-text-muted);
  margin-bottom: 32px;
}

.landing-hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
}

/* Wormhole section */
.landing-wormhole-section {
  position: relative;
  min-height: 70vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 80px var(--space-gutter);
}

.landing-wormhole-wrap {
  position: relative;
  width: 100%;
  max-width: 400px;
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

.landing-wormhole {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: transparent;
  border: 4px solid transparent;
  background-clip: padding-box;
  box-shadow:
    inset 0 0 60px rgba(255, 215, 0, 0.1),
    0 0 80px rgba(30, 58, 138, 0.3);
  animation: wormhole-spin 20s linear infinite;
}

.landing-wormhole::before {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  padding: 4px;
  background: linear-gradient(45deg, var(--color-primary), var(--color-deep-blue), var(--color-portal-purple), var(--color-primary));
  background-size: 300% 300%;
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  animation: wormhole-spin 15s linear infinite reverse;
}

.landing-wormhole::after {
  content: '';
  position: absolute;
  inset: 20%;
  border-radius: 50%;
  border: 2px solid rgba(255, 215, 0, 0.3);
  animation: wormhole-spin 12s linear infinite;
}

.landing-wormhole-2::before {
  background: linear-gradient(135deg, var(--color-portal-purple), var(--color-primary), var(--color-deep-blue));
  background-size: 300% 300%;
}

@keyframes wormhole-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
  .landing-wormhole,
  .landing-wormhole::before,
  .landing-wormhole::after {
    animation: none;
  }
}

/* ========== Path-locked portals (appear before spaceman fade-outs) ========== */
/* Below main content (10) & wormhole (5); above backdrop. Below spaceman so he fades on top. */
.landing-spaceman-portal {
  display: block;
  position: fixed;
  z-index: 2;
  pointer-events: none;
  offset-path: path("M -80,350 C 380,120 580,580 960,400 C 1340,220 1540,580 2080,400");
  offset-rotate: 0deg;
  offset-anchor: center center;
  width: 140px;
  height: 140px;
}

/* Entry portals (where he dives in) */
.landing-spaceman-portal--1 {
  offset-distance: 23%;
}

.landing-spaceman-portal--2 {
  offset-distance: 57%;
}

/* Exit portals: locked to path % where he becomes visible (after tunnel + exit beats) */
.landing-spaceman-portal--1-exit {
  offset-distance: 38.6667%;
}

.landing-spaceman-portal--2-exit {
  offset-distance: 70.6667%;
}

.landing-spaceman-portal-inner {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.landing-spaceman-portal-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  /* Solid ring so portals stay visible even if mask-based ::before fails in a browser */
  background: radial-gradient(
    circle at 50% 50%,
    rgba(255, 215, 0, 0.12) 0%,
    rgba(30, 58, 138, 0.25) 55%,
    rgba(67, 56, 202, 0.2) 100%
  );
  border: 3px solid rgba(255, 215, 0, 0.75);
  background-clip: padding-box;
  box-shadow:
    inset 0 0 40px rgba(255, 215, 0, 0.25),
    0 0 50px rgba(255, 215, 0, 0.45),
    0 0 50px rgba(30, 58, 138, 0.35);
  animation: spaceman-portal-spin 18s linear infinite;
}

.landing-spaceman-portal-ring::before {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  padding: 3px;
  background: linear-gradient(45deg, var(--color-primary), var(--color-deep-blue), var(--color-portal-purple), var(--color-primary));
  background-size: 300% 300%;
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  animation: spaceman-portal-spin 14s linear infinite reverse;
  /* Layer gradient ring above solid border without hiding the fallback */
  pointer-events: none;
}

.landing-spaceman-portal-ring::after {
  content: '';
  position: absolute;
  inset: 22%;
  border-radius: 50%;
  border: 2px solid rgba(255, 215, 0, 0.35);
  animation: spaceman-portal-spin 10s linear infinite;
}

@keyframes spaceman-portal-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.landing-spaceman-portal--1 .landing-spaceman-portal-inner {
  animation: spaceman-portal-1-entry 30s linear infinite;
}

.landing-spaceman-portal--1-exit .landing-spaceman-portal-inner {
  animation: spaceman-portal-1-exit 30s linear infinite;
}

.landing-spaceman-portal--2 .landing-spaceman-portal-inner {
  animation: spaceman-portal-2-entry 30s linear infinite;
}

.landing-spaceman-portal--2-exit .landing-spaceman-portal-inner {
  animation: spaceman-portal-2-exit 30s linear infinite;
}

/* Portal 1 entry @ 23% — only before dive */
@keyframes spaceman-portal-1-entry {
  0%,
  14% {
    opacity: 0;
    transform: scale(0.6);
  }
  17% {
    opacity: 0.85;
    transform: scale(0.92);
  }
  20%,
  22% {
    opacity: 1;
    transform: scale(1);
  }
  23% {
    opacity: 0;
    transform: scale(0.75);
  }
  23.01%,
  100% {
    opacity: 0;
    transform: scale(0.6);
  }
}

/*
 * Exit portal 1: same timing as entrance (14→23%) but shifted by (29.6667 - 14) = 15.6667%.
 * Phases: 3% ramp → 3% ramp → 2% hold @ full (mirror entrance before swallow); then stay
 * visible while spaceman fades in; fade out after.
 */
@keyframes spaceman-portal-1-exit {
  0%,
  29.6667% {
    opacity: 0;
    transform: scale(0.6);
  }
  32.6667% {
    opacity: 0.85;
    transform: scale(0.92);
  }
  35.6667%,
  37.6667% {
    opacity: 1;
    transform: scale(1);
  }
  /* Hold through spaceman fade-in (mirror of entrance hold 20–22%) */
  38.6667%,
  41% {
    opacity: 1;
    transform: scale(1);
  }
  45%,
  100% {
    opacity: 0;
    transform: scale(0.85);
  }
}

/* Portal 2 entry @ 57% */
@keyframes spaceman-portal-2-entry {
  0%,
  50% {
    opacity: 0;
    transform: scale(0.6);
  }
  53% {
    opacity: 0.85;
    transform: scale(0.92);
  }
  55%,
  56% {
    opacity: 1;
    transform: scale(1);
  }
  57% {
    opacity: 0;
    transform: scale(0.75);
  }
  57.01%,
  100% {
    opacity: 0;
    transform: scale(0.6);
  }
}

/* Exit portal 2: entrance2 (50→57%) + (63.6667 - 57) = +6.6667% shift from tunnel end */
@keyframes spaceman-portal-2-exit {
  0%,
  63.6667% {
    opacity: 0;
    transform: scale(0.6);
  }
  66.6667% {
    opacity: 0.85;
    transform: scale(0.92);
  }
  68.6667%,
  69.6667% {
    opacity: 1;
    transform: scale(1);
  }
  70.6667%,
  73% {
    opacity: 1;
    transform: scale(1);
  }
  77%,
  100% {
    opacity: 0;
    transform: scale(0.85);
  }
}

@media (prefers-reduced-motion: reduce) {
  .landing-spaceman-portal-ring,
  .landing-spaceman-portal-ring::before,
  .landing-spaceman-portal-ring::after {
    animation: none;
  }
  /* Keep portals visible (no motion) instead of forcing opacity: 0 */
  .landing-spaceman-portal-inner {
    animation: none;
    opacity: 0.85;
    transform: scale(1);
  }
}

/* ========== CSS spaceman: time-based loop (all browsers) ========== */
.landing-spaceman-css {
  display: block;
  position: fixed;
  z-index: 3;
  pointer-events: none;
  offset-path: path("M -80,350 C 380,120 580,580 960,400 C 1340,220 1540,580 2080,400");
  offset-rotate: auto;
  offset-anchor: center center;
  width: 80px;
  height: auto;
  animation: spaceman-scroll-path 30s linear infinite;
}

.landing-spaceman-css-img {
  width: 100%;
  height: auto;
  display: block;
  filter: drop-shadow(0 0 18px rgba(255, 215, 0, 0.4));
}

/*
 * Exit portal keyframes mirror entrance timing; spaceman offset-distance = time% on [29.67→54] and [63.67→100].
 * Exit portal elements use offset-distance at emergence: 38.6667% and 70.6667% (see --1-exit / --2-exit).
 * After the 2nd portal, add a midpoint so the tail of the loop eases (fast burst then slower float), like post–portal 1.
 */
@keyframes spaceman-scroll-path {
  0% {
    offset-distance: 0%;
    opacity: 1;
    transform: rotate(0deg);
  }
  20% {
    offset-distance: 20%;
    opacity: 1;
    transform: rotate(360deg);
  }
  /* Dive into portal 1 @ 23% */
  23% {
    offset-distance: 23%;
    opacity: 0;
    transform: rotate(414deg);
  }
  /* Tunnel end; invisible through exit portal (same beats as entrance 14→22%) */
  29.6667% {
    offset-distance: 29.6667%;
    opacity: 0;
    transform: rotate(534deg);
  }
  /* End of exit hold @ full ring (mirror entrance 22% — last frame before swallow) */
  37.6667% {
    offset-distance: 37.6667%;
    opacity: 0;
    transform: rotate(678deg);
  }
  /* Fade in over 1% (mirror entrance 22→23% vanish duration) */
  38.6667% {
    offset-distance: 38.6667%;
    opacity: 1;
    transform: rotate(696deg);
  }
  54% {
    offset-distance: 54%;
    opacity: 1;
    transform: rotate(972deg);
  }
  /* Portal 2 */
  57% {
    offset-distance: 57%;
    opacity: 0;
    transform: rotate(1026deg);
  }
  63.6667% {
    offset-distance: 63.6667%;
    opacity: 0;
    transform: rotate(1146deg);
  }
  /* Mirror entrance 2 hold before 57% dive */
  69.6667% {
    offset-distance: 69.6667%;
    opacity: 0;
    transform: rotate(1254deg);
  }
  70.6667% {
    offset-distance: 70.6667%;
    opacity: 1;
    transform: rotate(1272deg);
  }
  /* ~65% of remaining path in first half of this segment → slightly higher exit speed, then ease down */
  85.3333% {
    offset-distance: 89.7333%;
    opacity: 1;
    transform: rotate(1615deg);
  }
  100% {
    offset-distance: 100%;
    opacity: 1;
    transform: rotate(1800deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .landing-spaceman-css {
    animation: none;
    offset-distance: 0%;
    opacity: 0;
  }
}


/* Wormhole sections above spaceman */
.landing-wormhole-section .landing-wormhole-wrap {
  z-index: 5;
  position: relative;
}

/* Content sections above spaceman so he never covers copy/images */
.landing-hero,
.landing-features,
.landing-planet-section,
.landing-app-preview,
.landing-benefits,
.landing-cta,
.landing-footer {
  position: relative;
  z-index: 10;
}

/* Below-hero stack: decorative planets behind section content (z-index 1 < spaceman 3) */
.landing-below-hero {
  position: relative;
}

.landing-bg-planets {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  overflow: hidden;
}

.landing-bg-planets .landing-bg-planet {
  position: absolute;
  display: block;
  border-radius: 50%;
  opacity: 0.82;
  box-shadow:
    inset -14px -14px 28px rgba(0, 0, 0, 0.5),
    inset 8px 8px 20px rgba(255, 255, 255, 0.09),
    0 0 56px rgba(255, 215, 0, 0.18);
  animation: landing-bg-planet-drift 48s ease-in-out infinite alternate;
}

.landing-bg-planets .landing-bg-planet:nth-child(1) {
  top: 2%;
  left: 3%;
  width: clamp(84px, 18vmin, 190px);
  height: clamp(84px, 18vmin, 190px);
  background: radial-gradient(circle at 32% 28%, #fde047, #b45309 42%, #1e3a8a 72%);
  animation-duration: 58s;
  animation-delay: -8s;
}

/* Saturn (static/saturn.svg; replaces CSS ring + sphere for nth-child(2)) */
.landing-bg-planets .landing-bg-planet--saturn-svg {
  /* Sit to the right of the centered feature column; stay in-bounds on small viewports */
  /* Use vh/px not % — parent .landing-below-hero is very tall, so % pushes the planet down-page */
  top: clamp(16px, 5vh, 64px);
  right: auto;
  /* Base right-of-column; −½ + ⅛ + 1/16 + 1/32 planet width (matches width clamp below) */
  left: max(
    0px,
    calc(
      min(
        max(
          calc(
            (100% - min(100%, var(--container-max))) / 2 + min(100%, var(--container-max)) +
              var(--space-gutter)
          ),
          calc(100% - 660px)
        ),
        calc(100% - 288px)
      ) - clamp(144px, 30vmin, 330px) + clamp(36px, 7.5vmin, 83px) + clamp(18px, 3.75vmin, 42px) +
        clamp(9px, 1.875vmin, 21px)
    )
  );
  width: clamp(288px, 60vmin, 660px);
  height: clamp(288px, 60vmin, 660px);
  opacity: 0.73;
  background: none;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
  animation-duration: 52s;
  animation-delay: -18s;
}

.landing-bg-planets .landing-bg-planet--saturn-svg .landing-bg-planet-saturn {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  filter: drop-shadow(0 0 clamp(30px, 7.5vmin, 84px) rgba(255, 215, 0, 0.22));
}

.landing-bg-planets .landing-bg-planet:nth-child(3) {
  top: 20%;
  left: 44%;
  width: clamp(40px, 8vmin, 78px);
  height: clamp(40px, 8vmin, 78px);
  background: radial-gradient(circle at 40% 35%, #93c5fd, #1d4ed8 50%, #172554 80%);
  opacity: 0.76;
  animation-duration: 62s;
  animation-delay: -4s;
}

.landing-bg-planets .landing-bg-planet:nth-child(4) {
  top: 34%;
  left: 8%;
  width: clamp(112px, 24vmin, 260px);
  height: clamp(112px, 24vmin, 260px);
  background: radial-gradient(circle at 30% 30%, #fcd34d, #c2410c 38%, #1e3a8a 75%);
  opacity: 0.74;
  animation-duration: 64s;
  animation-delay: -26s;
}

.landing-bg-planets .landing-bg-planet:nth-child(5) {
  top: 48%;
  right: 10%;
  left: auto;
  width: clamp(56px, 11vmin, 110px);
  height: clamp(56px, 11vmin, 110px);
  background: radial-gradient(circle at 33% 27%, #818cf8, #4338ca 50%, #312e81 80%);
  opacity: 0.78;
  animation-duration: 50s;
  animation-delay: -14s;
}

.landing-bg-planets .landing-bg-planet:nth-child(6) {
  top: 62%;
  left: 12%;
  width: clamp(90px, 19vmin, 210px);
  height: clamp(90px, 19vmin, 210px);
  background: radial-gradient(circle at 30% 30%, #fde047, #b45309 40%, #1e3a8a 70%);
  opacity: 0.7;
  animation-duration: 56s;
  animation-delay: -30s;
}

.landing-bg-planets .landing-bg-planet:nth-child(7) {
  top: 76%;
  right: 12%;
  left: auto;
  width: clamp(66px, 13vmin, 132px);
  height: clamp(66px, 13vmin, 132px);
  background: radial-gradient(circle at 35% 25%, #a78bfa, #4338ca 45%, #312e81 75%);
  opacity: 0.82;
  animation-duration: 54s;
  animation-delay: -40s;
}

.landing-bg-planets .landing-bg-planet:nth-child(8) {
  top: 90%;
  left: 34%;
  width: clamp(48px, 9vmin, 96px);
  height: clamp(48px, 9vmin, 96px);
  background: radial-gradient(circle at 38% 30%, #bfdbfe, #2563eb 55%, #1e3a8a 85%);
  opacity: 0.74;
  animation-duration: 48s;
  animation-delay: -12s;
}

@keyframes landing-bg-planet-drift {
  0% {
    transform: translate(0, 0) scale(1);
  }
  100% {
    transform: translate(1.2%, -0.8%) scale(1.03);
  }
}

@media (prefers-reduced-motion: reduce) {
  .landing-bg-planets .landing-bg-planet {
    animation: none;
  }
}

/* Features — tight to hero; bottom padding matches hero bottom for rhythm with app preview */
.landing-features {
  padding: clamp(28px, 6vh, 48px) var(--space-gutter) 48px;
  scroll-margin-top: 80px;
}

.landing-section-title {
  font-family: var(--font-display);
  font-size: clamp(28px, 4vw, 36px);
  font-weight: 700;
  text-align: center;
  color: var(--color-white);
  margin-bottom: 48px;
}

.landing-features-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}

@media (min-width: 768px) {
  .landing-features-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .landing-features-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
  }
}

.landing-feature-card {
  background: var(--color-card-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 24px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
  opacity: 0;
  transform: translateY(24px) scale(0.98);
  transition:
    opacity 0.5s var(--ease),
    transform 0.5s var(--ease),
    border-color 0.35s var(--ease),
    box-shadow 0.35s var(--ease);
}

.landing-feature-card.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.landing-feature-card:hover {
  border-color: var(--landing-hover-primary-border);
  box-shadow: var(--landing-hover-primary-glow);
}

.landing-feature-icon {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(255, 215, 0, 0.2), rgba(67, 56, 202, 0.2));
  border-radius: var(--radius);
  font-weight: 700;
  font-size: 14px;
  color: var(--color-primary);
  margin-bottom: 16px;
}

.landing-feature-icon--svg-phone {
  color: color-mix(in srgb, var(--color-primary) 88%, white);
}

.landing-feature-icon--svg-phone svg {
  display: block;
}

.landing-feature-card h3 {
  font-size: 20px;
  font-weight: 600;
  color: var(--color-white);
  margin-bottom: 8px;
}

.landing-feature-card p {
  font-size: 15px;
  line-height: 22px;
  color: var(--color-text-muted);
}

/* Planet section — wormhole only (decorative planets use .landing-bg-planets) */
.landing-planet-section {
  position: relative;
  min-height: 0;
  padding: clamp(16px, 4vh, 32px) var(--space-gutter);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 40px;
}

.landing-wormhole-section-2 {
  min-height: 0;
  padding: clamp(16px, 4vh, 32px) var(--space-gutter);
}

.landing-wormhole-section-2 .landing-wormhole-wrap {
  max-width: 320px;
}

/* App preview — top padding matches features top (mirrors hero → features spacing) */
.landing-app-preview {
  padding: clamp(28px, 6vh, 48px) var(--space-gutter) 96px;
  background: rgba(31, 41, 55, 0.4);
}

/* Touchpoint parallelogram strip */
.landing-touchpoint-scroll {
  overflow-x: auto;
  overflow-y: visible;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--space-gutter);
  -webkit-overflow-scrolling: touch;
  padding-bottom: 8px;
  margin-inline: calc(-1 * var(--space-gutter));
  padding-inline: var(--space-gutter);
}

@media (min-width: 900px) {
  .landing-touchpoint-scroll {
    overflow-x: visible;
    scroll-snap-type: none;
    margin-inline: 0;
    padding-inline: 0;
    padding-bottom: 0;
  }
}

.landing-touchpoint-strip {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  justify-content: center;
  gap: 0;
  min-height: 200px;
  perspective: 1100px;
  perspective-origin: 50% 50%;
}

@media (min-width: 900px) {
  .landing-touchpoint-strip {
    max-width: 100%;
    align-items: stretch;
  }
}

.landing-touchpoint-segment {
  position: relative;
  flex: 0 0 auto;
  min-width: min(144px, 40vw);
  max-width: 190px;
  width: 19vw;
  padding: 0;
  margin: 0 0 0 -26px;
  border: none;
  background: transparent;
  cursor: pointer;
  scroll-snap-align: center;
  color: inherit;
  font: inherit;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s var(--ease), transform 0.5s var(--ease);
  transform-style: preserve-3d;
  -webkit-tap-highlight-color: transparent;
}

.landing-touchpoint-segment:first-child {
  margin-left: 0;
}

@media (min-width: 900px) {
  .landing-touchpoint-segment {
    flex: 1 1 0;
    min-width: 0;
    max-width: none;
    width: auto;
    margin-left: -26px;
  }

  .landing-touchpoint-segment:first-child {
    margin-left: 0;
  }
}

.landing-touchpoint-segment.visible {
  opacity: 1;
  transform: translateY(0);
}

.landing-touchpoint-segment:nth-child(1) {
  z-index: 1;
}
.landing-touchpoint-segment:nth-child(2) {
  z-index: 2;
}
.landing-touchpoint-segment:nth-child(3) {
  z-index: 3;
}
.landing-touchpoint-segment:nth-child(4) {
  z-index: 4;
}
.landing-touchpoint-segment:nth-child(5) {
  z-index: 5;
}

.landing-touchpoint-segment:hover,
.landing-touchpoint-segment:focus-visible {
  z-index: 20;
}

.landing-touchpoint-segment:focus-visible {
  outline: none;
}

.landing-touchpoint-segment-inner {
  --touchpoint-skew: -11deg;
  /* Overscale inverse-skew layer so backgrounds reach skewed clip corners (see .landing-touchpoint-segment-visual). */
  --touchpoint-visual-fill-scale: 1.34;
  position: relative;
  display: block;
  width: 100%;
  min-height: min(360px, 52vh);
  transform: skewX(var(--touchpoint-skew));
  transform-style: preserve-3d;
  transform-origin: center center;
  overflow: hidden;
  transition:
    transform 0.35s var(--ease),
    box-shadow 0.35s var(--ease),
    border-color 0.35s var(--ease);
  border: 2px solid var(--color-border);
  box-sizing: border-box;
  box-shadow: none;
}

@media (min-width: 900px) {
  .landing-touchpoint-segment-inner {
    height: auto;
    min-height: 0;
    aspect-ratio: 9 / 16;
    max-height: min(420px, 52vh);
  }
}

.landing-touchpoint-segment-visual {
  position: absolute;
  inset: 0;
  transform: skewX(calc(-1 * var(--touchpoint-skew)))
    scale(var(--touchpoint-visual-fill-scale));
  transform-origin: center center;
  background-color: rgba(30, 41, 59, 0.92);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.landing-touchpoint-segment:nth-child(1) .landing-touchpoint-segment-visual {
  background-image: linear-gradient(to top, rgba(15, 23, 42, 0.82) 0%, transparent 42%),
    url('/static/index-images/touchpoint-app.png');
}

.landing-touchpoint-segment:nth-child(2) .landing-touchpoint-segment-visual {
  background-image: linear-gradient(to top, rgba(15, 23, 42, 0.82) 0%, transparent 42%),
    url('/static/index-images/touchpoint-web-booking.png');
}

.landing-touchpoint-segment:nth-child(3) .landing-touchpoint-segment-visual {
  background-image: linear-gradient(to top, rgba(15, 23, 42, 0.82) 0%, transparent 42%),
    url('/static/index-images/touchpoint-ai.png');
}

.landing-touchpoint-segment:nth-child(4) .landing-touchpoint-segment-visual {
  background-image: linear-gradient(to top, rgba(15, 23, 42, 0.82) 0%, transparent 42%),
    url('/static/index-images/touchpoint-phone-brett-jordan-unsplash.jpg');
}

.landing-touchpoint-segment:nth-child(5) .landing-touchpoint-segment-visual {
  background-image: linear-gradient(to top, rgba(15, 23, 42, 0.82) 0%, transparent 42%),
    url('/static/index-images/touchpoint-text.png');
}

.landing-touchpoint-segment-visual::after {
  content: '';
  position: absolute;
  inset: 10px;
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: var(--radius);
  pointer-events: none;
}

.landing-touchpoint-segment-label {
  position: absolute;
  left: -8px;
  right: -8px;
  bottom: 0;
  transform: skewX(calc(-1 * var(--touchpoint-skew)));
  transform-origin: center bottom;
  padding: 18px 14px 16px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-align: center;
  color: var(--color-text-muted);
  background: linear-gradient(transparent, rgba(15, 23, 42, 0.92));
  opacity: 0;
  transition: opacity 0.3s var(--ease), color 0.3s var(--ease);
  pointer-events: none;
}

.landing-touchpoint-segment:hover .landing-touchpoint-segment-inner {
  transform: skewX(var(--touchpoint-skew)) scale(1.048);
  border-color: var(--landing-hover-primary-border);
  box-shadow: var(--landing-hover-primary-glow);
}

.landing-touchpoint-segment:focus-visible .landing-touchpoint-segment-inner {
  transform: skewX(var(--touchpoint-skew)) scale(1.048);
  border-color: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
  box-shadow:
    0 0 0 2px var(--color-background),
    0 0 0 4px var(--color-primary),
    0 0 20px color-mix(in srgb, var(--color-primary) 26%, transparent),
    0 0 40px color-mix(in srgb, var(--color-primary) 12%, transparent);
}

.landing-touchpoint-segment:hover .landing-touchpoint-segment-label,
.landing-touchpoint-segment:focus-visible .landing-touchpoint-segment-label {
  opacity: 1;
  color: var(--color-text);
}

@media (prefers-reduced-motion: reduce) {
  .landing-touchpoint-segment:hover .landing-touchpoint-segment-inner,
  .landing-touchpoint-segment:focus-visible .landing-touchpoint-segment-inner {
    transform: skewX(var(--touchpoint-skew));
  }
}

@keyframes landing-touchpoint-segment-out {
  from {
    transform: skewX(var(--touchpoint-skew));
    opacity: 1;
  }
  to {
    transform: skewX(var(--touchpoint-skew)) rotateY(88deg) scale(0.94);
    opacity: 0.35;
  }
}

.landing-touchpoint-segment.is-flipping-out .landing-touchpoint-segment-inner {
  animation: landing-touchpoint-segment-out 0.42s var(--ease) forwards;
}

@media (prefers-reduced-motion: reduce) {
  .landing-touchpoint-segment.is-flipping-out .landing-touchpoint-segment-inner {
    animation: none;
    opacity: 0.5;
  }
}

/* Touchpoint modal (<dialog>) */
.landing-touchpoint-dialog {
  margin: 0;
  padding: 16px;
  border: none;
  max-width: none;
  max-height: none;
  width: 100%;
  height: 100%;
  background: transparent;
  overscroll-behavior: contain;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  display: none;
}

.landing-touchpoint-dialog[open] {
  display: flex;
}

.landing-touchpoint-dialog::backdrop {
  background:
    radial-gradient(120% 120% at 50% 20%, rgba(59, 130, 246, 0.2) 0%, transparent 60%),
    rgba(15, 23, 42, 0.8);
  backdrop-filter: blur(7px);
}

.landing-touchpoint-dialog-panel {
  --touchpoint-accent: rgba(255, 215, 0, 0.9);
  --touchpoint-accent-soft: rgba(255, 215, 0, 0.18);
  position: relative;
  box-sizing: border-box;
  width: min(640px, calc(100vw - 32px));
  margin: auto;
  padding: 24px 24px 20px;
  background:
    linear-gradient(150deg, rgba(30, 41, 59, 0.95), rgba(17, 24, 39, 0.94)),
    var(--color-card-bg);
  border: 1px solid rgba(148, 163, 184, 0.35);
  border-radius: 16px;
  box-shadow:
    0 36px 68px rgba(0, 0, 0, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    inset 0 0 0 1px rgba(255, 215, 0, 0.08);
  transform-origin: center center;
  transform-style: preserve-3d;
  overflow: hidden;
}

.landing-touchpoint-dialog-panel[data-touchpoint-tone='amber'] {
  --touchpoint-accent: rgba(255, 215, 0, 0.95);
  --touchpoint-accent-soft: rgba(255, 215, 0, 0.2);
}

.landing-touchpoint-dialog-panel[data-touchpoint-tone='blue'] {
  --touchpoint-accent: rgba(56, 189, 248, 0.95);
  --touchpoint-accent-soft: rgba(56, 189, 248, 0.2);
}

.landing-touchpoint-dialog-panel[data-touchpoint-tone='violet'] {
  --touchpoint-accent: rgba(167, 139, 250, 0.96);
  --touchpoint-accent-soft: rgba(167, 139, 250, 0.24);
}

.landing-touchpoint-dialog-panel[data-touchpoint-tone='teal'] {
  --touchpoint-accent: rgba(45, 212, 191, 0.95);
  --touchpoint-accent-soft: rgba(45, 212, 191, 0.2);
}

.landing-touchpoint-dialog-panel[data-touchpoint-tone='rose'] {
  --touchpoint-accent: rgba(251, 113, 133, 0.95);
  --touchpoint-accent-soft: rgba(251, 113, 133, 0.2);
}

.landing-touchpoint-dialog-panel::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(130% 90% at -10% -20%, rgba(99, 102, 241, 0.22), transparent 65%),
    radial-gradient(120% 80% at 105% -15%, rgba(255, 215, 0, 0.17), transparent 62%);
  pointer-events: none;
}

.landing-touchpoint-dialog-panel::after {
  content: '';
  position: absolute;
  inset: 1px;
  border-radius: 14px;
  border: 1px solid rgba(148, 163, 184, 0.18);
  pointer-events: none;
}

.landing-touchpoint-dialog-hud {
  position: absolute;
  width: 18px;
  height: 18px;
  border: 2px solid var(--touchpoint-accent);
  opacity: 0.85;
  pointer-events: none;
  z-index: 2;
}

.landing-touchpoint-dialog-hud--tl {
  top: 12px;
  left: 12px;
  border-right: 0;
  border-bottom: 0;
}

.landing-touchpoint-dialog-hud--tr {
  top: 12px;
  right: 12px;
  border-left: 0;
  border-bottom: 0;
}

.landing-touchpoint-dialog-hud--bl {
  bottom: 12px;
  left: 12px;
  border-right: 0;
  border-top: 0;
}

.landing-touchpoint-dialog-hud--br {
  bottom: 12px;
  right: 12px;
  border-left: 0;
  border-top: 0;
}

.landing-touchpoint-dialog-close {
  position: absolute;
  top: 20px;
  right: 20px;
  z-index: 3;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  font-size: 22px;
  line-height: 1;
  color: var(--color-text-muted);
  background: rgba(15, 23, 42, 0.66);
  border: 1px solid rgba(148, 163, 184, 0.35);
  border-radius: 50%;
  cursor: pointer;
  transition: transform 0.2s var(--ease), color 0.2s var(--ease), border-color 0.2s var(--ease);
}

.landing-touchpoint-dialog-close:hover,
.landing-touchpoint-dialog-close:focus-visible {
  color: var(--color-primary);
  border-color: rgba(255, 215, 0, 0.45);
  transform: translateY(-1px);
}

.landing-touchpoint-dialog-close:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-background), 0 0 0 4px var(--touchpoint-accent-soft);
}

.landing-touchpoint-dialog-carousel {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
}

.landing-touchpoint-dialog-arrow {
  flex-shrink: 0;
  width: 50px;
  height: 50px;
  margin-top: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  font-size: 32px;
  line-height: 1;
  color: var(--touchpoint-accent);
  background:
    radial-gradient(circle at 35% 30%, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 58%),
    rgba(15, 23, 42, 0.72);
  border: 1px solid rgba(255, 215, 0, 0.28);
  border-radius: 50%;
  box-shadow:
    0 10px 22px rgba(0, 0, 0, 0.32),
    inset 0 0 0 1px rgba(255, 215, 0, 0.08);
  cursor: pointer;
  transition: transform 0.22s var(--ease), background 0.22s var(--ease), border-color 0.22s var(--ease);
}

.landing-touchpoint-dialog-prev {
  transform: translateX(-1px);
}

.landing-touchpoint-dialog-next {
  transform: translateX(1px);
}

.landing-touchpoint-dialog-arrow:hover,
.landing-touchpoint-dialog-arrow:focus-visible {
  background:
    radial-gradient(circle at 35% 30%, rgba(255, 255, 255, 0.26), rgba(255, 255, 255, 0) 58%),
    rgba(30, 41, 59, 0.86);
  border-color: rgba(255, 215, 0, 0.58);
  transform: translateY(-2px) scale(1.03);
}

.landing-touchpoint-dialog-prev:hover,
.landing-touchpoint-dialog-prev:focus-visible {
  transform: translateX(-1px) translateY(-2px) scale(1.03);
}

.landing-touchpoint-dialog-next:hover,
.landing-touchpoint-dialog-next:focus-visible {
  transform: translateX(1px) translateY(-2px) scale(1.03);
}

.landing-touchpoint-dialog-arrow:active {
  transform: scale(0.98);
}

.landing-touchpoint-dialog-prev:active {
  transform: translateX(-1px) scale(0.98);
}

.landing-touchpoint-dialog-next:active {
  transform: translateX(1px) scale(0.98);
}

.landing-touchpoint-dialog-arrow:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-background), 0 0 0 4px var(--touchpoint-accent-soft);
}

.landing-touchpoint-dialog-body {
  min-width: 0;
  padding: 0 2px;
}

.landing-touchpoint-dialog-media {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0 auto 16px;
  border-radius: 12px;
  border: 1px solid rgba(148, 163, 184, 0.28);
  background: rgba(15, 23, 42, 0.55);
  overflow: hidden;
}

.landing-touchpoint-dialog-media-img {
  display: block;
  width: auto;
  max-width: 100%;
  max-height: min(52vh, 420px);
  height: auto;
  object-fit: contain;
}

/* Phone stock shot is wide — fixed height like other slides; span full media width so cover shows horizontal scene (crop top/bottom as needed). */
.landing-touchpoint-dialog-media[data-touchpoint-tone='teal'] {
  width: 100%;
}

.landing-touchpoint-dialog-media[data-touchpoint-tone='teal'] .landing-touchpoint-dialog-media-img {
  width: 100%;
  height: min(52vh, 420px);
  max-width: none;
  max-height: none;
  object-fit: cover;
  object-position: 52% 48%;
}

.landing-touchpoint-slide-viewport {
  overflow: hidden;
  margin-bottom: 12px;
}

.landing-touchpoint-slide-track {
  --active-index: 0;
  display: flex;
  width: 100%;
  transform: translateX(calc(var(--active-index) * -100%));
  transition: transform 0.34s var(--ease);
  will-change: transform;
}

.landing-touchpoint-slide-track.is-no-motion {
  transition: none;
}

.landing-touchpoint-slide-item {
  flex: 0 0 100%;
  min-width: 100%;
  padding-right: 2px;
}

.landing-touchpoint-dialog-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 10px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 11px;
  font-weight: 700;
  color: rgba(226, 232, 240, 0.74);
}

.landing-touchpoint-dialog-eyebrow::before {
  content: '';
  width: 22px;
  height: 1px;
  background: linear-gradient(90deg, rgba(255, 215, 0, 0), rgba(255, 215, 0, 0.8));
}

.landing-touchpoint-dialog-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-display);
  font-size: clamp(1.42rem, 2.8vw, 1.72rem);
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-bottom: 10px;
  color: var(--color-text);
}

.landing-touchpoint-dialog-title-icon {
  width: 36px;
  height: 36px;
  border-radius: 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 21px;
  line-height: 1;
  flex-shrink: 0;
  color: color-mix(in srgb, var(--touchpoint-accent) 82%, white);
  background: color-mix(in srgb, var(--touchpoint-accent-soft) 65%, rgba(30, 41, 59, 0.92));
  border: 1px solid color-mix(in srgb, var(--touchpoint-accent) 52%, rgba(255, 255, 255, 0.42));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.14),
    0 0 22px color-mix(in srgb, var(--touchpoint-accent) 28%, transparent);
  text-shadow:
    0 0 14px color-mix(in srgb, var(--touchpoint-accent) 70%, transparent),
    0 1px 0 rgba(0, 0, 0, 0.45);
}

.landing-touchpoint-dialog-title-icon--svg svg {
  display: block;
}

/* Phone slide: chip read darker than others; lift fill slightly so SVG stroke pops (does not affect modal photo). */
.landing-touchpoint-dialog-panel[data-touchpoint-tone='teal'] .landing-touchpoint-dialog-title-icon {
  background: color-mix(in srgb, var(--touchpoint-accent) 32%, rgba(34, 44, 62, 0.92));
}

.landing-touchpoint-dialog-blurb {
  font-size: clamp(15px, 2.2vw, 16px);
  line-height: 1.65;
  color: rgba(226, 232, 240, 0.88);
  margin: 0 0 16px;
  max-width: 54ch;
}

.landing-touchpoint-dialog-docs {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: space-between;
  align-items: stretch;
  width: 100%;
  max-width: 54ch;
}

.landing-touchpoint-dialog-docs .landing-touchpoint-dialog-doc {
  flex: 1 1 min(220px, calc(50% - 6px));
  justify-content: center;
  text-align: center;
}

.landing-touchpoint-dialog-doc {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
  text-decoration: none;
  background: linear-gradient(120deg, #ffd700, #f59e0b);
  border: 1px solid rgba(255, 215, 0, 0.65);
  border-radius: 999px;
  padding: 9px 14px;
  box-shadow: 0 8px 18px rgba(245, 158, 11, 0.24);
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}

.landing-touchpoint-dialog-doc::after {
  content: '→';
  font-size: 14px;
}

.landing-touchpoint-dialog-doc:hover,
.landing-touchpoint-dialog-doc:focus-visible {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(245, 158, 11, 0.34);
}

.landing-touchpoint-dialog-dots {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin: 16px auto 0;
  padding: 0 10px;
}

.landing-touchpoint-dialog-dots::before {
  content: '';
  position: absolute;
  left: 18px;
  right: 18px;
  height: 2px;
  background: rgba(148, 163, 184, 0.28);
}

.landing-touchpoint-dot {
  width: 16px;
  height: 16px;
  padding: 0;
  border-radius: 50%;
  border: 2px solid rgba(148, 163, 184, 0.55);
  background: rgba(15, 23, 42, 0.92);
  cursor: pointer;
  position: relative;
  z-index: 1;
  transition: border-color 0.2s var(--ease), box-shadow 0.25s var(--ease), background 0.25s var(--ease);
}

.landing-touchpoint-dot:hover,
.landing-touchpoint-dot:focus-visible {
  border-color: rgba(255, 215, 0, 0.7);
}

.landing-touchpoint-dot:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-background), 0 0 0 4px rgba(255, 215, 0, 0.25);
}

.landing-touchpoint-dot[aria-current='true'] {
  border-color: rgba(255, 215, 0, 0.96);
  background: radial-gradient(circle, rgba(255, 215, 0, 0.98) 0 44%, rgba(255, 215, 0, 0.22) 72%);
  box-shadow: 0 0 0 6px rgba(255, 215, 0, 0.12);
}

.landing-touchpoint-dialog[open] .landing-touchpoint-slide-item {
  animation: landing-touchpoint-content-in 0.42s var(--ease) both;
}

.landing-touchpoint-dialog[open] .landing-touchpoint-dialog-eyebrow {
  animation: landing-touchpoint-stagger-up 0.36s 0.05s var(--ease) both;
}

.landing-touchpoint-dialog[open] .landing-touchpoint-dialog-title {
  animation: landing-touchpoint-stagger-up 0.42s 0.1s var(--ease) both;
}

.landing-touchpoint-dialog[open] .landing-touchpoint-dialog-blurb {
  animation: landing-touchpoint-stagger-up 0.46s 0.15s var(--ease) both;
}

.landing-touchpoint-dialog[open] .landing-touchpoint-dialog-docs,
.landing-touchpoint-dialog[open] .landing-touchpoint-slide-item > .landing-touchpoint-dialog-doc {
  animation: landing-touchpoint-stagger-up 0.5s 0.2s var(--ease) both;
}

@media (max-width: 640px) {
  .landing-touchpoint-dialog-panel {
    padding: 18px 14px 16px;
  }

  .landing-touchpoint-dialog-close {
    top: 20px;
    right: 20px;
  }

  .landing-touchpoint-dialog-carousel {
    gap: 10px;
    grid-template-columns: 1fr 1fr;
    align-items: end;
  }

  .landing-touchpoint-dialog-arrow {
    width: 44px;
    height: 44px;
    margin-top: 0;
    align-self: end;
  }

  .landing-touchpoint-dialog-prev {
    order: 2;
    grid-column: 1;
    justify-self: start;
    margin-left: 34px;
    margin-bottom: 14px;
  }

  .landing-touchpoint-dialog-next {
    order: 2;
    grid-column: 2;
    justify-self: end;
    margin-right: 34px;
    margin-bottom: 14px;
  }

  .landing-touchpoint-dialog-body {
    order: 1;
    grid-column: 1 / -1;
    padding: 8px 0 0;
    text-align: center;
  }

  .landing-touchpoint-dialog-media {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
  }

  .landing-touchpoint-dialog-eyebrow {
    justify-content: center;
  }

  .landing-touchpoint-dialog-title {
    justify-content: center;
  }

  .landing-touchpoint-dialog-blurb {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
  }

  .landing-touchpoint-dialog-doc {
    margin-left: auto;
    margin-right: auto;
  }

  .landing-touchpoint-dialog-docs {
    margin-left: auto;
    margin-right: auto;
    justify-content: center;
    flex-direction: column;
    align-items: stretch;
  }

  .landing-touchpoint-dialog-docs .landing-touchpoint-dialog-doc {
    flex: 1 1 auto;
  }

  .landing-touchpoint-dialog-dots {
    display: flex;
    width: 100%;
    justify-content: center;
  }
}

@keyframes landing-touchpoint-panel-in {
  from {
    opacity: 0;
    transform: rotateY(-88deg) scale(0.96);
  }
  to {
    opacity: 1;
    transform: rotateY(0deg) scale(1);
  }
}

@keyframes landing-touchpoint-panel-out {
  from {
    opacity: 1;
    transform: rotateY(0deg) scale(1);
  }
  to {
    opacity: 0;
    transform: rotateY(82deg) scale(0.96);
  }
}

@keyframes landing-touchpoint-content-in {
  from {
    opacity: 0.72;
  }
  to {
    opacity: 1;
  }
}

@keyframes landing-touchpoint-stagger-up {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.landing-touchpoint-dialog[open] .landing-touchpoint-dialog-panel:not(.is-closing) {
  animation: landing-touchpoint-panel-in 0.44s var(--ease) forwards;
}

.landing-touchpoint-dialog[open] .landing-touchpoint-dialog-panel.is-closing {
  animation: landing-touchpoint-panel-out 0.34s var(--ease) forwards;
}

@media (prefers-reduced-motion: reduce) {
  .landing-touchpoint-dialog[open] .landing-touchpoint-slide-item,
  .landing-touchpoint-dialog[open] .landing-touchpoint-dialog-eyebrow,
  .landing-touchpoint-dialog[open] .landing-touchpoint-dialog-title,
  .landing-touchpoint-dialog[open] .landing-touchpoint-dialog-blurb,
  .landing-touchpoint-dialog[open] .landing-touchpoint-dialog-docs,
  .landing-touchpoint-dialog[open] .landing-touchpoint-slide-item > .landing-touchpoint-dialog-doc {
    animation: none;
  }

  .landing-touchpoint-dialog[open] .landing-touchpoint-dialog-panel {
    animation: none;
    opacity: 1;
    transform: none;
  }

  .landing-touchpoint-dialog-panel.is-closing {
    animation: none;
    opacity: 0;
  }
}

/* Benefits */
.landing-benefits {
  padding: 96px var(--space-gutter);
}

.landing-benefits-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  max-width: 900px;
  margin: 0 auto;
}

@media (min-width: 768px) {
  .landing-benefits-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.landing-benefit {
  text-align: center;
  padding: 32px 24px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s var(--ease), transform 0.5s var(--ease);
}

.landing-benefit.visible {
  opacity: 1;
  transform: translateY(0);
}

.landing-benefit-value {
  display: block;
  font-family: var(--font-display);
  font-size: 48px;
  font-weight: 800;
  color: var(--color-primary);
  margin-bottom: 8px;
  text-shadow: 0 0 30px rgba(255, 215, 0, 0.3);
}

.landing-benefit p {
  font-size: 16px;
  color: var(--color-text-muted);
}

/* Footer */
.landing-footer {
  padding: 48px var(--space-gutter) 24px;
  border-top: 1px solid var(--color-border);
}

.landing-footer-content {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  margin-bottom: 32px;
}

@media (min-width: 768px) {
  .landing-footer-content {
    grid-template-columns: 2fr 1fr 1fr;
  }
}

.landing-footer-block h4 {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 12px;
}

.landing-footer-block p {
  font-size: 14px;
  color: var(--color-text-muted);
}

.landing-footer-block a {
  display: block;
  color: var(--color-text-muted);
  text-decoration: none;
  font-size: 14px;
  margin-bottom: 8px;
  transition: color 0.2s var(--ease);
}

.landing-footer-block a:hover {
  color: var(--color-primary);
}

.landing-footer-bottom {
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.landing-footer-bottom p {
  font-size: 13px;
  color: var(--color-text-muted);
}

.landing-footer-attribution {
  font-size: 12px;
  color: var(--color-text-muted);
  width: 100%;
  margin-top: 4px;
}

.landing-footer-attribution a {
  color: var(--color-text-muted);
  text-decoration: none;
}

.landing-footer-attribution a:hover {
  color: var(--color-primary);
}

/* Scroll reveal base */
.scroll-reveal {
  opacity: 0;
  transform: translateY(24px) scale(0.98);
  transition: opacity 0.5s var(--ease), transform 0.5s var(--ease);
}

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

@media (prefers-reduced-motion: reduce) {
  .scroll-reveal {
    opacity: 1;
    transform: none;
  }
  .scroll-reveal.visible {
    opacity: 1;
    transform: none;
  }
}
