/* Headz landing — zero dependencies, zero JS, no external requests.
   Palette is borrowed from the app's DESIGN.md:
   graphite #2E2E38 is kin to the shelf card surface (#26262E),
   amber #E08A4B is kin to the warm "table" underlay (#FFB37A). */

:root {
  --graphite: #2E2E38;
  --graphite-deep: #1B1C21;
  --amber: #E08A4B;
  --amber-warm: #FFB37A;
  --ember: #C25B38;

  --ink: #111114;
  --ink-soft: #6b6b70;
  /* system blue, pulled a touch deeper: #0A7CFF sits at 3.9:1 on white,
     under the 4.5:1 AA floor for 20px text. This reads the same and clears it. */
  --link: #0a6ce0;

  /* Sized against orb.club, which the owner named as the reference: its card is
     489px in a 1280 viewport, i.e. 38% of the width. Ours was 760px (59%), so the
     whole block scales by 760/480 ≈ 1.58 — inside the 1.5–1.7 that was asked for.
     Type and spacing scale with it (~0.63x); only the two smallest sizes are held
     up a little, since a straight 0.63x would put the byline at 9px. */
  --card-w: 480px;
  --card-r: 32px;
  --card-pad: 44px 46px;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 56px 40px;
  background: var(--graphite);
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Inter",
               system-ui, "Segoe UI", Roboto, sans-serif;
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
}

/* ── Living background ─────────────────────────────────────────────────────
   Three layers: two flat colour fields, a few slow-drifting blobs that keep
   the seam between them breathing, and a static grain on top. Only transforms
   animate, so the whole thing composites on the GPU. */

.bg {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  background: linear-gradient(100deg,
              var(--graphite) 0 38%,
              var(--amber) 62% 100%);
}

.blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(90px);
  will-change: transform;
}

.blob--graphite {
  left: -18%; top: -22%;
  width: 78vmax; height: 78vmax;
  background: radial-gradient(circle at 50% 50%,
              var(--graphite-deep) 0%, rgba(27, 28, 33, 0) 68%);
  animation: drift-a 30s ease-in-out infinite;
}

.blob--amber {
  right: -22%; top: -14%;
  width: 86vmax; height: 86vmax;
  background: radial-gradient(circle at 50% 50%,
              var(--amber-warm) 0%, rgba(255, 179, 122, 0) 66%);
  animation: drift-b 38s ease-in-out infinite;
}

.blob--ember {
  right: -10%; bottom: -34%;
  width: 66vmax; height: 66vmax;
  background: radial-gradient(circle at 50% 50%,
              var(--ember) 0%, rgba(194, 91, 56, 0) 70%);
  animation: drift-c 46s ease-in-out infinite;
}

@keyframes drift-a {
  0%   { transform: translate3d(0, 0, 0) scale(1); }
  34%  { transform: translate3d(9%, 7%, 0) scale(1.16); }
  67%  { transform: translate3d(-5%, 12%, 0) scale(0.9); }
  100% { transform: translate3d(0, 0, 0) scale(1); }
}
@keyframes drift-b {
  0%   { transform: translate3d(0, 0, 0) scale(1.04); }
  38%  { transform: translate3d(-11%, 9%, 0) scale(0.88); }
  72%  { transform: translate3d(4%, -8%, 0) scale(1.2); }
  100% { transform: translate3d(0, 0, 0) scale(1.04); }
}
@keyframes drift-c {
  0%   { transform: translate3d(0, 0, 0) scale(0.96); }
  45%  { transform: translate3d(-13%, -10%, 0) scale(1.22); }
  78%  { transform: translate3d(7%, 4%, 0) scale(0.94); }
  100% { transform: translate3d(0, 0, 0) scale(0.96); }
}

