/*
 * Base for every page of the public site. Tokens, reset and the mobile rules
 * live here once; a page adds only what is specific to that page.
 */
:root {
  --bg: #000;
  --fg: #f0f0f0;
  --fg-dim: rgba(240, 240, 240, .55);
  --font-display: 'Inter Tight', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, monospace;
  --gutter: max(4vw, 16px);
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  background: var(--bg);
}

body {
  margin: 0;
  min-height: 100dvh;
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font-mono);
  /* App feel: no rubber-band bounce, no sideways pan, no double-tap zoom delay.
     clip, not hidden: hidden turns body into its own scroll container on iOS. */
  overscroll-behavior: none;
  overflow-x: clip;
  touch-action: manipulation;
  /* Content clears the notch and the home indicator. */
  padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}

img, svg, video, canvas { display: block; max-width: 100%; }

a { color: inherit; }

:focus-visible { outline: 1px solid var(--fg); outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
