@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');/* ==================== 公交SaaS - 强制白底黑字样式 ==================== */
/* 原则：白色背景(#ffffff)上必须使用黑色(#000000)或深灰文字 */
/* 对比度：白底黑字 21:1 ✅ | 白底灰字 5.2:1 ✅ */

/* ═══════════════════════════════════════════════
   Card面板 - 白底黑字核心规则
   ═══════════════════════════════════════════════ */
.ant-card {
  background: #ffffff !important;
  border: 1px solid #e8e8e8 !important;
  border-radius: 8px !important;
  color: #000000 !important;
  box-shadow: none !important;
}
.ant-card-head {
  background: #ffffff !important;
  border-bottom: 1px solid #f0f0f0 !important;
  padding: 16px 24px !important;
}
.ant-card-head-title {
  color: #000000 !important;
  font-size: 16px !important;
  font-weight: 600 !important;
}
.ant-card-body {
  color: #000000 !important;
  padding: 24px !important;
}
.ant-card-extra { color: #666666 !important; }

/* ═══════════════════════════════════════════════
   Table表格 - 白底黑字
   ═══════════════════════════════════════════════ */
.ant-table {
  background: #ffffff !important;
  color: #000000 !important;
}
.ant-table-thead > tr > th {
  background: #fafafa !important;
  color: #333333 !important;
  font-weight: 600 !important;
  border-bottom: 2px solid #f0f0f0 !important;
  padding: 10px 14px !important;
}
.ant-table-tbody > tr > td {
  border-bottom: 1px solid #f0f0f0 !important;
  color: #000000 !important;
  padding: 10px 14px !important;
}
.ant-table-tbody > tr:hover > td { background: #f5f5f5 !important; }
.ant-table-tbody > tr.ant-table-row-selected > td { background: #e6f7ff !important; }

/* ═══════════════════════════════════════════════
   Select/Picker - 白底黑字
   ═══════════════════════════════════════════════ */
.ant-select-selector {
  background: #ffffff !important;
  border: 1px solid #d9d9d9 !important;
  color: #000000 !important;
  border-radius: 6px !important;
}
.ant-select-selection-item { color: #000000 !important; }
.ant-select-selection-placeholder { color: #999999 !important; }
.ant-select-arrow { color: #999999 !important; }
.ant-select-selection-search-input { color: #000000 !important; }

/* 下拉面板 */
.ant-select-dropdown {
  background: #ffffff !important;
  border: 1px solid #e8e8e8 !important;
  box-shadow: 0 3px 6px -4px rgba(0,0,0,0.12), 0 6px 16px 0 rgba(0,0,0,0.08) !important;
}
.ant-select-item { color: #000000 !important; }
.ant-select-item-option-content { color: #000000 !important; }
.ant-select-item-option-selected { background: #e6f7ff !important; color: #000000 !important; font-weight: 600 !important; }
.ant-select-item-option-active { background: #f5f5f5 !important; }

/* ═══════════════════════════════════════════════
   Input/Picker - 白底黑字
   ═══════════════════════════════════════════════ */
.ant-input {
  background: #ffffff !important;
  border: 1px solid #d9d9d9 !important;
  color: #000000 !important;
  border-radius: 6px !important;
}
.ant-input::placeholder { color: #999999 !important; }
.ant-input:focus { border-color: #1677ff !important; box-shadow: 0 0 0 2px rgba(22,119,255,0.12) !important; }
.ant-picker {
  background: #ffffff !important;
  border: 1px solid #d9d9d9 !important;
  border-radius: 6px !important;
}
.ant-picker-input > input { color: #000000 !important; }
.ant-picker-input > input::placeholder { color: #999999 !important; }
.ant-picker-suffix { color: #999999 !important; }
.ant-picker-separator { color: #999999 !important; }

/* ═══════════════════════════════════════════════
   Tabs标签页 - 白底黑字
   ═══════════════════════════════════════════════ */
.ant-tabs-tab-btn { color: #666666 !important; font-weight: 400 !important; }
.ant-tabs-tab:hover .ant-tabs-tab-btn { color: #1677ff !important; }
.ant-tabs-tab-active .ant-tabs-tab-btn { color: #1677ff !important; font-weight: 600 !important; }
.ant-tabs-ink-bar { background: #1677ff !important; }
.ant-tabs-nav::before { border-bottom-color: #f0f0f0 !important; }

/* ═══════════════════════════════════════════════
   Button按钮
   ═══════════════════════════════════════════════ */
.ant-btn-primary {
  background: #1677ff !important;
  border-color: #1677ff !important;
  color: #ffffff !important;
}
.ant-btn-primary:hover { background: #4096ff !important; border-color: #4096ff !important; color: #ffffff !important; }
.ant-btn-default {
  background: #ffffff !important;
  border: 1px solid #d9d9d9 !important;
  color: #000000 !important;
}
.ant-btn-default:hover { color: #1677ff !important; border-color: #1677ff !important; }
.ant-btn-text { color: #666666 !important; }
.ant-btn-text:hover { color: #1677ff !important; }

/* ═══════════════════════════════════════════════
   Modal/Drawer - 白底黑字
   ═══════════════════════════════════════════════ */
.ant-modal-content { background: #ffffff !important; border-radius: 12px !important; }
.ant-modal-header { background: #ffffff !important; border-bottom: 1px solid #f0f0f0 !important; }
.ant-modal-title { color: #000000 !important; font-weight: 600 !important; }
.ant-modal-body { color: #000000 !important; }
.ant-modal-close-x { color: #666666 !important; }
.ant-drawer-content { background: #ffffff !important; }
.ant-drawer-header { background: #ffffff !important; border-bottom: 1px solid #f0f0f0 !important; }
.ant-drawer-title { color: #000000 !important; font-weight: 600 !important; }
.ant-drawer-body { color: #000000 !important; }

/* ═══════════════════════════════════════════════
   Tag标签
   ═══════════════════════════════════════════════ */
.ant-tag { font-size: 12px !important; }
.ant-tag:not(.ant-tag-green):not(.ant-tag-red):not(.ant-tag-orange) {
  background: rgba(22,119,255,0.06) !important;
  border-color: rgba(22,119,255,0.15) !important;
  color: #1677ff !important;
}
.ant-tag-green { background: rgba(22, 119, 255, 0.06) !important; border-color: rgba(22, 119, 255, 0.15) !important; color: #1677ff !important; }
.ant-tag-red { background: rgba(255,77,79,0.06) !important; border-color: rgba(255,77,79,0.15) !important; color: #ff4d4f !important; }
.ant-tag-orange { background: rgba(250,173,20,0.06) !important; border-color: rgba(250,173,20,0.15) !important; color: #faad14 !important; }

/* ═══════════════════════════════════════════════
   Statistic数字
   ═══════════════════════════════════════════════ */
.ant-statistic-title { color: #666666 !important; font-size: 12px !important; }
.ant-statistic-content-value { color: #000000 !important; font-size: 28px !important; font-weight: 600 !important; }

/* ═══════════════════════════════════════════════
   主内容区
   ═══════════════════════════════════════════════ */
.main-content {
  background: #050a15 !important;
  color: #e0f7ff;
  min-height: calc(100vh - 56px);
  padding: 24px;
}
.main-content .content-card {
  background: #ffffff !important;
  border: 1px solid #e8e8e8 !important;
  border-radius: 8px !important;
  padding: 24px;
  margin-bottom: 16px;
  color: #000000 !important;
}
.main-content .section-title {
  color: #000000 !important;
  font-size: 16px !important;
  font-weight: 600 !important;
}

/* ═══════════════════════════════════════════════
   其他组件
   ═══════════════════════════════════════════════ */
.ant-collapse { background: #ffffff; border: 1px solid #e8e8e8; border-radius: 8px; }
.ant-collapse-item { border-bottom: 1px solid #f0f0f0 !important; }
.ant-collapse-header { color: #000000 !important; font-weight: 500 !important; }
.ant-collapse-content { background: #fafafa; border-top: 1px solid #f0f0f0; color: #000000; }

.ant-alert { background: #ffffff !important; border: 1px solid #e8e8e8 !important; border-radius: 8px !important; }
.ant-alert-message { color: #000000 !important; font-weight: 500 !important; }
.ant-alert-description { color: #333333 !important; }
.ant-alert-info { border-color: rgba(22,119,255,0.15) !important; background: rgba(22,119,255,0.02) !important; }

.ant-pagination-item { background: #ffffff; border-color: #d9d9d9; }
.ant-pagination-item a { color: #000000; }
.ant-pagination-item:hover { border-color: #1677ff; }
.ant-pagination-item:hover a { color: #1677ff; }
.ant-pagination-item-active { background: #1677ff !important; border-color: #1677ff !important; }
.ant-pagination-item-active a { color: #ffffff !important; }

.ant-popover-inner { background: #ffffff !important; border: 1px solid #e8e8e8; }
.ant-popover-title { color: #000000 !important; border-bottom-color: #f0f0f0 !important; }
.ant-popover-inner-content { color: #000000 !important; }

.ant-tooltip-inner { background: rgba(0,0,0,0.85) !important; color: #ffffff !important; }
.ant-tooltip-arrow::before { background: rgba(0,0,0,0.85) !important; }

.ant-notification-notice { background: #ffffff !important; border: 1px solid #e8e8e8; }
.ant-notification-notice-message { color: #000000 !important; }
.ant-notification-notice-description { color: #333333 !important; }

.ant-message-notice-content { background: #ffffff; border: 1px solid #e8e8e8; color: #000000; }

.ant-descriptions-item-label { color: #666666 !important; }
.ant-descriptions-item-content { color: #000000 !important; }
.ant-form-item-label > label { color: #000000 !important; font-weight: 500 !important; }

.ant-breadcrumb { color: #999999; }
.ant-breadcrumb a { color: #666666; }
.ant-breadcrumb a:hover { color: #1677ff; }
.ant-breadcrumb > span:last-child { color: #000000; }

.ant-progress-bg { background: #1677ff !important; }
.ant-spin-dot-item { background: #1677ff; }
.ant-empty-description { color: #999999 !important; }
.ant-switch-checked { background: #1677ff !important; }
.ant-checkbox-checked .ant-checkbox-inner { background: #1677ff !important; border-color: #1677ff !important; }
.ant-radio-checked .ant-radio-inner { border-color: #1677ff !important; }
.ant-radio-checked .ant-radio-inner::after { background: #1677ff !important; }
.ant-upload-drag { background: #fafafa !important; border: 1px dashed #d9d9d9 !important; }
.ant-upload-text { color: #666666 !important; }
.ant-upload-hint { color: #999999 !important; }
.ant-list-item { border-bottom-color: #f0f0f0 !important; color: #000000; }
.ant-list-item-meta-title { color: #000000 !important; }
.ant-list-item-meta-description { color: #666666 !important; }

/* 指标卡片 */
.main-content .metric-card {
  background: #ffffff !important;
  border: 1px solid #e8e8e8 !important;
  border-radius: 8px !important;
  padding: 16px 24px !important;
  color: #000000 !important;
}
.main-content .chart-container {
  background: #ffffff !important;
  border: 1px solid #e8e8e8 !important;
  border-radius: 8px !important;
}

/* ═══════════════════════════════════════════════
   Header导航栏（轻量化深色主题）
   符合 menuBarConfig.json 设计规范
   ═══════════════════════════════════════════════ */

/* 1. 菜单容器样式 */
.ant-layout-header {
  background: #050a15 !important;
  border-bottom: 1px solid rgba(0, 212, 255, 0.25) !important;
  height: 64px !important;
  line-height: 64px !important;
  box-shadow: 0 2px 20px rgba(0, 212, 255, 0.08);
}

/* 2. 导航菜单根样式 */
.menu-bar-nav.ant-menu-dark {
  background: transparent !important;
  border: none !important;
  height: 64px !important;
  line-height: 64px !important;
}

/* 3. 菜单项通用样式 — 垂直居中，避免文字底部被截断 */
.menu-bar-nav.ant-menu-dark .ant-menu-item {
  color: #6b8fad !important;
  font-size: 13px !important;
  padding: 0 6px !important;
  margin: 0 1px !important;
  border-radius: 3px !important;
  white-space: nowrap;
  height: 56px !important;
  line-height: 1.2 !important;
  display: inline-flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  position: relative;
  transition: all 0.2s ease;
}

/* 4. 图标去色处理 — 紧凑尺寸 */
.menu-bar-nav.ant-menu-dark .ant-menu-item .anticon,
.menu-bar-nav.ant-menu-dark .ant-menu-item svg {
  font-size: 16px !important;
  color: inherit !important;
  transition: color 0.2s ease;
}

/* 5. Hover 状态 */
.menu-bar-nav.ant-menu-dark .ant-menu-item:hover {
  color: #00d4ff !important;
  background: rgba(0, 212, 255, 0.10) !important;
}

.menu-bar-nav.ant-menu-dark .ant-menu-item:hover .anticon {
  color: #00d4ff !important;
}

/* 6. 选中态 — 左侧蓝色竖条指示器（无大面积蓝底） */
.menu-bar-nav.ant-menu-dark .ant-menu-item-selected {
  color: #00d4ff !important;
  font-weight: 600 !important;
  background: rgba(0, 212, 255, 0.08) !important;
  text-shadow: 0 0 8px rgba(0, 212, 255, 0.4);
}

.menu-bar-nav.ant-menu-dark .ant-menu-item-selected::after {
  display: none !important; /* 移除 Ant Design 默认底部边框 */
}

.menu-bar-nav.ant-menu-dark .ant-menu-item-selected::before {
  content: '';
  position: absolute;
  left: 2px;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 18px;
  background: #00d4ff;
  border-radius: 0 2px 2px 0;
  box-shadow: 0 0 8px rgba(0, 212, 255, 0.8);
}

/* 7. 子菜单（如有）样式 */
.menu-bar-nav.ant-menu-dark .ant-menu-submenu-title {
  color: #8C9CB5 !important;
  font-size: 13px !important;
}

.menu-bar-nav.ant-menu-dark .ant-menu-submenu-title:hover {
  color: #FFFFFF !important;
}

/* 8. 菜单项行高对齐 */
.menu-bar-nav.ant-menu-dark .ant-menu-title-content {
  line-height: 1.2 !important;
  margin-top: 4px !important;
}

/* 9. 语言选择器暗色主题覆盖 */
.header-lang-select .ant-select-selector {
  background: rgba(10, 16, 31, 0.6) !important;
  border-color: rgba(0, 212, 255, 0.30) !important;
  color: #FFFFFF !important;
}
.header-lang-select .ant-select-selection-item {
  color: #FFFFFF !important;
}
.header-lang-select .ant-select-arrow,
.header-lang-select .ant-select-suffix {
  color: #8C9CB5 !important;
}
.header-lang-select:hover .ant-select-selector {
  border-color: rgba(255, 255, 255, 0.3) !important;
}

/* 10. 城市/日期选择器 — 强制白色文字（深色背景关键修复） */
.header-city-select .ant-select-selector,
.header-date-select .ant-select-selector {
  background: rgba(10, 16, 31, 0.6) !important;
  border: 1px solid rgba(0, 212, 255, 0.30) !important;
  color: #FFFFFF !important;
  box-shadow: none !important;
}

/* 强制覆盖选中值文字为白色（Ant Design 内层选择器） */
.header-city-select .ant-select-selection-item,
.header-date-select .ant-select-selection-item,
.header-city-select .ant-select-selection-placeholder,
.header-date-select .ant-select-selection-placeholder {
  color: #FFFFFF !important;
}

.header-city-select .ant-select-arrow,
.header-date-select .ant-select-arrow {
  color: #8C9CB5 !important;
}

/* 11. 菜单溢出处理 — 使用 antd 原生 overflowedIndicator（"···"下拉），不手动 overflow */
.menu-bar-nav.ant-menu-horizontal {
  /* 不再设置 overflow-x: auto，让 antd 自动折叠溢出项 */
}
.menu-bar-nav.ant-menu-horizontal .ant-menu-overflowed-item {
  /* "..." 折叠按钮样式 */
  color: #8C9CB5 !important;
  font-size: 14px !important;
  padding: 0 6px !important;
}
.menu-bar-nav.ant-menu-horizontal .ant-menu-overflowed-item:hover {
  color: #00d4ff !important;
  background: rgba(0, 212, 255, 0.10) !important;
}
.menu-bar-nav.ant-menu-dark .ant-menu-item {
  flex-shrink: 0; /* 防止菜单项被压缩 */
}

/* 12. 内容区域 — 菜单栏偏移补偿 */
.main-content {
  margin-top: 4px;
}

/* 深色卡片（仅Header区域用） */
.dark-card {
  background: #001529 !important;
  border-color: rgba(255,255,255,0.06) !important;
}
.dark-card, .dark-card * {
  color: rgba(255,255,255,0.85) !important;
}
.dark-card .ant-statistic-content-value {
  color: #ffffff !important;
}

/* ═══════════════════════════════════════════════
   Layout
   ═══════════════════════════════════════════════ */
.ant-layout, .ant-layout-content, .ant-layout-footer { background: #050a15 !important; }


/* ═══════════════════════════════════════════════
   最终强制覆盖层（最高优先级）- 数据数字&图例
   ═══════════════════════════════════════════════ */
/* 深蓝/深色背景上的数字强制白色 */
[style*="background: #001529"] .ant-statistic-content-value,
[style*="background:#001529"] .ant-statistic-content-value,
[style*="background: rgb(0, 21, 41)"] .ant-statistic-content-value,
[style*="background-color: #001529"] .ant-statistic-content-value,
.dark-card .ant-statistic-content-value,
.ant-layout-header .ant-statistic-content-value,
[class*="dashboard"] [class*="card"] .ant-statistic-content-value,
[class*="Dashboard"] [class*="Card"] .ant-statistic-content-value {
  color: #ffffff !important;
}

/* 深蓝背景上的标签强制白色 */
[style*="background: #001529"] .ant-statistic-title,
[style*="background:#001529"] .ant-statistic-title,
.dark-card .ant-statistic-title,
.ant-layout-header .ant-statistic-title {
  color: rgba(255, 255, 255, 0.65) !important;
}
/* 所有数字显示强制黑色（优化方案卡片除外，它们有自己的状态色） */
.ant-statistic-content-value,
.ant-statistic-content-value *,
[class*="statistic"] [class*="value"],
[class*="Statistic"] [class*="Value"] {
  color: #000000 !important;
}
/* 优化方案卡片：状态词始终黑色可读，不使用全局白色 */
.optimization-plan-card .ant-statistic-content-value {
  color: inherit !important;
  font-weight: 700 !important;
}
/* 数字单位的后缀 */
.ant-statistic-content-suffix {
  color: #333333 !important;
  font-size: 14px !important;
}
/* Statistic标题保持灰色 */
.ant-statistic-content-value + .ant-statistic-content-suffix {
  color: #333333 !important;
}

/* 图例控制面板强制黑色 */
[class*="legend"],
[class*="Legend"],
[class*="control-panel"],
[class*="ControlPanel"],
[class*="map-legend"],
[class*="MapLegend"] {
  color: #000000 !important;
}
[class*="legend"] span,
[class*="Legend"] span,
[class*="legend"] div,
[class*="Legend"] div {
  color: #000000 !important;
}

/* 地图页面中所有非Header区的文字强制黑色 */
.main-content [class*="value"],
.main-content [class*="number"],
.main-content [class*="count"],
.main-content [class*="num"] {
  color: #000000 !important;
}

/* 白底卡片内数字黑色 */
.metric-card .ant-statistic-content-value,
.content-card .ant-statistic-content-value,
[class*="card"] .ant-statistic-content-value {
  color: #000000 !important;
}

/* 深蓝底卡片（panel-card / dark-card）数字渐变辉光 */
.panel-card .ant-statistic-content-value,
.panel-card .ant-statistic-content-value *,
.panel-card .ant-statistic-content-int,
.panel-card .ant-statistic-content-decimal,
.dark-card .ant-statistic-content-value,
.dark-card .ant-statistic-content-value *,
.dashboard-card .ant-statistic-content-value {
  color: transparent !important;
  background: linear-gradient(180deg, #ffffff 0%, #b8e8ff 100%);
  -webkit-background-clip: text;
  background-clip: text;
}
.panel-card .ant-statistic-title,
.dark-card .ant-statistic-title {
  color: #b8d4ec !important;
  letter-spacing: 1.5px;
}

/* ═══════════════════════════════════════════════
   响应式
   ═══════════════════════════════════════════════ */
@media (max-width: 768px) {
  .main-content { padding: 12px; }
  .ant-card-body { padding: 16px !important; }
}
/* stylelint-disable */
html,
body {
  width: 100%;
  height: 100%;
}
input::-ms-clear,
input::-ms-reveal {
  display: none;
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
html {
  font-family: sans-serif;
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  -ms-overflow-style: scrollbar;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
@-ms-viewport {
  width: device-width;
}
body {
  margin: 0;
}
[tabindex='-1']:focus {
  outline: none;
}
hr {
  box-sizing: content-box;
  height: 0;
  overflow: visible;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  margin-top: 0;
  margin-bottom: 0.5em;
  font-weight: 500;
}
p {
  margin-top: 0;
  margin-bottom: 1em;
}
abbr[title],
abbr[data-original-title] {
  -webkit-text-decoration: underline dotted;
  text-decoration: underline dotted;
  border-bottom: 0;
  cursor: help;
}
address {
  margin-bottom: 1em;
  font-style: normal;
  line-height: inherit;
}
input[type='text'],
input[type='password'],
input[type='number'],
textarea {
  -webkit-appearance: none;
}
ol,
ul,
dl {
  margin-top: 0;
  margin-bottom: 1em;
}
ol ol,
ul ul,
ol ul,
ul ol {
  margin-bottom: 0;
}
dt {
  font-weight: 500;
}
dd {
  margin-bottom: 0.5em;
  margin-left: 0;
}
blockquote {
  margin: 0 0 1em;
}
dfn {
  font-style: italic;
}
b,
strong {
  font-weight: bolder;
}
small {
  font-size: 80%;
}
sub,
sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
pre,
code,
kbd,
samp {
  font-size: 1em;
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
}
pre {
  margin-top: 0;
  margin-bottom: 1em;
  overflow: auto;
}
figure {
  margin: 0 0 1em;
}
img {
  vertical-align: middle;
  border-style: none;
}
a,
area,
button,
[role='button'],
input:not([type='range']),
label,
select,
summary,
textarea {
  touch-action: manipulation;
}
table {
  border-collapse: collapse;
}
caption {
  padding-top: 0.75em;
  padding-bottom: 0.3em;
  text-align: left;
  caption-side: bottom;
}
input,
button,
select,
optgroup,
textarea {
  margin: 0;
  color: inherit;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
}
button,
input {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html [type='button'],
[type='reset'],
[type='submit'] {
  -webkit-appearance: button;
}
button::-moz-focus-inner,
[type='button']::-moz-focus-inner,
[type='reset']::-moz-focus-inner,
[type='submit']::-moz-focus-inner {
  padding: 0;
  border-style: none;
}
input[type='radio'],
input[type='checkbox'] {
  box-sizing: border-box;
  padding: 0;
}
input[type='date'],
input[type='time'],
input[type='datetime-local'],
input[type='month'] {
  -webkit-appearance: listbox;
}
textarea {
  overflow: auto;
  resize: vertical;
}
fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
legend {
  display: block;
  width: 100%;
  max-width: 100%;
  margin-bottom: 0.5em;
  padding: 0;
  color: inherit;
  font-size: 1.5em;
  line-height: inherit;
  white-space: normal;
}
progress {
  vertical-align: baseline;
}
[type='number']::-webkit-inner-spin-button,
[type='number']::-webkit-outer-spin-button {
  height: auto;
}
[type='search'] {
  outline-offset: -2px;
  -webkit-appearance: none;
}
[type='search']::-webkit-search-cancel-button,
[type='search']::-webkit-search-decoration {
  -webkit-appearance: none;
}
::-webkit-file-upload-button {
  font: inherit;
  -webkit-appearance: button;
}
output {
  display: inline-block;
}
summary {
  display: list-item;
}
template {
  display: none;
}
[hidden] {
  display: none !important;
}
mark {
  padding: 0.2em;
  background-color: #feffe6;
}



/* ==================== 公交SaaS 全局基础样式 ==================== */
/* 强制：白底(#fff/#f5f5f5) → 黑字(#000) | 深底(#001529) → 白字(#fff) */
/* 全局重置 */
*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* 根：默认浅色文字（跟随浏览器），深色主题页面在各自组件中显式指定白字 */
body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Inter', sans-serif;
  font-size: 14px;
  color: #000000;
  background-color: #f0f2f5;
  line-height: 1.5715;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}
#root {
  min-height: 100vh;
}
/* 强制：白底/浅底 → 黑字 | 深底 → 白字 */
/* 深色主题容器显式白字（由具体布局/页面使用这些类或 data 属性） */
[data-theme="dark"],
[data-bg="dark"] {
  color: #ffffff;
}
/* 白色/浅色卡片、表单、表格等容器强制黑字，防止被外层深色容器误染 */
.ant-card,
.ant-card-body,
.ant-table,
.ant-table-wrapper,
.ant-form,
.ant-modal-content,
.ant-modal-body,
.ant-picker-panel,
.ant-select-dropdown,
.ant-dropdown-menu {
  color: #000000;
}
/* 全局轻量扫描线（不拦截事件，极低透明度，营造科技感） */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(0, 0, 0, 0.025) 2px,
    rgba(0, 0, 0, 0.025) 4px
  );
}
/* 滚动条 */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #d9d9d9; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #bbbbbb; }
/* 文本选择 */
::selection { background: rgba(22, 119, 255, 0.15); color: #000000; }
/* 链接 */
a { color: #1677ff; text-decoration: none; }
a:hover { color: #4096ff; }
/* 响应式 */
@media (max-width: 768px) {
  body { font-size: 13px; }
}
