:root {
  --ink: #1d3a2b;
  --muted: #5b6b61;
  --bg: #fff;
  --serif: "Source Serif 4", Georgia, serif;
  --sans: "Manrope", system-ui, sans-serif;
}

* { box-sizing: border-box; }

html, body { margin: 0; }

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  color: var(--ink);
  font: 400 1.125rem/1.5 var(--serif);
}

a { color: inherit; text-underline-offset: 0.18em; text-decoration-thickness: 1px; }

.wrap { width: 100%; max-width: 72rem; margin: 0 auto; padding: 0 2.5rem; }

header.wrap { padding-top: 1.75rem; display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }

.acct { display: flex; gap: 1.5rem; font: 500 0.85rem/1 var(--sans); }

.logo {
  font: 700 1.35rem/1 var(--sans);
  letter-spacing: -0.02em;
  text-decoration: none;
}

main { flex: 1; }

footer {
  padding: 1.5rem 0 1.75rem;
  font: 500 0.75rem/1 var(--sans);
  color: var(--ink);
}
footer .wrap { display: flex; gap: 1.25rem; flex-wrap: wrap; }
footer a { text-decoration: none; }
footer a:hover { text-decoration: underline; }

/* Landing */

/* The hillside is clipped by its own box, not by body: overflow on body carries
   over to the whole window and stops the page scrolling when it's taller than
   the screen (a phone held sideways). */
.home { position: relative; }
.hill-clip { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }

.intro { max-width: 32rem; padding-top: 5.5rem; position: relative; z-index: 1; }
.intro p { margin: 0 0 1.5rem; font-size: 1.3rem; line-height: 1.4; }

.cta { display: inline-block; margin-top: 1rem; font-size: 1.3rem; }
.cta::after { content: "\203A"; margin-left: 0.45rem; display: inline-block; }

.intro .beta { margin-top: 0.6rem; font: 500 0.75rem/1.4 var(--sans); color: var(--muted); }

.hill {
  position: absolute;
  right: 0;
  bottom: 0;
  width: min(75vw, 68rem);
  z-index: 0;
  pointer-events: none;
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 30%);
  mask-image: linear-gradient(to right, transparent 0%, #000 30%);
}

.home footer { position: relative; z-index: 1; }

/* Text pages */

.doc { max-width: 42rem; padding-top: 3.5rem; padding-bottom: 3rem; font-size: 1.05rem; line-height: 1.6; }
.doc h1 { font-weight: 500; font-size: 2rem; margin: 0 0 0.25rem; }
.doc h2 { font-weight: 600; font-size: 1.2rem; margin: 2.25rem 0 0.5rem; }
.doc .updated { color: var(--muted); font: 500 0.8rem/1.4 var(--sans); margin-bottom: 2rem; }
.doc ul { padding-left: 1.25rem; }
.doc li { margin-bottom: 0.4rem; }
.doc blockquote {
  margin: 0.5rem 0 1rem;
  padding: 0.75rem 1rem;
  border-left: 2px solid var(--ink);
  background: #f4f7f3;
  font: 500 0.9rem/1.5 var(--sans);
}

@media (max-width: 640px) {
  .wrap { padding: 0 1rem; }
  .acct { gap: 1rem; }
  .intro { padding-top: 3.5rem; padding-bottom: 9rem; }
  .intro p, .cta { font-size: 1.2rem; }
  .hill { width: 125vw; right: -10vw; bottom: 3.25rem; }
}

/* Phones held sideways: wide enough for the desktop layout but too short for
   its spacing, which pushed the hillside below the fold and read as zoomed in. */
@media (max-height: 500px) and (orientation: landscape) {
  header.wrap { padding-top: 1rem; }
  .intro { max-width: 30rem; padding-top: 1.75rem; padding-bottom: 1rem; }
  .intro p { margin-bottom: 1rem; font-size: 1.1rem; }
  .cta { margin-top: 0.25rem; font-size: 1.1rem; }
  .hill { width: 52vw; }
}
