@charset "UTF-8";
/* CSS Reset 基线 - 消除浏览器默认样式差异 */
/* 盒模型重置 */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* 边距清除 */
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
li,
dl,
dt,
dd,
figure,
blockquote,
pre {
  margin: 0;
  padding: 0;
}

/* 文档基线 */
html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  scroll-behavior: smooth;
}

body {
  min-height: 100vh;
  line-height: 1.5;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
}

/* 标题重置 - 继承字体大小和字重 */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/* 列表重置 */
ul,
ol {
  list-style: none;
}

/* 链接重置 */
a {
  color: inherit;
  text-decoration: none;
}

/* 媒体元素重置 */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
}

/* 表单元素重置 */
input,
button,
textarea,
select {
  font: inherit;
  margin: 0;
  padding: 0;
}

button {
  background: none;
  border: none;
  cursor: pointer;
}

/* 表格重置 */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* 文本选中样式 */
::selection {
  background: var(--color-primary);
  color: #fff;
}
/* CSS 自定义属性 - 设计令牌（Design Tokens）
 * 2026-04 GEOKey 样式改版基线：落地 Figma `bjKF2TtTr6Y6R5P32mdxF1` 设计系统。
 * 命名空间：--color-* / --font-* / --radius-* / --space-* / --shadow-* / --gradient-*
 * 旧 token 保留为别名以兼容历史样式，待收尾阶段统一清理。
 */