/* Pixel grain, matched against the reference the owner pointed at (the landing video
   on orb.club). Measured there: per-channel sd ~9 and d1/d3 ~0.48, where d1/d3 is the
   adjacent-pixel difference over the 3-apart difference — near 1.0 means fine white
   noise, ~0.5 means chunky grain. A raster tile painted at exactly 2x with
   `image-rendering: pixelated` lands d1/d3 on 1/2 by construction: half of all adjacent
   pairs fall inside the same 2x2 block and differ by nothing. That is why this is a PNG
   and not feTurbulence — SVG is vector, so it re-rasterises fine at any size and always
   comes out at d1/d3 ~1.0.

   The tile is 128x128 greyscale (16 levels, 8 KB) shown at 256px. Grey, not colour:
   orb.club's chroma spread is ~1.0, i.e. its noise rides luma and the colour you see is
   the gradient underneath. Regenerated by tools/gen_noise.py.

   hard-light rather than overlay: overlay picks its branch from the backdrop, so grain
   all but vanishes over the graphite half (measured 2.0 there vs 4.3 on the amber).
   hard-light picks from the noise and bites evenly on both fields.

   The whole tile jumps to a new offset ~12 times a second. That shimmer is what reads
   as alive immediately; the blobs underneath take half a minute to say the same thing.
   Offsets are even so the 2px block grid stays aligned. Only `transform` animates. */
.grain {
  position: absolute;
  inset: -60px;
  opacity: 0.16;
  mix-blend-mode: hard-light;
  pointer-events: none;
  will-change: transform;
  background-size: 256px 256px;
  image-rendering: pixelated;
  background-image: url("data:image/png;base64,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");
  animation: grain 0.8s steps(1, end) infinite;
}

@keyframes grain {
  0%   { transform: translate3d(0, 0, 0); }
  10%  { transform: translate3d(-14px, 10px, 0); }
  20%  { transform: translate3d(22px, -18px, 0); }
  30%  { transform: translate3d(-32px, 24px, 0); }
  40%  { transform: translate3d(18px, 32px, 0); }
  50%  { transform: translate3d(-28px, -12px, 0); }
  60%  { transform: translate3d(38px, 8px, 0); }
  70%  { transform: translate3d(-10px, -30px, 0); }
  80%  { transform: translate3d(30px, 20px, 0); }
  90%  { transform: translate3d(-20px, -8px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

/* ── Card ──────────────────────────────────────────────────────────────── */

.card {
  width: 100%;
  max-width: var(--card-w);
  padding: var(--card-pad);
  background: #fff;
  border-radius: var(--card-r);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.18),
              0 2px 6px rgba(0, 0, 0, 0.08);
}

.masthead { margin-bottom: 44px; }

.wordmark {
  margin: 0;
  font-size: 28px;
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.05;
}

.byline {
  margin: 4px 0 0;
  font-size: 11px;
  color: var(--ink-soft);
}

.headline {
  margin: 0;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.18;
}

.lead {
  margin: 18px 0 0;
  font-size: 15px;
  line-height: 1.4;
  letter-spacing: -0.005em;
}

.shelf {
  display: block;
  width: 100%;
  height: auto;
  margin: 26px 0 0;
}

.cta { margin: 26px 0 0; }

.download {
  font-size: 15px;
  color: var(--link);
  text-decoration: none;
}
.download:hover { text-decoration: underline; }
.download:focus-visible {
  outline: 2px solid var(--link);
  outline-offset: 4px;
  border-radius: 4px;
}

/* ── Responsive ────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  body { padding: 24px 16px; }
  /* a near-horizontal split pushes the graphite field off a tall, narrow screen —
     tilt it so both colours stay on stage */
  .bg { background: linear-gradient(168deg, var(--graphite) 0 30%, var(--amber) 62% 100%); }
  .blob--graphite { left: -30%; top: -34%; width: 130vmin; height: 130vmin; }
  .blob--amber { right: -35%; top: 42%; width: 130vmin; height: 130vmin; }
  .blob--ember { right: -25%; bottom: -28%; width: 110vmin; height: 110vmin; }
  /* The base scale already suits a phone-width card, so the small screens only
     reclaim padding — no type overrides, or mobile would end up larger than desktop. */
  .card {
    --card-r: 28px;
    --card-pad: 36px 30px;
  }
  .masthead { margin-bottom: 36px; }
}

@media (max-width: 430px) {
  body { padding: 16px 12px; }
  .card {
    --card-r: 24px;
    --card-pad: 28px 22px;
  }
  .masthead { margin-bottom: 30px; }
}

/* ── Motion preference ─────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .blob, .grain { animation: none; }
}
