:root {
  --radius: 18px;

  --bg: #000;
  --surface: rgba(255, 255, 255, 0.035);
  --border: rgba(255, 255, 255, 0.09);
  --text: #f5f5f5;
  --muted: #9b9b9f;

  --orange: #ff7a00;
  --red: #ff4433;
  --pink: #ff4f9a;
  --purple: #d65cf0;
  --blue: #4a7bff;
  --lovable: linear-gradient(120deg, var(--orange), var(--red) 30%, var(--pink) 55%, var(--purple) 78%, var(--blue));
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { color-scheme: dark; -webkit-text-size-adjust: 100%; }

body {
  min-height: 100vh;
  min-height: 100dvh;
  background: var(--bg);
  color: var(--text);
  font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* ---------- Background ---------- */
.bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(110px);
  opacity: 0.38;
  will-change: transform;
}
.blob--a {
  width: 46vmax; height: 46vmax;
  left: -14vmax; bottom: -22vmax;
  background: radial-gradient(circle, var(--blue), transparent 68%);
  animation: float-a 18s ease-in-out infinite alternate;
}
.blob--b {
  width: 40vmax; height: 40vmax;
  right: -12vmax; bottom: -20vmax;
  background: radial-gradient(circle, var(--purple), transparent 68%);
  animation: float-b 22s ease-in-out infinite alternate;
}
.blob--c {
  width: 38vmax; height: 38vmax;
  left: 50%; top: -26vmax;
  margin-left: -19vmax;
  background: radial-gradient(circle, var(--orange), transparent 68%);
  opacity: 0.3;
  animation: float-c 20s ease-in-out infinite alternate;
}

.grain {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 50% 50%, transparent 40%, #000 100%),
    linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px) 0 0 / 56px 56px,
    linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px) 0 0 / 56px 56px;
  -webkit-mask-image: radial-gradient(ellipse at center, #000 20%, transparent 75%);
          mask-image: radial-gradient(ellipse at center, #000 20%, transparent 75%);
}

@keyframes float-a { to { transform: translate(8vmax, -6vmax) scale(1.1); } }
@keyframes float-b { to { transform: translate(-7vmax, -8vmax) scale(1.15); } }
@keyframes float-c { to { transform: translate(6vmax, 5vmax) scale(0.95); } }

/* ---------- Layout ---------- */
.stage {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  place-items: center;
  padding: max(24px, env(safe-area-inset-top)) 20px max(24px, env(safe-area-inset-bottom));
}

/* ---------- Card ---------- */
.card {
  --mx: 50%;
  --my: 0%;
  position: relative;
  width: 100%;
  max-width: 520px;
  padding: 44px 40px 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  -webkit-backdrop-filter: blur(24px) saturate(140%);
          backdrop-filter: blur(24px) saturate(140%);
  box-shadow: 0 30px 80px -30px rgba(0, 0, 0, 0.9), inset 0 1px 0 rgba(255, 255, 255, 0.06);
  overflow: hidden;
  animation: rise 0.8s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

/* cursor spotlight */
.card__spot {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(380px circle at var(--mx) var(--my), rgba(255, 255, 255, 0.075), transparent 60%);
  opacity: 0;
  transition: opacity 0.4s;
  pointer-events: none;
}
.card:hover .card__spot { opacity: 1; }

/* gradient hairline on the top edge */
.card::before {
  content: "";
  position: absolute;
  top: 0; left: 12%; right: 12%;
  height: 1px;
  background: var(--lovable);
  opacity: 0.8;
  filter: blur(0.3px);
}

.card > * { position: relative; }

@keyframes rise {
  from { opacity: 0; transform: translateY(18px) scale(0.985); }
  to   { opacity: 1; transform: none; }
}

/* staggered children */
.card > :not(.card__spot) {
  animation: rise 0.7s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}
.logos   { animation-delay: 0.10s; }
.pill    { animation-delay: 0.18s; }
.title   { animation-delay: 0.26s; }
.text    { animation-delay: 0.34s; }
.btn     { animation-delay: 0.42s; }
.steps   { animation-delay: 0.50s; }
.note    { animation-delay: 0.56s; }

/* ---------- Logos ---------- */
.logos {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 26px;
}

.logo {
  display: grid;
  place-items: center;
  width: 60px;
  height: 60px;
  border-radius: var(--radius);
  background: #0b0b0c;
  border: 1px solid var(--border);
}
.logo--heart img { width: 28px; height: 28px; object-fit: contain; }
.logo--up {
  position: relative;
  box-shadow: 0 0 40px -6px rgba(214, 92, 240, 0.55);
}
.logo--up::after {
  /* gradient ring */
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  padding: 1px;
  background: var(--lovable);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
}
.logo--up img { width: 38px; height: 38px; object-fit: contain; }

.logos__plus {
  color: var(--muted);
  font-weight: 500;
  font-size: 20px;
}

/* ---------- Pill ---------- */
.pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px;
  margin-bottom: 20px;
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: #d6d6d8;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.pill__dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #25d366;
  box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.6);
  animation: pulse 2s infinite;
}
@keyframes pulse {
  70%  { box-shadow: 0 0 0 7px rgba(37, 211, 102, 0); }
  100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0); }
}