:root {
  /* ========== 品牌色 & 渐变 ========== */
  --color-brand-primary: #6423FE;
  --color-brand-primary-hover: #4A12D9;
  --color-brand-secondary: #9747FF;
  --color-brand-advice: #634E91;
  --color-brand-tint-03: rgba(100, 35, 254, 0.03);
  --color-brand-tint-06: rgba(100, 35, 254, 0.06);
  --color-brand-tint-08: rgba(100, 35, 254, 0.08);
  --color-brand-tint-10: rgba(100, 35, 254, 0.10);
  --color-brand-tint-15: rgba(151, 71, 255, 0.15);
  --color-brand-tint-30: rgba(100, 35, 254, 0.30);
  --color-brand-shadow: rgba(122, 5, 255, 0.06);
  --color-brand-violet-light: #F3EEFF;
  --color-brand-violet-callout: #F9F5FF;
  /* 暗色 immersive 段背景（GEOKey 深紫） */
  --color-section-dark: #1B0A5C;
  --gradient-brand: linear-gradient(90deg, #6423FE 0%, #9747FF 100%);
  --gradient-brand-pill: linear-gradient(90deg, #6423FE 0%, #9747FF 100%);
  --gradient-page-bg: linear-gradient(180deg, #FFFFFF 0%, #F8F9FC 100%);
  --gradient-upgrade-card: linear-gradient(118.09deg, rgb(181, 149, 255) 3.42%, rgb(157, 114, 255) 93.5%);
  --gradient-growth-badge: linear-gradient(135.8deg, rgba(100, 35, 254, 0.10) 0%, rgba(151, 71, 255, 0.15) 100%);
  /* ========== 文字色 ========== */
  --color-text-primary: #222222;
  --color-text-secondary: #555555;
  --color-text-footer: #666666;
  --color-text-tertiary: #888888;
  --color-text-advice: #634E91;
  --color-text-input: rgba(0, 0, 0, 0.88);
  --color-text-inverse: #FFFFFF;
  /* ========== 背景色 / 表面 ========== */
  --color-bg-content: #F2F3F6;
  --color-bg-surface: #FFFFFF;
  --color-bg-muted: #F5F7FA;
  --color-bg-row-hover: rgba(100, 35, 254, 0.03);
  --color-bg-badge-basic: #F5F5F5;
  --color-bg-highrisk: #FFF6F6;
  --color-bg-warn: #FFFAEE;
  --color-bg-sentiment-avatar: #FFF6E8;
  /* ========== 边框色 ========== */
  --color-border-default: #D9D9D9;
  --color-border-input: #B3B3B3;
  --color-border-sidebar: #E6ECF2;
  --color-border-shell: rgba(0, 0, 0, 0.06);
  --color-border-diagnostic: rgba(100, 35, 254, 0.30);
  /* ========== 状态色 ========== */
  --color-status-success: #00C88C;
  --color-status-error: #FF5252;
  --color-status-negative: #E64545;
  --color-status-warning: #FAAA00;
  --color-status-danger-text: #EF4444;
  /* ========== 字体系统 ========== */
  --font-family-base: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI",
    "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans",
    "Helvetica Neue", sans-serif;
  --font-variation-base: "wdth" 100;
  --font-size-display-hero: 56px;
  --font-size-display-large: 40px;
  --font-size-page-title: 28px;
  --font-size-hero-metric: 24px;
  --font-size-score: 22px;
  --font-size-growth-title: 20px;
  --font-size-section-title: 18px;
  --font-size-card-title: 16px;
  --font-size-input: 16px;
  --font-size-body: 14px;
  --font-size-compact: 13px;
  --font-size-pill: 12px;
  --font-size-badge: 11px;
  --font-weight-light: 300;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --line-height-tight: 1.2;
  --line-height-base: 1.5;
  /* ========== 圆角系统 ========== */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 10px;
  --radius-filter: 12px;
  --radius-lg: 16px;
  --radius-track: 18px;
  --radius-circle: 40px;
  --radius-pill: 9999px;
  /* ========== 间距系统（4px 栅格）========== */
  --space-2: 2px;
  --space-4: 4px;
  --space-8: 8px;
  --space-10: 10px;
  --space-12: 12px;
  --space-16: 16px;
  --space-20: 20px;
  --space-24: 24px;
  --space-28: 28px;
  --space-40: 40px;
  --space-50: 50px;
  /* ========== 前台营销页容器宽度 ========== */
  --container-narrow: 800px;
  --container-wide: 1200px;
  --section-gap-desktop: 80px;
  --section-gap-mobile: 48px;
  /* ========== 阴影系统 ========== */
  --shadow-header: 0 1px 2px rgba(0, 0, 0, 0.03);
  --shadow-button-small: 0 2px 0 rgba(0, 0, 0, 0.02);
  --shadow-button-primary: 0 2px 0 rgba(122, 5, 255, 0.06);
  /* 卡片多层阴影：远阴影使用品牌紫 tint + 近阴影使用中性黑，营造 parallax 景深 */
  --shadow-card-rest: 0 1px 2px rgba(23, 23, 23, 0.04), 0 4px 12px rgba(100, 35, 254, 0.04);
  --shadow-card-elevated: 0 4px 8px rgba(23, 23, 23, 0.06), 0 16px 40px rgba(100, 35, 254, 0.12);
  /* ========== 过渡 / 层级 ========== */
  --transition-base: 200ms;
  --z-index-sticky: 999;
  --color-icon-disabled: rgba(0, 0, 0, 0.25);
  /* ==========================================================
   * 兼容别名（旧 token）：保留以避免存量样式一次性全部改动。
   * 新代码请使用上方命名空间化 token。
   * ========================================================== */
  --color-primary: var(--color-brand-primary);
  --color-primary-hover: var(--color-brand-primary-hover);
  --color-brand-purple: var(--color-brand-secondary);
  --color-background-white: var(--color-bg-surface);
  --color-background-page: var(--color-bg-content);
  --color-background-light: #fafafa;
  --color-background-code: #f8f8f8;
  --color-background-subtle: rgba(0, 0, 0, 0.02);
  --color-text-heading: var(--color-text-primary);
  --color-text-hint: var(--color-text-tertiary);
  --color-text-body: var(--color-text-input);
  /* antd 内部语义色（保持 Ant Design 默认 token 语义） */
  --color-text-muted: rgba(0, 0, 0, 0.45);
  --color-border: #e8e8e8;
  --color-border-light: #f0f0f0;
  --color-border-secondary: var(--color-border-shell);
  --color-error: var(--color-status-danger-text);
  --color-warning-bg: #fffbf0;
  --color-warning-border: #ffe58f;
  --color-warning-text: #ad8b00;
  /* 旧渐变（首页/登录保留使用） */
  --gradient-banner: linear-gradient(0deg, #030011 5%, #070120 5%, #2D149E 100%);
  --gradient-title: linear-gradient(166deg, #C532FF 38%, #34A4FF 74%);
  --gradient-title-mobile: linear-gradient(97deg, #D469FF 41%, #70BFFF 85%);
  --gradient-input-border: linear-gradient(270deg, #FF7979 30%, #002AFA 100%);
  --gradient-input-border-active: linear-gradient(270deg, #FF7979 30%, #002AFA 100%);
}
/* 全局业务样式 */
/* SCSS 混入 - 布局、文本省略、响应式断点 */
/* SCSS 主题变量 - 用于 SCSS 文件中的编译时计算 */
/* ========== 响应式断点变量 ========== */
/* ========== 布局混入 ========== */
/* Flex 水平垂直居中 */
/* Flex 两端对齐 */
/* Flex 纵向排列 */
/* Flex 纵向居中 */
/* 绝对定位居中 */
/* ========== 文本省略混入 ========== */
/* 单行文本省略 */
/* 多行文本省略 */
/* ========== 响应式断点混入 ========== */
/* 移动端 - 小于 768px */
/* 平板端 - 768px ~ 991px */
/* 桌面端 - 大于等于 992px */
/* 大桌面端 - 大于等于 1200px */
/* 超大桌面端 - 大于等于 1600px */
/* 双栏堆叠断点 - 小于 1280px */
/* 小屏手机 - 小于 480px */
/* ========== 组件混入 ========== */
/* 描边按钮（View History / Copy / Download 等次要操作按钮） */
/* ========== 其他实用混入 ========== */
/* 清除浮动 */
/* 隐藏滚动条 */
/* 自定义滚动条 */
/* 项目统一滚动条（内容区域使用） */
/* 占位符样式 */
/* 禁用文本选择 */
/* 硬件加速 */
/*
 * 注意:
 * - reset.scss 和 variables.scss 应在入口文件（main.tsx）中引入
 * - 本文件用于全局生效的业务样式
 */
/* 全局字体族（Roboto + 窄宽度变体 'wdth' 100，与设计稿一致） */
body {
  font-family: var(--font-family-base);
  font-variation-settings: var(--font-variation-base);
  color: var(--color-text-primary);
}
/* Alert icon 全局顶部对齐，与第一行文字齐平 */
.ant-alert-icon {
  align-self: flex-start;
  margin-top: 4px;
}
/* reset.scss 将 img 设为 display:block，破坏了 antd 基于 text-align:center 的居中；
   在 Empty 自定义插图槽里补一次水平居中 */
.ant-empty-image img {
  margin-inline: auto;
}