/* Entropy — landing. Tokens mirror the Entropy design system. */

@font-face { font-family: "Instrument Serif"; src: url("assets/fonts/InstrumentSerif-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Instrument Serif"; src: url("assets/fonts/InstrumentSerif-Italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Geist"; src: url("assets/fonts/Geist-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Geist"; src: url("assets/fonts/Geist-Medium.woff2") format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "Geist Mono"; src: url("assets/fonts/GeistMono-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; }

:root {
  --void: #08070b;        /* page ground */
  --line: #24212c;        /* hairlines */
  --ink: #eeebf3;         /* primary text */
  --muted: #9b96a7;       /* secondary text, 7.0:1 on void */
  --faint: #858092;       /* tertiary labels, 5.1:1 on void */
  --order: #9d7dff;       /* violet — high order */
  --chaos: #f0a043;       /* amber — chaotic state */
  --physical: #00a1ff;
  --mental: #00ca91;
  --nutrition: #ff822a;

  --serif: "Instrument Serif", "Iowan Old Style", Georgia, serif;
  --sans: "Geist", -apple-system, system-ui, "Helvetica Neue", sans-serif;
  --mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;

  --gutter: max(24px, env(safe-area-inset-left));
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--void);
  color: var(--ink);
  font: 400 16px/1.5 var(--sans);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
p, h1, figure { margin: 0; }

/* ---------- Hero ---------- */
.hero {
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: clamp(8px, 2.2svh, 24px);
  padding: max(20px, env(safe-area-inset-top)) var(--gutter) max(28px, env(safe-area-inset-bottom));
  text-align: center;
  position: relative;
  isolation: isolate;
}
.hero::before { /* a breath of violet behind the orb, no image request */
  content: "";
  position: absolute; inset: 0 0 auto 0; height: 70%;
  background: radial-gradient(60% 50% at 50% 38%, rgba(157,125,255,.10), transparent 70%);
  z-index: -1; pointer-events: none;
}

.orb-wrap { width: min(100%, 520px); position: relative; }
.orb {
  display: block;
  width: 100%;
  height: clamp(150px, 30svh, 300px);
}
.readout {
  margin-top: 2px;
  font: 400 12px/1 var(--mono);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--faint);
  font-variant-numeric: tabular-nums;
}
.readout-value { color: var(--muted); }

.hero-copy { display: flex; flex-direction: column; align-items: center; }
.wordmark {
  font: 400 clamp(44px, 12vw, 72px)/0.95 var(--serif);
  letter-spacing: -0.01em;
}
.tagline {
  margin-top: 6px;
  font: italic 400 clamp(22px, 6.2vw, 30px)/1.15 var(--serif);
  color: var(--ink);
}
.lede {
  margin-top: clamp(10px, 1.8svh, 16px);
  max-width: 21em;
  font-size: 15px;
  line-height: 1.5;
  color: var(--muted);
}

.cta { margin-top: clamp(18px, 3svh, 28px); display: flex; flex-direction: column; align-items: center; gap: 10px; }
.store-badge {
  display: inline-block;
  border-radius: 12px;
  -webkit-tap-highlight-color: transparent;
  transition: transform .15s ease, opacity .15s ease;
  touch-action: manipulation;
}
.store-badge img { width: 156px; height: 52px; }
.store-badge:active { transform: scale(.97); opacity: .85; }
.store-badge:focus-visible { outline: 2px solid var(--order); outline-offset: 4px; }
.trial {
  font-size: 13px;
  color: var(--muted);
  letter-spacing: .01em;
}

/* ---------- Proof ---------- */
.proof {
  padding: clamp(56px, 12vw, 120px) var(--gutter) 0;
  display: grid;
  gap: clamp(72px, 16vw, 128px);
  max-width: 1080px;
  margin: 0 auto;
}
.beat { display: flex; flex-direction: column; align-items: center; gap: 28px; text-align: center; }
.beat figcaption { display: flex; flex-direction: column; gap: 10px; max-width: 20em; }
.beat-index {
  font: 400 12px/1 var(--mono);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--faint);
}
.beat-line {
  font: 400 clamp(32px, 9vw, 44px)/1.05 var(--serif);
  text-wrap: balance;
}
.beat-line em { font-style: italic; }
.beat-sub {
  font-size: 15px;
  line-height: 1.5;
  color: var(--muted);
  text-wrap: pretty;
}
/* Screenshots ship with their own phone frame and glow on a --void ground;
   fade the side edges so the cropped glow never shows a seam. */
.shot {
  width: min(100%, 430px);
  -webkit-mask-image: linear-gradient(to right, transparent, #000 9%, #000 91%, transparent);
          mask-image: linear-gradient(to right, transparent, #000 9%, #000 91%, transparent);
}

/* ---------- Close ---------- */
.close {
  padding: clamp(96px, 22vw, 160px) var(--gutter) clamp(72px, 14vw, 120px);
  display: flex; flex-direction: column; align-items: center; gap: 28px;
  text-align: center;
}
.close-line { font: 400 clamp(32px, 9vw, 48px)/1.08 var(--serif); }
.close-line em { font-style: italic; color: var(--muted); }
.close .trial { margin-top: -16px; }

/* ---------- Footer ---------- */
.footer {
  border-top: 1px solid var(--line);
  padding: 24px var(--gutter) max(28px, env(safe-area-inset-bottom));
  display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 24px;
  font-size: 13px;
  color: var(--muted);
}
.footer a { text-decoration: none; padding: 6px 0; }
.footer a:hover, .footer a:focus-visible { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Wider screens: beats alternate side by side ---------- */
@media (min-width: 820px) {
  .beat { flex-direction: row; justify-content: center; gap: 40px; text-align: left; }
  .beat:nth-child(even) { flex-direction: row-reverse; }
  .beat figcaption { max-width: 22em; }
}

@media (prefers-reduced-motion: reduce) {
  .store-badge { transition: none; }
}