/* ---------- Text ---------- */
.title {
  font-size: clamp(1.7rem, 5.4vw, 2.35rem);
  font-weight: 700;
  line-height: 1.16;
  letter-spacing: -0.03em;
  text-wrap: balance;
}
.grad {
  background: var(--lovable);
  background-size: 200% 100%;
  -webkit-background-clip: text;
          background-clip: text;
  color: transparent;
  animation: shift 6s linear infinite alternate;
}
@keyframes shift { to { background-position: 100% 0; } }

.text {
  margin-top: 16px;
  max-width: 400px;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--muted);
  text-wrap: pretty;
}

/* ---------- Button ---------- */
.btn {
  position: relative;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  max-width: 360px;
  margin-top: 30px;
  padding: 17px 24px;
  font: inherit;
  font-size: 1rem;
  font-weight: 600;
  color: #0a0a0a;
  text-decoration: none;
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform 0.25s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.3s;
  box-shadow: 0 10px 30px -10px rgba(255, 255, 255, 0.25);
}
.btn::before {
  /* gradient revealed on hover */
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--lovable);
  background-size: 200% 100%;
  opacity: 0;
  transition: opacity 0.35s;
}
.btn:hover,
.btn:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 16px 44px -10px rgba(255, 79, 154, 0.55);
}
.btn:hover::before,
.btn:focus-visible::before { opacity: 1; animation: shift 3s linear infinite alternate; }
.btn:hover,
.btn:focus-visible { color: #fff; }
.btn:active { transform: translateY(0) scale(0.985); }
.btn:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

.btn__wa { flex: none; color: #1fa855; transition: color 0.3s; }
.btn:hover .btn__wa,
.btn:focus-visible .btn__wa { color: #fff; }
.btn__arrow { flex: none; transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1); }
.btn:hover .btn__arrow,
.btn:focus-visible .btn__arrow { transform: translateX(4px); }

.ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.18);
  transform: scale(0);
  animation: ripple 0.6s ease-out forwards;
  pointer-events: none;
  z-index: -1;
}
@keyframes ripple { to { transform: scale(1); opacity: 0; } }

/* ---------- Steps / note ---------- */
.steps {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: 28px;
}
.steps li {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px 7px 8px;
  font-size: 12.5px;
  color: #c4c4c7;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.steps b {
  display: grid;
  place-items: center;
  width: 20px; height: 20px;
  font-size: 11px;
  font-weight: 700;
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 8px;
}

.note {
  margin-top: 20px;
  font-size: 12px;
  color: #6b6b70;
}

/* ---------- Responsive ---------- */
@media (max-width: 560px) {
  /* no box on mobile: content sits directly on the black screen */
  .stage { padding: max(28px, env(safe-area-inset-top)) 24px max(28px, env(safe-area-inset-bottom)); }
  .card {
    max-width: none;
    padding: 0;
    background: none;
    border: 0;
    box-shadow: none;
    -webkit-backdrop-filter: none;
            backdrop-filter: none;
    overflow: visible;
  }
  .card::before, .card__spot { display: none; }

  .logos { gap: 14px; margin-bottom: 30px; }
  .logo { width: 64px; height: 64px; }
  .logo--heart img { width: 30px; height: 30px; }
  .logo--up img { width: 40px; height: 40px; }

  .pill { margin-bottom: 22px; }
  .title { font-size: clamp(2rem, 9.4vw, 2.5rem); line-height: 1.1; }
  .text { margin-top: 18px; font-size: 1.02rem; max-width: 320px; }

  .btn { max-width: none; margin-top: 38px; padding: 19px 22px; font-size: 1.05rem; }

  .steps { display: none; }
  .note { margin-top: 16px; }

  .blob { filter: blur(70px); opacity: 0.5; }
  .blob--c { opacity: 0.4; }
}

@media (max-height: 640px) and (min-width: 561px) {
  .card { padding-top: 30px; padding-bottom: 24px; }
  .logos { margin-bottom: 18px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
