/* Self-hosted, not loaded from Google's CDN.
 *
 * Remote-loading Google Fonts sends the visitor's IP address to Google before
 * anything on the page has asked their permission. LG München I found that
 * unlawful in 2022 (3 O 17493/20, EUR 100 in damages) on reasoning that carries
 * to any EU authority: an IP is personal data, and self-hosting is a trivial
 * alternative, so the transfer cannot be necessary. Serving the files ourselves
 * removes the site's only third-party connection and the only transfer to the US
 * not covered by a processor agreement — which is what lets the privacy policy
 * say "no third-party requests" and mean it literally.
 *
 * Variable fonts: one file covers every weight the design uses (Outfit 500-800,
 * Plus Jakarta Sans 400-800). Split latin / latin-ext so the Polish diacritics
 * live in a file only browsers that need them fetch. 94 KB total.
 * Both families are SIL OFL 1.1 — licence texts sit beside the files in
 * assets/fonts/, which the licence requires us to ship with them.
 */
@font-face {
  font-family: "Outfit";
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url("../assets/fonts/outfit-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Outfit";
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url("../assets/fonts/outfit-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../assets/fonts/jakarta-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../assets/fonts/jakarta-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  /* color palette */
  --bg: #031427;
  --bg-deep: #081b31;
  --paper: #0a213c;
  --paper-elev: #112d4f;
  --ink: #e9f5ff;
  --ink-soft: #a6c4dd;
  --line: #1d4771;
  --mint: #00e6c1;
  --mint-strong: #00c8a8;
  --sky: #38a8ff;
  --peach: #ff9e45;
  --violet: #8f95ff;

  /* spacing scale */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4rem;

  /* Distance every in-page anchor has to clear so its target does not land
     under the sticky topbar. Consumed by `html { scroll-padding-top }` and by
     the `scroll-margin-top` list in base.css, and redefined per breakpoint in
     responsive.css because the topbar is not the same height on a phone. */
  --anchor-offset: 104px;

  /* radius scale */
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --radius-xl: 28px;
  --radius-pill: 999px;

  /* shadow scale */
  --shadow-sm: 0 4px 12px rgba(0, 8, 18, 0.25);
  --shadow-md: 0 12px 28px rgba(0, 8, 18, 0.35);
  --shadow-lg: 0 24px 54px rgba(0, 8, 18, 0.45);

  /* typography */
  --font-display: "Outfit", system-ui, -apple-system, sans-serif;
  --font-body: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;

  /* repeated gradients */
  --bg-grad-card: linear-gradient(180deg, rgb(from var(--paper) r g b / 0.9), rgb(from var(--bg-deep) r g b / 0.9));
  --bg-grad-card-strong: linear-gradient(180deg, rgb(from var(--paper) r g b / 0.92), rgb(from var(--bg-deep) r g b / 0.9));
  --bg-grad-elev: linear-gradient(180deg, rgb(from var(--paper-elev) r g b / 0.72), rgb(from var(--paper) r g b / 0.72));
}

/* The pointer-parallax offsets are declared on `.ambient-bg` (base.css) rather
   than here, because that is the only element whose subtree reads them and the
   only element ambient.js writes them to. Declared on `:root` they would be
   inherited by every element in the document, which is what made each write cost
   a full-document style recalculation.
   `--mouse-x`, `--mouse-y`, `--motion-energy` and `--scroll-progress` used to
   live here too. Nothing ever read the first three; `--scroll-progress` is now a
   scroll timeline. */
