/* 拾味雷达纯色极简主题：只覆盖视觉，不改变布局与业务交互。 */
:root {
  color-scheme: light;
  --ink: #171717;
  --muted: #6b6b66;
  --paper: #f7f7f5;
  --panel: #ffffff;
  --line: #d9d9d4;
  --green: #171717;
  --green-2: #ececea;
  --lime: #ffffff;
  --amber: #6b6b66;
  --concept: #4f4f4b;
  --shadow: none;
  font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
  color: var(--ink);
  background: var(--paper);
}

* { scrollbar-color: #b7b7b2 transparent; }
body { background: var(--paper); color: var(--ink); }
a { color: var(--ink); text-decoration-color: #a2a29d; text-underline-offset: 3px; }
button, input, textarea, select { border-radius: 3px; }
button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible {
  outline: 2px solid #171717;
  outline-offset: 2px;
}

/* 左侧导航：纯黑底、白色选中态。 */
.sidebar { background: #171717; color: #ffffff; }
.brand { border-bottom: 1px solid #373735; }
.brand-mark {
  border: 1px solid #ffffff;
  border-radius: 2px;
  color: #171717;
  background: #ffffff;
  transform: none;
}
.brand small, .nav-group-toggle, .nav-item, .side-note small { color: #9f9f9a; }
.nav-group { border-bottom-color: #30302e; }
.nav-group-toggle { border-radius: 2px; }
.nav-group-toggle:hover { color: #ffffff; background: #292927; }
.nav-group-toggle svg { stroke: #ffffff; }
.nav-group-toggle i, .nav-item::before { color: #777772; background: #777772; }
.nav-item { border-radius: 2px; }
.nav-item:hover { color: #ffffff; background: #292927; }
.nav-item.active {
  color: #171717;
  background: #ffffff;
  box-shadow: none;
}
.nav-item.active::before { background: #171717; }
.side-note { border-color: #373735; border-radius: 2px; background: transparent; }
.pulse, .pulse.offline { background: #ffffff; box-shadow: none; }

/* 页面骨架：扁平、细线、无装饰背景。 */
main { background: var(--paper); }
.topbar { border-bottom-color: #d2d2cd; }
.topbar h1, .result-header h2, .hero-card h2, .luopan-login-hero h2 { color: inherit; }
.eyebrow, .kicker, .step-label, .collector-section-head span { color: #52524e; }
.view { animation: none; }
.panel,
.candidate-card,
.connection-card,
.database-filter-panel,
.database-table-panel,
.database-product-hero,
.database-product-summary article,
.database-trend-card,
.database-peer-grid article,
.database-event-list article,
.database-cmm-overview,
.database-cmm-section,
.collector-task-meta div,
.yingdao-ingestion-grid > div {
  border-color: var(--line);
  border-radius: 3px;
  color: var(--ink);
  background: #ffffff;
  box-shadow: none;
}
.panel { box-shadow: none; }
.panel h3, .section-title h3, .database-table-head h3 { color: #171717; }
.panel-head p, .config-intro, .market-quality-copy p { color: var(--muted); }

/* 黑底大区块仅承担页面定位，不使用渐变或装饰圆环。 */
.hero-card,
.luopan-login-hero,
.spu-card,
.idea-card {
  border: 1px solid #171717;
  border-radius: 3px;
  color: #ffffff;
  background: #171717;
  box-shadow: none;
}
.hero-card::after, .luopan-login-hero::after, .idea-card::after { display: none; }
.hero-card p, .luopan-login-hero p, .spu-card p, .idea-card p { color: #c8c8c3; }
.hero-stat span, .luopan-login-state small, .luopan-login-state span { color: #a7a7a2; }
.hero-stat strong, .luopan-login-state strong, .spu-card span, .idea-card .idea-index { color: #ffffff; }
.spu-card input { border-color: #5a5a56; border-radius: 2px; color: #ffffff; background: #242422; }
.seed-evidence-group { border: 1px solid #3a3a37; border-radius: 2px; background: transparent; }

/* 表单与按钮：黑白纯色。 */
label { color: #42423e; }
input, textarea, select {
  border-color: #cfcfca;
  border-radius: 3px;
  color: #171717;
  background: #ffffff;
  box-shadow: none;
}
input:focus, textarea:focus, select:focus { border-color: #171717; box-shadow: none; }
.primary,
.database-trend-button,
.category-radar-product-actions .primary,
.login-submit {
  border: 1px solid #171717;
  border-radius: 3px;
  color: #ffffff;
  background: #171717;
  box-shadow: none;
}
.primary:hover, .database-trend-button:hover, .login-submit:hover { color: #ffffff; background: #30302e; }
.ghost, .compare-btn, .detail-btn, .database-cmm-button {
  border-color: #bdbdb8;
  border-radius: 3px;
  color: #272725;
  background: #ffffff;
  box-shadow: none;
}
.ghost:hover, .compare-btn:hover, .detail-btn:hover, .database-cmm-button:hover { border-color: #171717; color: #171717; background: #f1f1ee; }
.logout-button { color: #555550; border-color: #bdbdb8; }
.session-user { border-color: #cfcfca; border-radius: 3px; color: #555550; background: #ffffff; }

/* 状态与标签：统一灰阶，用深浅和边框区分语义。 */
.badge,
.badge.amber,
.badge.green,
.badge.idea,
.database-status,
.database-status.new_breakout,
.database-status.accelerating,
.database-status.new_entry,
.database-status.mature_hit,
.database-status.watch,
.database-status.none,
.category-radar-tag,
.category-radar-tag.breakout,
.category-radar-tag.accelerating,
.category-radar-tag.new_entry,
.category-radar-tag.re_entry,
.category-radar-tag.stable_head,
.category-radar-tag.pullback,
.category-radar-tag.divergence,
.category-radar-tag.long_watch,
.collector-task-role,
.database-cmm-cache,
.database-cmm-cache.cached {
  border: 1px solid #d0d0cb;
  border-radius: 2px;
  color: #3f3f3b;
  background: #f0f0ed;
}
.category-radar-tag.breakout, .database-status.new_breakout { border-color: #171717; color: #ffffff; background: #171717; }
.category-radar-tag.new_entry, .category-radar-tag.re_entry, .database-status.new_entry { background: #ffffff; }
.category-radar-tag.pullback { border-style: dashed; }

/* 选品雷达：去掉绿色卡片感，改为编辑部式信息列表。 */
.market-hero {
  min-height: 0;
  padding: 25px 0 20px;
  align-items: end;
  border-bottom: 1px solid #d2d2cd;
  border-radius: 0;
  color: #171717;
  background: #ffffff;
  box-shadow: none;
}
.market-hero::after { display: none; }
.market-hero h2, .market-kpis strong { color: #171717; }
.market-hero p, .market-kpis span { color: var(--muted); }
.market-date { border-left-color: #d2d2cd; }
.market-date small, .market-date span { color: #777772; }
.market-date strong { color: #171717; }
.market-flow article,
.market-flow article.done {
  border-color: var(--line);
  border-radius: 3px;
  background: #ffffff;
  box-shadow: none;
}
.market-flow article > span, .market-flow article.done > span { color: #555550; }
.market-rail .panel { border-radius: 3px; }
#market-connector-dot,
#market-connector-dot.connected,
#market-connector-dot.error {
  background: #171717;
  box-shadow: none;
}
.market-collect-button.needs-connector { background: #30302e; }
.market-manual-collect,
.market-pairing-card,
.market-fallback,
.market-quality-card dl div,
.collector-queue-item,
.collector-queue-item.failed,
.collector-queue-item.cancelled {
  border-color: var(--line);
  border-radius: 3px;
  color: #4f4f4b;
  background: #f4f4f1;
  box-shadow: none;
}
.market-manual-collect-head strong,
.market-collect-modes span,
.collector-queue-item div strong,
.market-pairing-head strong,
.market-pairing-card code,
.market-quality-card dd { color: #171717; }
.market-pairing-head > span,
.collector-queue-item em,
.collector-queue-item.failed em,
.collector-queue-item.cancelled em,
.batch-state,
.batch-state.complete,
.batch-state.complete_without_ai,
.batch-state.failed {
  border: 1px solid #d0d0cb;
  border-radius: 2px;
  color: #4f4f4b;
  background: #ffffff;
}
.market-pairing-card code { border-color: #d0d0cb; border-radius: 2px; background: #ffffff; }
.quality-warning { color: #4f4f4b !important; background: #efefec; }
.market-kpis { gap: 0; border: 1px solid var(--line); }
.market-kpis article {
  border: 0;
  border-right: 1px solid var(--line);
  border-radius: 0;
  background: #ffffff;
}
.market-kpis article:last-child { border-right: 0; }
.market-filter-tabs { gap: 0; border-bottom: 1px solid var(--line); }
.market-filter-tabs button {
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  color: #6b6b66;
  background: transparent;
}
.market-filter-tabs button.active { border-color: #171717; color: #171717; background: transparent; }
.market-candidate {
  border: 0;
  border-bottom: 1px solid #e2e2de;
  border-radius: 0;
  background: #ffffff;
  box-shadow: none;
}
.market-candidate:hover { border-color: #c9c9c4; background: #f5f5f2; box-shadow: none; transform: none; }
.market-product img, .market-image-placeholder { border-color: #d5d5d0; border-radius: 2px; background: #efefec; }
.market-product h4, .market-change > strong, .market-facts b { color: #171717; }
.market-product a { color: #171717; border-bottom-color: #a2a29d; }
.market-status,
.market-status.hot,
.market-status.rising,
.market-status.new,
.market-status.mature,
.market-status.watch {
  border: 1px solid #d0d0cb;
  border-radius: 2px;
  color: #3f3f3b;
  background: #f0f0ed;
}
.market-status.hot { border-color: #171717; color: #ffffff; background: #171717; }
.market-signal-bars i { border-radius: 0; background: #dededa; }
.market-signal-bars b { border-radius: 0; background: #171717; }
.market-signal-bars em, .market-analysis-note { color: #555550; }
.market-facts span { border-radius: 2px; background: #efefec; }
.market-batch-history > article { border-radius: 3px; background: #ffffff; }
.market-batch-history b { color: #171717; }
.category-radar-shell { gap: 10px; }
.category-radar-switch { gap: 0; border: 1px solid #171717; background: #ffffff; }
.category-radar-switch button {
  min-height: 64px;
  border: 0;
  border-right: 1px solid #171717;
  border-radius: 0;
  color: #5f5f5a;
  background: #ffffff;
  box-shadow: none;
}
.category-radar-switch button:last-child { border-right: 0; }
.category-radar-switch button span { color: #171717; }
.category-radar-switch button small { color: #777772; }
.category-radar-switch button.active {
  border-color: #171717;
  color: #ffffff;
  background: #171717;
  box-shadow: none;
}
.category-radar-switch button.active span, .category-radar-switch button.active small { color: #ffffff; }
.category-radar-brief,
.category-radar-brief.high_rotation {
  min-height: 88px;
  border: 1px solid var(--line);
  border-left: 4px solid #171717;
  border-radius: 0;
  background: #ffffff;
}
.category-radar-brief h3, .category-radar-period strong { color: #171717; }
.category-radar-brief p, .category-radar-period span, .category-radar-period small { color: var(--muted); }
.category-radar-period { border-left-color: var(--line); }
.category-radar-metrics { gap: 0; border: 1px solid var(--line); background: #ffffff; }
.category-radar-metrics article {
  border: 0;
  border-right: 1px solid var(--line);
  border-radius: 0;
  background: #ffffff;
}
.category-radar-metrics article:last-child { border-right: 0; }
.category-radar-metrics strong { color: #171717; }
.category-radar-metrics span { color: #4f4f4b; }
.category-radar-metrics small { color: #898984; }
.category-radar-focus { border-radius: 0; }
.category-radar-signal-tabs { gap: 0; border-bottom-color: var(--line); background: #ffffff; }
.category-radar-signal-tabs button { border: 0; border-bottom: 2px solid transparent; border-radius: 0; color: #6b6b66; background: transparent; }
.category-radar-signal-tabs button.active { border-color: #171717; color: #171717; background: transparent; }
.category-radar-product { border-bottom-color: #e2e2de; background: #ffffff; }
.category-radar-product:hover { background: #f5f5f2; }
.category-radar-rank strong, .category-radar-product-main h4, .category-radar-product-evidence strong, .category-radar-product-metrics b { color: #171717; }
.category-radar-rank span, .category-radar-product-actions a { color: #555550; }
.category-radar-product-main p, .category-radar-product-main code, .category-radar-product-evidence span, .category-radar-product-metrics span { color: #777772; }
.category-radar-product-main img, .category-radar-product-placeholder { border-color: #d5d5d0; border-radius: 2px; background: #efefec; }
.category-radar-product-placeholder { color: #555550; }
.category-radar-chart-legend .retention, .category-radar-chart-legend .turnover { color: #4f4f4b; }

/* 榜单数据库与单品趋势：表格、图线和事件全部灰阶化。 */
.database-filter-panel, .database-table-panel { box-shadow: none; }
.database-advanced summary,
.database-standard summary {
  border-color: #bdbdb8;
  border-radius: 3px;
  color: #272725;
  background: #ffffff;
}
.database-advanced summary::after,
.database-advanced[open] summary,
.database-standard summary { color: #171717; }
.database-advanced-popover,
.database-standard > div {
  border-color: var(--line);
  border-radius: 3px;
  background: #ffffff;
  box-shadow: none;
}
.database-table-wrap { background: #ffffff; }
.database-table th, .database-product-history th { color: #4f4f4b; background: #efefec; }
.database-table td, .database-product-history td { border-bottom-color: #e5e5e1; color: #4f4f4b; }
.database-table tbody tr:hover { background: #f5f5f2; }
.database-rank strong, .database-product a, .database-product strong, .database-product-hero h2, .database-product-summary strong, .database-trend-card strong, .database-product-history td > strong { color: #171717; }
.database-trend.up, .database-trend.down, .database-trend.flat, .database-trend.unknown, .database-metric { color: #555550; }
.database-product a:hover { color: #171717; }
.database-product img, .database-product-placeholder, .database-product-hero > img, .database-product-hero-placeholder { border-radius: 2px; background: #efefec; }
.database-product-placeholder, .database-product-hero-placeholder, .database-cmm-placeholder { color: #555550; }
.database-product-toolbar, .database-pagination { border-color: var(--line); background: #f4f4f1; }
.database-sparkline polyline { stroke: #171717; }
.database-sparkline circle { fill: #ffffff; stroke: #171717; }
.database-peer-grid i { border-radius: 0; background: #e4e4e0; }
.database-peer-grid i b { border-radius: 0; background: #171717; }
.database-event-list article { border-top-color: #171717; }
.database-event-list article.breakout, .database-event-list article.top20, .database-event-list article.pullback { border-top-color: #171717; }
.database-event-list strong { color: #171717; }
.database-product-current .database-status { color: #ffffff; background: #171717; }
.database-cmm-overview a,
.database-cmm-metrics strong,
.database-cmm-match dd,
.database-cmm-loading strong { color: #171717; }
.database-cmm-metrics article { border-radius: 2px; background: #efefec; }
.database-cmm-loading i { border-radius: 0; background: #dededa; }
.database-cmm-loading i::after { background: #171717; }

/* 其他页面保持同一纯色语言。 */
.setup-banner,
.cmm-query-box,
.analysis-progress,
.recommend-funnel,
.market-quality-inline,
.luopan-security-gate,
.luopan-login-help,
.luopan-action-status,
.luopan-action-status.success,
.luopan-action-status.error,
.exploratory-list,
.development-list,
.yingdao-ingestion-grid > div {
  border-color: var(--line);
  border-radius: 3px;
  color: #4f4f4b;
  background: #ffffff;
  box-shadow: none;
}
.progress-track, .collector-progress .progress-track { border-radius: 0; background: #dededa; }
.progress-track i, .analysis-progress.error .progress-track i { border-radius: 0; background: #171717; }
.progress-head > strong, .progress-steps li.active, .section-number, .recommend-funnel strong, .source-link, .visual-evidence { color: #171717; }
.progress-steps li.active::before { border-color: #171717; box-shadow: none; }
.progress-steps li.done::before { color: #ffffff; background: #171717; }
.score-ring, .exploratory-ring { border: 2px solid #171717; background: #ffffff; }
.score-ring::before { display: none; }
.score-ring strong { color: #171717; }
.tag-field, .tag-editor-wrap, .radar-candidate, .formula-card { border-color: var(--line); border-radius: 3px; background: #ffffff; }
.radar-candidate.selected,
.radar-result-card.overlap,
.radar-notice,
.analysis-model-item,
.analysis-model-item.active,
.analysis-capabilities,
.development-list,
.development-card,
.exploratory-list,
.exploratory-card {
  border-color: var(--line);
  border-radius: 3px;
  color: #4f4f4b;
  background: #ffffff;
  box-shadow: none;
}
.radar-candidate.selected, .analysis-model-item.active { border-left: 3px solid #171717; }
.radar-notice strong,
.radar-field-map span,
.radar-toolbar span,
.radar-candidate > a,
.radar-score b,
.analysis-model-item b,
.development-card .rank { color: #171717; }
.signal-strip i { position: relative; border-radius: 0; background: #dededa; }
.signal-strip i::before { content: ""; display: block; width: var(--value); height: 100%; background: #171717; }
.bar i { border-radius: 0; background: #171717; }
.development-ring { border: 2px solid #171717; background: #ffffff; }
.mini-tag, .reason .mini-tag.ai-tag, .reason .mini-tag.warning-tag, .reason .mini-tag.route-tag { color: #4f4f4b; background: #efefec; }
.candidate-card:hover { transform: none; border-color: #9f9f9a; box-shadow: none; }
.collector-section-head { border-left-color: #171717; }
.connection-dot, .luopan-login-state i, .luopan-login-state i.connected { background: #171717; box-shadow: none; }
.luopan-screen-wrap { border-color: #171717; border-radius: 3px; background: #171717; box-shadow: none; }
.luopan-screen-loading { border-radius: 2px; color: #ffffff; background: #171717; backdrop-filter: none; }
dialog { border: 1px solid #171717; border-radius: 3px; background: #f7f7f5; box-shadow: none; }
dialog::backdrop { background: rgba(23,23,23,.58); backdrop-filter: none; }
.compare-spu, .feedback-box, .on-demand-detail, .on-demand-detail.loaded { border-color: var(--line); border-radius: 3px; background: #ffffff; }
.icon-button { border-radius: 2px; color: #171717; background: #e4e4e0; }
#toast { border: 1px solid #171717; border-radius: 3px; color: #ffffff; background: #171717; box-shadow: none; }

/* 登录页同步为黑白极简，避免进入工作台前后风格断裂。 */
.login-shell { background: #f7f7f5; }
.login-story { color: #ffffff; background: #171717; }
.login-story::after { display: none; }
.login-brand > span, .mobile-brand > span { border: 1px solid #ffffff; border-radius: 2px; color: #171717; background: #ffffff; }
.login-brand small, .story-copy > p:last-child, .story-metrics { color: #a7a7a2; }
.story-copy .eyebrow, .story-metrics b { color: #ffffff; }
.login-panel { background: #f7f7f5; }
#login-form { border-color: #cfcfca; border-radius: 3px; background: #ffffff; box-shadow: none; backdrop-filter: none; }
.panel-kicker { color: #555550; }
.dingtalk-login { border-color: #bdbdb8; border-radius: 3px; color: #171717; background: #ffffff; }
.dingtalk-login:hover { border-color: #171717; background: #f1f1ee; }
.dingtalk-login span { border-radius: 2px; color: #ffffff; background: #171717; }
.dingtalk-login i { color: #171717; }

@media (max-width: 1180px) {
  .category-radar-metrics article:nth-child(3) { border-right: 0; }
  .category-radar-metrics article:nth-child(-n+3) { border-bottom: 1px solid var(--line); }
}

@media (max-width: 850px) {
  .app-shell { display: block; min-height: 100vh; }
  .sidebar {
    position: static;
    width: 100%;
    min-height: 0;
    padding: 12px;
  }
  .brand { padding: 0 4px 12px; }
  .sidebar nav { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; }
  .nav-group { border-bottom: 0; border-left: 1px solid #30302e; }
  .nav-group:first-child { border-left: 0; }
  .nav-group-toggle { grid-template-columns: 16px minmax(0, 1fr) 10px; gap: 5px; padding: 7px 8px; }
  .nav-group-toggle span { font-size: 10px; }
  .nav-group-items { padding: 1px 5px; }
  .nav-item { padding: 6px 7px 6px 12px; }
  .nav-item span { font-size: 9px; }
  main, .database-mode main {
    grid-column: auto;
    width: 100%;
    height: auto;
    padding: 0 14px 42px;
    overflow: visible;
  }
  .topbar {
    height: auto;
    min-height: 0;
    padding: 17px 0;
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }
  .topbar-actions { width: 100%; flex-wrap: wrap; }
  .session-user { flex: 1 1 100%; }
  .view { padding-top: 18px; }
  .database-mode #view-database.active { height: auto; min-height: 70vh; overflow: visible; }
  .database-table-wrap { overflow-x: auto; }
  .database-table { min-width: 920px; }
  .category-radar-switch { border-bottom: 0; }
  .category-radar-switch button { border-right: 0; border-bottom: 1px solid #171717; }
  .category-radar-metrics article { border-right: 0; border-bottom: 1px solid var(--line); }
  .category-radar-metrics article:nth-child(odd) { border-right: 1px solid var(--line); }
  .category-radar-brief { border-left-width: 4px; }
  .market-hero { align-items: start; padding: 22px 0 18px; }
  .market-date { padding: 12px 0 0; border-left: 0; border-top: 1px solid #d2d2cd; text-align: left; }
  .market-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .market-kpis article { border-right: 0; border-bottom: 1px solid var(--line); }
  .market-kpis article:nth-child(odd) { border-right: 1px solid var(--line); }
  .mobile-brand > span { border-color: #171717; color: #ffffff; background: #171717; }
}
