/* ------------------------------------------------------------------ fonts
   Self-hosted, no third-party request. latin-ext carries the Polish letters
   (ą ę ł ń ó ś ź ż) and is only fetched when the page actually uses them. */
@font-face {
  font-family: "Inter"; font-weight: 400; font-style: normal; font-display: swap;
  src: url("../fonts/inter-latin-400-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter"; font-weight: 500; font-style: normal; font-display: swap;
  src: url("../fonts/inter-latin-500-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter"; font-weight: 400; font-style: normal; font-display: swap;
  src: url("../fonts/inter-latin-ext-400-normal.woff2") format("woff2");
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, 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: "Inter"; font-weight: 500; font-style: normal; font-display: swap;
  src: url("../fonts/inter-latin-ext-500-normal.woff2") format("woff2");
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, 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: "IBM Plex Mono"; font-weight: 400; font-style: normal; font-display: swap;
  src: url("../fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2");
}

/* ----------------------------------------------------------------- tokens
   The only :root on the site. Change here = change everywhere — ask first. */
:root {
  /* colour */
  --bg:      #ededed;
  --surface: #f5f5f5;
  --white:   #ffffff;
  --ink:     #0a0a0a;
  --ink-2:   #232323;   /* button hover */
  --muted:   #5d5d5d;
  --soft:    #7a7a7a;
  --line:    #e0e0e0;
  --stroke:  #e4e4e4;
  --accent:  #2bd46a;   /* the one live dot on the CTA */

  /* layout */
  --col:     837px;     /* text column */
  --grid:    1390px;    /* works: 3 × 450 + 2 × 20 */
  --gutter:  24px;

  /* type scale — sizes go through these only; mobile comes from clamp() */
  --text-lede:      clamp(20px, 1.25rem + 0.6vw, 26px);
  --text-lede-lh:   1.45;
  --text-body:      clamp(15px, 0.85rem + 0.3vw, 18px);
  --text-body-lh:   1.6;
  --text-ui:        14px;          /* nav, buttons, filters */
  --text-ui-lh:     1.6;
  --text-small:     clamp(13px, 0.75rem + 0.15vw, 15px);
  --text-small-lh:  1.6;
  --text-label:     clamp(11px, 0.65rem + 0.15vw, 13px);  /* mono caps */
  --text-label-lh:  1.6;
  --text-title:     clamp(22px, 1rem + 1.2vw, 32px);     /* contact title */
  --text-title-lh:  1.35;
  --text-metric:    clamp(40px, 1.5rem + 3vw, 64px);
  --text-metric-lh: 1;
  --ls:             -0.5px;        /* flat tracking, everywhere */

  /* radius */
  --r-card:  32px;
  --r-tray:  25px;
  --r-inner: 20px;
  --r-pill:  999px;

  /* motion */
  --ease-out:   cubic-bezier(0.22, 1, 0.36, 1);
  --ease-inout: cubic-bezier(0.76, 0, 0.24, 1);
}

@media (max-width: 1100px) { :root { --col: 800px; --r-card: 20px; } }
@media (max-width: 640px)  { :root { --col: 343px; --r-card: 16px; } }

/* ------------------------------------------------------------------ reset */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
html, body {
  background: var(--bg);
  color: var(--ink);
  font-family: "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: var(--text-body);
  line-height: var(--text-body-lh);
  letter-spacing: var(--ls);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
a { color: inherit; text-decoration: none; }
img, svg, video { display: block; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; letter-spacing: inherit; }

/* Text boxes hug cap height to baseline, so spacing is measured from letters. */
.txt { text-box-trim: trim-both; text-box-edge: cap alphabetic; }

::selection { background: var(--ink); color: var(--white); }

:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; border-radius: 4px; }

.sr-only {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}
