/* 由 shared/theme/gen-tokens.mjs 从 specs/ui/tokens.json 生成 —— 请勿手改 */

@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.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-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+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-600-normal.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: 700;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-latin-700-normal.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-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+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-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+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: 600;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-latin-600-normal.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: 700;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-latin-700-normal.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 {
  --brand-primary: #3DA9FC;
  --brand-primary-hover: #63BBFF;
  --brand-primary-active: #1E8FE0;
  --brand-accent: #F5B301;
  --brand-accent-hover: #FFC42E;
}

:root {
  --semantic-success: #34D399;
  --semantic-warning: #F5B301;
  --semantic-danger: #F87171;
  --semantic-info: #60A5FA;
  --semantic-neutral: #94A3B8;
}

:root {
  --domain-price: #3DA9FC;
  --domain-load: #34D399;
  --domain-generation: #F5B301;
  --domain-soc: #A78BFA;
  --domain-error: #F87171;
  --domain-reference: #94A3B8;
  --domain-forecast: #3DA9FC;
  --domain-actual: #E8EEF9;
  --domain-uncertainty-band: #3DA9FC;
}

:root {
  --fixed-on-bright: #0B1220;
}

:root {
  --chart-c1: #3DA9FC;
  --chart-c2: #34D399;
  --chart-c3: #F5B301;
  --chart-c4: #A78BFA;
  --chart-c5: #F87171;
  --chart-c6: #60A5FA;
  --chart-c7: #94A3B8;
  --chart-c8: #63BBFF;
  --chart-c9: #FFC42E;
}

:root {
  --font-sans: IBM Plex Sans, system-ui, -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-mono: IBM Plex Mono, ui-monospace, SFMono-Regular, Menlo, monospace;
}

:root {
  --fs-xs: 12px;
  --fs-sm: 13px;
  --fs-base: 14px;
  --fs-lg: 16px;
  --fs-xl: 20px;
  --fs-2xl: 24px;
  --fs-3xl: 32px;
}

:root {
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
}

:root {
  --sp-0: 0px;
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-8: 32px;
  --sp-10: 40px;
  --sp-12: 48px;
  --sp-16: 64px;
}

:root {
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --radius-full: 9999px;
}

:root {
  --motion-fast: 120ms;
  --motion-base: 180ms;
  --motion-slow: 280ms;
  --motion-easing: cubic-bezier(.2,.8,.2,1);
}

:root {
  --z-sticky: 100;
  --z-dropdown: 1000;
  --z-drawer: 1200;
  --z-modal: 1250;
  --z-toast: 1300;
  --z-tooltip: 1400;
}

:root {
  --row-data: 28px;
  --row-admin: 36px;
}

:root {
  --layout-max: 1600px;
  --layout-topbar: 52px;
  --layout-sidebar: 232px;
  --layout-content: 24px;
}

[data-theme="dark"], .theme-dark {
  --bg-base: #0B1220;
  --bg-surface: #111A2C;
  --bg-raised: #16223A;
  --bg-overlay: rgba(6,10,20,.72);
  --border-subtle: #22304C;
  --border-strong: #31456B;
  --text-primary: #E8EEF9;
  --text-secondary: #9AA9C4;
  --text-muted: #6B7C9B;
  --text-inverse: #0B1220;
  --brand-primary-soft: #12324D;
  --brand-accent-soft: #3A2C05;
  --semantic-success-soft: #0E3A2E;
  --semantic-warning-soft: #3A2C05;
  --semantic-danger-soft: #3D1A1D;
  --semantic-info-soft: #152B45;
  --semantic-neutral-soft: #1B2436;
  --link-text: #63BBFF;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.40);
  --shadow-md: 0 4px 12px rgba(0,0,0,.45);
  --shadow-lg: 0 12px 32px rgba(0,0,0,.55);
}

[data-theme="light"], .theme-light {
  --bg-base: #F6F8FC;
  --bg-surface: #FFFFFF;
  --bg-raised: #F8FAFD;
  --bg-overlay: rgba(11,18,32,.40);
  --border-subtle: #DFE6F1;
  --border-strong: #B7C4D8;
  --text-primary: #0B1220;
  --text-secondary: #52627C;
  --text-muted: #8494AC;
  --text-inverse: #FFFFFF;
  --brand-primary-soft: #E7F2FE;
  --brand-accent-soft: #FFF6DE;
  --semantic-success-soft: #E9F8F2;
  --semantic-warning-soft: #FFF7E2;
  --semantic-danger-soft: #FDEEEE;
  --semantic-info-soft: #EAF2FE;
  --semantic-neutral-soft: #EFF3F9;
  --link-text: #1E7FD0;
  --shadow-sm: 0 1px 2px rgba(11,18,32,.06);
  --shadow-md: 0 4px 12px rgba(11,18,32,.10);
  --shadow-lg: 0 12px 32px rgba(11,18,32,.16);
}

[data-theme="dark"], .theme-dark {
  --chart-background-color: transparent;
  --chart-axis-line: #31456B;
  --chart-split-line: #22304C;
  --chart-axis-label: #9AA9C4;
  --chart-title: #E8EEF9;
  --chart-tooltip-bg: #16223A;
  --chart-tooltip-border: #31456B;
  --chart-tooltip-text: #E8EEF9;
}

[data-theme="light"], .theme-light {
  --chart-background-color: transparent;
  --chart-axis-line: #B4C1D6;
  --chart-split-line: #E6ECF5;
  --chart-axis-label: #5A6B87;
  --chart-title: #0B1220;
  --chart-tooltip-bg: #FFFFFF;
  --chart-tooltip-border: #D8E0EE;
  --chart-tooltip-text: #0B1220;
}
