/* JetBrains Mono, served from static/fonts (OFL, see OFL.txt there). --mono
   named it for years without shipping it, so each machine fell back to
   whatever monospace it had installed — Courier New on most, which is the
   thinnest and widest of the lot. One variable file per subset covers every
   weight the CSS uses (400-700, incl. 650); Cyrillic is here for the
   Ukrainian offer names and translations. */
@font-face {
    font-family: 'JetBrains Mono';
    font-style: normal;
    font-display: swap;
    font-weight: 100 800;
    src: url(/static/fonts/jetbrains-mono/jbm-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+2074, U+20AC, U+2122, U+2191, U+2193,
        U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'JetBrains Mono';
    font-style: normal;
    font-display: swap;
    font-weight: 100 800;
    src: url(/static/fonts/jetbrains-mono/jbm-latin-ext.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: 'JetBrains Mono';
    font-style: normal;
    font-display: swap;
    font-weight: 100 800;
    src: url(/static/fonts/jetbrains-mono/jbm-cyrillic.woff2) format('woff2');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

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

:root {
    --bg: #0c0c0c;
    --bg2: #141414;
    --bg3: #1c1c1c;
    --bg4: #222222;
    --border: rgba(255, 255, 255, 0.07);
    --border2: rgba(255, 255, 255, 0.13);
    --border3: rgba(255, 255, 255, 0.20);
    --text: #e2e0db;
    --text2: #8a8880;
    --text3: #4e4c49;
    /* Form labels. --text2 sits at 5.2:1 on --bg2, which clears AA but is a
       strain at 11-12px monospace — and it left labels exactly as dim as the
       section headers they sit under, so the thing you actually read while
       filling the form had the least presence on it. This lands at 8.7:1:
       clearly foreground, still short of --text so a label never competes with
       the value inside the field. */
    --text-label: #b5b2ab;
    --green: #2d8f5e;
    --green-bg: rgba(45, 143, 94, 0.10);
    --green-text: #4ec98a;
    --red: #a83a3a;
    --red-bg: rgba(168, 58, 58, 0.10);
    --red-text: #e06666;
    --blue: #2e5fa8;
    --blue-bg: rgba(46, 95, 168, 0.10);
    --blue-text: #6b9ee8;
    --amber: #8f6a1c;
    --amber-bg: rgba(143, 106, 28, 0.12);
    --amber-text: #c49a3a;
    --mono: 'JetBrains Mono', 'Cascadia Mono', Consolas, Menlo, monospace;
    --sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --r-sm: 4px;
    --r: 5px;
    --r-md: 7px;
    --r-lg: 9px;

    /* ── motion ────────────────────────────────────────────────────────
       Durations are deliberately short: this is a tool that stays open all
       day, and motion that reads as elegant on a marketing page reads as lag
       here. The rule that does most of the work: things ENTER on --e-out and
       LEAVE on --e-in, and an exit is shorter than the matching entrance.
       --e-spring overshoots, so it is reserved for the stage stepper and the
       checkbox tick rather than used generally.
       motion.css zeroes all four durations under prefers-reduced-motion. */
    --t-instant: 80ms;  /* hover, press, colour                     */
    --t-fast: 140ms;    /* chips, dropdowns, focus rings, exits     */
    --t-base: 200ms;    /* modals, tab switches, row entrances      */
    --t-slow: 320ms;    /* drawers, stepper connectors             */

    --e-out: cubic-bezier(0.22, 1, 0.36, 1);
    --e-in: cubic-bezier(0.4, 0, 1, 1);
    --e-in-out: cubic-bezier(0.4, 0, 0.2, 1);
    --e-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
}
