/* RSVPjr splash. Self-hosted fonts, no external requests, no trackers —
   which is also why this site is kept off the origin that holds RSVP codes. */

@font-face {
  font-family: 'Fredoka';
  src: url('/fonts/fredoka-latin-var.woff2') format('woff2');
  font-weight: 300 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Fredoka Fallback';
  src: local('Arial'), local('Helvetica'), local('Liberation Sans');
  size-adjust: 100.4%;
}

:root {
  --ink:#1b1140; --ink-2:#4a4270; --muted:#6b6390;
  --violet:#6d4aff; --magenta:#c04aff; --mint:#34c98b; --sun:#ffd93d;
  --paper:#ffffff; --wash:#f7f5ff; --line:#e7e2f7;
  --grad:linear-gradient(120deg,var(--violet),var(--magenta));
  --ui:'Fredoka','Fredoka Fallback',ui-rounded,system-ui,-apple-system,sans-serif;
  --shadow:0 18px 40px rgba(42,26,94,.10),0 2px 6px rgba(42,26,94,.06);
  --r:18px;
}
* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body {
  margin:0; font-family:var(--ui); color:var(--ink); background:var(--paper);
  font-size:17px; line-height:1.6; -webkit-font-smoothing:antialiased;
}
img,svg { max-width:100%; display:block; }
.sr-only {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* ── nav ─────────────────────────────────────────────── */
.nav {
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  max-width:1120px; margin:0 auto; padding:20px 24px;
}
.brand { display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--ink);
  font-weight:700; font-size:21px; letter-spacing:-.01em; }
.brand em { font-style:normal; background:var(--grad); -webkit-background-clip:text;
  background-clip:text; color:transparent; }
.brand-mark { width:36px; height:36px; flex:0 0 36px; }
.nav-cta {
  text-decoration:none; font-weight:600; font-size:15px; color:var(--ink);
  border:2px solid var(--line); border-radius:999px; padding:9px 18px;
  transition:border-color .15s, background .15s;
}
.nav-cta:hover { border-color:var(--violet); background:var(--wash); }

/* ── hero ────────────────────────────────────────────── */
.hero {
  max-width:1120px; margin:0 auto; padding:36px 24px 72px;
  display:grid; grid-template-columns:1.05fr .95fr; gap:56px; align-items:center;
}
.eyebrow {
  margin:0 0 14px; font-size:13px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--violet);
}
.eyebrow.light { color:#c9bcff; }
h1 {
  margin:0 0 18px; font-size:clamp(38px,5.6vw,60px); line-height:1.06;
  letter-spacing:-.025em; font-weight:700;
}
.grad { background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.lede { margin:0 0 28px; font-size:clamp(17px,2vw,20px); color:var(--ink-2); max-width:34ch; }

/* ── signup ──────────────────────────────────────────── */
.signup { display:flex; gap:10px; max-width:470px; }
.signup input {
  flex:1; min-width:0; font:inherit; font-size:16px; padding:14px 16px;
  border:2px solid var(--line); border-radius:13px; background:var(--paper); color:var(--ink);
}
.signup input::placeholder { color:#a49cc4; }
.signup input:focus { outline:none; border-color:var(--violet); box-shadow:0 0 0 4px rgba(109,74,255,.15); }
.signup input.invalid { border-color:#e0466f; box-shadow:0 0 0 4px rgba(224,70,111,.14); }
.signup button {
  font:inherit; font-size:16px; font-weight:700; color:#fff; background:var(--grad);
  border:0; border-radius:13px; padding:14px 22px; cursor:pointer; white-space:nowrap;
  transition:transform .08s, filter .15s;
}
.signup button:hover { filter:brightness(1.07); }
.signup button:active { transform:translateY(1px); }
.signup button:disabled { opacity:.6; cursor:not-allowed; }
.signup-note { margin:12px 0 0; font-size:14.5px; color:var(--muted); }
.signup-note.ok { color:#1f7d55; font-weight:600; }
.signup-note.err { color:#c2264d; font-weight:600; }
.signup-lg { margin:0 auto; }
.signup-lg + .signup-note { text-align:center; }

/* ── bands ───────────────────────────────────────────── */
.band { max-width:1120px; margin:0 auto; padding:76px 24px; }
.band h2 {
  margin:0 0 12px; font-size:clamp(28px,3.6vw,40px); line-height:1.15;
  letter-spacing:-.02em; text-align:center;
}
.band-lede { margin:0 auto 40px; max-width:56ch; text-align:center; color:var(--ink-2); }

.steps { list-style:none; margin:44px 0 0; padding:0;
  display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.steps li { background:var(--wash); border:1px solid var(--line); border-radius:var(--r); padding:28px 24px; }
.step-n {
  display:grid; place-items:center; width:38px; height:38px; border-radius:12px;
  background:var(--grad); color:#fff; font-weight:700; font-size:17px; margin-bottom:16px;
}
.steps h3 { margin:0 0 8px; font-size:19px; letter-spacing:-.01em; }
.steps p { margin:0; color:var(--ink-2); font-size:16px; }

/* ── privacy ─────────────────────────────────────────── */
.band-privacy {
  max-width:none; background:var(--ink); color:#fff;
  background-image:radial-gradient(1000px 420px at 15% -10%, #33206e 0%, transparent 60%),
                   radial-gradient(760px 380px at 88% 8%, #4a2170 0%, transparent 62%);
}
.band-privacy .band-head { max-width:1120px; margin:0 auto; }
.band-privacy h2 { color:#fff; }
.band-privacy .band-lede { color:#c4bce6; }
.cards {
  max-width:1120px; margin:0 auto; display:grid;
  grid-template-columns:repeat(3,1fr); gap:22px;
}
.card {
  background:rgba(255,255,255,.055); border:1px solid rgba(255,255,255,.13);
  border-radius:var(--r); padding:26px 24px; backdrop-filter:blur(6px);
}
.card h3 { margin:16px 0 8px; font-size:18.5px; letter-spacing:-.01em; color:#fff; }
.card p { margin:0; font-size:15.5px; color:#c4bce6; }
.ic { width:30px; height:30px; fill:none; stroke:#9d8bff; stroke-width:1.7;
  stroke-linecap:round; stroke-linejoin:round; }
.ic .tick { stroke:var(--mint); stroke-width:2; }
.ic .slash { stroke:var(--sun); stroke-width:2; }

/* ── cta + foot ──────────────────────────────────────── */
.band-cta { text-align:center; padding-bottom:88px; }
.foot {
  border-top:1px solid var(--line); padding:32px 24px 44px; text-align:center;
  color:var(--muted); font-size:15px;
}
.foot p { margin:0 0 6px; }
.foot-small { font-size:13.5px; color:#9a93b8; }

/* ── responsive ──────────────────────────────────────── */
@media (max-width:900px) {
  .hero { grid-template-columns:1fr; gap:36px; padding-bottom:52px; }
  .hero-art { order:-1; max-width:420px; margin:0 auto; }
  .lede { max-width:none; }
  .steps, .cards { grid-template-columns:1fr; }
  .band { padding:56px 24px; }
}
@media (max-width:560px) {
  .signup { flex-direction:column; }
  .signup button { width:100%; }
  .nav-cta { display:none; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition-duration:.01ms !important; animation-duration:.01ms !important; }
}

.signup-done {
  margin:0; padding:14px 18px; border-radius:13px; font-weight:600;
  background:#eafaf3; color:#1f7d55; border:2px solid #b7ebd4; text-align:center;
}
