@layer theme, base, legacy, components, utilities;
/* Existing business layout consolidated; theme and primitives live in tokens.css and ui/. */
@layer legacy {

.auth-pending body { visibility: hidden; }
.auth-pending [data-admin-only], [data-role="user"] [data-admin-only] { display:none; }
.session-user { display:inline-flex; align-items:center; min-height:34px; padding:0 12px; border:1px solid #e5e5e5; border-radius:999px; background:#fafafa; color:#525252; font-size:11px; white-space:nowrap; }

* { box-sizing: border-box; }
body { margin: 0; min-width: 0; overflow-x: hidden; background: var(--surface-soft); }
button, input, textarea, select { font: inherit; }
button { cursor: pointer; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 184px minmax(0,1fr); }
.sidebar { position: fixed; inset: 0 auto 0 0; width: 184px; padding: 24px 12px; background: #171717; color: white; display: flex; flex-direction: column; z-index: 5; }
.brand { display: flex; gap: 9px; align-items: center; padding: 0 7px 27px; }
.brand-mark { width: 36px; height: 36px; border-radius: 11px; display: grid; place-items: center; background: var(--lime); color: #171717; font: 800 18px var(--font-ui); transform: rotate(-4deg); }
.brand strong, .brand small { display: block; }
.brand strong { letter-spacing: .06em; font-size: 15px; }
.brand small { color: #a3a3a3; margin-top: 2px; font-size:11px; }
nav { display: grid; gap: 7px; }
.nav-group { padding:3px 0 5px; border-bottom:1px solid rgba(255,255,255,.06); }
.nav-group:last-child { border-bottom:0; }
.nav-group-toggle { width:100%; display:grid; grid-template-columns:20px 1fr 14px; gap:9px; align-items:center; padding:10px 11px; border:0; border-radius:10px; color:#e5e5e5; background:transparent; text-align:left; }
.nav-group-toggle:hover { background:rgba(255,255,255,.055); color:#fff; }
.nav-group-toggle svg { width:18px; height:18px; fill:none; stroke:var(--lime); stroke-width:1.65; stroke-linecap:round; stroke-linejoin:round; }
.nav-group-toggle span { font-size:12px; font-weight:800; }
.nav-group-toggle i { color:#737373; font-size:13px; font-style:normal; transition:transform .18s; }
.nav-group.collapsed .nav-group-toggle i { transform:rotate(-90deg); }
.nav-group-items { display:grid; gap:3px; padding:2px 0 2px 30px; }
.nav-group.collapsed .nav-group-items { display:none; }
.nav-item { position:relative; display:block; width:100%; border:0; background:transparent; color:#a3a3a3; text-align:left; padding:8px 10px 8px 15px; border-radius:8px; transition:.18s; }
.nav-item::before { content:""; position:absolute; left:2px; top:50%; width:5px; height:1px; background:#737373; }
.nav-item span { min-width:0; color:inherit; font-size:11px; }
.nav-item:hover, .nav-item.active { color:white; background:rgba(255,255,255,.09); }
.nav-item.active { box-shadow:inset 2px 0 var(--lime); }
.nav-item.active::before { width:7px; height:2px; background:var(--lime); }
.side-note { margin-top: auto; display: flex; gap: 10px; align-items: center; padding: 14px; border: 1px solid rgba(255,255,255,.1); border-radius: 12px; background: rgba(255,255,255,.04); }
.side-note strong, .side-note small { display: block; }
.side-note strong { font-size: 12px; }.side-note small { color: #a3a3a3; margin-top: 3px; font-size:11px; }
.pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 0 5px rgba(204,230,107,.13); }
.pulse.offline { background: #737373; box-shadow: 0 0 0 5px rgba(216,139,115,.13); }

main { grid-column: 2; min-width:0; width:auto; max-width:none; padding:0 24px 60px; margin:0; }
.topbar { height: 118px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(23,33,27,.1); }
.topbar h1 { margin: 5px 0 0; font: 600 27px var(--font-ui); }
.topbar-actions { display: flex; gap: 8px; }.logout-button { color: #525252; border-color: #d4d4d4; }
.eyebrow { margin: 0; color: var(--green); font-size:11px; font-weight: 800; letter-spacing: .22em; }
.view { display: none; padding-top: 30px; }.view.active { display: block; }
.database-mode .topbar { display:none; }
.database-mode { overflow:hidden; }
.database-mode main { height:100vh; padding:0 14px 8px; overflow:hidden; }
.database-mode .view { padding-top:8px; }
.database-mode #view-database.active { height:100vh; display:flex; flex-direction:column; gap:7px; overflow:hidden; }
.hero-card { min-height: 210px; padding: 38px 42px; border-radius: 22px; display: flex; align-items: end; justify-content: space-between; background: var(--surface-soft); color: white; box-shadow: var(--shadow); position: relative; overflow: hidden; }
.hero-card::after { content: ""; position: absolute; width: 290px; height: 290px; right: 8%; top: -155px; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; box-shadow: 0 0 0 42px rgba(255,255,255,.035), 0 0 0 86px rgba(255,255,255,.025); }
.hero-card h2 { max-width: 660px; margin: 11px 0; font: 500 32px/1.25 var(--font-ui); }
.hero-card p { margin: 0; color: #d4d4d4; font-size: 13px; }
.setup-banner { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-top: 16px; padding: 15px 18px; border: 1px solid #d4d4d4; border-radius: 12px; background: #f5f5f5; color: #525252; }.setup-banner strong, .setup-banner span { display: block; }.setup-banner strong { font-size: 12px; }.setup-banner span { margin-top: 3px; font-size:11px; color: #737373; }.setup-banner .ghost { border-color: #a3a3a3; color: #525252; }
.step-label { font-size:11px; letter-spacing: .18em; color: var(--lime); font-weight: 800; }
.hero-stat { position: relative; z-index: 1; min-width: 120px; text-align: right; }.hero-stat strong { display: block; font: 500 58px var(--font-ui); }.hero-stat span { color: #d4d4d4; font-size: 11px; letter-spacing: .12em; }

.panel { margin-top: 22px; padding: 27px 30px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,253,248,.92); box-shadow: 0 9px 30px rgba(28,50,36,.035); }
.panel-head { display: flex; justify-content: space-between; align-items: start; margin-bottom: 24px; }
.panel h3, .section-title h3 { margin: 4px 0 0; font-size: 19px; }.kicker { font-size:11px; color: var(--green); font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.required-note { color: var(--amber); font-size: 11px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }.span-2 { grid-column: span 2; }
label { color: #525252; font-size: 11px; font-weight: 700; }
input, textarea, select { width: 100%; margin-top: 8px; border: 1px solid #d4d4d4; border-radius: 10px; background: #fafafa; color: var(--ink); padding: 12px 13px; outline: none; transition: .18s; }
input:focus, textarea:focus, select:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(29,101,72,.08); }
textarea { min-height: 78px; resize: vertical; }
.actions { margin-top: 23px; display: flex; justify-content: flex-end; gap: 10px; }.actions.split { justify-content: space-between; }
.primary, .ghost { border-radius: 10px; padding: 11px 17px; border: 1px solid transparent; font-size: 12px; font-weight: 700; }
.primary { background: var(--green); color: white; box-shadow: 0 6px 17px rgba(29,101,72,.18); }.primary:hover { background: #404040; }.primary span { margin-left: 14px; }.primary.small { padding: 9px 13px; }
.ghost { background: transparent; border-color: #d4d4d4; color: #404040; }.ghost:hover { background: #fafafa; }
button:disabled { cursor: not-allowed; opacity: .55; box-shadow: none; }
.hidden { display: none; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.cmm-query-box { margin-top: 20px; padding: 16px 18px; border-radius: 13px; background: #f5f5f5; border: 1px solid #e5e5e5; display: grid; grid-template-columns: 1fr 210px; gap: 20px; align-items: center; }
.cmm-query-box p { margin: 6px 0 0; color: #525252; font-size:11px; line-height: 1.6; }
.cmm-query-box select { margin-top: 5px; background: white; padding: 9px 10px; }

.analysis-progress { margin-top: 16px; padding: 20px 22px; border: 1px solid #d4d4d4; border-radius: 16px; background: var(--surface-soft); box-shadow: 0 10px 30px rgba(29,101,72,.06); }.progress-head { display: flex; justify-content: space-between; gap: 20px; align-items: start; }.progress-head h3 { margin: 4px 0 3px; font-size: 17px; }.progress-head p { margin: 0; color: #525252; font-size:11px; }.progress-head > strong { color: var(--green); font: 600 25px var(--font-ui); }.progress-track { height: 7px; margin: 15px 0 13px; overflow: hidden; border-radius: 99px; background: #e5e5e5; }.progress-track i { display: block; width: 10%; height: 100%; border-radius: inherit; background: var(--surface-soft); transition: width .5s ease; }.progress-steps { display: grid; grid-template-columns: repeat(5,1fr); gap: 8px; padding: 0; margin: 0; list-style: none; }.progress-steps li { position: relative; padding-left: 17px; color: #737373; font-size:11px; }.progress-steps li::before { content: ""; position: absolute; left: 0; top: 2px; width: 8px; height: 8px; border: 2px solid #a3a3a3; border-radius: 50%; background: white; }.progress-steps li.active { color: var(--green); font-weight: 800; }.progress-steps li.active::before { border-color: var(--green); box-shadow: 0 0 0 4px rgba(29,101,72,.1); }.progress-steps li.done { color: #525252; }.progress-steps li.done::before { content: "✓"; width: 12px; height: 12px; top: -1px; display: grid; place-items: center; border: 0; background: var(--green); color: white; font-size:11px; }.analysis-progress.error { border-color: #a3a3a3; background: #f5f5f5; }.analysis-progress.error .progress-track i { background: #737373; }.progress-intermediate { display: grid; grid-template-columns: 66px 1fr; gap: 13px; align-items: center; margin-top: 15px; padding: 12px; border-radius: 11px; background: rgba(255,255,255,.72); border: 1px solid #e5e5e5; }.progress-intermediate img { width: 66px; height: 66px; object-fit: cover; border-radius: 9px; background: #eee; }.progress-intermediate span { color: var(--green); font-size:11px; font-weight: 800; }.progress-intermediate h4 { margin: 3px 0; font-size: 15px; }.progress-intermediate p { margin: 0 0 5px; color: var(--muted); font-size:11px; }.progress-intermediate i { display: inline-block; margin: 2px 4px 0 0; padding: 3px 6px; border-radius: 99px; background: #e5e5e5; color: #525252; font-size:11px; font-style: normal; }

.confirm-layout { display: grid; grid-template-columns: minmax(340px, 1.05fr) minmax(0, 1.7fr); gap: 14px; align-items: stretch; }
.spu-card { padding: 14px; background: #404040; color: white; border-radius: 14px; min-width: 0; }.spu-summary { display: grid; grid-template-columns: 76px minmax(0,1fr); gap: 12px; align-items: center; }.spu-summary:has(.seed-image.hidden) { grid-template-columns: 1fr; }.spu-card span { color: var(--lime); font-size:11px; }.spu-card input { margin: 5px 0 4px; padding: 9px 10px; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.2); color: white; font-size: 16px; font-weight: 700; }.spu-card p { color: #a3a3a3; font-size:11px; line-height: 1.45; margin: 3px 0 0; overflow-wrap: anywhere; }
.seed-image { width: 76px; height: 76px; object-fit: cover; margin: 0; border-radius: 9px; background: #f5f5f5; }
.seed-selling-points { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin-top: 10px; }.seed-evidence-group { min-width: 0; padding: 8px 9px; border-radius: 9px; background: rgba(255,255,255,.07); }.seed-evidence-group span { display: block; margin-bottom: 3px; }.seed-evidence-group p { color: #e5e5e5; font-size:11px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }.seed-evidence-group em { color: #a3a3a3; font-size:11px; font-style: normal; }.seed-selling-points .ai-seed-reason { grid-column: 1 / -1; padding-top: 6px; border-top: 1px solid rgba(255,255,255,.1); color: #d4d4d4; -webkit-line-clamp: 2; }
.tag-editor-wrap { padding: 13px; border: 1px solid #e5e5e5; border-radius: 14px; background: #f5f5f5; }.tag-editor-head { display: flex; justify-content: space-between; align-items: end; gap: 15px; margin-bottom: 9px; }.tag-editor-head span,.tag-editor-head strong { display: block; }.tag-editor-head span { color: var(--green); font-size:11px; }.tag-editor-head strong { margin-top: 2px; font-size: 14px; }.tag-editor-head p { margin: 0; color: var(--muted); font-size:11px; }.tag-editor { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; }.tag-field { min-width: 0; padding: 9px 10px; border-radius: 10px; background: #f5f5f5; border: 1px solid #e5e5e5; }.tag-field textarea { min-height: 53px; height: 53px; margin-top: 4px; padding: 7px 8px; resize: none; background: white; font-size:11px; line-height: 1.35; }.tag-field span { font-size:11px; color: var(--green); }.confirm-actions { align-items: center; margin-top: 12px; }.confirm-actions > span { margin-left: auto; color: var(--muted); font-size:11px; }.confirm-actions .primary { margin-left: 10px; }
.confirm-mode .hero-card,.confirm-mode .setup-banner { display: none; }.confirm-mode .topbar { height: 78px; }.confirm-mode .view { padding-top: 12px; }.confirm-mode #confirm-panel { margin-top: 0; padding: 17px 20px; }.confirm-mode #confirm-panel .panel-head { margin-bottom: 12px; }.confirm-mode main { padding-bottom: 12px; }
.badge { display: inline-flex; align-items: center; min-height: 23px; padding: 4px 9px; border-radius: 99px; background: #e5e5e5; color: #525252; font-size:11px; font-weight: 800; letter-spacing: .06em; }.badge.amber { background: #e5e5e5; color: #525252; }.badge.green { background: var(--green-2); color: var(--green); }.badge.idea { background: #e5e5e5; color: var(--concept); }

.result-header { display: flex; justify-content: space-between; align-items: end; gap: 22px; padding: 25px 3px 17px; }.result-header h2 { margin: 6px 0; font: 500 28px var(--font-ui); }.result-header p { margin: 0; color: var(--muted); font-size: 11px; }.result-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; align-items: end; }.result-sort-label { min-width: 190px; }.result-sort-label select { margin-top: 4px; padding: 9px 10px; background: white; }
.score-legend { display: flex; gap: 8px; flex-wrap: wrap; padding: 12px 0 18px; }.legend-item { padding: 7px 10px; background: rgba(255,255,255,.55); border: 1px solid var(--line); border-radius: 8px; font-size:11px; color: var(--muted); }.legend-item i { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 6px; }
.recommend-funnel { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin: -5px 0 18px; padding: 10px 12px; border-radius: 10px; background: #f5f5f5; color: #737373; }.recommend-funnel span { display: inline-flex; gap: 6px; align-items: baseline; font-size:11px; }.recommend-funnel strong { color: var(--green); font: 600 14px var(--font-ui); }.recommend-funnel i { color: #a3a3a3; font-size:11px; font-style: normal; }
.section-title { display: flex; align-items: center; justify-content: space-between; margin: 20px 0 11px; }.section-title > div { display: flex; align-items: center; gap: 12px; }.section-title p { margin: 3px 0 0; color: var(--muted); font-size:11px; }.section-number { font: 500 27px var(--font-ui); color: var(--green); border-right: 1px solid var(--line); padding-right: 12px; }
.candidate-list { display: grid; gap: 10px; }.candidate-card { display: grid; grid-template-columns: 48px minmax(190px, 1.15fr) 2.1fr 95px 140px; align-items: center; gap: 17px; padding: 17px 18px; background: var(--panel); border: 1px solid var(--line); border-radius: 14px; transition: .18s; }.candidate-card:hover { transform: translateY(-1px); box-shadow: var(--shadow); border-color: #d4d4d4; }
.rank { font: 500 23px var(--font-ui); color: #a3a3a3; }.candidate-name strong { display: block; font-size: 15px; }.candidate-name small { display: block; color: var(--muted); font-size:11px; margin-top: 5px; }.candidate-name .evidence-title { max-width: 250px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #737373; }.reason { color: #525252; font-size: 11px; line-height: 1.55; }.reason .mini-tag { display: inline-block; margin: 5px 4px 0 0; padding: 3px 6px; border-radius: 4px; background: #f5f5f5; color: #525252; font-size:11px; }
.candidate-thumb { width: 62px; height: 62px; float: left; margin: 0 11px 8px 0; border-radius: 9px; object-fit: cover; background: #f5f5f5; border: 1px solid #e5e5e5; }
.source-link { display: inline-block; margin-top: 7px; color: var(--green); font-size:11px; text-decoration: none; border-bottom: 1px solid #a3a3a3; }
.market-evidence { margin-top: 7px; color: #525252; font-size:11px; }.visual-evidence { margin-top: 6px; color: #525252; font-size:11px; }.unknown-evidence { margin-top: 6px; color: #737373; font-size:11px; }.reason .mini-tag.ai-tag { background: #e5e5e5; color: #525252; }.reason .mini-tag.warning-tag { background: #e5e5e5; color: #525252; }.reason .mini-tag.route-tag { background: #e5e5e5; color: #525252; }
.score-ring { width: 58px; height: 58px; border-radius: 50%; display: grid; place-items: center; background: var(--surface-soft); position: relative; }.score-ring::before { content: ""; position: absolute; inset: 5px; background: var(--panel); border-radius: 50%; }.score-ring strong { position: relative; font: 600 18px var(--font-ui); }.score-ring small { position: absolute; top: 37px; font-size:11px; color: var(--muted); }
.card-actions { display: grid; gap: 7px; }.card-actions button, .card-actions select { margin: 0; width: 100%; padding: 7px 8px; font-size:11px; border-radius: 7px; }.compare-btn { border: 1px solid #d4d4d4; background: white; color: var(--green); font-weight: 700; }.detail-btn { border: 1px solid #d4d4d4; background: #fafafa; color: #525252; font-weight: 700; }
.idea-title { margin-top: 35px; }.idea-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }.idea-card { padding: 20px; min-height: 175px; border-radius: 15px; color: white; background: var(--surface-soft); position: relative; overflow: hidden; }.idea-card::after { content: ""; position: absolute; width: 85px; height: 85px; right: -18px; bottom: -25px; border: 14px solid rgba(255,255,255,.05); border-radius: 50%; }.idea-card .idea-index { color: #d4d4d4; font-size:11px; letter-spacing: .15em; }.idea-card h4 { margin: 25px 0 8px; font-size: 18px; }.idea-card p { color: #d4d4d4; font-size:11px; line-height: 1.55; }.idea-card .idea-score { position: absolute; right: 17px; top: 16px; font: 600 22px var(--font-ui); }
.explore-title { margin-top: 34px; }.exploratory-list { padding: 10px; border: 1px dashed #a3a3a3; border-radius: 15px; background: rgba(255,248,232,.45); }.exploratory-card { background: #fafafa; border-color: #d4d4d4; }.exploratory-card:hover { border-color: #a3a3a3; }.exploratory-ring { background: var(--surface-soft); }
.development-list { padding: 10px; border: 1px dashed #a3a3a3; border-radius: 15px; background: rgba(246,243,255,.55); }.development-card { background: #fafafa; border-color: #d4d4d4; }.development-card:hover { border-color: #737373; }.development-card .rank { color: #525252; }.development-ring { background: var(--surface-soft); }

.page-intro { padding: 18px 0 13px; }.page-intro h2 { margin: 10px 0 6px; font: 500 32px var(--font-ui); }.page-intro p { margin: 0; color: var(--muted); font-size: 12px; }
.upload-card { margin-top: 22px; padding: 48px; border: 1px dashed #a3a3a3; border-radius: 18px; background: rgba(255,253,248,.68); text-align: center; }.upload-icon { width: 55px; height: 55px; display: grid; place-items: center; border-radius: 50%; margin: 0 auto 14px; background: var(--green-2); color: var(--green); font-size: 23px; }.upload-card h3 { margin: 0; }.upload-card p { color: var(--muted); font-size: 11px; }.upload-card input { display: none; }.file-button { display: inline-block; margin-top: 8px; padding: 10px 16px; border-radius: 9px; background: var(--green); color: white; }.text-link { display: block; margin-top: 13px; color: var(--green); font-size:11px; }
.table-wrap { overflow: auto; }.data-table { width: 100%; border-collapse: collapse; font-size:11px; }.data-table th { color: var(--muted); text-align: left; padding: 9px; border-bottom: 1px solid var(--line); }.data-table td { padding: 10px 9px; border-bottom: 1px solid #e5e5e5; }
.discovery-intro { padding-bottom: 8px; }
.radar-notice { display: flex; gap: 18px; align-items: center; margin: 8px 0 18px; padding: 15px 18px; border: 1px solid #d4d4d4; border-radius: 12px; background: #f5f5f5; color: #525252; font-size:11px; line-height: 1.6; }.radar-notice strong { flex: 0 0 auto; color: var(--green); }.radar-upload-panel { margin-top: 12px; }.radar-upload-grid { display: grid; grid-template-columns: 1fr 220px; gap: 15px; }.radar-file-field input { padding: 10px; background: white; }.radar-file-field small { display: block; margin-top: 7px; color: var(--muted); font-size:11px; font-weight: 400; }.radar-field-map { display: flex; gap: 12px; align-items: center; margin-top: 15px; padding: 11px 13px; border-radius: 9px; background: #f5f5f5; color: var(--muted); font-size:11px; }.radar-field-map span { color: var(--green); font-weight: 800; }.radar-field-map code { overflow-wrap: anywhere; }
.radar-progress-steps { grid-template-columns: repeat(5,1fr); }.radar-kpis { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; margin: 24px 0 14px; }.radar-kpis article { padding: 18px 20px; border: 1px solid var(--line); border-radius: 13px; background: var(--panel); }.radar-kpis strong { display: block; color: var(--green); font: 600 27px var(--font-ui); }.radar-kpis span { color: var(--muted); font-size:11px; }.blind-panel .panel-head p { margin: 6px 0 0; color: var(--muted); font-size:11px; }.radar-toolbar { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 12px; }.radar-toolbar label { width: min(360px,60%); }.radar-toolbar input { padding: 9px 11px; }.radar-toolbar span { color: var(--green); font-size:11px; font-weight: 800; }
.radar-pool { display: grid; gap: 7px; max-height: 535px; overflow: auto; padding-right: 5px; }.radar-candidate { display: grid; grid-template-columns: 28px minmax(220px,1.3fr) 1fr 120px 75px; gap: 13px; align-items: center; padding: 12px 14px; border: 1px solid #e5e5e5; border-radius: 11px; background: #fafafa; }.radar-candidate.selected { border-color: var(--green); background: #f5f5f5; box-shadow: inset 3px 0 var(--green); }.radar-check { display: grid; place-items: center; }.radar-check input { width: 16px; height: 16px; margin: 0; accent-color: var(--green); }.radar-candidate strong { display: block; font-size: 12px; }.radar-candidate small { display: block; margin-top: 4px; color: var(--muted); font-size:11px; }.radar-candidate > a { color: var(--green); font-size:11px; }.radar-evidence { display: flex; flex-wrap: wrap; gap: 5px 12px; }.radar-evidence span { color: var(--muted); font-size:11px; }.radar-evidence b { color: #525252; font-weight: 700; }.signal-strip { display: grid; gap: 4px; }.signal-strip i { display: block; height: 4px; border-radius: 99px; background: var(--surface-soft); }.freeze-box { display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: end; margin-top: 17px; padding: 15px; border-radius: 11px; background: #f5f5f5; }.freeze-box textarea { min-height: 58px; height: 58px; }.freeze-box .primary { height: 42px; margin-bottom: 1px; }
.radar-compare-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }.radar-compare-grid > section { padding: 17px; border: 1px solid var(--line); border-radius: 15px; background: rgba(255,255,255,.5); }.radar-compare-grid h3 { margin: 0 0 12px; font-size: 16px; }.radar-result-card { display: grid; grid-template-columns: 30px 1fr 84px; gap: 11px; align-items: start; padding: 12px 10px; border-bottom: 1px solid #e5e5e5; }.radar-result-card:last-child { border-bottom: 0; }.radar-result-card > span { color: #a3a3a3; font: 500 17px var(--font-ui); }.radar-result-card strong { display: block; font-size: 11px; }.radar-result-card small { color: var(--muted); font-size:11px; }.radar-result-card p { margin: 5px 0 0; color: #525252; font-size:11px; line-height: 1.5; }.radar-result-card.overlap { background: #f5f5f5; border-radius: 8px; }.radar-score { text-align: right; }.radar-score b { display: block; color: var(--green); font: 600 22px var(--font-ui); }.radar-score small,.radar-score em { display: block; color: var(--muted); font-size:11px; font-style: normal; }.radar-history-title { margin-top: 35px; }
.empty { padding: 50px; text-align: center; color: var(--muted); border: 1px dashed var(--line); border-radius: 15px; }
.settings-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px; margin-top: 22px; }.weight-card { padding: 20px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel); }.weight-card header { display: flex; justify-content: space-between; }.weight-card h3 { margin: 0; font-size: 14px; }.weight-card output { color: var(--green); font: 600 19px var(--font-ui); }.weight-card p { min-height: 30px; color: var(--muted); font-size:11px; line-height: 1.5; }.weight-card input { accent-color: var(--green); padding: 0; }.formula-card code { display: block; margin-top: 13px; padding: 16px; border-radius: 10px; background: #171717; color: #e5e5e5; font-size: 11px; }
.connection-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 22px; }.connection-card { display: flex; gap: 16px; align-items: center; padding: 21px 23px; border: 1px solid var(--line); border-radius: 15px; background: var(--panel); }.connection-card small { color: var(--muted); font-size:11px; }.connection-card h3 { margin: 4px 0; font-size: 17px; }.connection-card p { margin: 0; color: var(--muted); font-size:11px; }.connection-dot { flex: 0 0 auto; width: 12px; height: 12px; border-radius: 50%; background: #737373; box-shadow: 0 0 0 6px rgba(200,124,104,.12); }.connection-dot.connected { background: var(--green); box-shadow: 0 0 0 6px rgba(29,101,72,.12); }.api-config-card { max-width: 950px; }.config-intro { color: var(--muted); font-size: 11px; line-height: 1.7; }.config-intro code { padding: 3px 6px; border-radius: 5px; background: #f5f5f5; color: var(--green); }.secret-field { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: end; margin-top: 19px; }.secret-field .ghost { height: 42px; }.security-note { display: flex; gap: 12px; margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: #f5f5f5; color: #525252; font-size:11px; }.security-note strong { color: var(--green); white-space: nowrap; }.api-config-card .text-link { display: inline-flex; align-items: center; margin: 0; }
.role-choice { display:flex; align-items:flex-start; gap:11px; margin-top:16px; padding:13px 15px; border:1px solid #e5e5e5; border-radius:10px; background:#f5f5f5; cursor:pointer; }.role-choice input { flex:0 0 auto; width:16px; height:16px; margin:2px 0 0; accent-color:var(--green); }.role-choice span,.role-choice strong,.role-choice small { display:block; }.role-choice strong { color:var(--green); font-size:11px; }.role-choice small { margin-top:4px; color:var(--muted); font-size:11px; font-weight:400; line-height:1.6; }
.semantic-selector { display:grid; grid-template-columns:minmax(0,1fr) minmax(260px,330px) auto; gap:18px; align-items:end; }.semantic-selector h3 { margin:5px 0 4px; }.semantic-selector p { margin:0; color:var(--muted); font-size:11px; }.semantic-selector label { margin:0; }.semantic-selector .primary { height:42px; }
.analysis-model-list { display:grid; gap:8px; }
.analysis-model-item { display:grid; grid-template-columns:minmax(0,1fr) minmax(180px,.7fr) auto; gap:14px; align-items:center; padding:14px 16px; border:1px solid var(--line); border-radius:11px; background:#fafafa; }
.analysis-model-item.active { border-color:#a3a3a3; background:#f5f5f5; box-shadow:inset 3px 0 var(--green); }
.analysis-model-item strong,.analysis-model-item span { display:block; }
.analysis-model-item strong { font-size:12px; }
.analysis-model-item span,.analysis-model-item small { margin-top:3px; color:var(--muted); font-size:11px; }
.analysis-model-item b { color:var(--green); font-size:11px; }
.analysis-capabilities { display:flex; flex-wrap:wrap; gap:10px 20px; margin-top:16px; padding:13px 15px; border:1px solid #e5e5e5; border-radius:10px; background:#f5f5f5; }
.analysis-capabilities label { display:flex; align-items:center; gap:8px; }
.analysis-capabilities input { width:15px; height:15px; margin:0; accent-color:var(--green); }
.analysis-model-grid { margin-top:18px; }

dialog { width: min(940px, 85vw); max-height: 86vh; border: 0; border-radius: 19px; padding: 0; background: var(--paper); box-shadow: 0 30px 100px rgba(0,0,0,.28); }dialog::backdrop { background: rgba(12,25,17,.58); backdrop-filter: blur(4px); }.dialog-head { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: start; padding: 25px 28px; background: var(--paper); border-bottom: 1px solid var(--line); }.dialog-head h2 { margin: 6px 0 0; }.icon-button { width: 34px; height: 34px; border: 0; border-radius: 50%; background: #e5e5e5; font-size: 22px; }.compare-hero { display: grid; grid-template-columns: 1fr 110px 1fr; gap: 15px; align-items: center; padding: 26px 28px; }.compare-spu { padding: 19px; border-radius: 14px; background: white; border: 1px solid var(--line); }.compare-spu span { color: var(--muted); font-size:11px; }.compare-spu h3 { margin: 7px 0; }.total-score { text-align: center; }.total-score strong { display: block; font: 600 39px var(--font-ui); color: var(--green); }.total-score span { font-size:11px; color: var(--muted); }.dimension-table { padding: 0 28px 28px; }.dimension-row { display: grid; grid-template-columns: 110px 1fr 40px; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--line); font-size:11px; }.bar { height: 7px; background: #e5e5e5; border-radius: 10px; overflow: hidden; }.bar i { display: block; height: 100%; background: var(--surface-soft); border-radius: 10px; }.dimension-row strong { text-align: right; }.feedback-box { margin: 0 28px 28px; padding: 20px; border-radius: 14px; background: white; border: 1px solid var(--line); }.feedback-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }.feedback-box textarea { margin-top: 13px; }.on-demand-detail { margin: 0 28px 28px; padding: 18px 20px; border: 1px dashed #a3a3a3; border-radius: 14px; background: #fafafa; display: flex; align-items: center; justify-content: space-between; gap: 18px; }.on-demand-detail h3 { margin: 5px 0; }.on-demand-detail p { margin: 0; color: var(--muted); line-height: 1.65; }.on-demand-detail > button { flex: 0 0 170px; }.on-demand-detail.loaded { align-items: flex-start; justify-content: flex-start; border-style: solid; background: white; }.on-demand-detail.loaded > img { width: 116px; height: 116px; object-fit: cover; border-radius: 12px; border: 1px solid var(--line); }.detail-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; }.detail-tags span { padding: 5px 8px; border-radius: 999px; background: #f5f5f5; color: #525252; font-size:11px; }
#toast { position: fixed; right: 25px; bottom: 25px; transform: translateY(20px); opacity: 0; pointer-events: none; padding: 12px 17px; color: white; background: #404040; border-radius: 9px; font-size: 11px; transition: .25s; box-shadow: var(--shadow); z-index: 99; }#toast.show { transform: translateY(0); opacity: 1; }

/* 大盘选品雷达：采集、清洗、识别和按需补数合并为一条工作流 */
.market-hero { min-height: 190px; padding: 34px 38px; display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; overflow: hidden; position: relative; border-radius: 22px; color: #fff; background: var(--surface-soft); box-shadow: var(--shadow); }
.market-hero::after { content:""; position:absolute; right:-52px; top:-112px; width:310px; height:310px; border:1px solid rgba(255,255,255,.14); border-radius:50%; box-shadow:0 0 0 46px rgba(255,255,255,.025),0 0 0 92px rgba(255,255,255,.018); }
.market-hero > * { position:relative; z-index:1; }
.market-hero h2 { margin:10px 0 8px; font:500 35px/1.2 var(--font-ui); }
.market-hero p { max-width:760px; margin:0; color:#d4d4d4; font-size:12px; line-height:1.75; }
.market-date { min-width:185px; padding-left:24px; text-align:right; border-left:1px solid rgba(255,255,255,.18); }
.market-date small,.market-date strong,.market-date span { display:block; }
.market-date small { color:#a3a3a3; font-size:11px; letter-spacing:.12em; }
.market-date strong { margin:7px 0 5px; color:#e5e5e5; font:600 24px var(--font-ui); }
.market-date span { color:#d4d4d4; font-size:11px; }

.market-flow { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:15px 0 0; }
.market-flow article { display:flex; align-items:center; gap:12px; min-width:0; padding:14px 16px; border:1px solid #e5e5e5; border-radius:13px; background:rgba(255,253,248,.72); }
.market-flow article > span { flex:0 0 auto; color:#a3a3a3; font:600 18px var(--font-ui); }
.market-flow strong,.market-flow small { display:block; }
.market-flow strong { font-size:11px; }
.market-flow small { margin-top:3px; color:var(--muted); font-size:11px; line-height:1.4; }
.market-flow article.done { border-color:#d4d4d4; background:#f5f5f5; }
.market-flow article.done > span { color:var(--green); }

.market-layout { display:grid; grid-template-columns:286px minmax(0,1fr); gap:18px; align-items:start; margin-top:5px; }
.market-rail { position:sticky; top:14px; min-width:0; }
.market-rail .panel { margin-top:18px; padding:20px; border-radius:15px; }
.collector-state { display:flex; gap:13px; align-items:flex-start; }
#market-connector-dot { flex:0 0 auto; width:10px; height:10px; margin-top:7px; border-radius:50%; background:#a3a3a3; box-shadow:0 0 0 6px rgba(183,177,165,.13); }
#market-connector-dot.connected { background:var(--green); box-shadow:0 0 0 6px rgba(29,101,72,.12); }
#market-connector-dot.error { background:#737373; box-shadow:0 0 0 6px rgba(190,98,77,.12); }
.collector-state h3 { margin:4px 0 5px; font-size:15px; }
.collector-state p { margin:0; color:var(--muted); font-size:11px; line-height:1.55; }
.collector-form { display:grid; gap:10px; margin-top:18px; padding-top:16px; border-top:1px solid #e5e5e5; }
.collector-form input { margin-top:5px; padding:9px 10px; background:#fff; }
.switch-line { display:flex; align-items:center; gap:9px; padding:5px 0; }
.switch-line input { width:16px; height:16px; margin:0; accent-color:var(--green); }
.market-collect-button { width:100%; margin-top:13px; }
.market-collect-button.needs-connector { background:#525252; }
.market-manual-collect { display:grid; gap:10px; margin-top:14px; padding:14px; border:1px solid #e5e5e5; border-radius:12px; background:#f5f5f5; }
.market-manual-collect-head strong,.market-manual-collect-head small { display:block; }
.market-manual-collect-head strong { margin-top:4px; color:#404040; font-size:11px; }
.market-manual-collect-head small { margin-top:4px; color:#737373; font-size:11px; line-height:1.5; }
.market-collect-modes { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; }
.market-collect-modes label { display:grid; grid-template-columns:16px 1fr; column-gap:7px; align-items:start; padding:9px; border:1px solid #e5e5e5; border-radius:9px; background:#fff; cursor:pointer; }
.market-collect-modes input { grid-row:1 / span 2; width:14px; height:14px; margin:1px 0 0; accent-color:var(--green); }
.market-collect-modes span,.market-collect-modes small { display:block; }
.market-collect-modes span { color:#404040; font-size:11px; font-weight:800; }
.market-collect-modes small { margin-top:2px; color:#737373; font-size:11px; line-height:1.4; }
.collector-manual-state { margin-bottom:14px; }
.collector-category-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:6px; padding-bottom:10px; border-bottom:1px solid #d4d4d4; }
.collector-category-head > div:first-child { display:grid; gap:3px; }
.collector-category-head > div:first-child strong { white-space:nowrap; }
.collector-category-tools { display:flex; min-width:0; align-items:center; justify-content:flex-end; gap:12px; }
.collector-category-actions { display:flex; flex:0 0 auto; gap:7px; }
.collector-category-head .text-button,.collector-category-group .text-button { width:auto; margin:0; padding:6px 9px; border:1px solid #d4d4d4; border-radius:7px; background:#fafafa; font-size:11px; line-height:1; text-decoration:none; white-space:nowrap; }
.collector-category-groups { display:grid; gap:10px; }
.collector-category-group { min-width:0; margin:0; padding:12px; border:1px solid #d4d4d4; border-radius:10px; background:#fafafa; }
.collector-category-group-head { display:flex; width:100%; align-items:center; justify-content:space-between; gap:12px; padding-bottom:9px; border-bottom:1px solid #e5e5e5; }
.collector-category-group-head > div { display:flex; min-width:0; align-items:baseline; gap:7px; }
.collector-category-group-head strong { color:#404040; font-size:11px; white-space:nowrap; }
.collector-category-group-head small { color:#737373; font-size:11px; white-space:nowrap; }
.collector-category-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 12px; margin-top:10px; }
.collector-category-group label { display:flex; min-width:0; align-items:center; gap:7px; color:#404040; font-size:11px; line-height:1.35; }
.collector-category-group input { flex:0 0 auto; width:14px; height:14px; margin:0; accent-color:var(--green); }
.collector-selection-summary { flex:0 1 auto; margin:0; padding:6px 9px; border-radius:7px; background:#f5f5f5; color:#525252; font-size:11px; font-weight:800; white-space:nowrap; }
.collector-trigger-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.market-collect-date-range { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.market-collect-date-range.hidden { display:none; }
.market-collect-date-range label { color:#525252; font-size:11px; font-weight:800; }
.market-collect-date-range input { margin:5px 0 0; padding:8px 9px; background:#fff; }
.queue-actions { display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.collector-day-ledger-head { display:flex; align-items:end; justify-content:space-between; gap:16px; margin-top:18px; padding:0 1px 8px; border-bottom:1px solid #e5e5e5; }
.collector-day-ledger-head strong,.collector-day-ledger-head span { display:block; }
.collector-day-ledger-head strong { color:#171717; font-size:16px; }
.collector-day-ledger-head span,.collector-day-ledger-head small { margin-top:3px; color:#737373; font-size:12px; line-height:1.45; }
.collector-day-list { --collector-accent:#525252; overflow:hidden; border:1px solid #d4d4d4; border-radius:6px; background:#fff; }
.collector-day-row { display:grid; grid-template-columns:126px minmax(245px,.9fr) minmax(260px,1.25fr) 92px; gap:14px; align-items:center; min-width:0; padding:12px 13px; border-bottom:1px solid #e5e5e5; background:#fff; }
.collector-day-row:last-child { border-bottom:0; }
.collector-day-row:hover { background:#fafafa; }
.collector-day-primary,.collector-day-progress,.collector-day-diagnostic { min-width:0; }
.collector-day-primary strong,.collector-day-primary span,.collector-day-progress span,.collector-day-progress small,.collector-day-diagnostic span,.collector-day-diagnostic small { display:block; }
.collector-day-primary strong { color:#171717; font-size:12px; font-variant-numeric:tabular-nums; }
.collector-day-primary span { margin-top:4px; color:#737373; font-size:12px; }
.collector-day-progress > div:first-child { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.collector-day-progress b { color:var(--collector-accent); font-size:16px; font-variant-numeric:tabular-nums; }
.collector-day-progress span,.collector-day-progress small { overflow:hidden; color:#737373; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.collector-day-progress small { margin-top:5px; }
.collector-day-track { height:5px; margin-top:6px; overflow:hidden; border-radius:3px; background:#e5e5e5; }
.collector-day-track i { display:block; height:100%; border-radius:inherit; background:var(--collector-accent); }
.collector-day-diagnostic > span { color:#737373; font-size:11px; font-weight:700; }
.collector-day-diagnostic p { display:-webkit-box; min-width:0; margin:4px 0 0; overflow:hidden; color:#171717; font-size:12px; line-height:1.45; overflow-wrap:anywhere; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.collector-day-diagnostic small { margin-top:4px; color:#737373; font-size:11px; font-variant-numeric:tabular-nums; }
.collector-day-action { display:grid; justify-items:end; gap:8px; }
.collector-day-action em { color:#737373; font-size:12px; font-style:normal; font-weight:800; }
.collector-day-resume { min-width:82px; min-height:36px; padding:8px 11px; border:1px solid var(--collector-accent); border-radius:4px; color:#fff; background:var(--collector-accent); font-size:12px; font-weight:800; white-space:nowrap; }
.collector-day-resume:hover:not(:disabled) { background:#525252; border-color:#525252; }
.collector-day-resume:focus-visible { outline:2px solid #525252; outline-offset:2px; }
.collector-day-resume:disabled { border-color:#d4d4d4; color:#737373; background:#fafafa; cursor:not-allowed; }
.collector-day-row.complete { --collector-accent:#737373; }
.collector-day-row.failed,.collector-day-row.error,.collector-day-row.cancelled { --collector-accent:#525252; }
.collector-day-row.partial,.collector-day-row.paused,.collector-day-row.waiting_user { --collector-accent:#737373; }
.market-manual-collect .market-collect-button { margin-top:0; }
.market-collect-safety { margin:0; color:#737373; font-size:11px; line-height:1.55; }
.collector-stop-row { display:flex; justify-content:space-between; align-items:center; gap:16px; margin:14px -18px -17px; padding:12px 18px; border:0; border-top:1px solid #a3a3a3; border-radius:0 0 13px 13px; background:#f5f5f5; }
.collector-stop-row.hidden { display:none; }
.collector-stop-row strong,.collector-stop-row span { display:block; }
.collector-stop-row strong { color:#404040; font-size:11px; }
.collector-stop-row span { margin-top:3px; color:#525252; font-size:11px; line-height:1.45; }
.collector-control-actions { display:flex; flex:0 0 auto; align-items:center; gap:8px; }
.collector-control-actions button { width:auto; min-width:88px; margin:0; padding:9px 15px; border-radius:9px; font-size:11px; font-weight:800; }
.collector-control-actions .hidden { display:none; }
.collector-stop-row .danger { border:1px solid #737373; color:#fff; background:#737373; }
.collector-stop-row .danger:disabled { opacity:.55; cursor:wait; }
.text-button { width:100%; padding:10px 0 0; border:0; background:transparent; color:var(--green); font-size:11px; text-decoration:underline; text-underline-offset:3px; }
.market-pairing-generate { width:100%; margin-top:12px; }
.market-pairing-card { display:grid; gap:10px; min-width:0; margin-top:12px; padding:14px; border:1px solid #d4d4d4; border-radius:12px; background:#f5f5f5; }
.market-pairing-card.hidden { display:none; }
.market-pairing-head { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; }
.market-pairing-head > div { min-width:0; }
.market-pairing-head .kicker,.market-pairing-head strong { display:block; }
.market-pairing-head strong { margin-top:4px; color:var(--green); font-size:11px; }
.market-pairing-head > span { flex:0 0 auto; padding:4px 7px; border-radius:999px; background:#e5e5e5; color:var(--green); font-size:11px; }
.market-pairing-card code { display:block; width:100%; min-width:0; max-height:74px; overflow:auto; padding:10px; border:1px solid #e5e5e5; border-radius:9px; background:#fff; color:#404040; font:9px/1.55 Consolas,monospace; overflow-wrap:anywhere; word-break:break-all; user-select:all; }
.market-pairing-card .ghost { width:100%; padding:9px 10px; }
.market-pairing-card p { margin:0; color:var(--muted); font-size:11px; line-height:1.55; }
.market-fallback { display:grid; gap:12px; border-style:dashed; background:#fafafa; }
.market-fallback h3 { margin:4px 0 5px; font-size:16px; }
.market-fallback p,.market-fallback > small { margin:0; color:var(--muted); font-size:11px; line-height:1.6; }
.market-fallback input { margin-top:5px; padding:9px 10px; background:#fff; }
.market-file-field input { font-size:11px; }
.market-quality-card #market-quality > p { margin:10px 0 0; color:var(--muted); font-size:11px; }
.market-quality-card dl { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:14px 0 0; }
.market-quality-card dl div { padding:10px; border-radius:9px; background:#f5f5f5; }
.market-quality-card dt { color:var(--muted); font-size:11px; }
.market-quality-card dd { margin:4px 0 0; color:var(--green); font:600 17px var(--font-ui); }
.quality-warning { margin:12px 0 0; padding:10px; border-radius:8px; color:#525252; background:#f5f5f5; }
.market-quality-inline { display:grid; grid-template-columns:230px 1fr; gap:24px; align-items:center; margin-top:10px; padding:18px 22px; }
.market-quality-inline h3 { margin:5px 0 0; font-size:15px; }
.market-quality-inline #market-quality { min-width:0; }
.market-quality-inline dl { grid-template-columns:repeat(6,minmax(0,1fr)); margin:0; }

.market-main { min-width:0; }
.market-main-full { width:100%; }
.market-kpis { display:grid; grid-template-columns:repeat(5,1fr); gap:9px; margin-top:18px; }
.market-kpis article { min-width:0; padding:16px 17px; border:1px solid var(--line); border-radius:13px; background:rgba(255,253,248,.88); }
.market-kpis strong,.market-kpis span { display:block; }
.market-kpis strong { color:var(--green); font:600 24px var(--font-ui); }
.market-kpis span { margin-top:3px; color:var(--muted); font-size:11px; }
.market-candidates-panel { margin-top:10px; padding:22px; }
.market-candidate-head { align-items:flex-end; gap:20px; margin-bottom:14px; }
.market-candidate-head p { margin:5px 0 0; color:var(--muted); font-size:11px; }
.market-candidate-head label { width:210px; flex:0 0 auto; }
.market-candidate-head input { margin-top:5px; padding:9px 10px; background:#fff; }
.market-filter-tabs { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.market-filter-tabs button { padding:7px 11px; border:1px solid #d4d4d4; border-radius:999px; color:#737373; background:#f5f5f5; font-size:11px; }
.market-filter-tabs button.active { border-color:var(--green); color:#fff; background:var(--green); }
.market-candidate-list { display:grid; gap:9px; }
.market-candidate { display:grid; grid-template-columns:minmax(250px,1.55fr) 105px minmax(170px,.95fr) 138px; grid-template-areas:"product change signals facts" "evidence evidence evidence actions"; gap:14px 16px; align-items:center; padding:17px; border:1px solid #e5e5e5; border-radius:14px; background:#fafafa; transition:.18s; }
.market-candidate:hover { border-color:#a3a3a3; box-shadow:0 10px 28px rgba(28,50,36,.06); transform:translateY(-1px); }
.market-product { grid-area:product; display:grid; grid-template-columns:58px minmax(0,1fr); gap:12px; align-items:center; }
.market-product img,.market-image-placeholder { width:58px; height:58px; border:1px solid #e5e5e5; border-radius:11px; object-fit:cover; background:#f5f5f5; }
.market-image-placeholder { display:grid; place-items:center; color:#a3a3a3; font:600 12px var(--font-ui); }
.market-product h4 { margin:5px 0 3px; overflow:hidden; color:#171717; font-size:13px; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }
.market-product p { margin:0; color:var(--muted); font-size:11px; }
.market-sku-title { display:block; max-width:100%; margin-top:4px; overflow:hidden; color:#737373; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.market-product a { display:inline-block; margin-top:5px; color:var(--green); font-size:11px; text-decoration:none; border-bottom:1px solid #a3a3a3; }
.market-status { display:inline-flex; padding:3px 7px; border-radius:999px; font-size:11px; font-weight:800; letter-spacing:.05em; }
.market-status.hot { color:#525252; background:#e5e5e5; }
.market-status.rising { color:#525252; background:#e5e5e5; }
.market-status.new { color:#525252; background:#e5e5e5; }
.market-status.mature { color:#525252; background:#e5e5e5; }
.market-status.watch { color:#737373; background:#f5f5f5; }
.market-change { grid-area:change; text-align:center; }
.market-change > strong { display:block; color:var(--green); font:600 30px var(--font-ui); }
.market-change > span { display:block; color:var(--muted); font-size:11px; }
.market-change p,.market-change small { display:none; }
.market-signal-bars { grid-area:signals; display:grid; gap:5px; }
.market-signal-bars > div { display:grid; grid-template-columns:43px 1fr 22px; gap:7px; align-items:center; color:var(--muted); font-size:11px; }
.market-signal-bars i { height:5px; overflow:hidden; border-radius:99px; background:#e5e5e5; }
.market-signal-bars b { display:block; height:100%; border-radius:inherit; background:var(--surface-soft); }
.market-signal-bars em { color:#525252; font-style:normal; text-align:right; }
.market-facts { grid-area:facts; display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.market-facts span { min-width:0; padding:7px; border-radius:8px; color:var(--muted); background:#f5f5f5; font-size:11px; }
.market-facts b { display:block; margin-top:2px; overflow:hidden; color:#525252; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.market-cmm-evidence { grid-area:evidence; min-width:0; display:flex; flex-wrap:wrap; gap:5px 14px; padding-top:10px; border-top:1px solid #e5e5e5; color:#525252; font-size:11px; line-height:1.5; }
.market-analysis-note { color:#525252; }
.market-evidence-empty { color:#737373; }
.market-actions { grid-area:actions; display:flex; justify-content:flex-end; gap:7px; }
.market-actions select,.market-actions button { width:auto; min-width:105px; margin:0; padding:7px 9px; font-size:11px; }
.market-history-title { margin-top:24px; }
.market-batch-history { display:grid; gap:8px; }
.market-batch-history > article { display:grid; grid-template-columns:minmax(180px,1fr) 105px 105px 90px; gap:15px; align-items:center; padding:14px 17px; border:1px solid var(--line); border-radius:12px; background:rgba(255,253,248,.82); }
.market-batch-history strong,.market-batch-history span,.market-batch-history b,.market-batch-history small { display:block; }
.market-batch-history strong { font-size:12px; }
.market-batch-history span,.market-batch-history small { margin-top:3px; color:var(--muted); font-size:11px; }
.market-batch-history b { color:var(--green); font:600 17px var(--font-ui); }
.batch-state { justify-self:end; padding:5px 8px; border-radius:999px; color:#525252; background:#e5e5e5; font-size:11px; font-style:normal; }
.batch-state.complete { color:#525252; background:#e5e5e5; }
.batch-state.partial { color:#525252; background:#f5f5f5; }
.batch-state.complete_without_ai { color:#525252; background:#e5e5e5; }
.batch-state.failed { color:#525252; background:#e5e5e5; }

/* 榜单数据库：紧凑事实查询层，优先保证单屏扫描和无横向滚动 */
.database-list-page { display:flex; flex:1 1 auto; min-height:0; flex-direction:column; gap:7px; }
.database-filter-panel { position:relative; z-index:3; flex:0 0 auto; margin-top:0; padding:7px 10px; overflow:visible; }
.database-filter-head { display:flex; justify-content:space-between; align-items:center; gap:18px; margin-bottom:10px; }
.database-filter-head h3 { display:inline; margin:0 0 0 8px; font-size:14px; }
.database-filter-head .kicker { display:inline; }
.database-filter-actions { display:flex; gap:5px; flex:0 0 auto; align-items:end; }
.database-filter-actions > button { height:30px; padding:5px 10px; font-size:11px; }
.database-filters { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; align-items:end; }
.database-filters label { min-width:0; color:#525252; font-size:11px; }
.database-filters input,.database-filters select { height:30px; margin-top:3px; padding:4px 7px; border-radius:7px; background:#fff; font-size:11px; }
.database-primary-filters { grid-template-columns:minmax(180px,1.45fr) minmax(155px,1fr) minmax(128px,.8fr) minmax(130px,.82fr) auto; gap:7px; }
.database-primary-filters .database-keyword { grid-column:auto; }
.database-primary-filters .database-filter-actions { align-self:end; height:30px; }
.database-advanced { position:relative; margin:0; border:0; }
.database-advanced summary { display:grid; place-items:center; height:30px; min-width:48px; padding:5px 8px; border:1px solid #d4d4d4; border-radius:8px; cursor:pointer; color:#404040; background:#fafafa; font-size:11px; font-weight:800; list-style:none; }
.database-advanced summary::-webkit-details-marker { display:none; }
.database-advanced summary::after { content:"＋"; margin-left:4px; color:var(--green); }
.database-advanced[open] summary { color:var(--green); border-color:#a3a3a3; }
.database-advanced[open] summary::after { content:"−"; }
.database-advanced-popover { position:absolute; top:36px; right:0; width:min(900px,calc(100vw - 230px)); padding:12px; grid-template-columns:repeat(5,minmax(0,1fr)); border:1px solid #e5e5e5; border-radius:12px; background:#fafafa; box-shadow:0 18px 45px rgba(26,47,34,.16); }
.database-table-panel { display:flex; flex:1 1 auto; flex-direction:column; min-height:0; margin-top:0; padding:0; overflow:hidden; }
.database-table-head { flex:0 0 auto; display:flex; justify-content:space-between; align-items:center; gap:16px; min-height:36px; padding:6px 12px; border-bottom:1px solid #e5e5e5; }
.database-table-head h3 { display:inline; margin:0 0 0 8px; font-size:13px; }
.database-table-head .kicker { display:inline; }
.database-table-head > span,.database-table-tools > span { color:var(--muted); font-size:11px; }
.database-table-tools { display:flex; align-items:center; gap:10px; }
.database-standard { position:relative; }
.database-standard summary { padding:5px 9px; border:1px solid #d4d4d4; border-radius:7px; cursor:pointer; color:var(--green); background:#f5f5f5; font-size:11px; font-weight:800; list-style:none; }
.database-standard summary::-webkit-details-marker { display:none; }
.database-standard > div { position:absolute; z-index:8; top:31px; right:0; width:430px; padding:12px; border:1px solid #e5e5e5; border-radius:11px; background:#fafafa; box-shadow:0 16px 40px rgba(28,52,37,.18); }
.database-standard > div > div { display:grid; grid-template-columns:72px 1fr; gap:9px; align-items:center; padding:5px 0; border-bottom:1px solid #e5e5e5; }
.database-standard > div p { margin:0; color:#737373; font-size:11px; line-height:1.5; }
.database-standard > div > small { display:block; margin-top:8px; color:#737373; font-size:11px; line-height:1.5; }
.database-table-wrap { flex:1 1 auto; min-height:0; width:100%; overflow-x:hidden; overflow-y:auto; background:#fafafa; }
.database-table { width:100%; min-width:0; border-collapse:collapse; table-layout:fixed; }
.database-table th { position:sticky; top:0; z-index:1; height:28px; padding:5px 6px; color:#525252; background:#f5f5f5; border-bottom:1px solid #e5e5e5; font-size:11px; font-weight:800; text-align:left; white-space:nowrap; }
.database-table th:nth-child(1) { width:4%; }.database-table th:nth-child(2) { width:25%; }.database-table th:nth-child(3) { width:16%; }.database-table th:nth-child(4) { width:7%; }.database-table th:nth-child(5) { width:9%; }.database-table th:nth-child(6) { width:7%; }.database-table th:nth-child(7) { width:7%; }.database-table th:nth-child(8) { width:7%; }.database-table th:nth-child(9) { width:9%; }.database-table th:nth-child(10) { width:9%; }
.database-table td { height:43px; padding:3px 6px; overflow:hidden; border-bottom:1px solid #e5e5e5; color:#525252; font-size:11px; line-height:1.2; vertical-align:middle; text-overflow:ellipsis; }
#view-database[data-page-size="10"] .database-table { height:100%; }
#view-database[data-page-size="10"] .database-table tbody tr { height:calc((100% - 28px) / 10); }
#view-database[data-page-size="10"] .database-table td { height:auto; }
.database-table tbody tr:hover { background:#f5f5f5; }
.database-rank strong { display:block; color:#404040; font:600 17px var(--font-ui); }
.database-trend { display:inline-block; margin-top:2px; font-size:11px; }.database-trend.up { color:#525252; }.database-trend.down { color:#525252; }.database-trend.flat,.database-trend.unknown { color:#737373; }
.database-product { display:grid; grid-template-columns:34px minmax(0,1fr); gap:6px; align-items:center; }
.database-product img,.database-product-placeholder { width:34px; height:34px; border:1px solid #e5e5e5; border-radius:6px; object-fit:cover; background:#f5f5f5; }
.database-product-placeholder { display:grid; place-items:center; color:#737373; font:700 12px var(--font-ui); }
.database-product a,.database-product strong { display:block; overflow:hidden; color:#404040; font-size:11px; font-weight:800; line-height:1.35; text-decoration:none; text-overflow:ellipsis; white-space:nowrap; }
.database-product a:hover { color:var(--green); text-decoration:underline; text-underline-offset:2px; }
.database-product small,.database-product code { display:block; max-width:100%; margin-top:3px; overflow:hidden; color:#737373; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.database-product code { color:#737373; font-family:Consolas,monospace; }
.database-product-labels { display:flex; gap:4px; margin-top:3px; }
.database-status { display:inline-flex; width:max-content; max-width:100%; align-items:center; gap:4px; padding:2px 6px; border-radius:999px; color:#525252; background:#f5f5f5; font-size:11px; font-weight:800; white-space:nowrap; }
.database-status small { margin:0; color:inherit; font-size:11px; opacity:.75; }
.database-status.new_breakout { color:#525252; background:#e5e5e5; }.database-status.accelerating { color:#525252; background:#f5f5f5; }.database-status.new_entry { color:#525252; background:#e5e5e5; }.database-status.mature_hit { color:#525252; background:#e5e5e5; }.database-status.watch { color:#737373; background:#f5f5f5; }.database-status.none { color:#737373; background:#f5f5f5; }
.database-shop strong,.database-shop span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.database-shop strong { color:#404040; font-size:11px; }.database-shop span { margin-top:3px; color:#737373; font-size:11px; }
.database-metric { color:#525252; font-size:11px; }
.database-date-cell strong,.database-date-cell span { display:block; }.database-date-cell strong { color:#404040; font-size:11px; }.database-date-cell span { margin-top:3px; color:#737373; font-size:11px; }
.database-cmm-button { width:100%; min-width:0; padding:6px 4px; border:1px solid #a3a3a3; border-radius:7px; background:#f5f5f5; color:var(--green); font-size:11px; font-weight:800; white-space:nowrap; }
.database-cmm-button:hover { border-color:var(--green); background:#e5e5e5; }.database-cmm-button:disabled { cursor:wait; opacity:.6; }
.database-cmm-button.success { background:#e5e5e5; }.database-cmm-button.error { border-color:#a3a3a3; color:#525252; background:#f5f5f5; }
.database-row-actions { display:grid; gap:3px; }
.database-trend-button { width:100%; min-width:0; padding:5px 4px; border:1px solid var(--green); border-radius:7px; color:#fff; background:var(--green); font-size:11px; font-weight:800; white-space:nowrap; }
.database-trend-button:hover { background:#525252; }
.database-row-actions .database-cmm-button { padding:4px 3px; border-color:transparent; background:transparent; font-size:11px; }
.database-empty { display:grid; justify-items:center; gap:5px; padding:45px 20px; color:#737373; text-align:center; }
.database-empty strong { color:#525252; font-size:11px; }.database-empty span { font-size:11px; }.database-empty.error strong { color:#525252; }
.database-product-page { flex:1 1 auto; min-height:0; overflow-y:auto; padding:1px 1px 10px; }
.database-product-toolbar { position:sticky; z-index:4; top:0; display:flex; justify-content:space-between; align-items:center; min-height:38px; margin-bottom:7px; padding:5px 8px; border-bottom:1px solid #e5e5e5; background:#f5f5f5; }
.database-product-toolbar > span { color:var(--muted); font-size:11px; }
.database-product-content { display:grid; gap:9px; }
.database-product-hero { display:grid; grid-template-columns:78px minmax(0,1fr) auto; gap:15px; align-items:center; margin:0; padding:15px; }
.database-product-hero > img,.database-product-hero-placeholder { width:78px; height:78px; border:1px solid #e5e5e5; border-radius:13px; object-fit:cover; background:#e5e5e5; }
.database-product-hero-placeholder { display:grid; place-items:center; color:var(--green); font:700 25px var(--font-ui); }
.database-product-hero h2 { margin:4px 0; color:#404040; font-size:17px; line-height:1.35; }
.database-product-hero p { margin:0; color:#737373; font-size:11px; }.database-product-hero code { display:block; margin-top:7px; color:#737373; font-size:11px; }.database-product-hero a { display:inline-block; margin-top:7px; color:var(--green); font-size:11px; font-weight:800; }
.database-product-current { display:grid; justify-items:end; gap:8px; }.database-product-current small { color:var(--muted); font-size:11px; }
.database-product-summary { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.database-product-summary article { padding:11px 12px; border:1px solid #e5e5e5; border-radius:10px; background:#fafafa; }.database-product-summary span { display:block; color:#737373; font-size:11px; }.database-product-summary strong { display:block; margin-top:5px; overflow:hidden; color:#404040; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.database-trend-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.database-trend-card { min-width:0; padding:11px; border:1px solid #e5e5e5; border-radius:11px; background:#fafafa; }.database-trend-card > div:first-child { display:flex; justify-content:space-between; gap:8px; align-items:baseline; }.database-trend-card span { color:#737373; font-size:11px; }.database-trend-card strong { color:#404040; font-size:13px; }
.time-series-chart { position:relative; width:100%; min-height:154px; margin-top:8px; touch-action:pan-y; }
.time-series-chart svg { display:block; width:100%; height:auto; min-height:154px; overflow:visible; }
.time-series-grid line { stroke:#e5e5e5; stroke-width:1; vector-effect:non-scaling-stroke; }
.time-series-grid line.time-series-axis { stroke:#737373; }
.time-series-grid text { fill:#737373; font:10px "Microsoft YaHei UI","Noto Sans SC",sans-serif; }
.time-series-line { fill:none; stroke:#171717; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.time-series-point { fill:#fff; stroke:#171717; stroke-width:2; vector-effect:non-scaling-stroke; outline:none; }
.time-series-point:focus { stroke-width:4; }
.time-series-focus-line { display:none; stroke:#737373; stroke-width:1; stroke-dasharray:4 3; vector-effect:non-scaling-stroke; pointer-events:none; }
.time-series-focus-line.visible { display:block; }
.time-series-active-point { display:none; fill:#171717; stroke:#fff; stroke-width:2; vector-effect:non-scaling-stroke; pointer-events:none; }
.time-series-active-point.visible { display:block; }
.time-series-hit-area { fill:transparent; cursor:crosshair; outline:none; }
.time-series-hit-area:focus { stroke:#737373; stroke-width:1; stroke-dasharray:3 3; }
.time-series-tooltip { position:absolute; z-index:3; top:10px; min-width:142px; padding:9px 10px; transform:translateX(10px); border:1px solid #171717; border-radius:2px; color:#171717; background:rgba(255,255,255,.97); box-shadow:0 6px 18px rgba(0,0,0,.08); opacity:0; pointer-events:none; }
.time-series-tooltip.visible { opacity:1; }
.time-series-tooltip.align-left { transform:translateX(calc(-100% - 10px)); }
.time-series-tooltip time { display:block; margin-bottom:5px; color:#525252; font-size:11px; font-weight:800; }
.time-series-tooltip span { display:grid; grid-template-columns:8px 1fr auto; gap:6px; align-items:center; padding-top:4px; color:#525252; font-size:11px; }
.time-series-tooltip span i { width:7px; height:7px; border-radius:50%; background:#171717; }
.time-series-tooltip span strong { color:#171717; font-size:11px; }
.time-series-empty { display:grid; place-items:center; min-height:154px; color:#737373; font-size:11px; }
.database-product-history { margin:0; padding:0; overflow:hidden; }.database-product-history-head { display:flex; justify-content:space-between; align-items:end; gap:15px; padding:11px 13px; border-bottom:1px solid #e5e5e5; }.database-product-history-head h3 { display:inline; margin-left:8px; font-size:13px; }.database-product-history-head p { margin:0; color:#737373; font-size:11px; }
.database-product-history-wrap { overflow:auto; }.database-product-history table { width:100%; border-collapse:collapse; }.database-product-history th { padding:8px; color:#525252; background:#f5f5f5; font-size:11px; text-align:left; white-space:nowrap; }.database-product-history td { padding:8px; border-bottom:1px solid #e5e5e5; color:#525252; font-size:11px; white-space:nowrap; }.database-product-history td > strong { color:#404040; font-size:11px; }
.database-pagination { flex:0 0 auto; display:flex; justify-content:space-between; align-items:center; gap:12px; min-height:41px; padding:5px 11px; border-top:1px solid #e5e5e5; background:#f5f5f5; }
.database-pagination > span { color:#737373; font-size:11px; }
.database-pagination-controls,.database-page-buttons { display:flex; align-items:center; gap:5px; }
.database-pagination-controls label { display:flex; align-items:center; gap:5px; color:#737373; font-size:11px; white-space:nowrap; }
.database-pagination-controls select { width:66px; height:29px; margin:0; padding:4px 6px; border-radius:7px; font-size:11px; }
.database-pagination-controls input { width:48px; height:29px; margin:0; padding:4px 6px; border-radius:7px; font-size:11px; text-align:center; }
.database-pagination button { height:29px; padding:5px 9px; font-size:11px; border-radius:7px; }
.database-cmm-dialog { width:min(900px,92vw); max-height:88vh; }
.database-cmm-head p { margin:5px 0 0; color:var(--muted); font-size:11px; }.database-cmm-content { padding:20px 24px 24px; }
.database-cmm-head-actions { display:flex; align-items:center; gap:8px; }
.database-cmm-overview { position:relative; display:grid; grid-template-columns:96px minmax(0,1fr) auto; gap:17px; align-items:center; padding:17px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.database-cmm-overview img,.database-cmm-placeholder { width:96px; height:96px; border-radius:11px; border:1px solid var(--line); object-fit:cover; background:#f5f5f5; }.database-cmm-placeholder { display:grid; place-items:center; color:var(--green); font:700 28px var(--font-ui); }
.database-cmm-overview h3 { margin:5px 0; font-size:15px; }.database-cmm-overview p { margin:0 0 8px; color:var(--muted); font-size:11px; }.database-cmm-overview a { color:var(--green); font-size:11px; font-weight:800; }
.database-cmm-cache { align-self:start; padding:5px 8px; border-radius:999px; background:#e5e5e5; color:#525252; font-size:11px; font-weight:800; }.database-cmm-cache.cached { background:#e5e5e5; color:var(--green); }
.database-cmm-section { display:grid; grid-template-columns:170px minmax(0,1fr); gap:18px; margin-top:13px; padding:17px; border:1px solid var(--line); border-radius:14px; background:#fafafa; }.database-cmm-section h3 { margin:5px 0; font-size:13px; }.database-cmm-section p { margin:0; color:var(--muted); font-size:11px; line-height:1.6; }
.database-cmm-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; }.database-cmm-metrics article { min-width:0; padding:10px; border-radius:9px; background:#f5f5f5; }.database-cmm-metrics span,.database-cmm-metrics strong { display:block; }.database-cmm-metrics span { color:#737373; font-size:11px; }.database-cmm-metrics strong { margin-top:5px; overflow:hidden; color:#404040; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.database-cmm-match dl { margin:0; display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }.database-cmm-match dl div { min-width:0; padding:7px 0; border-bottom:1px solid #e5e5e5; }.database-cmm-match dt { color:#737373; font-size:11px; }.database-cmm-match dd { margin:3px 0 0; overflow:hidden; color:#404040; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.database-cmm-loading { display:grid; justify-items:center; gap:8px; padding:70px 20px; color:var(--muted); text-align:center; }.database-cmm-loading strong { color:#404040; font-size:15px; }.database-cmm-loading span { font-size:11px; }.database-cmm-loading i { width:180px; height:5px; margin-top:8px; overflow:hidden; border-radius:999px; background:#e5e5e5; position:relative; }.database-cmm-loading i::after { content:""; position:absolute; inset:0 auto 0 -45%; width:45%; background:var(--green); animation:database-cmm-loading 1.1s ease-in-out infinite; }@keyframes database-cmm-loading { to { left:100%; } }

.luopan-login-hero { min-height:190px; padding:34px 38px; display:flex; justify-content:space-between; align-items:flex-end; gap:38px; overflow:hidden; position:relative; border-radius:22px; color:#fff; background:var(--surface-soft); box-shadow:var(--shadow); }
.luopan-login-hero::after { content:""; position:absolute; right:-74px; top:-110px; width:330px; height:330px; border:1px solid rgba(255,255,255,.14); border-radius:50%; box-shadow:0 0 0 50px rgba(255,255,255,.025),0 0 0 100px rgba(255,255,255,.018); }
.luopan-login-hero > * { position:relative; z-index:1; }
.luopan-login-hero h2 { margin:10px 0 8px; font:500 35px/1.2 var(--font-ui); }
.luopan-login-hero p { max-width:790px; margin:0; color:#d4d4d4; font-size:12px; line-height:1.75; }
.luopan-login-state { min-width:180px; padding-left:24px; text-align:right; border-left:1px solid rgba(255,255,255,.18); }
.luopan-login-state i { display:inline-block; width:9px; height:9px; margin-right:6px; border-radius:50%; background:#a3a3a3; box-shadow:0 0 0 5px rgba(231,178,83,.12); }
.luopan-login-state i.connected { background:var(--lime); box-shadow:0 0 0 5px rgba(204,230,107,.12); }
.luopan-login-state i.error { background:#737373; box-shadow:0 0 0 5px rgba(220,130,107,.12); }
.luopan-login-state small,.luopan-login-state strong,.luopan-login-state span { display:block; }
.luopan-login-state small { display:inline; color:#a3a3a3; font-size:11px; letter-spacing:.08em; }
.luopan-login-state strong { margin:8px 0 5px; color:#f5f5f5; font-size:21px; }
.luopan-login-state span { color:#a3a3a3; font-size:11px; }
.collector-hero-states { display:grid; grid-template-columns:1fr; gap:24px; min-width:240px; }
.collector-hero-states .luopan-login-state { min-width:0; }
.collector-hero-states .luopan-login-state strong { font-size:16px; }
.collector-hero-states .luopan-login-state span { max-width:230px; margin-left:auto; line-height:1.45; }
.collector-hero-states #market-connector-dot { display:inline-block; width:9px; height:9px; margin:0 6px 0 0; }
.collector-maintenance-grid { display:grid; grid-template-columns:minmax(340px,.82fr) minmax(0,1.18fr); gap:18px; align-items:start; }
.collector-config-card,.collector-run-card { margin-top:18px; }
.collector-config-card .panel-head,.collector-run-card .panel-head { margin-bottom:16px; }
.collector-config-card .panel-head p,.collector-run-card .panel-head p { max-width:600px; margin:6px 0 0; color:var(--muted); font-size:11px; line-height:1.55; }
.collector-task-role { flex:0 0 auto; padding:5px 8px; border-radius:999px; color:#525252; background:#e5e5e5; font-size:11px; }
.collector-progress { margin:0; padding:17px 18px; border-radius:13px; box-shadow:none; }
.collector-progress .progress-track { margin-bottom:0; }
.collector-task-meta { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:14px 0 0; }
.collector-task-meta div { min-width:0; padding:10px 11px; border:1px solid #e5e5e5; border-radius:9px; background:#f5f5f5; }
.collector-task-meta dt { color:var(--muted); font-size:11px; }
.collector-task-meta dd { margin:4px 0 0; overflow:hidden; color:#525252; font-size:11px; font-weight:700; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.collector-section-head { margin:32px 0 12px; padding-left:18px; border-left:3px solid var(--lime); }
.collector-section-head span { color:var(--green); font-size:11px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.collector-section-head h3 { margin:5px 0 3px; font-size:20px; }
.collector-section-head p { margin:0; color:var(--muted); font-size:11px; }
#view-collector > .market-fallback { grid-template-columns:1.15fr .75fr .75fr 1.1fr auto; align-items:end; margin-top:18px; }
#view-collector > .market-fallback > small { grid-column:1/-1; }
.luopan-security-gate { display:flex; align-items:center; gap:18px; margin-top:15px; padding:15px 18px; border:1px solid #a3a3a3; border-radius:12px; color:#525252; background:#f5f5f5; }
.luopan-security-gate strong { flex:0 0 auto; font-size:11px; }
.luopan-security-gate span { color:#737373; font-size:11px; line-height:1.55; }
.luopan-login-layout { display:grid; grid-template-columns:minmax(0,1.85fr) 315px; gap:18px; align-items:start; }
.luopan-browser-panel,.luopan-input-panel { margin-top:18px; }
.luopan-browser-panel { padding:20px; }
.luopan-browser-head { align-items:center; gap:18px; margin-bottom:14px; }
.luopan-browser-head p { margin:5px 0 0; color:var(--muted); font-size:11px; }
.luopan-browser-actions { display:flex; flex:0 0 auto; gap:7px; }
.luopan-screen-wrap { position:relative; display:grid; place-items:center; aspect-ratio:1439 / 912; max-height:650px; overflow:hidden; border:1px solid #404040; border-radius:13px; background:#171717; box-shadow:inset 0 0 0 1px rgba(255,255,255,.04); }
.luopan-screen { display:block; width:100%; height:100%; object-fit:contain; cursor:crosshair; user-select:none; touch-action:none; background:#fff; }
.luopan-screen-empty { display:grid; justify-items:center; gap:7px; color:#d4d4d4; text-align:center; }
.luopan-screen-empty i { width:26px; height:26px; border:2px solid #737373; border-top-color:var(--lime); border-radius:50%; animation:luopan-spin 1.1s linear infinite; }
.luopan-screen-empty strong { font-size:13px; }
.luopan-screen-empty span { max-width:390px; color:#737373; font-size:11px; line-height:1.6; }
.luopan-screen-loading { position:absolute; right:12px; top:12px; padding:7px 10px; border-radius:99px; color:#f5f5f5; background:rgba(20,40,29,.82); font-size:11px; backdrop-filter:blur(6px); }
.luopan-remote-hint { margin-top:10px; color:#737373; font-size:11px; line-height:1.55; }
.luopan-input-panel { position:sticky; top:14px; padding:22px; }
.luopan-input-panel > div:first-child h3 { margin:5px 0 6px; }
.luopan-input-panel > div:first-child p { margin:0; color:var(--muted); font-size:11px; line-height:1.65; }
.luopan-input-panel form { display:grid; gap:8px; margin-top:18px; padding-top:17px; border-top:1px solid #e5e5e5; }
.luopan-input-panel form input { margin-top:6px; background:#fff; }
.luopan-input-panel form button { width:100%; }
.luopan-keypad { display:grid; grid-template-columns:repeat(2,1fr); gap:7px; margin-top:17px; }
.luopan-keypad button { padding:9px 8px; }
.luopan-input-panel .security-note { line-height:1.55; }
.luopan-login-help { margin-top:14px; padding:13px 15px; border-radius:10px; color:#525252; background:#f5f5f5; font-size:11px; line-height:1.6; }
.luopan-login-help strong { color:#525252; }
.luopan-login-help ol { margin:7px 0 0; padding-left:17px; }
.luopan-action-status { padding:10px 12px; border:1px solid #e5e5e5; border-radius:9px; color:#525252; background:#f5f5f5; font-size:11px; line-height:1.55; }
.luopan-action-status.success { border-color:#d4d4d4; color:#525252; background:#f5f5f5; }
.luopan-action-status.error { border-color:#a3a3a3; color:#525252; background:#f5f5f5; }
.luopan-submit-login { width:100%; }
@keyframes luopan-spin { to { transform:rotate(360deg); } }

.category-radar-shell { display:grid; gap:14px; margin-top:18px; }
.category-radar-switch { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.category-radar-switch button { display:flex; justify-content:space-between; align-items:center; gap:18px; min-height:68px; padding:14px 18px; border:1px solid #e5e5e5; border-radius:15px; color:#525252; background:#fafafa; text-align:left; box-shadow:0 8px 22px rgba(28,50,37,.05); }
.category-radar-switch button span,.category-radar-switch button small { display:block; }.category-radar-switch button span { color:#404040; font-size:15px; font-weight:850; }.category-radar-switch button small { color:#737373; font-size:11px; }
.category-radar-switch button.active { border-color:#737373; color:#fff; background:var(--surface-soft); box-shadow:0 12px 28px rgba(33,85,57,.18); }.category-radar-switch button.active span { color:#fff; }.category-radar-switch button.active small { color:#e5e5e5; }
.category-radar-brief { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:24px; align-items:center; min-height:96px; padding:20px 24px; border:1px solid #e5e5e5; border-left:5px solid #525252; border-radius:15px; background:var(--surface-soft); }
.category-radar-brief.high_rotation { border-left-color:#737373; background:var(--surface-soft); }.category-radar-brief h3 { margin:5px 0 6px; color:#404040; font-size:20px; }.category-radar-brief p { margin:0; color:#737373; font-size:11px; line-height:1.6; }
.category-radar-period { min-width:220px; padding-left:22px; border-left:1px solid #e5e5e5; text-align:right; }.category-radar-period small,.category-radar-period strong,.category-radar-period span { display:block; }.category-radar-period small { color:#737373; font-size:11px; }.category-radar-period strong { margin:5px 0; color:#525252; font-size:13px; }.category-radar-period span { color:#737373; font-size:11px; }
.category-radar-metrics { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:9px; }.category-radar-metrics article { min-width:0; padding:13px 14px; border:1px solid #e5e5e5; border-radius:12px; background:#fafafa; }.category-radar-metrics strong,.category-radar-metrics span,.category-radar-metrics small { display:block; }.category-radar-metrics strong { overflow:hidden; color:#404040; font:700 20px var(--font-ui); text-overflow:ellipsis; white-space:nowrap; }.category-radar-metrics span { margin-top:5px; color:#525252; font-size:11px; font-weight:800; }.category-radar-metrics small { margin-top:3px; color:#737373; font-size:11px; }
.category-radar-focus { margin:0; padding:0; overflow:hidden; }.category-radar-focus-head { margin:0; padding:17px 19px 13px; border-bottom:1px solid #e5e5e5; }.category-radar-focus-head p { margin:5px 0 0; color:#737373; font-size:11px; }.category-radar-focus-head label { width:270px; color:#737373; font-size:11px; }.category-radar-focus-head input { height:34px; margin-top:5px; padding:7px 10px; font-size:11px; }
.category-radar-signal-tabs { display:flex; gap:7px; padding:10px 18px; overflow-x:auto; border-bottom:1px solid #e5e5e5; background:#f5f5f5; }.category-radar-signal-tabs button { flex:0 0 auto; padding:7px 11px; border:1px solid transparent; border-radius:999px; color:#525252; background:transparent; font-size:11px; font-weight:800; }.category-radar-signal-tabs button.active { border-color:#d4d4d4; color:#525252; background:#f5f5f5; }
.category-radar-product-list { display:grid; }.category-radar-product-list > .empty { padding:54px 20px; }
.category-radar-product { display:grid; grid-template-columns:72px minmax(280px,1.45fr) minmax(230px,1fr) 150px 125px; gap:13px; align-items:center; min-height:112px; padding:13px 17px; border-bottom:1px solid #e5e5e5; background:#fafafa; }.category-radar-product:hover { background:#f5f5f5; }
.category-radar-rank { text-align:center; }.category-radar-rank small,.category-radar-rank strong,.category-radar-rank span { display:block; }.category-radar-rank small { color:#737373; font-size:11px; }.category-radar-rank strong { margin:3px 0; color:#404040; font:700 28px var(--font-ui); }.category-radar-rank span { color:#525252; font-size:11px; font-weight:800; }
.category-radar-product-main { display:grid; grid-template-columns:54px minmax(0,1fr); gap:11px; align-items:center; min-width:0; }.category-radar-product-main img,.category-radar-product-placeholder { width:54px; height:54px; border:1px solid #e5e5e5; border-radius:10px; object-fit:cover; background:#f5f5f5; }.category-radar-product-placeholder { display:grid; place-items:center; color:#525252; font:700 19px var(--font-ui); }.category-radar-product-main h4 { margin:4px 0; overflow:hidden; color:#404040; font-size:11px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }.category-radar-product-main p,.category-radar-product-main code { display:block; margin:0; overflow:hidden; color:#737373; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }.category-radar-product-main code { margin-top:3px; color:#737373; }
.category-radar-product-tags { display:flex; gap:4px; overflow:hidden; }.category-radar-tag { display:inline-flex; flex:0 0 auto; align-items:center; padding:2px 6px; border-radius:999px; color:#525252; background:#f5f5f5; font-size:11px; font-weight:850; white-space:nowrap; }.category-radar-tag.breakout { color:#525252; background:#e5e5e5; }.category-radar-tag.accelerating { color:#525252; background:#e5e5e5; }.category-radar-tag.new_entry,.category-radar-tag.re_entry { color:#525252; background:#e5e5e5; }.category-radar-tag.stable_head { color:#525252; background:#e5e5e5; }.category-radar-tag.pullback { color:#525252; background:#e5e5e5; }.category-radar-tag.divergence { color:#525252; background:#e5e5e5; }.category-radar-tag.long_watch { color:#525252; background:#e5e5e5; }
.category-radar-product-evidence { min-width:0; }.category-radar-product-evidence strong,.category-radar-product-evidence span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.category-radar-product-evidence strong { color:#525252; font-size:11px; }.category-radar-product-evidence span { margin-top:5px; color:#737373; font-size:11px; }
.category-radar-product-metrics { display:grid; gap:5px; }.category-radar-product-metrics span { display:flex; justify-content:space-between; gap:8px; color:#737373; font-size:11px; }.category-radar-product-metrics b { color:#525252; font-size:11px; }
.category-radar-product-actions { display:grid; gap:6px; justify-items:stretch; }.category-radar-product-actions button { width:100%; font-size:11px; }.category-radar-product-actions a { color:#525252; font-size:11px; font-weight:800; text-align:center; text-decoration:none; }
.category-radar-lower-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr); gap:14px; }.category-radar-lower-grid > .panel { margin:0; }.category-radar-chart-legend { display:flex; justify-content:flex-start; align-items:center; gap:15px; margin-bottom:3px; }.category-radar-chart-legend span { font-size:11px; font-weight:800; }.category-radar-chart-legend .retention { color:#171717; }.category-radar-chart-legend .turnover { color:#737373; }.category-radar-rhythm-chart .time-series-line.retention { stroke:#171717; }.category-radar-rhythm-chart .time-series-line.turnover { stroke:#737373; stroke-dasharray:6 5; }.category-radar-rhythm-chart .time-series-point.retention { stroke:#171717; }.category-radar-rhythm-chart .time-series-point.turnover { stroke:#737373; }.category-radar-rhythm-chart .time-series-active-point.turnover { fill:#737373; }.category-radar-rhythm-chart .time-series-tooltip span.turnover i { background:#737373; }.category-radar-rhythm-chart p { margin:10px 0 0; color:#737373; font-size:11px; line-height:1.6; }
.category-radar-rules #category-radar-standards { display:grid; gap:8px; }.category-radar-rules article { display:grid; grid-template-columns:72px minmax(0,1fr); gap:10px; align-items:start; }.category-radar-rules article p { margin:0; color:#737373; font-size:11px; line-height:1.5; }
.database-product-summary { grid-template-columns:repeat(6,minmax(0,1fr)); }.database-peer-panel,.database-event-panel { margin:0; padding:0; overflow:hidden; }.database-peer-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; padding:13px; }.database-peer-grid article { min-width:0; padding:11px; border:1px solid #e5e5e5; border-radius:10px; background:#fafafa; }.database-peer-grid article > div { display:flex; justify-content:space-between; gap:8px; align-items:center; }.database-peer-grid span,.database-peer-grid small { color:#737373; font-size:11px; }.database-peer-grid strong { color:#404040; font-size:11px; }.database-peer-grid i { display:block; height:5px; margin:9px 0 6px; overflow:hidden; border-radius:99px; background:#e5e5e5; }.database-peer-grid i b { display:block; height:100%; border-radius:inherit; background:#525252; }
.database-event-list { display:flex; gap:9px; padding:13px; overflow-x:auto; }.database-event-list article { flex:0 0 210px; min-height:74px; padding:10px; border:1px solid #e5e5e5; border-top:3px solid #737373; border-radius:9px; background:#fafafa; }.database-event-list article.breakout,.database-event-list article.top20 { border-top-color:#737373; }.database-event-list article.pullback { border-top-color:#737373; }.database-event-list time,.database-event-list strong,.database-event-list span { display:block; }.database-event-list time { color:#737373; font-size:11px; }.database-event-list strong { margin:5px 0; color:#404040; font-size:11px; }.database-event-list span { color:#737373; font-size:11px; line-height:1.45; }

.connection-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.connection-card { min-width: 0; }
.connection-card > div { min-width: 0; }
.connection-card p { overflow-wrap: anywhere; }

@media (max-width: 1180px) {
  main { padding-left: 25px; padding-right: 25px; }
  .candidate-card { grid-template-columns: 35px 1fr 1.5fr 70px 115px; gap: 10px; }
  .confirm-layout { grid-template-columns: minmax(310px, .95fr) minmax(0, 1.4fr); }
  .tag-editor { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .radar-candidate { grid-template-columns: 26px minmax(190px,1.2fr) 1fr 95px; }.radar-candidate > a { display: none; }
  .market-layout { grid-template-columns:245px minmax(0,1fr); gap:13px; }
  .market-rail .panel { padding:16px; }
  .market-kpis { grid-template-columns:repeat(3,1fr); }
  .market-candidate { grid-template-columns:minmax(220px,1.4fr) 90px minmax(150px,1fr); grid-template-areas:"product change signals" "facts facts facts" "evidence evidence actions"; }
  .market-facts { grid-template-columns:repeat(4,1fr); }
  .market-quality-inline { grid-template-columns:180px 1fr; }
  .market-quality-inline dl { grid-template-columns:repeat(3,1fr); }
  .collector-maintenance-grid { grid-template-columns:minmax(300px,.9fr) minmax(0,1.1fr); gap:13px; }
  .collector-day-row { grid-template-columns:104px minmax(210px,.9fr) minmax(220px,1.1fr) 86px; gap:10px; padding:11px; }
  .database-filters { grid-template-columns:repeat(4,minmax(120px,1fr)); }
  .database-keyword { grid-column:span 2; }
  .collector-hero-states { min-width:340px; gap:12px; }
  .luopan-login-layout { grid-template-columns:minmax(0,1fr) 280px; }
  .luopan-browser-actions { flex-direction:column; }
  .category-radar-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .category-radar-product { grid-template-columns:65px minmax(240px,1.4fr) minmax(210px,1fr) 120px; }.category-radar-product-actions { grid-column:2/-1; grid-template-columns:150px auto; justify-content:start; align-items:center; }
  .database-product-summary { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .database-trend-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 850px) {
  .market-collect-modes { grid-template-columns:1fr; }
  .collector-category-options,.collector-trigger-actions { grid-template-columns:1fr; }
  .collector-category-head { align-items:flex-start; }
  .collector-category-tools { align-items:flex-end; flex-direction:column; gap:7px; }
  .collector-stop-row { align-items:stretch; flex-direction:column; }
  .collector-control-actions { display:grid; grid-template-columns:1fr 1fr; }
  .collector-control-actions button { width:100%; }
  .collector-day-row { grid-template-columns:96px minmax(0,1fr) 86px; align-items:start; }
  .collector-day-diagnostic { grid-column:2 / 4; }
  .collector-day-action { grid-column:3; grid-row:1; }
  .semantic-selector { grid-template-columns:1fr; align-items:stretch; }
  .radar-upload-grid,.radar-compare-grid,.freeze-box { grid-template-columns: 1fr; }
  .radar-kpis { grid-template-columns: repeat(2,1fr); }
  .radar-candidate { grid-template-columns: 25px 1fr; }.radar-evidence,.signal-strip { grid-column: 2; }
  .database-cmm-section { grid-template-columns:1fr; }.database-cmm-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }.database-cmm-overview { grid-template-columns:72px minmax(0,1fr); }.database-cmm-overview img,.database-cmm-placeholder { width:72px; height:72px; }.database-cmm-cache { grid-column:1/-1; justify-self:start; }
  .category-radar-switch,.category-radar-lower-grid { grid-template-columns:1fr; }.category-radar-brief { grid-template-columns:1fr; }.category-radar-period { padding:12px 0 0; border-left:0; border-top:1px solid #e5e5e5; text-align:left; }.category-radar-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }.category-radar-focus-head { align-items:stretch; }.category-radar-focus-head label { width:100%; }.category-radar-product { grid-template-columns:54px minmax(0,1fr); }.category-radar-product-evidence,.category-radar-product-metrics,.category-radar-product-actions { grid-column:2; }.category-radar-product-actions { grid-template-columns:1fr auto; }.database-peer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .database-trend-grid { grid-template-columns:1fr; }
}
@media (max-width: 620px) {
  .collector-day-ledger-head { align-items:start; }
  .collector-day-row { grid-template-columns:minmax(0,1fr) auto; }
  .collector-day-progress,.collector-day-diagnostic { grid-column:1 / -1; }
  .collector-day-action { grid-column:2; grid-row:1; }
}
@media (prefers-reduced-motion: reduce) {
  .collector-day-track i { transition:none; }
}
.yingdao-ingestion-card { margin-bottom: 22px; }
.yingdao-ingestion-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin: 16px 0; }
.yingdao-ingestion-grid > div { display: flex; flex-direction: column; gap: 5px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 16px; background: rgba(245,248,241,.72); }
.yingdao-ingestion-grid small,.yingdao-ingestion-grid span { color: var(--muted); }
.yingdao-ingestion-grid strong { font-size: 18px; }
.yingdao-token-actions { display: flex; gap: 10px; flex-wrap: wrap; }
@media (max-width: 900px) { .yingdao-ingestion-grid { grid-template-columns: 1fr; } }

.optimization-view { padding-bottom: 54px; }

.optimization-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: var(--section-pad-y) var(--section-pad-x);
  border: 1px solid #525252;
  border-radius: 16px;
  color: #fafafa;
  background: var(--sidebar);
}
.optimization-hero h2 { max-width: 760px; margin: 8px 0 10px; color: #fafafa; font-size: clamp(24px, 2.3vw, 36px); line-height: 1.2; }
.optimization-hero p { max-width: 780px; margin: 0; color: #a3a3a3; font-size: 12px; line-height: 1.75; }
.optimization-hero .kicker { color: var(--accent); }
.optimization-hero-rule { flex: 0 0 126px; padding: 18px; border: 1px solid #525252; border-radius: 12px; text-align: center; background: #404040; }
.optimization-hero-rule strong { display: block; color: #fafafa; font: 700 39px/1 var(--font-ui); }
.optimization-hero-rule span, .optimization-hero-rule small { display: block; }
.optimization-hero-rule span { margin-top: 7px; font-size:11px; font-weight: 700; }
.optimization-hero-rule small { margin-top: 4px; color: #a3a3a3; font-size:11px; }

.optimization-layout { display: grid; grid-template-columns: minmax(0, 1fr) 278px; gap: 18px; align-items: start; }
.optimization-main { min-width: 0; }
.optimization-form { margin-top: 18px; }
.optimization-source-tabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding: 5px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.optimization-source-tabs button { min-height: 38px; border: 0; border-radius: 7px; color: var(--muted); background: transparent; font-size:11px; font-weight: 700; }
.optimization-source-tabs button.active { color: #fff; background: var(--primary-solid); }
.optimization-source-panel { margin-top: 15px; padding: 17px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface-soft); }
.optimization-source-panel > p { margin: 8px 0 0; color: var(--muted); font-size:11px; line-height: 1.6; }
.optimization-prefill { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px 16px; align-items: center; margin-top: 16px; padding: 15px 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.optimization-prefill strong, .optimization-prefill p { display: block; }
.optimization-prefill strong { margin-top: 4px; font-size: 12px; }
.optimization-prefill p { margin: 5px 0 0; color: var(--muted); font-size:11px; line-height: 1.6; }
.optimization-prefill-result { grid-column: 1 / -1; padding-top: 10px; border-top: 1px solid var(--line); color: var(--muted); font-size:11px; line-height: 1.65; }
.optimization-prefill-result strong { color: var(--primary); font-size:11px; }
.optimization-prefill-result .missing { color: #525252; }
.optimization-form label[data-ai-source]::after { content: "来源：" attr(data-ai-source); display: block; margin-top: 4px; color: var(--primary); font-size:11px; }
.optimization-snapshot-search { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: end; }
.optimization-snapshot-search button { height: 42px; }
.optimization-snapshot-results { display: grid; gap: 7px; max-height: 330px; margin-top: 12px; overflow: auto; }
.optimization-snapshot-item { display: grid; grid-template-columns: 45px minmax(0, 1fr) auto; gap: 10px; align-items: center; width: 100%; padding: 9px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); text-align: left; background: var(--surface); }
.optimization-snapshot-item:hover, .optimization-snapshot-item.active { border-color: var(--primary); background: var(--primary-soft); }
.optimization-snapshot-item > span:nth-child(2) { min-width: 0; }
.optimization-snapshot-item strong, .optimization-snapshot-item small, .optimization-snapshot-item em { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.optimization-snapshot-item strong { font-size:11px; }
.optimization-snapshot-item small { margin-top: 3px; color: var(--muted); font-size:11px; }
.optimization-snapshot-item em { margin-top: 4px; color: var(--primary); font-size:11px; font-style: normal; }
.optimization-snapshot-item > b { color: var(--primary); font-size:11px; }
.optimization-snapshot-image { display: grid; place-items: center; width: 45px; height: 45px; overflow: hidden; border-radius: 7px; color: #fff; background: var(--sidebar); }
.optimization-snapshot-image img { width: 100%; height: 100%; object-fit: cover; }

.optimization-form-section { margin-top: 20px; padding-top: 19px; border-top: 1px solid var(--line); }
.optimization-form-section-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.optimization-form-section-head strong, .optimization-form-section-head span { display: block; }
.optimization-form-section-head strong { font-size: 13px; }
.optimization-form-section-head span { margin-top: 4px; color: var(--muted); font-size:11px; }
.optimization-form-section-head > label { width: 190px; font-size:11px; }
.optimization-form-section-head select { margin-top: 4px; padding: 8px 10px; }
.optimization-evidence-grid textarea { min-height: 72px; }
.optimization-more { margin-top: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.optimization-more summary { padding: 13px 15px; color: var(--primary); font-size:11px; font-weight: 700; cursor: pointer; }
.optimization-more[open] summary { border-bottom: 1px solid var(--line); }
.optimization-more .form-grid { padding: 16px; }
.optimization-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 20px; }
.optimization-submit-row strong, .optimization-submit-row span { display: block; }
.optimization-submit-row strong { font-size:11px; }
.optimization-submit-row div > span { margin-top: 4px; color: var(--muted); font-size:11px; }
.optimization-submit-row .primary { flex: 0 0 auto; }

.optimization-history { position: sticky; top: 14px; max-height: calc(100vh - 30px); margin-top: 18px; padding: 17px; overflow: hidden; }
.optimization-history .panel-head { margin-bottom: 11px; }
#optimization-history-list { display: grid; gap: 6px; max-height: calc(100vh - 120px); overflow: auto; padding-right: 2px; }
.optimization-history-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 8px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; color: var(--ink); text-align: left; background: var(--surface); }
.optimization-history-item:hover { border-color: var(--primary); background: var(--primary-soft); }
.optimization-history-item span { min-width: 0; }
.optimization-history-item strong, .optimization-history-item small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.optimization-history-item strong { font-size:11px; }
.optimization-history-item small { margin-top: 3px; color: var(--muted); font-size:11px; }
.optimization-history-item b { grid-row: span 2; align-self: center; color: var(--primary); font: 700 21px var(--font-ui); }
.optimization-history-item em { grid-column: 1 / -1; color: var(--muted); font-size:11px; font-style: normal; }
.optimization-empty { padding: 24px 14px; color: var(--muted); font-size:11px; line-height: 1.65; text-align: center; }

.optimization-progress { display: grid; gap: 16px; }
.optimization-progress h3 { margin: 5px 0; }
.optimization-progress p { margin: 0; color: var(--muted); font-size:11px; }
.optimization-progress-track { height: 7px; overflow: hidden; border-radius: 20px; background: var(--surface-soft); }
.optimization-progress-track i { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--primary-solid); transition: width .5s ease; }
.optimization-progress ol { display: grid; grid-template-columns: repeat(4, 1fr); gap: 7px; margin: 0; padding: 0; list-style: none; }
.optimization-progress li { padding: 8px; border: 1px solid var(--line); border-radius: 7px; color: var(--muted); font-size:11px; text-align: center; }
.optimization-progress li.active { border-color: var(--primary); color: var(--primary); background: var(--primary-soft); }

.optimization-report { display: grid; gap: 16px; margin-top: 18px; }
.optimization-report-hero { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 0; overflow: hidden; border: 1px solid #525252; border-radius: 14px; background: var(--surface); }
.optimization-score { display: grid; align-content: center; place-items: center; min-height: 220px; padding: 24px; color: #fafafa; text-align: center; background: var(--sidebar); }
.optimization-score strong { color: #fff; font: 700 62px/1 var(--font-ui); }
.optimization-score strong.missing { font-size: 48px; }
.optimization-score span { margin-top: 10px; font-size: 11px; font-weight: 700; }
.optimization-score small { margin-top: 7px; color: #a3a3a3; font-size:11px; }
.optimization-report-summary { padding: 25px 28px; }
.optimization-report-summary h2 { margin: 11px 0 7px; font-size: 24px; }
.optimization-report-summary > strong { color: var(--primary); font-size: 14px; }
.optimization-report-summary > p { margin: 11px 0 9px; color: var(--muted); font-size: 11px; line-height: 1.75; }
.optimization-report-summary > small { display: block; margin-top: 10px; color: var(--muted); font-size:11px; line-height: 1.6; }
.optimization-report-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.optimization-report-badges span { padding: 5px 8px; border-radius: 999px; color: var(--primary); background: var(--primary-soft); font-size:11px; font-weight: 700; }
#optimization-compliance-badge[data-level="blocked"] { color: var(--danger); background: var(--danger-soft); }
#optimization-compliance-badge[data-level="review"] { color: #525252; background: var(--accent-soft); }
#optimization-compliance-note { display: grid; gap: 5px; }
#optimization-compliance-note p { display: grid; gap: 2px; margin: 0; padding: 7px 9px; border-left: 3px solid var(--line); color: var(--muted); background: var(--surface-soft); font-size:11px; line-height: 1.55; }
#optimization-compliance-note p.blocked { border-color: var(--danger); background: var(--danger-soft); }
#optimization-compliance-note p.review { border-color: var(--accent); background: var(--accent-soft); }
#optimization-compliance-note p.passed { border-color: var(--primary); background: var(--primary-soft); }

.optimization-group-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.optimization-group-grid article { padding: 17px 18px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface); }
.optimization-group-grid span, .optimization-group-grid small { display: block; }
.optimization-group-grid span { color: var(--muted); font-size:11px; }
.optimization-group-grid strong { display: block; margin: 7px 0; color: var(--primary); font: 700 25px var(--font-ui); }
.optimization-group-grid small { color: var(--muted); font-size:11px; }
.optimization-report-section { margin-top: 0; }
.optimization-report-section .panel-head > span { color: var(--muted); font-size:11px; text-align: right; }

.optimization-dimensions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.optimization-dimension { padding: 14px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.optimization-dimension.missing { border-style: dashed; }
.optimization-dimension header { display: flex; align-items: start; justify-content: space-between; gap: 10px; }
.optimization-dimension header span { color: var(--muted); font-size:11px; }
.optimization-dimension h4 { margin: 3px 0 0; font-size: 11px; }
.optimization-dimension header > strong { color: var(--primary); font: 700 17px var(--font-ui); }
.optimization-dimension.missing header > strong { color: var(--muted); font: 700 9px var(--font-ui); }
.optimization-dimension-bar { height: 4px; margin-top: 9px; overflow: hidden; border-radius: 10px; background: var(--line); }
.optimization-dimension-bar i { display: block; height: 100%; background: var(--primary-solid); }
.optimization-dimension p { min-height: 30px; margin: 9px 0 5px; color: var(--muted); font-size:11px; line-height: 1.65; }
.optimization-dimension > small { display: block; color: #525252; font-size:11px; }
.optimization-evidence-badges { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.optimization-evidence-badges span { padding: 3px 6px; border-radius: 999px; color: var(--primary); background: var(--primary-soft); font-size:11px; }
.optimization-no-evidence { color: var(--muted); background: var(--surface-soft); }

.optimization-benchmarks { display: grid; gap: 7px; }
.optimization-benchmarks article { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 12px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.optimization-benchmarks img, .optimization-benchmark-placeholder { width: 64px; height: 64px; border-radius: 7px; }
.optimization-benchmarks img { object-fit: cover; }
.optimization-benchmark-placeholder { display: grid; place-items: center; color: #fff; background: var(--sidebar); }
.optimization-benchmarks span { color: var(--primary); font-size:11px; }
.optimization-benchmarks h4 { margin: 4px 0; font-size: 11px; }
.optimization-benchmarks p { margin: 0; color: var(--muted); font-size:11px; }
.optimization-benchmarks a { display: inline-block; margin-top: 5px; font-size:11px; }

.optimization-recommendations { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.optimization-recommendations article { display: flex; flex-direction: column; padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.optimization-recommendations header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.optimization-recommendations header span { color: var(--primary); font-size:11px; font-weight: 700; }
.optimization-recommendations header b { color: var(--muted); font-size:11px; }
.optimization-recommendations h4 { margin: 9px 0 6px; font-size: 12px; }
.optimization-recommendations p { margin: 0; color: var(--ink); font-size:11px; line-height: 1.7; }
.optimization-recommendations > article > small { display: block; margin-top: 6px; color: var(--muted); font-size:11px; line-height: 1.55; }
.optimization-recommendations footer { display: grid; gap: 3px; margin-top: auto; padding-top: 11px; border-top: 1px solid var(--line); }
.optimization-recommendations footer strong { color: var(--primary); font-size:11px; }
.optimization-recommendations footer span { color: var(--muted); font-size:11px; line-height: 1.6; }

.optimization-validations { display: grid; gap: 7px; }
.optimization-validations article { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 10px; padding: 11px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.optimization-validations article > b { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: #fff; background: var(--primary-solid); font-size:11px; }
.optimization-validations h4 { margin: 0 0 4px; font-size:11px; }
.optimization-validations p { margin: 0; color: var(--muted); font-size:11px; line-height: 1.6; }
.optimization-validations small { display: block; margin-top: 5px; color: var(--primary); font-size:11px; }
.optimization-report-section details > summary { color: var(--primary); font-size:11px; font-weight: 700; cursor: pointer; }
.optimization-evidence-list { display: grid; gap: 7px; margin-top: 13px; }
.optimization-evidence-list article { display: grid; grid-template-columns: minmax(140px, .42fr) 1fr auto; gap: 12px; align-items: start; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); }
.optimization-evidence-list strong, .optimization-evidence-list span { display: block; }
.optimization-evidence-list strong { font-size:11px; }
.optimization-evidence-list span { margin-top: 3px; color: var(--muted); font-size:11px; }
.optimization-evidence-list p { margin: 0; color: var(--muted); font-size:11px; line-height: 1.55; }
.optimization-evidence-list a { font-size:11px; white-space: nowrap; }

.optimization-outcome { display: grid; grid-template-columns: 1fr 150px minmax(220px, 1.4fr) auto; gap: 12px; align-items: end; margin-top: 0; }
.optimization-outcome h3 { margin: 5px 0 0; }
.optimization-outcome label { font-size:11px; }
.optimization-outcome textarea { min-height: 42px; height: 42px; }
.optimization-outcome select, .optimization-outcome textarea { margin-top: 4px; padding: 8px; }
.optimization-outcome button { height: 42px; }

@media (max-width: 1220px) {
  .optimization-layout { grid-template-columns: 1fr; }
  .optimization-history { position: static; max-height: none; }
  #optimization-history-list { grid-template-columns: repeat(3, 1fr); max-height: 300px; }
}

@media (max-width: 820px) {
  .optimization-hero { align-items: flex-start; }
  .optimization-hero-rule { flex-basis: 100px; }
  .optimization-evidence-grid, .optimization-dimensions, .optimization-recommendations { grid-template-columns: 1fr; }
  .optimization-report-hero { grid-template-columns: 132px minmax(0, 1fr); }
  .optimization-score { min-height: 260px; padding: 16px; }
  .optimization-score strong { font-size: 46px; }
  .optimization-group-grid { grid-template-columns: 1fr; }
  .optimization-outcome { grid-template-columns: 1fr 1fr; }
  .optimization-outcome > div { grid-column: 1 / -1; }
  #optimization-history-list { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
  .optimization-hero { display: block; }
  .optimization-hero-rule { width: 100%; margin-top: 18px; }
  .optimization-form-section-head, .optimization-submit-row { align-items: stretch; flex-direction: column; }
  .optimization-prefill { grid-template-columns: 1fr; }
  .optimization-prefill button { width: 100%; }
  .optimization-prefill-result { grid-column: 1; }
  .optimization-form-section-head > label { width: 100%; }
  .optimization-submit-row .primary { width: 100%; }
  .optimization-snapshot-search { grid-template-columns: 1fr; }
  .optimization-report-hero { grid-template-columns: 1fr; }
  .optimization-score { min-height: 150px; }
  .optimization-progress ol { grid-template-columns: repeat(2, 1fr); }
  .optimization-evidence-list article { grid-template-columns: 1fr; }
  .optimization-outcome, #optimization-history-list { grid-template-columns: 1fr; }
}

/* 罗盘原生效率版：全站高密度数据工作台 */


html { color-scheme: light; background: var(--paper); }
body { margin: 0; min-width: 320px; overflow-x: hidden; color: var(--ink); background: var(--paper); font-family: var(--font-ui); font-size: 14px; }
::selection { color: #fff; background: var(--primary); }
* { scrollbar-width: thin; scrollbar-color: #a3a3a3 transparent; }
*::-webkit-scrollbar { width: 9px; height: 9px; }
*::-webkit-scrollbar-thumb { border: 2px solid transparent; border-radius: 8px; background: #a3a3a3; background-clip: padding-box; }
*::-webkit-scrollbar-track { background: transparent; }

button, input, textarea, select { color: inherit; font-family: inherit; }
button, a, summary, input, textarea, select { touch-action: manipulation; }
button:focus-visible, a:focus-visible, summary:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
button { transition: color .16s ease, background-color .16s ease, border-color .16s ease, box-shadow .16s ease; }
a { color: var(--primary); text-underline-offset: 3px; }

.app-shell { display: grid; grid-template-columns: var(--sidebar-width) minmax(0, 1fr); min-height: 100vh; }
.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 20;
  display: flex;
  flex-direction: column;
  width: var(--sidebar-width);
  padding: 18px 12px;
  overflow-y: auto;
  color: var(--ink);
  background: var(--sidebar);
  border-right: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 8px 16px; border-bottom: 1px solid var(--line); }
.brand-mark { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 4px; color: #fff; background: var(--primary); font: 800 18px/1 var(--font-ui); transform: none; }
.brand strong, .brand small { display: block; }
.brand strong { color: var(--ink); font-size: 16px; font-weight: 800; letter-spacing: 0; }
.brand small { margin-top: 2px; color: var(--muted); font-size: 11px; }
.sidebar nav { display: grid; gap: 2px; margin-top: 10px; }
.nav-group { padding: 5px 0 7px; border-bottom: 1px solid var(--line); }
.nav-group:last-child { border-bottom: 0; }
.nav-group-toggle {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr) 12px;
  gap: 8px;
  align-items: center;
  width: 100%;
  min-height: 40px;
  padding: 8px 9px;
  border: 0;
  border-radius: 4px;
  color: #525252;
  background: transparent;
  text-align: left;
}
.nav-group-toggle:hover { color: var(--ink); background: var(--sidebar-hover); }
.nav-group-toggle svg { width: 17px; height: 17px; fill: none; stroke: #525252; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.nav-group-toggle span { font-size: 14px; font-weight: 750; }
.nav-group-toggle i { color: #737373; font-size: 12px; font-style: normal; transition: transform .16s ease; }
.nav-group-items { display: grid; gap: 1px; padding: 2px 0 2px 26px; }
.nav-item {
  position: relative;
  width: 100%;
  min-height: 36px;
  padding: 7px 9px 7px 12px;
  border: 0;
  border-radius: 3px;
  color: var(--sidebar-muted);
  background: transparent;
  text-align: left;
}
.nav-item::before { content: ""; position: absolute; top: 8px; bottom: 8px; left: 0; width: 2px; height: auto; background: transparent; }
.nav-item span { color: inherit; font-size: 13px; }
.nav-item:hover { color: var(--ink); background: var(--sidebar-hover); }
.nav-item.active { color: var(--primary); background: #f5f5f5; box-shadow: none; font-weight: 750; }
.nav-item.active::before { top: 7px; bottom: 7px; width: 3px; height: auto; background: var(--primary); }

main { grid-column: 2; min-width: 0; width: auto; max-width: none; margin: 0; padding: 0 var(--page-gutter) 40px; }
.topbar {
  position: sticky;
  top: 0;
  z-index: 15;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 62px;
  margin: 0 calc(var(--page-gutter) * -1);
  padding: 0 var(--page-gutter);
  border-bottom: 1px solid var(--line);
  background: rgba(255, 255, 255, .97);
}
.topbar .eyebrow, .kicker, .step-label { display: none; }
.topbar h1 { margin: 0; color: var(--ink); font: 800 22px/1.2 var(--font-ui); letter-spacing: -.02em; }
.topbar-actions { display: flex; align-items: center; gap: 8px; }
.session-user { min-height: 34px; padding: 0 10px; border-color: var(--line-strong); border-radius: 4px; color: #525252; background: #fff; font-size: 12px; }
.view { display: none; padding-top: 16px; }
.view.active { display: block; }

.panel,
.hero-card,
.optimization-hero,
.luopan-login-hero,
.category-radar-brief,
.database-product-hero,
.market-fallback {
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--ink);
  background: var(--panel);
  box-shadow: none;
}
.panel { margin-top: var(--section-gap); padding: 18px 20px; }
.panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.panel h3, .section-title h3, .database-table-head h3 { margin: 0; color: var(--ink); font-size: 17px; line-height: 1.4; }
.panel-head p, .config-intro { margin: 4px 0 0; color: var(--muted); font-size: 13px; line-height: 1.55; }
.page-intro { min-height: 0; padding: 12px 0 4px; }
.page-intro h2 { margin: 0; color: var(--ink); font: 800 24px/1.3 var(--font-ui); letter-spacing: -.02em; }
.page-intro p { margin: 5px 0 0; color: var(--muted); font-size: 14px; line-height: 1.55; }

label { color: #525252; font-size: 13px; font-weight: 700; }
input, textarea, select {
  width: 100%;
  min-height: 38px;
  margin-top: 5px;
  padding: 8px 10px;
  border: 1px solid var(--line-strong);
  border-radius: 4px;
  outline: none;
  color: var(--ink);
  background: #fff;
  font-size: 14px;
  transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}
input::placeholder, textarea::placeholder { color: #a3a3a3; }
input:hover, textarea:hover, select:hover { border-color: #a3a3a3; }
input:focus, textarea:focus, select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(47, 107, 255, .12); }
textarea { min-height: 82px; resize: vertical; }
.form-grid { gap: 14px; }
.primary, .ghost, .danger {
  min-height: 36px;
  padding: 8px 14px;
  border-radius: 4px;
  font-size: 13px;
  font-weight: 750;
  box-shadow: none;
}
.primary { border: 1px solid var(--primary); color: #fff; background: var(--primary); }
.primary:hover { border-color: var(--primary-hover); background: var(--primary-hover); }
.ghost { border: 1px solid var(--line-strong); color: #525252; background: #fff; }
.ghost:hover { border-color: #a3a3a3; color: var(--ink); background: #fafafa; }
.danger { border: 1px solid #a3a3a3; color: #525252; background: #f5f5f5; }
.actions { margin-top: 16px; }
.badge { min-height: 24px; padding: 4px 8px; border-radius: 4px; color: #525252; background: #f5f5f5; font-size: 12px; letter-spacing: 0; }
.badge.green { color: #525252; background: #f5f5f5; }
.badge.amber { color: #525252; background: #f5f5f5; }
.security-note, .setup-banner, .analysis-progress, .cmm-query-box { border: 1px solid var(--line); border-radius: 5px; background: var(--surface-soft); box-shadow: none; }
.empty { padding: 34px 20px; border-color: var(--line-strong); border-radius: 5px; color: var(--muted); font-size: 14px; }

table { font-variant-numeric: tabular-nums; }
.database-metric, .database-rank, .category-radar-rank, .category-radar-product-metrics, .collector-task-meta, output { font-variant-numeric: tabular-nums; }

/* 裂变推荐 */
.hero-card {
  position: static;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  min-height: 0;
  padding: 20px 22px;
  overflow: visible;
}
.hero-card::after { display: none; }
.hero-card h2 { max-width: none; margin: 0; color: var(--ink); font: 800 24px/1.35 var(--font-ui); letter-spacing: -.02em; }
.hero-card p { margin: 6px 0 0; color: var(--muted); font-size: 14px; line-height: 1.55; }
.hero-stat { min-width: 110px; padding-left: 20px; border-left: 1px solid var(--line); text-align: right; }
.hero-stat strong { display: block; color: var(--primary); font: 800 32px/1 var(--font-ui); }
.hero-stat span { display: block; margin-top: 5px; color: var(--muted); font-size: 12px; letter-spacing: 0; }
.cmm-query-box { grid-template-columns: minmax(0, 1fr) 230px; gap: 16px; margin-top: 14px; padding: 14px 16px; }
.cmm-query-box p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.55; }
.confirm-layout { grid-template-columns: minmax(300px, .8fr) minmax(0, 1.7fr); gap: 12px; }
.spu-card { border: 1px solid var(--line); border-radius: 5px; color: var(--ink); background: var(--surface-soft); }
.spu-card span, .spu-card p, .spu-card em { color: var(--muted); }
.spu-card input { color: var(--ink); background: #fff; border-color: var(--line-strong); }
.tag-editor-wrap, .tag-field { border-color: var(--line); border-radius: 5px; background: var(--surface-soft); }
.tag-editor { gap: 8px; }
.tag-field span { color: #525252; font-size: 12px; }
.tag-field textarea { font-size: 13px; }
.result-header { padding: 18px 0 10px; }
.result-header h2 { margin: 0; font: 800 22px/1.35 var(--font-ui); }
.result-header p { margin: 5px 0 0; font-size: 13px; }
.candidate-list { gap: 0; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.candidate-card {
  grid-template-columns: 46px minmax(230px, 1.1fr) minmax(280px, 1.7fr) 74px 126px;
  gap: 14px;
  padding: 13px 14px;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: #fff;
}
.candidate-card:last-child { border-bottom: 0; }
.candidate-card:hover { transform: none; border-color: var(--line); background: #fafafa; box-shadow: none; }
.candidate-name strong { font-size: 14px; }
.candidate-name small, .candidate-name .evidence-title, .market-evidence, .visual-evidence, .unknown-evidence, .source-link { font-size: 12px; }
.reason { color: #525252; font-size: 13px; }
.card-actions button, .card-actions select { min-height: 32px; font-size: 12px; }
.score-ring { width: 48px; height: 48px; background: var(--surface-soft); }
.score-ring::before { background: #fff; }
.score-ring strong { font: 750 15px var(--font-ui); }
.score-ring small { top: 31px; font-size:11px; }
.section-title { margin: 18px 0 9px; }
.section-title p { font-size: 13px; }
.section-number { color: var(--primary); font: 800 22px var(--font-ui); }

/* 产品优化诊断 */
.optimization-view { padding-bottom: 32px; }
.optimization-hero { display: flex; align-items: center; justify-content: space-between; min-height: 0; padding: 20px 22px; }
.optimization-hero h2 { max-width: none; margin: 0; color: var(--ink); font: 800 24px/1.35 var(--font-ui); }
.optimization-hero p { margin: 6px 0 0; color: var(--muted); font-size: 14px; line-height: 1.55; }
.optimization-hero-rule { flex: 0 0 auto; padding: 12px 16px; border: 1px solid var(--line); border-radius: 5px; color: var(--muted); background: var(--surface-soft); }
.optimization-hero-rule strong { color: var(--primary); font: 800 28px var(--font-ui); }
.optimization-hero-rule span { margin-top: 3px; font-size: 12px; }
.optimization-hero-rule small { color: var(--muted); font-size: 11px; }
.optimization-layout { grid-template-columns: minmax(0, 1fr) 300px; gap: 14px; }
.optimization-form, .optimization-history { margin-top: 14px; }
.optimization-source-tabs { border-radius: 4px; background: #f5f5f5; }
.optimization-source-tabs button { min-height: 36px; border-radius: 3px; font-size: 13px; }
.optimization-source-tabs button.active { background: var(--primary); }
.optimization-source-panel, .optimization-prefill, .optimization-more, .optimization-history-item, .optimization-snapshot-item,
.optimization-dimension, .optimization-benchmarks article, .optimization-recommendations article, .optimization-validations article,
.optimization-evidence-list article { border-radius: 4px; background: var(--surface-soft); }
.optimization-source-panel > p, .optimization-prefill p, .optimization-prefill-result,
.optimization-form-section-head span, .optimization-submit-row div > span, .optimization-history-item small,
.optimization-history-item em, .optimization-empty, .optimization-progress li, .optimization-group-grid span,
.optimization-group-grid small, .optimization-dimension p, .optimization-dimension > small,
.optimization-benchmarks p, .optimization-recommendations p, .optimization-recommendations footer span,
.optimization-validations p, .optimization-evidence-list span, .optimization-evidence-list p { font-size: 12px; }
.optimization-prefill strong, .optimization-form-section-head strong, .optimization-history-item strong,
.optimization-snapshot-item strong, .optimization-dimension h4, .optimization-benchmarks h4,
.optimization-recommendations h4, .optimization-validations h4, .optimization-evidence-list strong { font-size: 14px; }
.optimization-form label[data-ai-source]::after { color: var(--primary); font-size: 11px; }
.optimization-history { top: 76px; max-height: calc(100vh - 92px); }
.optimization-history-item b { color: var(--primary); font: 750 18px var(--font-ui); }
.optimization-progress-track { border-radius: 2px; background: #e5e5e5; }
.optimization-progress-track i { border-radius: 2px; background: var(--primary); }
.optimization-progress p { font-size: 13px; }
.optimization-report-hero { grid-template-columns: 160px minmax(0, 1fr); border-color: var(--line); border-radius: 5px; }
.optimization-score { min-height: 190px; padding: 20px; background: #404040; }
.optimization-score strong { font: 800 50px var(--font-ui); }
.optimization-score small { color: #d4d4d4; font-size: 12px; }
.optimization-report-summary { padding: 22px; }
.optimization-report-summary h2 { margin: 8px 0 6px; font-size: 22px; }
.optimization-report-summary > p { font-size: 13px; }
.optimization-group-grid article { border-radius: 4px; }
.optimization-group-grid strong { color: var(--primary); font: 800 22px var(--font-ui); }
#view-optimization .optimization-source-tabs button,
#view-optimization .optimization-source-panel > p,
#view-optimization .optimization-prefill p,
#view-optimization .optimization-prefill-result,
#view-optimization .optimization-prefill-result strong,
#view-optimization .optimization-form label[data-ai-source]::after,
#view-optimization .optimization-snapshot-item strong,
#view-optimization .optimization-snapshot-item small,
#view-optimization .optimization-snapshot-item em,
#view-optimization .optimization-snapshot-item > b,
#view-optimization .optimization-form-section-head span,
#view-optimization .optimization-form-section-head > label,
#view-optimization .optimization-more summary,
#view-optimization .optimization-submit-row strong,
#view-optimization .optimization-submit-row div > span,
#view-optimization .optimization-history-item strong,
#view-optimization .optimization-history-item small,
#view-optimization .optimization-history-item em,
#view-optimization .optimization-empty,
#view-optimization .optimization-progress p,
#view-optimization .optimization-progress li,
#view-optimization .optimization-report-summary > small,
#view-optimization .optimization-report-badges span,
#view-optimization #optimization-compliance-note p,
#view-optimization .optimization-group-grid span,
#view-optimization .optimization-group-grid small,
#view-optimization .optimization-report-section .panel-head > span,
#view-optimization .optimization-dimension header span,
#view-optimization .optimization-dimension.missing header > strong,
#view-optimization .optimization-dimension p,
#view-optimization .optimization-dimension > small,
#view-optimization .optimization-evidence-badges span,
#view-optimization .optimization-benchmarks span,
#view-optimization .optimization-benchmarks p,
#view-optimization .optimization-benchmarks a,
#view-optimization .optimization-recommendations header span,
#view-optimization .optimization-recommendations header b,
#view-optimization .optimization-recommendations p,
#view-optimization .optimization-recommendations > article > small,
#view-optimization .optimization-recommendations footer strong,
#view-optimization .optimization-recommendations footer span,
#view-optimization .optimization-validations h4,
#view-optimization .optimization-validations p,
#view-optimization .optimization-validations small,
#view-optimization .optimization-report-section details > summary,
#view-optimization .optimization-evidence-list strong,
#view-optimization .optimization-evidence-list span,
#view-optimization .optimization-evidence-list p,
#view-optimization .optimization-evidence-list a,
#view-optimization .optimization-outcome label { font-size: 12px; }

/* 榜单数据库 */
.database-mode { overflow: auto; }
.database-mode main { height: auto; padding: 0 var(--page-gutter) 24px; overflow: visible; }
.database-mode .topbar { display: flex; }
.database-mode .view { padding-top: 14px; }
.database-mode #view-database.active { display: block; height: auto; overflow: visible; }
.database-list-page { display: grid; grid-template-columns: minmax(0, 1fr); width: 100%; min-width: 0; gap: 10px; }
.database-filter-panel, .database-table-panel { min-width: 0; max-width: 100%; margin: 0; padding: 0; }
.database-filter-panel { overflow: visible; }
.database-table-panel { overflow: hidden; }
.database-filter-panel { padding: 10px 12px; }
.database-primary-filters {
  grid-template-columns: minmax(210px, 1.35fr) minmax(118px, .7fr) minmax(150px, .95fr) minmax(145px, .9fr) minmax(116px, .7fr) 96px auto;
  gap: 8px;
  align-items: end;
}
.database-filters label { min-width: 0; color: #525252; font-size: 11px; }
.database-filters input, .database-filters select { height: 32px; min-height: 32px; margin-top: 3px; padding: 5px 8px; border-radius: 4px; font-size: 12px; }
.database-follow-filter { align-self: end; min-height: 32px; padding: 6px 8px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; }
.database-follow-filter input { width: 16px; height: 16px; min-height: 0; margin: 0; }
.database-filter-actions { display: flex; align-self: end; justify-self: end; gap: 5px; height: 32px; }
.database-filter-actions > button { height: 32px; min-height: 32px; padding: 5px 9px; font-size: 12px; }
.database-advanced summary { display: grid; place-items: center; min-width: 64px; height: 32px; border-color: var(--line-strong); border-radius: 4px; font-size: 11px; }
.database-advanced-popover { top: 38px; right: 0; width: min(980px, calc(100vw - var(--sidebar-width) - 2 * var(--page-gutter))); padding: 12px; border-radius: 5px; background: #fff; box-shadow: var(--shadow); }
.database-table-head { min-height: 48px; padding: 11px 14px; border-bottom: 1px solid var(--line); }
.database-table-head h3 { font-size: 17px; }
.database-table-tools > span, .database-table-head > span { font-size: 12px; }
.database-standard summary { border-radius: 4px; font-size: 12px; }
.database-table-wrap { width: 100%; min-width: 0; max-width: 100%; overflow: auto; border: 0; border-radius: 0; }
.database-table { width: 100%; min-width: 1180px; table-layout: fixed; }
.database-table th {
  position: static;
  z-index: 2;
  height: 36px;
  padding: 8px 9px;
  color: #525252;
  background: #f5f5f5;
  border-bottom: 1px solid var(--line-strong);
  font-size: 12px;
  font-weight: 750;
}
.database-table td { height: 70px; padding: 8px 9px; color: #525252; border-bottom: 1px solid var(--line); font-size: 13px; line-height: 1.35; }
.database-table tbody tr:hover { background: #fafafa; }
.database-table th:nth-child(1) { width: 64px; }
.database-table th:nth-child(2) { width: 27%; }
.database-table th:nth-child(3) { width: 16%; }
.database-table th:nth-child(4) { width: 8%; }
.database-table th:nth-child(5) { width: 10%; }
.database-table th:nth-child(6), .database-table th:nth-child(7), .database-table th:nth-child(8) { width: 8%; }
.database-table th:nth-child(9) { width: 9%; }
.database-table th:nth-child(10) { width: 124px; }
.database-rank strong { color: var(--ink); font-size: 21px; }
.database-trend { font-size: 12px; }
.database-trend.up { color: #525252; }
.database-trend.down { color: #737373; }
.database-product { grid-template-columns: 48px minmax(0, 1fr); gap: 10px; }
.database-product img, .database-product-placeholder { width: 48px; height: 48px; border-radius: 4px; }
.database-product a, .database-product strong { color: var(--ink); font-size: 13px; line-height: 1.4; }
.database-product code, .database-product small, .database-shop span { margin-top: 3px; color: #737373; font: 11px/1.3 var(--font-ui); }
.database-product-labels { margin-top: 3px; }
.database-status { padding: 2px 5px; border-radius: 3px; font-size:11px; }
.database-shop strong { font-size: 13px; }
.database-metric { color: var(--ink); font-size: 14px; }
.database-date-cell strong { font-size: 13px; }
.database-date-cell span { font-size: 11px; }
.database-row-actions { display: grid; grid-template-columns: 34px 1fr; gap: 5px; min-width: 102px; }
.database-row-actions .database-follow-button { grid-row: span 2; width: 34px; min-height: 32px; border-radius: 4px; }
.database-trend-button, .database-cmm-button { min-height: 28px; padding: 5px 7px; border-radius: 3px; font-size: 11px; }
.database-row-actions .database-cmm-button { padding: 4px 3px; font-size: 11px; }
.database-standard > div p, .database-standard > div > small { font-size: 12px; }
.database-pagination { min-height: 48px; max-width: 100%; padding: 8px 12px; overflow-x: auto; border: 0; border-top: 1px solid var(--line); border-radius: 0; background: #fff; }
.database-pagination, .database-pagination > span, .database-pagination label, .database-pagination input, .database-pagination select, .database-pagination button { font-size: 12px; }
.database-pagination input, .database-pagination select { min-height: 32px; height: 32px; margin: 0; }
.database-table-head .kicker { display: none; }

/* 选品雷达 */
.market-statusbar { display: flex; align-items: center; gap: 10px; min-height: 40px; margin: 0; padding: 8px 12px; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.market-statusbar > span, .market-statusbar > small { color: var(--muted); font-size: 12px; }
.market-statusbar > strong { color: var(--ink); font-size: 14px; }
.category-radar-shell { display: grid; gap: 10px; margin-top: 10px; }
.category-radar-switch { display: flex; gap: 0; overflow-x: auto; border: 1px solid var(--line); border-radius: 5px 5px 0 0; background: #fff; }
.category-radar-switch button { min-width: 150px; padding: 10px 16px; border: 0; border-right: 1px solid var(--line); border-radius: 0; color: var(--muted); background: #fff; }
.category-radar-switch button span { color: var(--ink); font-size: 14px; }
.category-radar-switch button small { margin-top: 2px; color: var(--muted); font-size: 11px; }
.category-radar-switch button.active { color: var(--primary); background: #f5f5f5; box-shadow: inset 0 -2px var(--primary); }
.category-radar-switch button.active span { color: var(--primary); }
.category-radar-switch button.active small { color: #737373; }
.category-radar-track { display: flex; gap: 6px; margin-top: -10px; padding: 9px 12px; overflow-x: auto; border: 1px solid var(--line); border-top: 0; border-radius: 0 0 5px 5px; background: #fff; }
.category-radar-track button { flex: 0 0 auto; min-height: 32px; padding: 6px 10px; border: 1px solid transparent; border-radius: 3px; color: #525252; background: #f5f5f5; font-size: 12px; }
.category-radar-track button:hover { border-color: var(--line-strong); color: var(--ink); }
.category-radar-track button.active { border-color: var(--primary); color: var(--primary); background: #f5f5f5; }
.category-radar-brief { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 18px; border-left: 1px solid var(--line); }
.category-radar-brief h3 { margin: 0; font-size: 18px; }
.category-radar-brief p { margin: 4px 0 0; color: var(--muted); font-size: 13px; }
.category-radar-period { min-width: 230px; padding-left: 18px; border-left: 1px solid var(--line); }
.category-radar-period small, .category-radar-period span { color: var(--muted); font-size: 12px; }
.category-radar-period strong { margin: 2px 0; color: var(--ink); font-size: 14px; }
.category-radar-metrics { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.category-radar-metrics article { padding: 12px 14px; border: 0; border-right: 1px solid var(--line); border-radius: 0; background: #fff; }
.category-radar-metrics article:last-child { border-right: 0; }
.category-radar-metrics strong { color: var(--ink); font-size: 20px; }
.category-radar-metrics span { margin-top: 3px; color: #525252; font-size: 12px; }
.category-radar-metrics small { margin-top: 1px; color: #737373; font-size: 11px; }
.category-radar-focus { margin: 0; padding: 0; overflow: hidden; }
.category-radar-focus-head { align-items: end; margin: 0; padding: 12px 16px; }
.category-radar-focus-head h3 { font-size: 17px; }
.category-radar-focus-head p { margin-top: 3px; font-size: 12px; }
.category-radar-focus-head label { width: min(360px, 36vw); font-size: 12px; }
.category-radar-focus-head input { height: 36px; min-height: 36px; margin-top: 3px; font-size: 13px; }
.category-radar-signal-tabs { display: flex; gap: 0; padding: 0 16px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #fafafa; }
.category-radar-signal-tabs button { min-height: 40px; padding: 8px 14px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; color: #525252; background: transparent; font-size: 13px; }
.category-radar-signal-tabs button:hover { color: var(--ink); background: #f5f5f5; }
.category-radar-signal-tabs button.active { border-color: var(--primary); color: var(--primary); background: #fff; }
.category-radar-signal-tabs button span { min-width: 22px; padding: 2px 5px; border-radius: 3px; color: inherit; background: #e5e5e5; font-size: 11px; }
.category-radar-signal-tabs button.active span { color: #fff; background: var(--primary); }
.category-radar-product-list { display: grid; }
.category-radar-product {
  display: grid;
  grid-template-columns: 70px minmax(320px, 1.4fr) minmax(300px, 1fr) minmax(170px, .55fr) 116px;
  gap: 14px;
  align-items: center;
  min-height: 92px;
  padding: 10px 14px;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: #fff;
}
.category-radar-product:hover { background: #fafafa; }
.category-radar-rank { text-align: center; }
.category-radar-rank small { color: var(--muted); font-size: 11px; }
.category-radar-rank strong { margin: 1px 0; color: var(--ink); font-size: 28px; line-height: 1; }
.category-radar-rank span { color: #525252; font-size: 12px; }
.category-radar-product-main { grid-template-columns: 56px minmax(0, 1fr); gap: 10px; }
.category-radar-product-main img, .category-radar-product-placeholder { width: 56px; height: 56px; border: 1px solid var(--line); border-radius: 4px; background: #f5f5f5; }
.category-radar-product-main h4 { margin: 3px 0 2px; overflow: hidden; color: var(--ink); font-size: 14px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.category-radar-product-main p { color: var(--muted); font-size: 12px; }
.category-radar-product-main code { margin-top: 2px; color: #a3a3a3; font: 11px/1.3 var(--font-ui); }
.category-radar-product-tags { gap: 4px; }
.category-radar-tag { padding: 2px 5px; border-radius: 3px; font-size:11px; }
.category-radar-product-evidence { display: grid; grid-template-columns: minmax(0, 1fr) 128px; gap: 2px 12px; align-items: center; }
.category-radar-product-evidence strong { min-width: 0; overflow: hidden; color: var(--ink); font-size: 14px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.category-radar-product-evidence > span { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.35; }
.category-radar-sparkline { display: grid; grid-template-columns: 1fr; gap: 1px; justify-items: end; min-width: 120px; }
.category-radar-sparkline svg { display: block; width: 120px; height: 30px; overflow: visible; }
.category-radar-sparkline polyline { fill: none; stroke: #525252; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.category-radar-sparkline.down polyline { stroke: #737373; }
.category-radar-sparkline.flat polyline { stroke: #737373; }
.category-radar-sparkline span, .category-radar-sparkline-empty { color: #737373; font-size:11px; }
.category-radar-product-metrics { display: grid; gap: 4px; }
.category-radar-product-metrics span { display: flex; justify-content: space-between; gap: 8px; color: var(--muted); font-size: 12px; }
.category-radar-product-metrics b { color: var(--ink); font-size: 13px; }
.category-radar-product-actions { display: grid; grid-template-columns: 1fr; gap: 5px; }
.category-radar-product-actions button { min-height: 32px; border-radius: 3px; font-size: 12px; }
.category-radar-product-actions a { font-size: 11px; text-align: center; }
.category-radar-pagination { min-height: 48px; padding: 8px 14px; border-top: 1px solid var(--line); background: #fff; }
.category-radar-page-number { min-width: 32px; min-height: 32px; padding: 6px 8px; border-radius: 3px; }
.category-radar-page-number.active { border-color: var(--primary); color: #fff; background: var(--primary); }
.category-radar-lower-grid { grid-template-columns: minmax(0, 1.25fr) minmax(320px, .75fr); gap: 10px; }
.category-radar-lower-grid .panel { margin: 0; }

/* 采集维护、评分与接口 */
.luopan-login-hero { display: flex; align-items: center; justify-content: space-between; min-height: 0; padding: 18px 20px; }
.luopan-login-hero h2 { margin: 0; color: var(--ink); font: 800 24px/1.3 var(--font-ui); }
.luopan-login-hero p { margin: 5px 0 0; color: var(--muted); font-size: 13px; }
.collector-hero-states { min-width: 280px; }
.luopan-login-state { border: 0; background: var(--surface-soft); }
.yingdao-ingestion-grid { gap: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 5px; }
.yingdao-ingestion-grid > div { padding: 14px; border: 0; border-right: 1px solid var(--line); border-radius: 0; background: #fff; }
.yingdao-ingestion-grid > div:last-child { border-right: 0; }
.yingdao-ingestion-grid small, .yingdao-ingestion-grid span { font-size: 12px; }
.yingdao-ingestion-grid strong { font-size: 14px; }
.collector-maintenance-grid { grid-template-columns: minmax(420px, .9fr) minmax(0, 1.1fr); gap: 12px; }
.collector-card, .collector-run-card { margin-top: 12px; }
.market-collect-modes label, .collector-category-group, .collector-queue-item, .market-pairing-card { border-radius: 4px; background: var(--surface-soft); }
.market-collect-modes span, .collector-category-group-head strong, .collector-queue-item div strong, .collector-stop-row strong { font-size: 13px; }
.market-collect-modes small, .collector-category-group-head small, .collector-category-group label,
.collector-selection-summary, .market-collect-date-range label, .collector-queue-item span,
.collector-queue-item small, .market-collect-safety, .collector-stop-row span { font-size: 12px; }
.collector-hero-states .luopan-login-state small, .collector-hero-states .luopan-login-state span,
.collector-config-card .panel-head p, .collector-run-card .panel-head p,
.collector-task-role, .collector-category-head .text-button, .collector-category-group .text-button,
.collector-control-actions button, .market-manual-collect-head strong, .market-manual-collect-head small,
.collector-config-card > .text-button, .collector-run-card .progress-head p { font-size: 12px; }
.collector-task-meta { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 5px; }
.collector-task-meta > div { padding: 12px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #fff; }
.collector-task-meta dt { color: var(--muted); font-size: 12px; }
.collector-task-meta dd { margin-top: 3px; color: var(--ink); font-size: 14px; }
.settings-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.weight-card, .connection-card { border-radius: 5px; background: #fff; }
.weight-card h3 { font-size: 15px; }
.weight-card output { color: var(--primary); font: 800 18px var(--font-ui); }
.weight-card p { min-height: 0; font-size: 13px; }
.formula-card code { color: #e5e5e5; background: #404040; font: 13px/1.6 Consolas, monospace; }
.connection-grid { gap: 10px; margin-top: 12px; }
.connection-card { padding: 16px; }
.connection-card small, .connection-card p { font-size: 12px; }
.connection-card h3 { font-size: 16px; }
.connection-dot { box-shadow: none; }
.api-config-card { max-width: none; }
.security-note, .security-note strong, .security-note span, .text-link { font-size: 12px; }
.role-choice, .analysis-model-item, .analysis-capabilities { border-radius: 4px; background: var(--surface-soft); }
.analysis-model-item strong { font-size: 14px; }
.analysis-model-item span, .analysis-model-item small, .analysis-model-item b { font-size: 12px; }

/* 登录页 */
.login-shell { min-height: 100vh; color: var(--ink); background: var(--paper); }
.login-story { color: var(--ink); background: #f5f5f5; border-right: 1px solid var(--line); }
.login-story::before, .login-story::after { display: none; }
.login-brand span, .mobile-brand span { border-radius: 4px; color: #fff; background: var(--primary); transform: none; }
.login-brand strong, .mobile-brand strong { color: var(--ink); }
.login-brand small { color: var(--muted); font-size: 12px; letter-spacing: .12em; }
.story-copy .eyebrow, .panel-kicker { color: var(--primary); font-size: 12px; }
.story-copy h1 { color: var(--ink); font-family: var(--font-ui); font-weight: 800; letter-spacing: -.03em; }
.story-copy > p:last-child, .story-metrics, .panel-intro, .security-copy { color: var(--muted); }
.story-metrics { border-color: var(--line); font-size: 12px; }
.story-metrics b { color: var(--primary); font-family: var(--font-ui); }
.login-panel { background: #fff; }
.login-card, #login-form { border: 1px solid var(--line); border-radius: 6px; box-shadow: var(--shadow); backdrop-filter: none; }
.login-card h2, #login-form h2 { color: var(--ink); font-family: var(--font-ui); }
.panel-intro { font-size: 13px; line-height: 1.6; }
.login-error, .security-copy { font-size: 12px; }
.dingtalk-login strong { font-size: 14px; }
.dingtalk-login { border-radius: 4px; background: var(--primary); box-shadow: none; }
.dingtalk-login:hover { background: var(--primary-hover); }

dialog { width: min(980px, 92vw); border-radius: 6px; background: #fff; box-shadow: 0 24px 70px rgba(25, 42, 67, .24); }
dialog::backdrop { background: rgba(22, 31, 46, .48); backdrop-filter: none; }
.dialog-head { padding: 16px 18px; background: #fff; border-bottom-color: var(--line); }
.icon-button { border-radius: 4px; background: #f5f5f5; }
#toast { right: 20px; bottom: 20px; border-radius: 4px; color: #fff; background: #404040; font-size: 13px; box-shadow: var(--shadow); }

@media (max-width: 1380px) {

  .database-primary-filters { grid-template-columns: minmax(190px, 1.25fr) minmax(108px, .65fr) minmax(140px, .9fr) minmax(138px, .85fr) minmax(108px, .65fr) 92px auto; }
  .category-radar-product { grid-template-columns: 64px minmax(280px, 1.25fr) minmax(260px, 1fr) minmax(150px, .55fr) 108px; gap: 11px; }
  .category-radar-product-evidence { grid-template-columns: minmax(0, 1fr) 112px; }
  .category-radar-sparkline svg { width: 104px; }
}

@media (max-width: 1180px) {
  .optimization-layout, .collector-maintenance-grid { grid-template-columns: 1fr; }
  .settings-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .optimization-history { position: static; max-height: none; }
  .category-radar-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .category-radar-metrics article { border-bottom: 1px solid var(--line); }
  .category-radar-product { grid-template-columns: 58px minmax(260px, 1.25fr) minmax(240px, 1fr) 110px; grid-template-areas: "rank product evidence actions" "rank metrics metrics actions"; }
  .category-radar-rank { grid-area: rank; }
  .category-radar-product-main { grid-area: product; }
  .category-radar-product-evidence { grid-area: evidence; }
  .category-radar-product-metrics { grid-area: metrics; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .category-radar-product-actions { grid-area: actions; }
  .category-radar-lower-grid { grid-template-columns: 1fr; }
  .connection-grid { grid-template-columns: 1fr; }
}

@media (max-width: 850px) {

  .app-shell { display: block; }
  .sidebar {
    position: sticky;
    top: 0;
    z-index: 30;
    display: block;
    width: 100%;
    max-height: none;
    padding: 8px 12px;
    overflow: visible;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .brand { min-height: 42px; padding: 0 4px 7px; }
  .brand-mark { width: 32px; height: 32px; }
  .sidebar nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; margin-top: 5px; }
  .nav-group { min-width: 0; padding: 0; border: 1px solid var(--line); border-radius: 4px; }
  .nav-group-toggle { grid-template-columns: 16px minmax(0, 1fr) 10px; min-height: 34px; padding: 6px 7px; }
  .nav-group-toggle span { font-size: 12px; }
  .nav-group-items { padding: 2px 5px 5px; }
  .nav-item { min-height: 31px; padding: 5px 6px 5px 10px; }
  .nav-item span { font-size: 11px; }
  main { padding: 0 var(--page-gutter) 28px; }
  .topbar { top: 134px; height: 52px; }
  .topbar h1 { font-size: 19px; }
  .database-mode main { padding-inline: var(--page-gutter); }
  .hero-card, .optimization-hero, .luopan-login-hero, .category-radar-brief { display: grid; grid-template-columns: 1fr; gap: 12px; }
  .hero-stat, .category-radar-period { min-width: 0; padding: 10px 0 0; border-left: 0; border-top: 1px solid var(--line); text-align: left; }
  .cmm-query-box { grid-template-columns: 1fr; }
  .confirm-layout, .form-grid, .settings-grid, .optimization-dimensions, .optimization-recommendations { grid-template-columns: 1fr; }
  .span-2 { grid-column: auto; }
  .database-primary-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .database-keyword { grid-column: 1 / -1; }
  .database-filter-actions { grid-column: auto; align-self: end; justify-self: stretch; }
  .database-advanced-popover { position: static; width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); box-shadow: none; }
  .category-radar-focus-head { display: grid; }
  .category-radar-focus-head label { width: 100%; }
  .category-radar-product-list { overflow-x: auto; }
  .category-radar-product { min-width: 930px; }
  .category-radar-switch button { min-width: 132px; }
  .login-shell { display: block; }
  .login-story { min-height: auto; padding: 28px 22px; border-right: 0; border-bottom: 1px solid var(--line); }
  .login-panel { padding: 28px 18px; }
}

@media (max-width: 560px) {
  .sidebar { position: relative; padding-bottom: 6px; }
  .sidebar nav { display: flex; gap: 4px; margin-top: 4px; padding-bottom: 3px; overflow-x: auto; }
  .nav-group { display: flex; flex: 0 0 auto; border: 0; }
  .nav-group-toggle { display: none; }
  .nav-group-items { display: flex; gap: 4px; padding: 0; }
  .nav-group, .nav-group-items { width: max-content; min-width: max-content; }
  .nav-group.collapsed .nav-group-items { display: flex; }
  .nav-item { width: auto; flex: 0 0 auto; min-height: 44px; padding: 8px 12px; border: 1px solid var(--line); background: #fff; white-space: nowrap; }
  .nav-item::before { display: none; }
  .nav-item span { font-size: 12px; }
  .topbar { position: static; top: auto; }
  .topbar-actions .session-user { display: none; }
  .hero-card h2, .optimization-hero h2, .luopan-login-hero h2, .page-intro h2 { font-size: 21px; }
  .candidate-card { grid-template-columns: 36px minmax(0, 1fr); }
  .candidate-card .reason, .candidate-card .score-ring, .candidate-card .card-actions { grid-column: 2; }
  .database-primary-filters, .database-advanced-popover, .category-radar-metrics,
  .collector-task-meta, .optimization-group-grid { grid-template-columns: 1fr; }
  .database-filter-actions { width: 100%; }
  .database-filter-actions > button { flex: 1; }
  .category-radar-product { min-width: 840px; }
  .category-radar-signal-tabs { overflow-x: auto; }
  .category-radar-signal-tabs button { flex: 0 0 auto; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto; animation-duration: .01ms; animation-iteration-count: 1; transition-duration: .01ms; }
}

.competitor-view {
  --competitor-blue: #525252;
  --competitor-blue-soft: #f5f5f5;
  --competitor-teal: #737373;
  --competitor-gold: #737373;
  position: relative;
}

.competitor-workspace-tabs { margin-bottom: 12px; background: #fff; border-bottom: 1px solid var(--line); }
.competitor-history-toolbar { display: flex; align-items: end; flex-wrap: wrap; gap: 12px; padding: 16px 0; }
.competitor-history-toolbar label { flex: 1; max-width: 560px; }
.competitor-history-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 20px; background: #fff; border-bottom: 1px solid var(--line); }
.competitor-history-row h3 { font-size: 15px; margin: 0 0 8px; overflow-wrap: anywhere; }
.competitor-history-row p, .competitor-task-log p, .competitor-source-note { color: var(--muted); line-height: 1.7; font-size: 12px; margin: 6px 0; }
.competitor-history-row button { flex-shrink: 0; }
.competitor-task-log { padding: 16px 20px; border-top: 1px solid var(--line); }
.competitor-task-log summary { cursor: pointer; font-weight: 700; }
.competitor-task-log article { padding: 12px 0; border-bottom: 1px solid var(--line); }
.competitor-fact-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); margin: 12px 0; border-top: 1px solid var(--line); }
.competitor-fact-grid > div { padding: 12px 8px; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; }
.competitor-fact-grid dt { color: var(--muted); font-size: 12px; }
.competitor-fact-grid dd { margin: 6px 0 0; font-size: 14px; line-height: 1.65; }
#competitor-clear-selection[hidden] { display: none; }

.competitor-search {
  display: grid;
  grid-template-columns: minmax(360px, 1fr) 150px auto;
  gap: 14px;
  align-items: end;
  padding: 18px 20px 14px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
}
.competitor-search label > span,
.competitor-search-period > span { display: block; margin-bottom: 5px; color: #404040; font-size: 12px; font-weight: 750; }
.competitor-search input { margin: 0; height: 42px; font-size: 14px; }
.competitor-search .primary { min-height: 42px; border-radius: 4px; }
.competitor-search-period { min-height: 42px; padding: 5px 10px; border: 1px solid var(--line-strong); border-radius: 4px; background: var(--surface-soft); }
.competitor-search-period > span { margin: 0; color: var(--muted); font-size:11px; }
.competitor-search-period strong { display: inline-block; margin-top: 2px; font-size: 14px; }
.competitor-search-period small { margin-left: 6px; color: var(--muted); font-size:11px; }
.competitor-search-ledger { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 12px; }
.competitor-search-ledger span { margin-right: 7px; color: var(--competitor-blue); font-weight: 800; }

.competitor-welcome { padding: clamp(52px, 8vh, 90px) 24px; text-align: center; }
.competitor-route-line { display: flex; justify-content: center; align-items: center; gap: 28px; margin-bottom: 24px; }
.competitor-route-line::before,
.competitor-route-line::after { content: ""; width: 74px; height: 1px; background: #d4d4d4; }
.competitor-route-line i { width: 9px; height: 9px; border-radius: 50%; background: #a3a3a3; box-shadow: 0 5px 14px rgba(47, 107, 255, .2); }
.competitor-route-line i:nth-child(2) { width: 13px; height: 13px; background: var(--competitor-blue); }
.competitor-welcome h2 { max-width: 720px; margin: 0 auto; color: #171717; font-size: clamp(24px, 2.5vw, 36px); line-height: 1.25; letter-spacing: -.03em; }
.competitor-welcome p { max-width: 720px; margin: 16px auto 0; color: var(--muted); font-size: 14px; line-height: 1.8; }
.competitor-welcome dl { display: flex; justify-content: center; gap: 0; margin: 30px auto 0; }
.competitor-welcome dl div { min-width: 150px; padding: 0 24px; border-right: 1px solid var(--line); }
.competitor-welcome dl div:last-child { border-right: 0; }
.competitor-welcome dt { color: var(--muted); font-size: 11px; }
.competitor-welcome dd { margin: 6px 0 0; color: #404040; font-size: 15px; font-weight: 800; }

.competitor-results { margin-top: 12px; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
.competitor-stage-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 18px 12px; }
.competitor-stage-head h2 { margin: 0; color: #171717; font-size: 19px; letter-spacing: -.02em; }
.competitor-stage-head p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
.competitor-plan-actions { display: flex; align-items: end; gap: 8px; }
.competitor-plan-actions label { display: grid; grid-template-columns: auto 132px; align-items: center; gap: 7px; font-size: 11px; }
.competitor-plan-actions select { min-height: 34px; margin: 0; }
.competitor-plan-actions button { min-height: 34px; border-radius: 4px; }

.competitor-story-tabs { display: flex; gap: 4px; padding: 0 12px; overflow-x: auto; border-bottom: 1px solid var(--line); }
.competitor-story-tabs button { position: relative; flex: 0 0 auto; min-height: 43px; padding: 0 14px; border: 0; color: #525252; background: transparent; font-size: 13px; font-weight: 700; }
.competitor-story-tabs button::after { content: ""; position: absolute; right: 12px; bottom: -1px; left: 12px; height: 2px; background: transparent; }
.competitor-story-tabs button:hover { color: var(--ink); background: #fafafa; }
.competitor-story-tabs button.active { color: var(--competitor-blue); }
.competitor-story-tabs button.active::after { background: var(--competitor-blue); }
.competitor-story-tabs { scrollbar-width: none; }
.competitor-story-tabs::-webkit-scrollbar { display: none; }

.competitor-selection-bar { position: sticky; top: 62px; z-index: 9; display: flex; align-items: center; gap: 12px; min-height: 50px; padding: 8px 16px; border-bottom: 1px solid var(--line); background: #fafafa; }
.competitor-selection-bar label { display: flex; align-items: center; gap: 7px; white-space: nowrap; }
.competitor-selection-bar input { width: 16px; min-height: 16px; margin: 0; accent-color: var(--competitor-blue); }
.competitor-selection-bar .text-button { width: auto; padding: 0; color: #525252; font-size: 11px; }
.competitor-quick-select { display: flex; align-items: center; gap: 4px; padding: 0 8px; border-left: 1px solid var(--line); border-right: 1px solid var(--line); }
.competitor-quick-select .text-button { min-height: 28px; padding: 0 7px; border-radius: 3px; color: var(--competitor-blue); font-weight: 700; }
.competitor-quick-select .text-button:hover { background: var(--competitor-blue-soft); }
.competitor-selection-bar > span { margin-left: auto; color: var(--muted); font-size: 12px; }
.competitor-selection-bar > strong { color: var(--competitor-gold); font-size: 12px; }
.competitor-selection-bar .primary { min-height: 34px; padding: 7px 12px; border-radius: 4px; box-shadow: none; }
.competitor-selection-bar .primary:disabled { cursor: not-allowed; border-color: #d4d4d4; background: #d4d4d4; }

.competitor-table-shell { position: relative; min-height: 210px; overflow: auto; }
.competitor-table { width: 100%; min-width: 1120px; border-collapse: collapse; table-layout: auto; }
.competitor-table th { position: sticky; top: 0; z-index: 3; height: 42px; padding: 0 10px; border-bottom: 1px solid var(--line); color: #525252; background: #fafafa; font-size: 11px; font-weight: 750; text-align: left; white-space: nowrap; }
.competitor-table td { height: 62px; padding: 8px 10px; border-bottom: 1px solid #f5f5f5; color: #404040; font-size: 12px; vertical-align: middle; white-space: nowrap; }
.competitor-table tbody tr:hover { background: #fafafa; }
.competitor-table tbody tr.is-selected { background: var(--competitor-blue-soft); }
.competitor-table tbody tr:last-child td { border-bottom: 0; }
.competitor-table input[type="checkbox"] { width: 16px; min-height: 16px; margin: 0; accent-color: var(--competitor-blue); }
.competitor-product-cell { display: grid; grid-template-columns: 42px minmax(220px, 1fr); gap: 9px; align-items: center; max-width: 390px; }
.competitor-product-cell img,
.competitor-product-placeholder { width: 42px; height: 42px; border-radius: 4px; object-fit: cover; background: #f5f5f5; }
.competitor-product-placeholder { display: grid; place-items: center; color: #737373; font-weight: 800; }
.competitor-product-title { display: block; max-width: 100%; padding: 0; overflow: hidden; border: 0; color: #171717; background: transparent; font-size: 12px; font-weight: 750; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.competitor-product-title:hover { color: var(--competitor-blue); text-decoration: underline; text-underline-offset: 2px; }
.competitor-product-cell small { display: block; margin-top: 4px; overflow: hidden; color: #525252; font-size:11px; text-overflow: ellipsis; white-space: nowrap; }
.competitor-product-meta { display: flex; align-items: center; gap: 7px; }
.competitor-product-meta > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.competitor-product-link { flex: 0 0 auto; color: var(--competitor-blue); font-weight: 700; text-decoration: none; }
.competitor-product-link:hover { text-decoration: underline; text-underline-offset: 2px; }
.competitor-source-cell strong,
.competitor-source-cell small { display: block; max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
.competitor-source-cell small { margin-top: 4px; color: var(--muted); font-size:11px; }
.competitor-status { display: inline-flex; align-items: center; gap: 5px; padding: 4px 7px; border-radius: 3px; color: #525252; background: #f5f5f5; font-size:11px; }
.competitor-status.complete { color: #525252; background: #f5f5f5; }
.competitor-status.partial { color: #525252; background: #f5f5f5; }
.competitor-view-detail { padding: 5px 8px; border: 1px solid #a3a3a3; border-radius: 3px; color: var(--competitor-blue); background: #fff; font-size: 11px; }
.competitor-table-empty { display: grid; place-items: center; gap: 7px; min-height: 230px; color: var(--muted); }
.competitor-table-empty strong { color: #404040; }
.competitor-range-note { margin: 0; padding: 10px 16px; border-top: 1px solid var(--line); color: var(--muted); background: #fafafa; font-size: 11px; }

.competitor-columns-panel { position: fixed; top: 74px; right: 18px; z-index: 32; width: min(350px, calc(100vw - 36px)); max-height: calc(100vh - 92px); padding: 16px; overflow: auto; border: 1px solid var(--line-strong); border-radius: 8px; background: #fff; box-shadow: 0 18px 45px rgba(31, 52, 84, .16); }
.competitor-panel-head { display: flex; justify-content: space-between; gap: 12px; }
.competitor-panel-head strong,
.competitor-panel-head span { display: block; }
.competitor-panel-head strong { color: #404040; font-size: 14px; }
.competitor-panel-head span { margin-top: 3px; color: var(--muted); font-size: 11px; }
.competitor-field-search { display: block; margin: 12px 0; }
.competitor-field-search input { margin: 0; }
.competitor-column-list { display: grid; gap: 4px; }
.competitor-column-item { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 8px; align-items: center; min-height: 37px; padding: 5px 8px; border: 1px solid transparent; border-radius: 4px; color: #404040; background: #fafafa; cursor: grab; }
.competitor-column-item.dragging { opacity: .45; border-color: var(--competitor-blue); }
.competitor-column-item input { width: 15px; min-height: 15px; margin: 0; accent-color: var(--competitor-blue); }
.competitor-column-item small { color: var(--muted); font-size:11px; }
.competitor-save-scheme { display: grid; grid-template-columns: 1fr auto; gap: 8px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.competitor-save-scheme input { margin: 0; }
.competitor-save-scheme button { min-height: 38px; padding-inline: 12px; border-radius: 4px; box-shadow: none; }

.competitor-comparison { margin-top: 12px; overflow: auto; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
.competitor-comparison header { position: sticky; left: 0; display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--line); }
.competitor-comparison h3 { margin: 0; font-size: 16px; }
.competitor-comparison table { min-width: 760px; width: 100%; border-collapse: collapse; }
.competitor-comparison th,
.competitor-comparison td { min-width: 150px; padding: 10px 12px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: 11px; text-align: left; vertical-align: top; }
.competitor-comparison th:first-child,
.competitor-comparison td:first-child { position: sticky; left: 0; z-index: 2; min-width: 120px; color: #525252; background: #fafafa; }

.competitor-detail-drawer { position: fixed; inset: 0 0 0 auto; z-index: 40; width: min(620px, calc(100vw - var(--sidebar-width) - 24px)); transform: translateX(calc(100% + 12px)); overscroll-behavior: contain; border-left: 1px solid var(--line-strong); background: #fff; box-shadow: -16px 0 44px rgba(31, 52, 84, .14); transition: transform .24s cubic-bezier(.22, 1, .36, 1); }
.competitor-detail-drawer.open { transform: translateX(0); }
.competitor-detail-drawer.collapsed { width: 46px; }
.competitor-detail-drawer.collapsed .competitor-drawer-inner { visibility: hidden; opacity: 0; }
.competitor-drawer-collapse { position: absolute; top: 48%; left: -29px; z-index: 2; display: grid; place-items: center; width: 30px; height: 58px; border: 1px solid var(--line-strong); border-right: 0; border-radius: 6px 0 0 6px; color: #525252; background: #fff; box-shadow: -7px 4px 16px rgba(31, 52, 84, .08); }
.competitor-drawer-collapse svg,
.competitor-view .icon-button svg,
.competitor-detail-drawer .icon-button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.competitor-drawer-collapse svg { transition: transform .18s ease; }
.competitor-detail-drawer.collapsed .competitor-drawer-collapse { left: -30px; }
.competitor-detail-drawer.collapsed .competitor-drawer-collapse svg { transform: rotate(180deg); }
.competitor-drawer-inner { height: 100%; overflow: hidden; transition: opacity .16s ease; }
.competitor-drawer-head { display: flex; justify-content: space-between; gap: 14px; min-height: 112px; padding: 20px 22px 16px; border-bottom: 1px solid var(--line); }
.competitor-drawer-product { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 12px; align-items: start; }
.competitor-drawer-product img,
.competitor-drawer-product .competitor-product-placeholder { width: 72px; height: 72px; }
.competitor-drawer-product h2 { margin: 0; color: #171717; font-size: 16px; line-height: 1.45; }
.competitor-drawer-product p { margin: 5px 0 0; color: var(--muted); font-size: 11px; }
.competitor-drawer-product a { display: inline-block; margin-top: 7px; font-size: 11px; }
.competitor-drawer-tabs { display: flex; gap: 0; padding: 0 16px; overflow-x: auto; border-bottom: 1px solid var(--line); scrollbar-width: none; }
.competitor-drawer-tabs::-webkit-scrollbar { display: none; }
.competitor-drawer-tabs button { flex: 0 0 auto; min-height: 43px; padding: 0 10px; border: 0; border-bottom: 2px solid transparent; color: #737373; background: transparent; font-size: 11px; font-weight: 700; }
.competitor-drawer-tabs button.active { color: var(--competitor-blue); border-bottom-color: var(--competitor-blue); }
.competitor-drawer-content { height: calc(100vh - 157px); padding: 18px 22px 32px; overflow: auto; }
.competitor-detail-loading,
.competitor-detail-empty { display: grid; place-items: center; min-height: 240px; color: var(--muted); text-align: center; }
.competitor-metric-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.competitor-metric-grid div { min-height: 73px; padding: 12px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.competitor-metric-grid span,
.competitor-metric-grid strong { display: block; }
.competitor-metric-grid span { color: var(--muted); font-size:11px; }
.competitor-metric-grid strong { margin-top: 7px; color: #404040; font-size: 13px; }
.competitor-detail-section { margin-top: 22px; }
.competitor-detail-section:first-child { margin-top: 0; }
.competitor-detail-section h3 { margin: 0 0 10px; color: #404040; font-size: 14px; }
.competitor-section-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 10px; }
.competitor-section-heading h3 { margin: 0; }
.competitor-section-heading > span { color: var(--muted); font-size:11px; text-align: right; }
.competitor-chart-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.competitor-chart-card { min-width: 0; padding: 13px 14px; border: 1px solid var(--line); border-radius: 6px; background: #fafafa; }
.competitor-chart-card h4 { margin: 0 0 13px; color: #404040; font-size: 11px; font-weight: 750; }
.competitor-chart-wide { grid-column: 1 / -1; }
.competitor-chart-empty { display: grid; place-items: center; min-height: 112px; color: var(--muted); font-size:11px; }
.competitor-donut-layout { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 13px; align-items: center; }
.competitor-donut { position: relative; display: grid; place-items: center; width: 92px; height: 92px; border-radius: 50%; }
.competitor-donut::after { content: ""; position: absolute; inset: 19px; border-radius: 50%; background: #fafafa; box-shadow: 0 0 0 1px rgba(227, 232, 239, .72); }
.competitor-donut span { position: relative; z-index: 1; color: #737373; font-size:11px; font-weight: 750; }
.competitor-chart-legend { display: grid; gap: 7px; min-width: 0; }
.competitor-chart-legend > div { display: grid; grid-template-columns: 7px minmax(0, 1fr) auto; gap: 6px; align-items: center; min-width: 0; font-size:11px; }
.competitor-chart-legend i { width: 7px; height: 7px; border-radius: 2px; }
.competitor-chart-legend span { min-width: 0; overflow: hidden; color: #525252; text-overflow: ellipsis; white-space: nowrap; }
.competitor-chart-legend strong { color: #404040; font-weight: 750; white-space: nowrap; }
.competitor-horizontal-bars { display: grid; gap: 8px; }
.competitor-horizontal-bars > div { display: grid; grid-template-columns: minmax(48px, .72fr) minmax(56px, 1fr) auto; gap: 7px; align-items: center; min-width: 0; }
.competitor-horizontal-bars span { overflow: hidden; color: #525252; font-size:11px; text-overflow: ellipsis; white-space: nowrap; }
.competitor-horizontal-bars b { height: 7px; overflow: hidden; border-radius: 2px; background: #e5e5e5; }
.competitor-horizontal-bars i { display: block; height: 100%; border-radius: inherit; }
.competitor-horizontal-bars strong { color: #404040; font-size:11px; font-weight: 750; white-space: nowrap; }
.competitor-vertical-bars { display: grid; grid-auto-columns: minmax(48px, 1fr); grid-auto-flow: column; gap: 8px; min-height: 148px; padding-top: 3px; overflow-x: auto; }
.competitor-vertical-bars > div { display: grid; grid-template-rows: 18px 96px auto; gap: 5px; align-items: end; min-width: 48px; text-align: center; }
.competitor-vertical-bars strong { color: #525252; font-size:11px; }
.competitor-vertical-bars b { position: relative; display: flex; align-items: flex-end; justify-content: center; width: 30px; height: 96px; margin: 0 auto; border-bottom: 1px solid #e5e5e5; background: var(--surface-soft); background-size: 100% 24px; }
.competitor-vertical-bars i { display: block; width: 18px; border-radius: 2px 2px 0 0; }
.competitor-vertical-bars span { color: #525252; font-size:11px; line-height: 1.35; overflow-wrap: anywhere; }
.competitor-chart-note { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; padding: 10px 12px; border: 1px solid #e5e5e5; color: #525252; background: var(--competitor-blue-soft); font-size:11px; line-height: 1.6; }
.competitor-chart-note strong { color: #404040; }
.competitor-share-bar { display: flex; height: 13px; overflow: hidden; border-radius: 3px; background: #e5e5e5; }
.competitor-share-bar i:nth-child(1) { background: var(--primary); }
.competitor-share-bar i:nth-child(2) { background: #737373; }
.competitor-share-bar i:nth-child(3) { background: #a3a3a3; }
.competitor-share-legend { display: flex; flex-wrap: wrap; gap: 7px 15px; margin-top: 8px; color: var(--muted); font-size:11px; }
.competitor-table td,
.competitor-metric-grid strong,
.competitor-share-legend { font-variant-numeric: tabular-nums; }
.competitor-detail-list { display: grid; border-top: 1px solid var(--line); }
.competitor-detail-list article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; padding: 10px 2px; border-bottom: 1px solid var(--line); }
.competitor-detail-list strong { display: block; color: #404040; font-size: 11px; }
.competitor-detail-list p { margin: 4px 0 0; color: var(--muted); font-size:11px; line-height: 1.55; }
.competitor-detail-list small { color: #525252; font-size:11px; }
.competitor-video-page-summary { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; padding: 9px 11px; border: 1px solid #e5e5e5; border-radius: 4px; background: #f5f5f5; font-size:11px; }
.competitor-video-page-summary strong { color: #525252; }
.competitor-video-page-summary span { color: #737373; text-align: right; }
.competitor-video-list { display: grid; gap: 8px; }
.competitor-video-card { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
.competitor-video-rank { display: grid; place-items: center; align-self: start; width: 26px; height: 26px; border-radius: 4px; color: #525252; background: var(--competitor-blue-soft); font-size:11px; font-weight: 800; }
.competitor-video-card h4 { margin: 0; overflow: hidden; color: #404040; font-size: 11px; line-height: 1.55; text-overflow: ellipsis; white-space: nowrap; }
.competitor-video-card p { margin: 4px 0 0; overflow-wrap: anywhere; color: var(--muted); font-size:11px; line-height: 1.5; }
.competitor-video-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 9px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.competitor-video-metrics span { min-width: 0; padding: 7px 8px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.competitor-video-metrics small,
.competitor-video-metrics strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.competitor-video-metrics small { color: var(--muted); font-size:11px; }
.competitor-video-metrics strong { margin-top: 3px; color: #404040; font-size:11px; font-variant-numeric: tabular-nums; }
.competitor-video-secondary { color: #737373; }
.competitor-video-card a { display: inline-block; margin-top: 7px; color: var(--competitor-blue); font-size:11px; font-weight: 700; text-decoration: none; }
.competitor-video-card a:hover { text-decoration: underline; text-underline-offset: 2px; }
.competitor-raw-fields details { padding: 9px 0; border-bottom: 1px solid var(--line); }
.competitor-raw-fields summary { color: #404040; font-size: 11px; font-weight: 750; cursor: pointer; }
.competitor-raw-fields pre { max-height: 260px; padding: 10px; overflow: auto; color: #525252; background: #f5f5f5; font: 10px/1.6 Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
.competitor-manual-form { display: grid; gap: 12px; }
.competitor-manual-form label { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 12px; align-items: start; }
.competitor-manual-form textarea { min-height: 66px; margin: 0; resize: vertical; }
.competitor-manual-form .primary { justify-self: end; border-radius: 4px; box-shadow: none; }
.competitor-error-note { padding: 10px 12px; color: #525252; background: #f5f5f5; font-size: 11px; line-height: 1.6; }

.competitor-view :where(button, a, input, select, textarea, summary):focus-visible,
.competitor-columns-panel :where(button, input):focus-visible,
.competitor-detail-drawer :where(button, a, input, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--competitor-blue);
  outline-offset: 2px;
}

body.competitor-mode { overflow-y: auto; }
body.competitor-mode .topbar { display: flex; }

@media (max-width: 1100px) {
  .competitor-search { grid-template-columns: minmax(0, 1fr) 130px; }
  .competitor-search .primary { grid-column: 1 / -1; }
  .competitor-stage-head { align-items: flex-start; }
  .competitor-plan-actions { flex-wrap: wrap; justify-content: flex-end; }
  .competitor-detail-drawer { width: min(620px, calc(100vw - 24px)); }
}

@media (max-width: 760px) {
  .competitor-search { grid-template-columns: 1fr; padding: 14px; }
  .competitor-search .primary,
  .competitor-search-ledger { grid-column: auto; }
  .competitor-welcome { padding: 44px 10px; }
  .competitor-welcome dl { display: grid; grid-template-columns: repeat(3, 1fr); width: 100%; }
  .competitor-welcome dl div { min-width: 0; padding: 0 8px; }
  .competitor-stage-head { display: grid; }
  .competitor-plan-actions { justify-content: flex-start; }
  .competitor-plan-actions label { grid-template-columns: 1fr; }
  .competitor-selection-bar { top: 0; flex-wrap: wrap; }
  .competitor-quick-select { order: 2; padding-left: 0; border-left: 0; }
  .competitor-selection-bar > span { margin-left: 0; }
  .competitor-selection-bar .primary { width: 100%; }
  .competitor-detail-drawer { width: 100vw; }
  .competitor-detail-drawer.collapsed { width: 0; }
  .competitor-drawer-collapse { display: none; }
  .competitor-metric-grid { grid-template-columns: repeat(2, 1fr); }
  .competitor-chart-grid { grid-template-columns: 1fr; }
  .competitor-chart-wide { grid-column: auto; }
  .competitor-donut-layout { grid-template-columns: 88px minmax(0, 1fr); }
  .competitor-donut { width: 88px; height: 88px; }
  .competitor-video-page-summary { align-items: flex-start; flex-direction: column; }
  .competitor-video-page-summary span { text-align: left; }
  .competitor-video-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .competitor-manual-form label { grid-template-columns: 1fr; gap: 5px; }
}

@media (prefers-reduced-motion: reduce) {
  .competitor-detail-drawer,
  .competitor-drawer-inner { transition: none; }
}

/* Shared reading and responsive adjustments; preserve the existing table workflows. */

input::placeholder, textarea::placeholder { color: #737373; opacity: 1; }
button:focus-visible, a:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
button:disabled { cursor: not-allowed; }
.database-page-buttons, .database-pagination label { white-space: nowrap; }
.competitor-detail-drawer { width: min(800px, calc(100vw - var(--sidebar-width) - 24px)); }
.competitor-detail-drawer.collapsed { width: 46px; }
.competitor-drawer-tabs { overflow-x: auto; flex-shrink: 0; }
.competitor-drawer-tabs button { min-height: 44px; white-space: nowrap; }
.competitor-drawer-head { align-items: flex-start; }
.competitor-drawer-head > div { min-width: 0; }
.competitor-source-note { overflow-wrap: anywhere; }
.competitor-history-row > div { min-width: 0; }
.competitor-chart-note, .competitor-fact-grid dd { overflow-wrap: anywhere; }
.competitor-raw-fields pre { max-height: 360px; overflow: auto; }
#toast { max-width: min(560px, calc(100vw - 32px)); line-height: 1.65; overflow-wrap: anywhere; }
@media (max-width: 760px) {
  .topbar { position: static; height: 56px; justify-content: flex-start; }
  .topbar h1 { text-align: left; }
  .view input:not([type=checkbox]):not([type=radio]):not([type=range]), .view select, .view textarea { font-size: 16px; }
  .view button, .view summary { min-height: 44px; }
  .database-pagination { display: block; overflow: visible; }
  .database-pagination > span { display: block; padding-bottom: 10px; }
  .database-pagination-controls { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 10px; }
  .database-pagination-controls label { flex: 0 0 auto; }
  .database-page-buttons { display: flex; flex-basis: 100%; gap: 6px; }
  .database-page-buttons button { flex: 1; min-width: 0; padding-inline: 6px; }
  .database-table-wrap, .competitor-table-shell { overscroll-behavior-x: contain; }
  .database-table-wrap::after, .competitor-table-shell::after { content: '左右滑动查看完整字段'; display: block; padding: 8px 12px; font-size: 12px; color: var(--muted); }
  .competitor-detail-drawer { width: 100vw; }
  .competitor-detail-drawer.collapsed { width: 0; }
  .competitor-drawer-content { padding: 16px; }
  .competitor-fact-grid { grid-template-columns: 1fr; }
  .competitor-plan-actions { flex-wrap: wrap; gap: 8px; }
  .competitor-story-tabs { overflow-x: auto; }
  .competitor-story-tabs button { flex-shrink: 0; }
  .competitor-history-row { align-items: flex-start; flex-wrap: wrap; gap: 10px; padding: 16px; }
  .competitor-history-toolbar label { min-width: 0; flex-basis: 100%; }
  .competitor-history-toolbar { flex-wrap: wrap; }
  .competitor-selection-bar { position: static; }
  .competitor-welcome h2 { font-size: 23px; line-height: 1.5; }
  .category-radar-pagination { display: grid; gap: 10px; }
  .category-radar-pagination-controls { flex-wrap: wrap; justify-content: flex-start; }
  dialog { width: calc(100vw - 24px); max-height: calc(100dvh - 24px); padding: 0; }
  .dialog-head { align-items: flex-start; }
  #toast { left: 16px; right: 16px; bottom: max(16px, env(safe-area-inset-bottom)); }
}

/* Transitions convey the state without delaying input or hiding content. */
#toast { transition: opacity 160ms ease-out, transform 160ms ease-out; }
#toast[data-feedback="error"] { background: #404040; }
#toast[data-feedback="success"] { background: #525252; }
button[aria-busy="true"] { cursor: progress; }
button[aria-busy="true"]::after { content: ''; display: inline-block; width: 12px; height: 12px; margin-left: 8px; vertical-align: -2px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: workbench-busy 800ms linear infinite; }
.database-advanced[open] .database-advanced-popover, .competitor-columns-panel:not(.hidden), dialog[open] { animation: workbench-reveal 150ms ease-out; }
.competitor-story-tabs button { transition: color 150ms ease-out, background-color 150ms ease-out; }
@keyframes workbench-busy { to { transform: rotate(360deg); } }
@keyframes workbench-reveal { from { opacity: .65; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  #toast, .competitor-detail-drawer, .competitor-story-tabs button { transition: none; }
  button[aria-busy="true"]::after, .database-advanced[open] .database-advanced-popover, .competitor-columns-panel:not(.hidden), dialog[open] { animation: none; }
}

}

/* Page composition uses shared tokens; control rendering is owned by ui/*.tsx. */
body {background:#fff;color:#171717;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-size:13px}
.app-shell{grid-template-columns:220px minmax(0,1fr)}
.sidebar{width:220px;background:#fafafa;border-right:1px solid #e5e5e5;padding:20px 12px}
.brand{padding:0 10px 22px;gap:10px;border-bottom:1px solid #e5e5e5;margin-bottom:18px}
.brand-mark{width:32px;height:32px;object-fit:contain;border:0;background:transparent;transform:none}
.brand-mark{filter:grayscale(1)}
.brand strong{font-size:17px;color:#171717}.brand small{font-size:11px;color:#737373;margin-top:3px}
.nav-group{border:0;margin:0 0 14px}.nav-group-toggle{color:#737373;font-weight:500;gap:8px;padding:0 10px;height:32px;width:100%}
.nav-group-toggle svg{width:16px;height:16px;stroke:currentColor}.nav-group-toggle i{margin-left:auto}
.nav-group-items{display:grid;gap:3px;padding:3px 0 0}.nav-item{width:100%;padding:8px 12px 8px 34px;text-align:left;justify-content:flex-start;border:0;color:#525252;border-radius:6px;font-size:13px}
.nav-item::before{display:none}.nav-item.active{background:#ebebeb;color:#171717;box-shadow:none;font-weight:600}.nav-item:hover{background:#f0f0f0}
.style-library-link{margin-top:auto;padding:14px 12px;color:#737373;font-size:12px;border-top:1px solid #e5e5e5;text-decoration:none}
main{padding:0 24px 32px;background:#fff;min-width:0}.topbar{min-height:86px;margin-bottom:22px;border-bottom:1px solid #e5e5e5;background:#fff;padding:16px 0;display:flex}
.topbar .eyebrow{font-size:11px;letter-spacing:0;color:#737373;margin-bottom:6px}.topbar h1{font-size:24px;line-height:1.25;font-weight:650;color:#171717}
.topbar .eyebrow{display:block}.form-grid label,.database-filters label{font-size:12px;font-weight:500}
.topbar{margin-left:0;margin-right:0;width:auto}
.view{animation:none}.panel,.hero-card,.candidate-card,.connection-card,.database-filter-panel,.optimization-hero,.optimization-form,.optimization-context,.market-hero,.category-radar-overview,.category-radar-list-panel,.competitor-search-panel,.competitor-results-panel{border-radius:8px;box-shadow:none;background:#fff;border-color:#e5e5e5}
.hero-card,.optimization-hero,.market-hero{background:#fafafa;padding:20px 24px}.hero-card h2,.optimization-hero h2{font-size:20px;line-height:1.45;letter-spacing:-.02em}
.hero-card p,.optimization-hero p{color:#737373;font-size:13px;line-height:1.7}
.panel-head{padding-bottom:14px}.panel{padding:20px}.panel h3{font-size:15px;font-weight:600}.kicker,.step-label{letter-spacing:0;font-size:11px;color:#737373}
.badge{border-radius:6px}.badge.green,.status-success{color:#15803d;background:#f0fdf4}.badge.amber,.status-warning{color:#a16207;background:#fefce8}.badge.red,.status-error{color:#b91c1c;background:#fef2f2}
input[type=checkbox],input[type=radio],input[type=range]{accent-color:#171717}
input[type=checkbox],input[type=radio]{width:16px;height:16px;flex-shrink:0}
input,textarea,select,button{border-radius:6px}textarea{resize:vertical;min-height:80px}
button{transition:background-color .12s,color .12s;transform:none}button:hover{transform:none}button:disabled{cursor:not-allowed}
.primary{background:#171717;color:#fafafa;border-color:#171717}.ghost{background:#fff;color:#171717;border-color:#e5e5e5}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid #a3a3a3;outline-offset:2px}
.ui-select-source{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;clip-path:inset(50%)!important;margin:0!important;padding:0!important}
.ui-select-host{display:inline-flex;min-width:0;max-width:100%;vertical-align:middle}.ui-select-host[hidden]{display:none}.ui-select-trigger{min-width:100px;max-width:100%;font-family:inherit;text-align:left}.ui-select-trigger>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
label>.ui-select-host,.form-grid .ui-select-host,.cmm-query-box .ui-select-host{width:100%}.ui-select-content{z-index:120!important;max-height:min(360px,var(--radix-select-content-available-height))!important}
.ui-select-content [role=option]{min-height:32px;cursor:default}
.ui-dialog-content{max-width:min(1040px,calc(100vw - 64px))!important;max-height:calc(100vh - 64px);overflow:auto;z-index:100!important;gap:0!important}
.ui-dialog-body{min-width:0}.ui-dialog-body.database-cmm-dialog{width:auto;max-width:none;max-height:none;border:0;padding:0;box-shadow:none;background:transparent}
.ui-unsaved-dialog{z-index:140!important}
.ui-dialog-body>#close-dialog,.ui-dialog-body>#database-cmm-close{display:none}
dialog:not([open]){display:none}.competitor-drawer{z-index:70;background:#fff;border-left:1px solid #e5e5e5;box-shadow:-12px 0 40px #0000000c}.competitor-drawer-backdrop{z-index:60}
.competitor-drawer[aria-hidden=true]{visibility:hidden;pointer-events:none}
.competitor-detail-drawer[aria-hidden=true]{visibility:hidden;pointer-events:none}.competitor-detail-drawer{z-index:70;background:#fff;border-left:1px solid #e5e5e5}
[role=tablist][hidden]{display:none!important}.ui-tabs-host{min-width:0;overflow:auto}.ui-tabs-list{height:36px!important;padding:3px!important;background:#f5f5f5!important;justify-content:flex-start!important;max-width:100%}.ui-tabs-trigger{min-height:30px}.ui-tabs-trigger[data-state=active]{background:#fff!important;color:#171717!important;box-shadow:0 1px 2px #0000000a!important}
table{border-collapse:collapse;font-variant-numeric:tabular-nums}thead{background:#fafafa}th{font-size:12px;font-weight:500;color:#737373}td{font-size:13px;line-height:1.5}th,td{border-color:#e5e5e5}tbody tr:hover{background:#fafafa}
.database-table-wrap,.competitor-table-wrap{border:1px solid #e5e5e5;border-radius:8px;overflow:auto;overscroll-behavior:contain}.database-table-wrap th,.competitor-table-wrap th{background:#fafafa;position:sticky;top:0;z-index:2}
.database-table td,.competitor-table td{padding-top:12px;padding-bottom:12px}.database-product-name,.competitor-product-name{line-height:1.5;overflow-wrap:anywhere}
.database-table{min-width:1160px;table-layout:fixed}.database-table th:nth-child(1){width:60px}.database-table th:nth-child(2){width:270px}.database-table th:nth-child(3){width:145px}.database-table th:last-child{width:132px;position:sticky;right:0;z-index:3}.database-table td:last-child{position:sticky;right:0;background:#fff;box-shadow:-1px 0 #e5e5e5}.database-table th:nth-child(n+4):not(:last-child){width:92px}.database-product>div>strong,.database-product>div>a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;overflow:hidden;line-height:1.5}.database-product code{font-size:10px}.database-rank strong{font-family:inherit;font-size:16px}.database-row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.database-trend-button,.database-cmm-button{background:transparent;color:#171717;border:0;font-size:12px}.database-follow-button{color:#737373;background:transparent}.database-follow-button.active{color:#171717}.database-follow-button svg{fill:none}.database-follow-button.active svg{fill:currentColor}.database-table td{height:88px;background:#fff}.database-table tbody tr:hover td{background:#fafafa}
.database-row-actions{display:grid;grid-template-columns:28px minmax(0,1fr);gap:2px}.database-row-actions .database-cmm-button{grid-column:1/-1}.database-table-wrap{max-height:calc(100vh - 340px);min-height:230px}
.empty,.competitor-detail-empty{padding:36px 24px;color:#737373;background:#fafafa;border:1px dashed #e5e5e5;border-radius:8px;text-align:center}
.category-radar-sparkline polyline,.time-series-line{stroke:#525252}.progress-track,.collector-progress-track{background:#f5f5f5}.progress-track i,.collector-progress-track i{background:#171717}
.category-radar-pagination{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap}.category-radar-pagination>span:first-child{margin-right:auto}.category-radar-pagination button{width:auto}
.category-radar-pagination-controls,.category-radar-page-numbers{display:flex;align-items:center;gap:6px}.category-radar-page-numbers button{min-width:32px}
.progress-intermediate>div{grid-column:2}.candidate-card{grid-template-columns:38px minmax(160px,.9fr) minmax(200px,1.4fr) 64px 182px;gap:14px}.candidate-card>*{min-width:0}.card-actions .ui-select-host{width:100%}.database-date-cell{white-space:nowrap}.database-table th:nth-child(9){width:110px}.database-table{min-width:1180px}
.category-radar-overview,.category-radar-list-panel{padding:20px}.category-radar-metrics strong{font-family:inherit;font-size:24px;line-height:1.2}.category-radar-metrics article{padding:18px}.category-radar-track{overflow-x:auto}.category-radar-track button{flex-shrink:0}
.market-connector{background:#fafafa;color:#171717;border:1px solid #e5e5e5}.market-connector strong{color:#171717}.market-manual-collect{background:#fafafa;border:1px solid #e5e5e5;padding:16px}.collector-category-group{background:#fff;border-bottom:1px solid #e5e5e5}.collector-category-options{gap:8px}.collector-category-options label{padding:6px}.market-collect-modes label{padding:10px;border:1px solid #e5e5e5;background:#fff}
.database-pagination,.category-radar-pagination{border-top:1px solid #e5e5e5;padding-top:12px;gap:8px}.database-pagination button.active,.category-radar-pagination button.active{background:#171717;color:#fff}
.toast{border-radius:8px;box-shadow:0 4px 16px #00000014;background:#171717;color:#fff}
.login-shell{display:grid;grid-template-columns:1fr 1fr;min-height:100vh;padding:0;margin:0;background:#fff}.login-story{display:flex;flex-direction:column;background:#fafafa;color:#171717;padding:48px;border-right:1px solid #e5e5e5}.login-brand{display:flex;gap:12px;align-items:center}.login-brand>span{display:grid;place-items:center;width:36px;height:36px;background:#171717;color:#fff;border-radius:6px}.login-brand strong{display:block;font-size:18px}.login-brand small{display:block;font-size:10px;color:#737373;margin-top:4px}.story-copy{margin:auto 0}.story-copy h1{font-size:34px;line-height:1.4;margin:16px 0}.story-copy>p{line-height:1.8;color:#737373;max-width:480px}.story-metrics{display:flex;gap:32px;color:#737373}.story-metrics b{display:block;color:#171717;font-size:22px}.login-panel{display:flex;align-items:center;justify-content:center;padding:48px}.login-panel>section{width:100%;max-width:360px}.mobile-brand{display:none}.panel-kicker{font-size:11px;letter-spacing:.08em;color:#737373}.login-panel h2{font-size:26px;margin:12px 0}.panel-intro,.security-copy{color:#737373;line-height:1.8;font-size:13px}.security-copy{font-size:11px;margin-top:22px}.dingtalk-login{width:100%;margin-top:24px;background:#171717;color:#fff}.login-error{color:#b91c1c;font-size:13px;margin-top:16px}
@media(min-width:1100px) and (max-width:1350px){:root{--sidebar-width:196px}.sidebar{width:196px}.app-shell{grid-template-columns:196px minmax(0,1fr)}main{padding-left:20px;padding-right:20px}.database-filter-panel{gap:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
