body {
  background: var(--black);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-weight: 400;
  cursor: none;
}

/* ── Noise overlay ── */
.noise-overlay {
  position: fixed;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
  opacity: 0.025;
  pointer-events: none;
  z-index: 9990;
  mix-blend-mode: overlay;
}

/* ── Custom cursor ── */
.cursor {
  position: fixed;
  width: 12px;
  height: 12px;
  background: var(--cyan);
  border-radius: 50%;
  pointer-events: none;
  z-index: 9999;
  transform: translate(-50%, -50%);
  transition: background var(--t-fast);
  mix-blend-mode: difference;
}

.cursor-ring {
  position: fixed;
  width: 36px;
  height: 36px;
  border: 1.5px solid var(--cyan);
  border-radius: 50%;
  pointer-events: none;
  z-index: 9998;
  transform: translate(-50%, -50%);
  transition: width var(--t-normal), height var(--t-normal);
  mix-blend-mode: difference;
}

body:has(a:hover) .cursor-ring,
body:has(button:hover) .cursor-ring {
  width: 56px;
  height: 56px;
}

/* ── Reusable section labels ── */
.section-label {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 0.8rem;
}

.section-title {
  font-family: var(--font-display);
  font-size: clamp(3rem, 5vw, 5.5rem);
  line-height: 0.95;
  letter-spacing: -0.01em;
  color: var(--text-primary);
}

/* ── Reusable buttons ── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--font-mono);
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  padding: 0.9rem 2rem;
  cursor: none;
  transition: transform var(--t-normal), box-shadow var(--t-normal), background var(--t-normal), border-color var(--t-normal);
  text-decoration: none;
}

.btn-primary {
  background: var(--blue);
  color: var(--white);
}
.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 30px rgba(26, 79, 255, 0.4);
}

.btn-ghost {
  background: transparent;
  color: var(--white);
  border: 1px solid rgba(255, 255, 255, 0.2);
}
.btn-ghost:hover {
  border-color: rgba(255, 255, 255, 0.6);
}

.btn-dark {
  background: var(--black);
  color: var(--white);
}
.btn-dark:hover {
  background: #111;
}

.btn-white-outline {
  background: transparent;
  color: var(--black);
  border: 1.5px solid rgba(0, 0, 0, 0.35);
  padding: 0.9rem 1.8rem;
}
.btn-white-outline:hover {
  border-color: var(--black);
}

/* ── Color utility classes ── */
.coral { color: var(--coral); }
.cyan  { color: var(--cyan);  }
.blue  { color: var(--blue);  }

/* ── Shimmer text effect ── */
.shimmer {
  background: linear-gradient(90deg, var(--white) 40%, var(--cyan) 50%, var(--white) 60%);
  background-size: 200%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer 3s infinite;
}
