/* Vouch landing — baked "hyperpop + teal" tokens from the Claude Design prototype.
   Interactive elements keep layout inline in the HTML; color/background/border live
   here so :hover / :focus can override without !important. */

:root {
  --paper: #3a1568;
  --paper2: #320f5b;
  --card: #48208a;
  --ink: #fdedff;
  --muted: rgba(255, 255, 255, 0.74);
  --faint: rgba(255, 255, 255, 0.52);
  --line: rgba(255, 255, 255, 0.16);
  --line2: rgba(255, 255, 255, 0.3);
  --accent: #0e9080;
  --accent-deep: #4fd6c4;
  --accent-ink: #ffffff;
  --money: #7dffbf;
  --warn: #ffd23f;
  --cta-bg: #ffffff;
  --cta-fg: #3a1466;
  --cta-sub: #7a4aa0;
  --cta-field: #faf0ff;
  --cta-field-bd: #ecd6ff;
  --cta-link-bd: #e0c3ff;
  --disp: "Hanken Grotesk", -apple-system, "Helvetica Neue", sans-serif;
  --serif: "Hanken Grotesk", -apple-system, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --btn: 100px;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  color: var(--ink);
  font-family: var(--disp);
  position: relative;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  background:
    linear-gradient(rgba(255, 255, 255, 0.1) 1px, transparent 1px) 0 0 / 100% 30px,
    linear-gradient(90deg, rgba(255, 255, 255, 0.1) 1px, transparent 1px) 0 0 / 30px 100%,
    var(--paper);
}

::selection {
  background: var(--accent);
  color: #fff;
}

/* film grain overlay */
.grain {
  position: fixed;
  inset: 0;
  z-index: 80;
  pointer-events: none;
  mix-blend-mode: soft-light;
  opacity: 0.08;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---- interactive: base colors + hover/focus (layout stays inline) ---- */
.nav-link {
  color: var(--muted);
  transition: color 0.2s ease;
}
.nav-link:hover {
  color: var(--ink);
}

.nav-center {
  display: flex;
  align-items: center;
  gap: 30px;
}

.btn-primary {
  background: var(--accent);
  color: var(--accent-ink);
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 34px -14px var(--accent-deep);
}

.btn-secondary {
  background: transparent;
  color: var(--ink);
  border: 1px solid var(--line2);
  transition: border-color 0.2s ease, color 0.2s ease;
}
.btn-secondary:hover {
  border-color: var(--accent);
  color: var(--accent-deep);
}

.btn-accent {
  background: var(--accent);
  color: var(--accent-ink);
  transition: background 0.2s ease;
}
.btn-accent:hover {
  background: var(--accent-deep);
}

.field {
  background: var(--cta-field);
  border: 1px solid var(--cta-field-bd);
  color: var(--cta-fg);
  outline: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.field:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent) 22%, transparent);
}

.link-underline {
  color: var(--cta-fg);
  border-bottom: 1px solid var(--cta-link-bd);
  transition: border-color 0.2s ease, color 0.2s ease;
}
.link-underline:hover {
  border-color: var(--accent);
  color: var(--accent);
}

/* honeypot — off-screen, never shown to humans */
.hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* ---- reveal on scroll (progressive enhancement: only hidden when JS is on) ---- */
.js [data-reveal] {
  opacity: 0;
}
.js [data-reveal].revealed {
  opacity: 1;
  animation: vh-rvl 0.72s cubic-bezier(0.28, 0.11, 0.32, 1) both;
}
.js [data-reveal="media"].revealed {
  animation-name: vh-rvlm;
}

@keyframes vh-prog {
  0% {
    width: 0;
  }
  92% {
    width: 100%;
  }
  100% {
    width: 100%;
  }
}
@keyframes vh-float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}
@keyframes vh-rvl {
  from {
    opacity: 0;
    transform: translateY(28px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@keyframes vh-rvlm {
  from {
    opacity: 0;
    transform: translateY(36px) scale(0.978);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

/* ---- responsive: 860px is the prototype's wide/narrow breakpoint ---- */
.fw-narrow {
  display: none;
}
@media (max-width: 860px) {
  .nav-center {
    display: none;
  }
  .fw-wide {
    display: none;
  }
  .fw-narrow {
    display: block;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .js [data-reveal] {
    opacity: 1;
  }
}

@media print {
  .grain {
    display: none;
  }
  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}
