:root {
  /* Neutral base, one confident accent — the Apple/Canva approach.
     No warm cream: that belongs to the invitations, not the studio. */
  --ink: #1d1d1f;
  --ink-2: #424245;
  --muted: #6e6e73;
  --bg: #fbfbfd;
  --surface: #f5f5f7;
  --line: #e3e3e8;

  /* Frosted surfaces. Light glass only reads if there is colour behind it —
     that is what the fixed .aurora provides. */
  --glass: rgba(255, 255, 255, 0.55);
  --glass-strong: rgba(255, 255, 255, 0.72);
  --glass-line: rgba(255, 255, 255, 0.85);
  --blur: blur(20px) saturate(160%);
  --accent: #5b52e8;
  --accent-2: #9333ea;
  --grad: linear-gradient(100deg, var(--accent), var(--accent-2));
  --shadow: 0 4px 24px rgba(20, 20, 40, 0.06);
  --shadow-lift: 0 16px 44px rgba(20, 20, 40, 0.12);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink-2);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Helvetica Neue", Arial, sans-serif;
  font-size: 17px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3 {
  color: var(--ink);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: 1.06;
}

p { margin: 0 0 20px; }

.eyebrow {
  margin: 0 0 18px;
  color: var(--accent);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.mark span, .hero h1 em {
  background: var(--grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-style: normal;
}

/* Aurora — soft colour behind the glass. Fixed, so it composites once and
   does not repaint on every scroll frame. */

.aurora {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}

.blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
}

.blob-1 { top: -12%; left: -8%;  width: 52vmin; height: 52vmin; background: #7c6cf5; opacity: 0.17; }
.blob-2 { top: 30%;  right: -12%; width: 48vmin; height: 48vmin; background: #56a8f5; opacity: 0.15; }
.blob-3 { bottom: -14%; left: 26%; width: 56vmin; height: 56vmin; background: #e879b9; opacity: 0.13; }

/* Header */

header {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 32px;
  border-bottom: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
}

.mark {
  margin: 0;
  color: var(--ink);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* Buttons */

.btn {
  display: inline-block;
  padding: 16px 34px;
  border-radius: 980px;
  background: var(--accent);
  color: #fff;
  font-size: 1rem;
  font-weight: 500;
  text-decoration: none;
  transition: background 0.2s ease, transform 0.2s ease;
}

.btn:hover, .btn:focus-visible { background: #4a41d6; transform: scale(1.02); }

.btn-sm { padding: 9px 20px; font-size: 0.88rem; }

/* Sections — generous whitespace is the point */

section {
  max-width: 1000px;
  margin: 0 auto;
  padding: 110px 32px;
}

section > h2, .band-inner > h2 {
  margin: 0 auto 18px;
  font-size: clamp(2.1rem, 5.4vw, 3.2rem);
  text-align: center;
}

.section-sub {
  max-width: 560px;
  margin: 0 auto 56px;
  color: var(--muted);
  font-size: 1.12rem;
  text-align: center;
}

/* Hero — centred, oversized, Apple-style */

.hero {
  padding-top: 96px;
  padding-bottom: 60px;
  text-align: center;
}

.hero h1 {
  margin: 0 auto 26px;
  max-width: 900px;
  font-size: clamp(2.8rem, 8.4vw, 5rem);
}

.lede {
  max-width: 600px;
  margin: 0 auto 36px;
  color: var(--muted);
  font-size: clamp(1.1rem, 2.4vw, 1.4rem);
  line-height: 1.5;
}

.hero-note { margin: 20px 0 0; color: var(--muted); font-size: 0.9rem; }

.hero-art { margin-top: 64px; }
.hero-art svg { display: block; width: 100%; max-width: 340px; height: auto; margin: 0 auto; }

/* Bands */

.band {
  max-width: none;
  border-top: 1px solid rgba(255, 255, 255, 0.6);
  border-bottom: 1px solid rgba(255, 255, 255, 0.6);
  background: rgba(255, 255, 255, 0.42);
  backdrop-filter: var(--blur);
  -webkit-backdrop-filter: var(--blur);
}

.band-inner {
  max-width: 1000px;
  margin: 0 auto;
  text-align: center;
}

/* Occasion chips */

.chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin: 0 auto;
  padding: 0;
  list-style: none;
}

.chips li {
  padding: 11px 20px;
  border: 1px solid var(--glass-line);
  border-radius: 980px;
  /* No blur on the chips: eleven blurred pills is a real cost on a low-end
     phone, and they already sit on the frosted band. */
  background: var(--glass-strong);
  color: var(--ink);
  font-size: 0.94rem;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.chips li:hover { transform: translateY(-2px); box-shadow: var(--shadow); }

.note { margin: 34px auto 0; color: var(--muted); font-size: 0.95rem; }

/* Feature cards */

.cards {
  display: grid;
  gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  text-align: left;
}

.card {
  padding: 34px 30px;
  border: 1px solid var(--glass-line);
  border-radius: 22px;
  background: var(--glass);
  backdrop-filter: var(--blur);
  -webkit-backdrop-filter: var(--blur);
  box-shadow: var(--shadow);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }

.ico {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  margin-bottom: 20px;
  border-radius: 14px;
  background: var(--glass-strong);
}

.ico svg {
  width: 23px; height: 23px;
  fill: none; stroke: var(--accent);
  stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
}

.card h3 { margin: 0 0 10px; font-size: 1.16rem; letter-spacing: -0.02em; }
.card p { margin: 0; color: var(--muted); font-size: 0.97rem; line-height: 1.55; }

/* Steps */

.steps {
  display: grid;
  gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
  text-align: left;
}

.steps li {
  padding: 34px 30px;
  border: 1px solid var(--glass-line);
  border-radius: 22px;
  background: var(--glass);
  backdrop-filter: var(--blur);
  -webkit-backdrop-filter: var(--blur);
  box-shadow: var(--shadow);
}

.step-n {
  display: grid;
  place-items: center;
  width: 36px; height: 36px;
  margin-bottom: 18px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 0.92rem;
  font-weight: 600;
}

.steps h3 { margin: 0 0 9px; font-size: 1.14rem; letter-spacing: -0.02em; }
.steps p { margin: 0; color: var(--muted); font-size: 0.96rem; }

/* Closing CTA */

.cta { text-align: center; }

.cta.glass {
  padding: 64px 34px;
  border: 1px solid var(--glass-line);
  border-radius: 28px;
  background: var(--glass);
  backdrop-filter: var(--blur);
  -webkit-backdrop-filter: var(--blur);
  box-shadow: var(--shadow);
}
.cta h2 { margin: 0 auto 18px; font-size: clamp(2.1rem, 5.4vw, 3.2rem); }
.cta p { max-width: 480px; margin: 0 auto 36px; color: var(--muted); font-size: 1.12rem; }

.cta-alt {
  margin: 24px 0 0;
  color: var(--muted);
  font-size: 0.94rem;
}

.cta-alt a,
.footer-contact a {
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.18s ease;
}

.cta-alt a:hover,
.cta-alt a:focus-visible,
.footer-contact a:hover,
.footer-contact a:focus-visible { border-bottom-color: currentColor; }

.footer-contact {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-bottom: 10px;
}

/* Footer */

footer {
  padding: 46px 32px 56px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 0.85rem;
  text-align: center;
}

footer p { margin: 0 0 6px; }

/* Animation — restrained: a short fade and rise, nothing bouncy */

.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s cubic-bezier(0.2, 0.7, 0.3, 1),
              transform 0.7s cubic-bezier(0.2, 0.7, 0.3, 1);
}

.reveal.is-visible { opacity: 1; transform: none; }

.cards .reveal:nth-child(2), .steps .reveal:nth-child(2) { transition-delay: 0.07s; }
.cards .reveal:nth-child(3), .steps .reveal:nth-child(3) { transition-delay: 0.14s; }
.cards .reveal:nth-child(4) { transition-delay: 0.21s; }
.cards .reveal:nth-child(5) { transition-delay: 0.28s; }
.cards .reveal:nth-child(6) { transition-delay: 0.35s; }

.art-float { animation: float 6s ease-in-out infinite; transform-origin: center; }
.art-float-b { animation-duration: 7.5s; animation-delay: -2s; }
.art-float-c { animation-duration: 8.5s; animation-delay: -4s; }

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-9px); }
}

/* Mobile */

@media (max-width: 620px) {
  section { padding: 68px 22px; }
  .hero { padding-top: 60px; padding-bottom: 40px; }
  .hero-art { margin-top: 46px; }
  header { padding: 14px 20px; }
  .card, .steps li { padding: 28px 24px; }
  .btn { display: block; }
  .btn-sm { display: inline-block; }
}

/* Anyone who has asked for less motion gets the page, just still. */

/* Without backdrop-filter the frosted surfaces would render as barely-tinted
   transparency over the aurora, which is unreadable. Fall back to solid. */

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .card, .steps li, .cta.glass, .band, header { background: #fff; }
  .chips li { background: #fff; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .art-float { animation: none; }
  .btn, .card, .chips li { transition: none; }
  .btn:hover, .card:hover, .chips li:hover { transform: none; }
}
