@font-face {
  font-family: "Satoshi OpenRobot";
  font-style: normal;
  font-display: swap;
  font-weight: 300 900;
  src: url("/assets/fonts/satoshi-latin.woff2") format("woff2-variations");
}

@font-face {
  font-family: "Lato OpenRobot";
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url("/assets/fonts/lato-latin-regular.woff2") format("woff2");
}

@font-face {
  font-family: "Lato OpenRobot";
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url("/assets/fonts/lato-latin-bold.woff2") format("woff2");
}

:root {
  /* Final OpenRobot palette: warm paper, near-black ink, acid-lime signal. */
  --bg: #fafaf7;
  --bg-elevated: #ffffff;
  --bg-elevated-2: #f2f2ed;

  /* Text. */
  --fg: #10110d;
  --fg-secondary: #65655f;
  --fg-tertiary: #7f7f78;
  --fg-quaternary: #a8a8a0;

  /* Hairlines. */
  --border: #d8d8d0;
  --border-bright: #a8a8a0;

  /* Ink stays the accessible default action color. Lime is a signal token. */
  --accent: #10110d;
  --accent-strong: #292a25;
  --accent-deep: #10110d;
  --accent-contrast: #fafaf7;
  --accent-glow: rgba(16, 17, 13, 0.16);
  --accent-glow-soft: rgba(16, 17, 13, 0.06);
  --signal: #d7e13d;
  --signal-strong: #c7d12d;
  --signal-soft: rgba(215, 225, 61, 0.18);

  /* Semantic states. */
  --success: #197a4a;
  --warning: #9a6500;
  --error: #b33a2e;

  /* Typography locked by the OpenRobot evaluation pack. */
  --font-display: "Satoshi OpenRobot", sans-serif;
  --font-body: "Lato OpenRobot", sans-serif;
  --font-utility: "Lato OpenRobot", sans-serif;

  /* Layout */
  --max-w: 1080px;
  --max-w-narrow: 760px;
  --measure-shell: 1180px;
  --measure-hero: 960px;
  --measure-intake: 880px;
  --measure-spec: 760px;
  --page-gutter: clamp(18px, 2.5vw, 24px);

  /* Motion — one curve, used everywhere. */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
}
