/* ESG-Hub design tokens — generated from esgx/ui/theme.py (python -m esgx.ui.theme); do not edit by hand. */
@font-face { font-family: "Inter"; src: url("fonts/inter-latin-wght-normal.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 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: "Inter"; src: url("fonts/inter-latin-ext-wght-normal.woff2") format("woff2"); font-weight: 100 900; font-display: swap; 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: "Fraunces"; src: url("fonts/fraunces-latin-full-normal.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Fraunces"; src: url("fonts/fraunces-latin-full-italic.woff2") format("woff2"); font-weight: 100 900; font-style: italic; font-display: swap; }
@font-face { font-family: "JetBrains Mono"; src: url("fonts/jetbrains-mono-latin-wght-normal.woff2") format("woff2"); font-weight: 100 800; font-display: swap; }
:root {
  --font-ui: "Inter", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", "SimSun", "Segoe UI", system-ui, sans-serif;
  --font-num: "JetBrains Mono", "Cascadia Mono", "Consolas", "Microsoft YaHei UI", "Microsoft YaHei", "SimSun", system-ui, sans-serif;
  --font-display: "Fraunces", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", "SimSun", Georgia, serif;
  --font-mono: "JetBrains Mono", "Cascadia Mono", "Consolas", "Microsoft YaHei UI", "Microsoft YaHei", "SimSun", ui-monospace, monospace;
  --fs-caption: 12px;
  --fs-body: 13px;
  --fs-body_l: 14px;
  --fs-section: 15px;
  --fs-title: 22px;
  --fs-kpi: 24px;
  --fs-display: 30px;
  --fs-hero: 40px;
  --sp-xxs: 2px;
  --sp-xs: 4px;
  --sp-s: 8px;
  --sp-m: 12px;
  --sp-l: 16px;
  --sp-xl: 24px;
  --sp-xxl: 32px;
  --r-s: 6px;
  --r-m: 8px;
  --r-l: 14px;
  --r-xl: 22px;
  --r-pill: 999px;
  --motion-fast: 120ms;
  --motion-base: 180ms;
  --motion-slow: 260ms;
  --ease: cubic-bezier(.22,.61,.36,1);
  --ease-out: cubic-bezier(.16,1,.3,1);
  --bg: #F1F3F1;
  --bg-top: #F1F3F1;
  --bg-bottom: #F1F3F1;
  --surface: #FFFFFF;
  --surface-alt: #F6F8F6;
  --sunken: #EEF1EE;
  --overlay: #FFFFFF;
  --border: #DDE3DF;
  --border-strong: #C2CBC5;
  --divider: #E6EBE7;
  --text: #151A1B;
  --muted: #5E6965;
  --subtle: #66716C;
  --on-primary: #FFFFFF;
  --link: #A84A1C;
  --primary: #151A1B;
  --primary-hover: #2B3335;
  --primary-press: #000000;
  --primary-soft: rgba(21, 26, 27, 0.05);
  --primary-soft-strong: rgba(169, 124, 12, 0.16);
  --accent: #A84A1C;
  --accent-soft: rgba(168, 74, 28, 0.10);
  --brand-a: #151A1B;
  --brand-b: #151A1B;
  --brand-c: #A84A1C;
  --nav-a: #FFFFFF;
  --nav-b: #FFFFFF;
  --nav-c: #FFFFFF;
  --nav-text: #151A1B;
  --nav-muted: #5E6965;
  --nav-hover: #F6F8F6;
  --nav-active: #EEF1EE;
  --nav-indicator: #A84A1C;
  --good: #3F7D22;
  --good-soft: rgba(63, 125, 34, 0.12);
  --warn: #8A6508;
  --warn-soft: rgba(169, 124, 12, 0.16);
  --bad: #B4271B;
  --bad-soft: rgba(180, 39, 27, 0.10);
  --info: #4E61B8;
  --info-soft: rgba(78, 97, 184, 0.10);
  --neutral: #5E6965;
  --orange: #A84A1C;
  --purple: #6B4FB8;
  --grid: #E6EBE7;
  --chart-text: #5E6965;
  --focus: #A97C0C;
  --selection: rgba(169, 124, 12, 0.20);
  --shadow: 0 1px 0 rgba(21, 26, 27, 0.04), 0 8px 24px -12px rgba(21, 26, 27, 0.14);
  --shadow-lg: 0 2px 0 rgba(21, 26, 27, 0.03), 0 24px 60px -20px rgba(21, 26, 27, 0.28);
  --series-0: #A84A1C;
  --series-1: #3F7D22;
  --series-2: #4E61B8;
  --series-3: #A97C0C;
  --series-4: #2F7F86;
  --series-5: #8A4F9E;
  --series-6: #6B7570;
  --series-7: #C06A3C;
  --series-8: #5D9A3A;
  --series-9: #B4271B;
  color-scheme: light;
}
:root[data-theme="dark"] {
  --bg: #0C1012;
  --bg-top: #0C1012;
  --bg-bottom: #0C1012;
  --surface: #12181A;
  --surface-alt: #171E20;
  --sunken: #0F1416;
  --overlay: #12181A;
  --border: #232C2F;
  --border-strong: #3D4A4E;
  --divider: #1C2427;
  --text: #E6EBE5;
  --muted: #95A09A;
  --subtle: #86918B;
  --on-primary: #12181A;
  --link: #DC7A43;
  --primary: #E6EBE5;
  --primary-hover: #CFD6CF;
  --primary-press: #B8C0B9;
  --primary-soft: rgba(230, 235, 229, 0.06);
  --primary-soft-strong: rgba(230, 194, 77, 0.16);
  --accent: #DC7A43;
  --accent-soft: rgba(220, 122, 67, 0.14);
  --brand-a: #E6EBE5;
  --brand-b: #E6EBE5;
  --brand-c: #DC7A43;
  --nav-a: #12181A;
  --nav-b: #12181A;
  --nav-c: #12181A;
  --nav-text: #E6EBE5;
  --nav-muted: #95A09A;
  --nav-hover: #171E20;
  --nav-active: #1D2528;
  --nav-indicator: #DC7A43;
  --good: #96C96F;
  --good-soft: rgba(150, 201, 111, 0.14);
  --warn: #E6C24D;
  --warn-soft: rgba(230, 194, 77, 0.14);
  --bad: #F0735F;
  --bad-soft: rgba(240, 115, 95, 0.14);
  --info: #93A4F0;
  --info-soft: rgba(147, 164, 240, 0.14);
  --neutral: #95A09A;
  --orange: #DC7A43;
  --purple: #C4A0FF;
  --grid: #232C2F;
  --chart-text: #B4BDB7;
  --focus: #E6C24D;
  --selection: rgba(230, 194, 77, 0.22);
  --shadow: 0 1px 0 rgba(0, 0, 0, 0.30), 0 10px 30px -14px rgba(0, 0, 0, 0.60);
  --shadow-lg: 0 30px 80px -20px rgba(0, 0, 0, 0.80);
  --series-0: #DC7A43;
  --series-1: #96C96F;
  --series-2: #93A4F0;
  --series-3: #E6C24D;
  --series-4: #5CC3C9;
  --series-5: #C79BE0;
  --series-6: #95A09A;
  --series-7: #F0A070;
  --series-8: #7FBF5A;
  --series-9: #F0735F;
  color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0C1012;
    --bg-top: #0C1012;
    --bg-bottom: #0C1012;
    --surface: #12181A;
    --surface-alt: #171E20;
    --sunken: #0F1416;
    --overlay: #12181A;
    --border: #232C2F;
    --border-strong: #3D4A4E;
    --divider: #1C2427;
    --text: #E6EBE5;
    --muted: #95A09A;
    --subtle: #86918B;
    --on-primary: #12181A;
    --link: #DC7A43;
    --primary: #E6EBE5;
    --primary-hover: #CFD6CF;
    --primary-press: #B8C0B9;
    --primary-soft: rgba(230, 235, 229, 0.06);
    --primary-soft-strong: rgba(230, 194, 77, 0.16);
    --accent: #DC7A43;
    --accent-soft: rgba(220, 122, 67, 0.14);
    --brand-a: #E6EBE5;
    --brand-b: #E6EBE5;
    --brand-c: #DC7A43;
    --nav-a: #12181A;
    --nav-b: #12181A;
    --nav-c: #12181A;
    --nav-text: #E6EBE5;
    --nav-muted: #95A09A;
    --nav-hover: #171E20;
    --nav-active: #1D2528;
    --nav-indicator: #DC7A43;
    --good: #96C96F;
    --good-soft: rgba(150, 201, 111, 0.14);
    --warn: #E6C24D;
    --warn-soft: rgba(230, 194, 77, 0.14);
    --bad: #F0735F;
    --bad-soft: rgba(240, 115, 95, 0.14);
    --info: #93A4F0;
    --info-soft: rgba(147, 164, 240, 0.14);
    --neutral: #95A09A;
    --orange: #DC7A43;
    --purple: #C4A0FF;
    --grid: #232C2F;
    --chart-text: #B4BDB7;
    --focus: #E6C24D;
    --selection: rgba(230, 194, 77, 0.22);
    --shadow: 0 1px 0 rgba(0, 0, 0, 0.30), 0 10px 30px -14px rgba(0, 0, 0, 0.60);
    --shadow-lg: 0 30px 80px -20px rgba(0, 0, 0, 0.80);
    --series-0: #DC7A43;
    --series-1: #96C96F;
    --series-2: #93A4F0;
    --series-3: #E6C24D;
    --series-4: #5CC3C9;
    --series-5: #C79BE0;
    --series-6: #95A09A;
    --series-7: #F0A070;
    --series-8: #7FBF5A;
    --series-9: #F0735F;
    color-scheme: dark;
  }
}
