/* 123Hector design tokens.
 *
 * The single place colours and typefaces are defined, for the app, the
 * marketing site and the onboarding pages. Values mirror the token table in
 * DESIGN.md; core/test_design.py fails when the two disagree, so change both
 * or neither.
 *
 * Which theme applies:
 *   <html data-theme="dark">   dark, whatever the system says
 *   <html data-theme="light">  light, whatever the system says
 *   no data-theme              follows prefers-color-scheme
 *
 * Fonts are self-hosted (see DESIGN.md, Typography): loading them from Google
 * would send every visitor's IP address to Google. Latin and Latin Extended
 * only; a glyph outside both falls back to the system font for that glyph.
 * Each file downloads only when a page uses that face and those characters.
 */

@font-face {
    font-family: "IBM Plex Sans";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/ibm-plex-sans-latin-ext-400-normal.1bc0d8e41d21.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: "IBM Plex Sans";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/ibm-plex-sans-latin-400-normal.77bc02670657.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: "IBM Plex Sans";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/ibm-plex-sans-latin-ext-500-normal.93a0df997e00.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: "IBM Plex Sans";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/ibm-plex-sans-latin-500-normal.f7016cd446d2.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: "IBM Plex Sans";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("../fonts/ibm-plex-sans-latin-ext-600-normal.8fccbdf5bf67.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: "IBM Plex Sans";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("../fonts/ibm-plex-sans-latin-600-normal.196e3cbc5fee.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: "IBM Plex Mono";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/ibm-plex-mono-latin-ext-400-normal.8450d5944de2.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: "IBM Plex Mono";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/ibm-plex-mono-latin-400-normal.79936b18df9f.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: "IBM Plex Mono";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/ibm-plex-mono-latin-ext-500-normal.fa8d8838b94a.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: "IBM Plex Mono";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/ibm-plex-mono-latin-500-normal.b1c8a895f5fd.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: "Newsreader";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/newsreader-latin-ext-500-normal.d31a5f0093a3.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: "Newsreader";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/newsreader-latin-500-normal.398a694b44c1.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: "Newsreader";
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/newsreader-latin-ext-400-italic.31b4686830b2.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: "Newsreader";
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/newsreader-latin-400-italic.a6974fdd8f8b.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;
}

:root {
    color-scheme: light;

    --bg: #F4F2EC;
    --surface: #FFFFFF;
    --surface-2: #ECE9E1;
    --line: #DAD5CA;
    --line-strong: #B4AEA1;
    --field: #8A8478;
    --text: #1C1B18;
    --text-2: #55524B;
    --muted: #67635A;
    --accent: #23508F;
    --accent-hover: #1B3F73;
    --accent-soft: #E3EAF6;
    --on-accent: #FFFFFF;
    --pos: #1A6B4F;
    --pos-soft: #DDEFE6;
    --warn: #8F5709;
    --warn-mark: #C27A0E;
    --warn-soft: #FAEBCF;
    --neg: #A32D1F;
    --neg-soft: #F7DCD7;
    --star: #B07A12;
    /* Print colours of the QR sticker designs (core/stickers): the same in both
       themes, since paper has no dark mode; the scan page paints with them. */
    --series-google: #2C5AA0;
    --series-tripadvisor: #1E8C74;
    --series-yelp: #C24A2B;
    --sticker-minuit: #1E3F73;
    --sticker-terracotta: #B4472F;
    --sticker-soleil: #F6C945;
    --sticker-sun: #F2C14E;
    --sticker-cream: #FBF1E4;
    --sticker-ink: #1C1B18;
    --sticker-paper: #FFFFFF;
    --shadow: 0 1px 2px rgba(28, 27, 24, 0.06);

    --font-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-serif: "Newsreader", Georgia, serif;
    --font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        color-scheme: dark;

        --bg: #151412;
        --surface: #1D1C19;
        --surface-2: #262521;
        --line: #34322D;
        --line-strong: #4A4740;
        --field: #716D63;
        --text: #ECE8DF;
        --text-2: #B5B0A5;
        --muted: #948F85;
        --accent: #8FB1EA;
        --accent-hover: #AFC8F1;
        --accent-soft: #223247;
        --on-accent: #0F1A2E;
        --pos: #5CC79A;
        --pos-soft: #1A3529;
        --warn: #EBC05A;
        --warn-mark: #EBC05A;
        --warn-soft: #3A2F13;
        --neg: #EE7A62;
        --neg-soft: #40221B;
        --star: #E2B458;
    --series-google: #5E90E6;
    --series-tripadvisor: #2EA87A;
    --series-yelp: #E8653F;
    --sticker-minuit: #1E3F73;
    --sticker-terracotta: #B4472F;
    --sticker-soleil: #F6C945;
    --sticker-sun: #F2C14E;
    --sticker-cream: #FBF1E4;
    --sticker-ink: #1C1B18;
    --sticker-paper: #FFFFFF;
        --shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
    }
}

/* Same values as the block above. CSS cannot share one declaration block
 * between a media query and a plain selector, so they are written twice;
 * core/test_design.py checks the two copies stay identical. */
:root[data-theme="dark"] {
    color-scheme: dark;

    --bg: #151412;
    --surface: #1D1C19;
    --surface-2: #262521;
    --line: #34322D;
    --line-strong: #4A4740;
    --field: #716D63;
    --text: #ECE8DF;
    --text-2: #B5B0A5;
    --muted: #948F85;
    --accent: #8FB1EA;
    --accent-hover: #AFC8F1;
    --accent-soft: #223247;
    --on-accent: #0F1A2E;
    --pos: #5CC79A;
    --pos-soft: #1A3529;
    --warn: #EBC05A;
    --warn-mark: #EBC05A;
    --warn-soft: #3A2F13;
    --neg: #EE7A62;
    --neg-soft: #40221B;
    --star: #E2B458;
    --series-google: #5E90E6;
    --series-tripadvisor: #2EA87A;
    --series-yelp: #E8653F;
    --sticker-minuit: #1E3F73;
    --sticker-terracotta: #B4472F;
    --sticker-soleil: #F6C945;
    --sticker-sun: #F2C14E;
    --sticker-cream: #FBF1E4;
    --sticker-ink: #1C1B18;
    --sticker-paper: #FFFFFF;
    --shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
