/* oliverhappy.com. Tokens first; the chosen direction sets them. No framework. */
:root {
  --paper: #FFFFFF;
  --ink: #141414;
  --muted: #5A5E63;
  --rule: #E6E5E1;
  --accent: #1F3FCF;
  --on-accent: #FFFFFF;
  --font-display: "Newsreader", Georgia, serif;
  --font-body: "Public Sans", system-ui, sans-serif;
  --text-display: 64px;
  --text-display-lh: 72px;
  --text-body: 18px;
  --text-body-lh: 28px;
  --text-label: 14px;
  --text-label-lh: 20px;
  --gutter: 96px;
  --page: 1248px;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 400 var(--text-body)/var(--text-body-lh) var(--font-body); }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 4px; }
p { margin: 0; }
h1, h2, h3 { font-weight: 400; margin: 0; }
.wrap { max-width: calc(var(--page) + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter); }

/* Header */
.site-header { display: flex; justify-content: space-between; align-items: center; padding-top: 36px; }
.wordmark { font-family: var(--font-display); font-size: var(--text-body); line-height: 24px; text-decoration: none; white-space: nowrap; }
.site-nav { display: flex; gap: 32px; font-size: var(--text-label); line-height: var(--text-label-lh); color: var(--muted); }
.site-nav a { text-decoration: none; }
.site-nav a:hover, .site-nav a[aria-current="page"] { text-decoration: underline; }
.site-nav .email { color: var(--accent); }

/* Type roles: three sizes only */
.display { font-family: var(--font-display); font-size: var(--text-display); line-height: var(--text-display-lh); letter-spacing: -0.01em; }
.label { font-size: var(--text-label); line-height: var(--text-label-lh); color: var(--muted); }
.muted { color: var(--muted); }
.prose { max-width: 640px; }

/* Actions */
.actions { display: flex; gap: 28px; align-items: center; flex-wrap: wrap; padding-top: 8px; }
.button { display: inline-flex; align-items: center; min-height: 52px; padding: 14px 22px; background: var(--accent); color: var(--on-accent); text-decoration: none; }
.button:hover { filter: brightness(0.92); }
.link { color: var(--accent); }

/* Sections */
.section { padding-top: 160px; }
.section-title { padding-bottom: 40px; }
.hero { padding-top: 132px; display: flex; flex-direction: column; gap: 28px; }
.hero .display { max-width: 1000px; }

.proofs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 64px; }
.proof { display: flex; flex-direction: column; gap: 12px; padding-top: 24px; border-top: 1px solid var(--rule); }

.testimonials { display: grid; grid-template-columns: 1fr 1fr; gap: 48px 64px; }
.testimonial { display: flex; flex-direction: column; gap: 12px; }
.testimonial blockquote { margin: 0; font-family: var(--font-display); }
.testimonial .who { display: flex; gap: 8px; align-items: center; }
.testimonial .who a { display: inline-flex; color: var(--accent); }
.testimonial svg { width: 14px; height: 14px; fill: currentColor; }

.experience { display: flex; flex-direction: column; }
.role { display: grid; grid-template-columns: 220px 1fr; gap: 24px; padding: 20px 0; border-top: 1px solid var(--rule); }
.role:last-child { border-bottom: 1px solid var(--rule); }

.logos { display: flex; flex-wrap: wrap; gap: 32px 48px; align-items: center; }
.logos img { height: 28px; width: auto; filter: grayscale(1); opacity: 0.8; }
.logos span { font-size: var(--text-label); color: var(--muted); }

.podcast { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: start; padding-top: 64px; }
.podcast + .podcast { margin-top: 32px; }
.podcast .cover { width: 72px; height: 72px; }
.podcast .text { display: flex; flex-direction: column; gap: 16px; }
.clip { position: relative; aspect-ratio: 16 / 9; background: #000; overflow: hidden; }
.clip img { width: 100%; height: 100%; object-fit: cover; opacity: 0.85; }
.clip button { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: transparent; cursor: pointer; color: #fff; font: inherit; }
.clip button span { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); padding: 12px 20px; background: var(--accent); color: var(--on-accent); }
.clip iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.fit { width: 100%; border-collapse: collapse; }
.fit th, .fit td { text-align: left; vertical-align: top; padding: 16px 24px 16px 0; border-top: 1px solid var(--rule); }
.fit th { font-weight: 400; color: var(--muted); font-size: var(--text-label); }

.site-footer { padding: 160px 0 64px; }
.site-footer .row { display: flex; gap: 32px; flex-wrap: wrap; border-top: 1px solid var(--rule); padding-top: 24px; }

@media (max-width: 900px) {
  :root { --gutter: 20px; --text-display: 40px; --text-display-lh: 46px; --text-body: 17px; --text-body-lh: 26px; }
  .site-header { padding-top: 20px; gap: 16px; }
  .site-nav { gap: 16px; white-space: nowrap; }
  .site-nav .email { display: none; }
  .hero { padding-top: 72px; }
  .section { padding-top: 96px; }
  .proofs, .testimonials, .podcast, .role { grid-template-columns: 1fr; }
  .proofs { gap: 40px; }
  .role { gap: 4px; }
  .site-footer { padding-top: 96px; }
}

/* Motion: entrance on the first screen, fade-up on scroll. */
.reveal { opacity: 0; transform: translateY(16px); transition: opacity 600ms ease, transform 600ms ease; }
.reveal.in { opacity: 1; transform: none; }
.reveal.delay-1 { transition-delay: 120ms; }
.reveal.delay-2 { transition-delay: 240ms; }
.reveal.delay-3 { transition-delay: 360ms; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } }

/* Bands: a section can sit on the dark ground. */
.band { padding: 120px 0; }
.band-dark { background: var(--dark, #141416); color: #FFFFFF; }
.band-dark .label, .band-dark .muted { color: var(--fog, #B9BBC2); }
.band-dark .proof, .band-dark .role { border-color: rgba(255,255,255,0.18); }
.band-dark .testimonial .who a { color: var(--accent); }
.band-dark .logos img { filter: grayscale(1) invert(1); opacity: 0.85; }
.band-dark a { color: inherit; }
.full { width: 100vw; margin-left: calc(50% - 50vw); }
