:root { --ink:#10233d; --muted:#65758b; --line:#d8e4ef; --blue:#1767b4; --pale:#edf6ff; --warn:#7c5100; --warn-bg:#fff8df; --card:#fff; --ground:#f2f6fa; }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--ground); font-family:"Microsoft YaHei","Segoe UI",sans-serif; }
button,input { font:inherit; }
button { cursor:pointer; }
.shell { width:min(1180px,calc(100% - 32px)); margin:0 auto; padding:30px 0 48px; }
.hero { display:flex; justify-content:space-between; gap:24px; align-items:flex-start; color:#fff; padding:28px 30px; border-radius:18px; background:linear-gradient(128deg,#0a386d,#1673c8 58%,#56a8db); box-shadow:0 14px 30px #0d427026; }
.eyebrow { margin:0 0 6px; color:#6392c4; font-size:12px; font-weight:700; letter-spacing:.08em; }
.hero .eyebrow { color:#c0ddf6; }
h1,h2,h3,h4,p { margin-top:0; }
h1 { margin-bottom:7px; font-size:30px; }
h2 { margin-bottom:0; font-size:20px; }
.subhead { margin:0; color:#dbeeff; }
.local-badge,.year-pill { flex:none; border-radius:999px; padding:7px 12px; font-size:12px; font-weight:700; }
.local-badge { color:#e4f4ff; border:1px solid #a5d7f7aa; background:#0a47758a; }
.workspace-nav { display:flex; gap:8px; margin:14px 0 0; padding:6px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.workspace-nav-button { flex:1; min-height:42px; border:0; border-radius:8px; color:var(--muted); background:transparent; font-weight:700; }
.workspace-nav-button.active { color:#fff; background:var(--blue); }
.nav-return { cursor:pointer; }
.desktop-pricing-center { padding-top:30px; }
.pricing-tabs { display:flex; gap:8px; margin:16px 0 0; padding:7px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.pricing-tab { flex:1; min-height:42px; border:0; border-radius:8px; color:#315c88; background:#eef4f9; font-weight:700; }
.pricing-tab.active { color:#fff; background:var(--blue); }
.pricing-tab-panel { margin-top:12px; padding:18px; border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 6px 18px #20364d0b; }
.rule-toolbar { display:flex; gap:9px; align-items:center; }
.rule-toolbar input { min-height:42px; }
.rule-toolbar select { min-height:42px; border:1px solid #a8bacd; border-radius:8px; padding:0 10px; background:#fff; }
.rule-filters { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)) auto; gap:8px; margin-top:10px; }
.rule-filters.compact { grid-template-columns:repeat(3,minmax(0,220px)) auto; }
.rule-filters select { min-width:0; min-height:39px; border:1px solid #c3d2df; border-radius:8px; padding:0 9px; color:var(--ink); background:#f9fbfd; }
.filter-clear { min-height:39px; border:1px solid #b8cad9; border-radius:8px; padding:0 13px; color:#315c88; background:#fff; font-weight:700; }
.rule-summary { margin:11px 0; color:var(--muted); font-size:13px; }
.rule-table-wrap { overflow-x:auto; border:1px solid #e0e8f0; border-radius:9px; }
.rule-table { width:100%; border-collapse:collapse; min-width:1000px; font-size:13px; }
.rule-table th,.rule-table td { padding:10px 11px; border-bottom:1px solid #e7edf3; text-align:left; vertical-align:middle; }
.rule-table th { position:sticky; top:0; color:#15568e; background:#f0f6fb; font-weight:700; white-space:nowrap; }
.muted-cell { color:var(--muted); font-size:12px; }
.rule-table td { overflow-wrap:anywhere; }
.rule-table tr:last-child td { border-bottom:0; }
.rule-table .price-cell { color:#15568e; font-weight:800; white-space:nowrap; }
.rule-table .history-row { color:var(--muted); background:#fafafa; }
.rule-actions { display:flex; gap:6px; white-space:nowrap; }
.rule-actions button { border:1px solid #8eb7d8; border-radius:6px; padding:5px 8px; color:#15568e; background:#fff; font-weight:700; }
.market-card { margin:12px 0; padding:16px; }
.market-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; align-items:end; }
.market-grid label { margin:0; color:var(--muted); font-size:13px; }
.market-grid input { width:100%; margin-top:5px; border:1px solid #a8bacd; border-radius:8px; padding:9px 10px; }
.measured-rule-modal { width:min(880px,100%); }
.measured-rule-modal textarea { width:100%; margin-top:6px; border:1px solid #a8bacd; border-radius:8px; padding:10px 12px; resize:vertical; }
.advanced-rule-fields { margin-top:12px; border:1px solid #d7e2ec; border-radius:9px; padding:10px 12px; }
.advanced-rule-fields summary { cursor:pointer; color:#15568e; font-weight:800; }
.m-market-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:9px 0; }
.m-market-actions button { min-height:42px; border:1px solid #8eb7d8; border-radius:8px; background:#fff; color:#15568e; font-weight:700; }
.m-market-actions button:nth-child(3) { grid-column:1 / -1; }
.rule-pager { display:flex; align-items:center; justify-content:center; gap:10px; margin-top:12px; color:var(--muted); font-size:13px; }
.rule-pager button { min-height:36px; border:1px solid #8eb7d8; border-radius:7px; padding:0 13px; color:#15568e; background:#fff; font-weight:700; }
.rule-pager button:disabled { opacity:.4; }
.search-card,.history-card,.result-card { background:var(--card); border:1px solid var(--line); border-radius:14px; box-shadow:0 6px 18px #20364d0b; }
.search-card { margin:18px 0; padding:20px 22px; }
.bulk-card { margin-top:16px; }
.bulk-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:14px; }
.bulk-head h2 { font-size:16px; }
.bulk-status { border-radius:999px; padding:5px 12px; font-size:12px; font-weight:700; color:#9a2f2f; background:#ffe7e7; }
.bulk-status.confirmed { color:#126044; background:#e4f7ee; }
.bulk-row { display:flex; gap:12px; align-items:flex-end; }
.bulk-row label { flex:1; min-width:0; }
.bulk-row input { margin-top:6px; width:100%; }
.bulk-row button { flex:none; min-height:42px; border:0; border-radius:8px; padding:0 20px; color:#fff; background:var(--blue); font-weight:700; }
.bulk-row button:disabled { opacity:.65; cursor:wait; }
.tier-card { margin-top:16px; }
.tier-actions { display:flex; gap:10px; }
.batch-card { margin-top:16px; }
.batch-head { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.batch-head h2 { font-size:18px; }
.batch-panel { margin-top:15px; }
.batch-empty { padding:18px; border:1px dashed #b7c9d9; border-radius:10px; color:var(--muted); background:#f8fbfd; text-align:center; }
.batch-summary { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; }
.batch-stat { min-width:0; padding:10px 11px; border:1px solid #e0e9f1; border-radius:9px; background:#f8fbfe; }
.batch-stat span,.batch-meta { display:block; color:var(--muted); font-size:11px; }
.batch-stat strong { display:block; margin-top:3px; font-size:17px; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.batch-title-row { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:10px; }
.batch-title-row h3 { margin:0 0 3px; font-size:17px; }
.batch-state { flex:none; padding:5px 9px; border-radius:999px; color:#315c88; background:#e9f2fb; font-size:12px; font-weight:700; }
.batch-state.running,.batch-state.queued { color:#15568e; background:#ddecfb; }
.batch-state.completed { color:#126044; background:#e4f7ee; }
.batch-state.paused,.batch-state.completed_with_errors { color:#875700; background:#fff1c8; }
.batch-progress { height:9px; margin:11px 0 5px; border-radius:999px; overflow:hidden; background:#e8eff5; }
.batch-progress > span { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#1767b4,#48a0dc); transition:width .25s ease; }
.batch-controls { display:flex; flex-wrap:wrap; align-items:flex-end; gap:9px; margin-top:13px; }
.batch-controls .danger { color:#9a2f2f; border-color:#e3a7a7; background:#fff7f7; }
.batch-controls label { min-width:180px; margin:0; color:var(--muted); font-size:12px; }
.batch-controls select { width:100%; margin-top:5px; border:1px solid #a8bacd; border-radius:8px; padding:9px 10px; background:#fff; }
.batch-feedback { margin:9px 0 0; color:#875700; font-size:12px; line-height:1.5; }
.batch-rows { margin-top:12px; border:1px solid #e2ebf3; border-radius:9px; overflow:hidden; }
.batch-row { display:grid; grid-template-columns:54px minmax(0,1fr) 108px; gap:9px; align-items:center; padding:8px 10px; border-top:1px solid #eef3f7; font-size:12px; }
.batch-row:first-child { border-top:0; }
.batch-row span:first-child { color:var(--muted); }
.batch-row strong { overflow-wrap:anywhere; }
.batch-row em { color:var(--muted); font-style:normal; text-align:right; }
.batch-recent { display:grid; gap:6px; margin-top:12px; }
.batch-recent button { display:flex; justify-content:space-between; gap:10px; width:100%; padding:8px 10px; border:1px solid #e1eaf2; border-radius:8px; color:var(--ink); background:#fff; text-align:left; }
.simple-rules-card { margin-top:0; }
.simple-rule-list { display:grid; gap:7px; margin-top:10px; }
.simple-rule-item { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; padding:10px 12px; border:1px solid #e1eaf2; border-radius:8px; background:#fbfdff; }
.simple-rule-item strong,.simple-rule-item span { display:block; }
.simple-rule-item span { margin-top:3px; color:var(--muted); font-size:12px; }
.simple-rule-item b { align-self:center; color:#15568e; font-size:14px; white-space:nowrap; }
.simple-rule-modal { width:min(720px,100%); }
.simple-rule-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 14px; }
.readonly-rules { margin-top:12px; border-top:1px solid #e4ebf2; padding-top:10px; }
.readonly-rules summary { cursor:pointer; color:#15568e; font-size:13px; font-weight:700; }
label { display:block; margin-bottom:8px; font-weight:700; }
.search-row { display:flex; gap:10px; }
input { min-width:0; flex:1; border:1px solid #a8bacd; border-radius:8px; padding:12px 14px; color:var(--ink); outline:none; }
input:focus { border-color:var(--blue); box-shadow:0 0 0 3px #2f8be520; }
button[type="submit"] { color:#fff; border:0; border-radius:8px; padding:0 26px; font-weight:700; background:var(--blue); }
button[type="submit"]:disabled { opacity:.65; cursor:wait; }
.hint { margin:9px 0 0; color:var(--muted); font-size:13px; }
.message { margin:13px 0; padding:12px 14px; border:1px solid #efd185; border-radius:9px; color:var(--warn); background:var(--warn-bg); line-height:1.6; }
.hidden { display:none; }
.permission-hidden { display:none !important; }
.result-card { overflow:hidden; margin-top:16px; }
.result-top { padding:20px 24px 17px; border-bottom:1px solid var(--line); background:#fff; }
.status-row,.section-heading,.config-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.status { display:inline-block; border-radius:999px; padding:5px 10px; font-size:12px; font-weight:700; }
.status.matched { color:#126044; background:#e4f7ee; }
.status.multiple { color:#875700; background:#fff1c8; }
.status.not-found,.status.error { color:#9a2f2f; background:#ffe7e7; }
.status.vehicle-only { color:#315c88; background:#e9f2fb; }
.result-title { margin:12px 0 4px; font-size:22px; }
.result-meta { margin-bottom:0; color:var(--muted); font-size:13px; line-height:1.65; }
.warning-list { margin:13px 0 0; padding:0; list-style:none; }
.warning-list li { margin-top:6px; padding:8px 10px; border-left:3px solid #e7a637; color:#725000; background:#fff9e8; font-size:13px; }
.summary-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); padding:14px 24px; gap:0; border-bottom:1px solid var(--line); background:#f8fbfe; }
.summary-field { min-width:0; padding:4px 18px; border-left:1px solid #dfe8f1; }
.summary-field:first-child { padding-left:0; border-left:0; }
.summary-field span { display:block; color:var(--muted); font-size:12px; }
.summary-field strong { display:block; margin-top:4px; overflow:hidden; text-overflow:ellipsis; word-break:break-word; font-size:14px; }
.config-area { padding:21px 24px 25px; }
.config-area-head h2 { font-size:19px; }
.config-area-head p { margin:5px 0 0; color:var(--muted); font-size:13px; }
.config-picker { display:flex; gap:9px; margin:15px 0 12px; overflow-x:auto; padding-bottom:3px; }
.config-tab { min-width:178px; display:flex; flex-direction:column; align-items:flex-start; gap:3px; padding:10px 13px; border:1px solid #cbdbe9; border-radius:8px; color:#294b6c; background:#fff; text-align:left; }
.config-tab strong { font-size:14px; }
.config-tab span { color:var(--muted); font-size:12px; white-space:nowrap; }
.config-tab:hover { border-color:#74a9d6; }
.config-tab[aria-pressed="true"] { color:#fff; border-color:var(--blue); background:var(--blue); box-shadow:0 4px 10px #1767b426; }
.config-tab[aria-pressed="true"] span { color:#dcefff; }
.config-detail { border:1px solid #cadbea; border-radius:10px; overflow:hidden; }
.config-head { align-items:center; padding:15px 18px; border-bottom:1px solid #d5e3ef; background:linear-gradient(180deg,#f9fcff,#edf6ff); }
.config-index { color:var(--blue); font-size:12px; font-weight:700; }
.config-head h3 { margin:4px 0 0; font-size:18px; }
.year-pill { color:#145991; background:#ddecfb; }
.spec-section + .spec-section { border-top:1px solid #cdddea; }
.spec-section h4 { margin:0; padding:9px 18px; color:#15568e; background:#f4f8fc; font-size:14px; }
.spec-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin:0; }
.spec-item { min-width:0; display:grid; grid-template-columns:150px minmax(0,1fr); align-items:center; gap:12px; min-height:43px; padding:8px 18px; border-top:1px solid #edf1f5; }
.spec-item:nth-child(even) { border-left:1px solid #e2eaf1; }
.spec-item dt { color:var(--muted); font-size:13px; }
.spec-item dd { margin:0; text-align:right; word-break:break-word; font-size:14px; font-weight:700; }
.empty-config { margin-top:14px; padding:26px; color:var(--muted); text-align:center; background:#f8fafc; }
.pricing-panel { border-top:1px solid #cdddea; padding:14px 18px 16px; background:#fff; }
.pricing-head { display:flex; justify-content:space-between; gap:12px; align-items:baseline; margin-bottom:11px; }
.pricing-head h4 { margin:0; color:#15568e; font-size:14px; }
.pricing-tip { color:var(--muted); font-size:12px; }
.pricing-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.pricing-slot { min-width:0; border:1px solid #e0eaf3; border-radius:8px; padding:11px 13px; background:#f8fbfe; }
.pricing-slot span { display:block; color:var(--muted); font-size:12px; }
.pricing-slot strong { display:block; margin-top:5px; font-size:17px; word-break:break-word; }
.pricing-slot em { display:block; margin-top:3px; color:#9a7a2f; font-style:normal; font-size:12px; line-height:1.5; }
.pricing-actions { display:flex; gap:12px; align-items:center; margin-top:13px; }
.pricing-button { border:1px solid #74a9d6; border-radius:8px; padding:8px 15px; color:var(--blue); background:#fff; font-weight:700; }
.pricing-button:hover { background:#edf6ff; }
.pricing-button.primary { color:#fff; background:var(--blue); }
.pricing-note { color:var(--muted); font-size:12px; }
.price-overlay,.simple-rule-overlay { position:fixed; inset:0; display:flex; align-items:flex-start; justify-content:center; padding:24px 16px; background:#0a254063; z-index:50; overflow:auto; }
.price-overlay.hidden,.simple-rule-overlay.hidden { display:none; }
.price-modal { width:min(480px,100%); border-radius:13px; padding:20px 22px; background:#fff; box-shadow:0 22px 50px #0b2a4b33; }
.price-modal-head { display:flex; justify-content:space-between; align-items:center; }
.price-modal-head h3 { margin:0; font-size:18px; }
.price-close,.simple-rule-close { border:0; background:transparent; font-size:24px; line-height:1; color:var(--muted); }
.price-sub { margin:6px 0 15px; color:var(--muted); font-size:13px; line-height:1.6; }
.price-modal label { margin-top:11px; }
.price-modal input,.price-modal select { width:100%; margin-top:6px; border:1px solid #a8bacd; border-radius:8px; padding:10px 12px; }
.price-error { margin:13px 0 0; color:#9a2f2f; font-size:13px; min-height:1em; }
.price-modal-actions { margin-top:8px; display:flex; justify-content:flex-end; }
.price-modal-actions .pricing-button { padding:10px 22px; }
.history-table { width:100%; margin-top:8px; border-collapse:collapse; font-size:13px; }
.history-table th,.history-table td { padding:8px 9px; border:1px solid #e0e8f0; text-align:left; }
.history-table th { background:#f0f6fb; color:#15568e; font-weight:700; }
.history-table tr:first-child td { background:#fffbe9; }
.history-card { margin-top:18px; padding:18px 20px; }
.text-button { padding:5px 0; color:var(--blue); border:0; background:transparent; font-weight:700; }
.history-list { display:grid; gap:7px; margin-top:13px; }
.history-item { width:100%; display:flex; justify-content:space-between; gap:16px; padding:10px 12px; text-align:left; border:1px solid #e2ebf3; border-radius:8px; background:#fff; }
.history-item:hover { border-color:#88b8e5; background:#fbfdff; }

/* 桌面端：所有配置卡片一览 */
.config-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(360px,1fr)); gap:10px; margin:14px 0; }
.config-group { border:1px solid #e0e9f1; border-radius:10px; padding:10px; background:#f9fbfd; }
.config-group-heading { display:flex; justify-content:space-between; gap:10px; align-items:center; margin-bottom:8px; }
.config-group-heading strong { color:#15568e; font-size:13px; }
.config-group-heading span { color:var(--muted); font-size:11px; }
.config-group-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:9px; }
.config-card { text-align:left; border:1px solid #d8e4ef; border-radius:10px; padding:13px 15px; background:#fff; cursor:pointer; }
.config-card:hover { border-color:#74a9d6; }
.config-card.selected { border-color:var(--blue); box-shadow:0 0 0 2px #2f8be530; }
.config-card.battery-alert-red,.m-config-card.battery-alert-red{border-color:#d92d20;background:#fff1f0;box-shadow:inset 4px 0 0 #d92d20}.config-card.battery-alert-red.selected{box-shadow:0 0 0 2px #d92d2030,inset 4px 0 0 #d92d20}.config-card.battery-alert-yellow,.m-config-card.battery-alert-yellow{border-color:#e7a637;background:#fff9e8;box-shadow:inset 4px 0 0 #e7a637}.battery-alert-text-red p{color:#b42318;font-weight:700}.battery-alert-text-yellow p{color:#725000;font-weight:700}.m-battery-alert{margin:10px 0;padding:10px 12px;border-radius:8px;font-size:13px;font-weight:700}.m-battery-alert.red{color:#b42318;background:#fff1f0;border-left:4px solid #d92d20}.m-battery-alert.yellow{color:#725000;background:#fff9e8;border-left:4px solid #e7a637}
.config-card-head { display:flex; justify-content:space-between; gap:8px; align-items:baseline; }
.config-card-head strong { font-size:15px; color:var(--ink); }
.config-card-year { flex:none; color:var(--muted); font-size:12px; }
.config-card-model { margin-top:3px; color:var(--muted); font-size:13px; }
.config-card-params { display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:9px; }
.config-card-params span { color:var(--muted); font-size:12px; }
.config-card-params b { color:var(--ink); font-size:13px; font-weight:700; }
.config-card-prices { display:flex; flex-wrap:wrap; gap:14px; margin-top:10px; padding-top:9px; border-top:1px solid #eef2f6; }
.config-card-prices span { color:var(--muted); font-size:12px; }
.config-card-prices strong { margin-left:4px; color:var(--ink); font-size:14px; }

/* 桌面端：折叠的“更多”工具区 */
.more-tools { margin-top:16px; border:1px solid var(--line); border-radius:14px; background:var(--card); box-shadow:0 6px 18px #20364d0b; }
.more-tools > summary { cursor:pointer; padding:14px 20px; font-weight:700; color:#15568e; font-size:15px; list-style:none; }
.more-tools > summary::-webkit-details-marker { display:none; }
.more-tools > summary::after { content:' ▾'; color:var(--muted); }
.more-tools[open] > summary::after { content:' ▴'; }
.more-tools .bulk-card,.more-tools .tier-card,.more-tools .simple-rules-card,.more-tools .history-card { border:0; border-top:1px solid var(--line); border-radius:0; box-shadow:none; margin:0; }
.history-item strong,.history-item span { display:block; }
.history-item span { margin-top:3px; color:var(--muted); font-size:12px; }
.history-empty { margin-top:12px; color:var(--muted); font-size:14px; }
.desktop-ocr-entry { width:100%; margin-top:10px; min-height:42px; border:1px dashed #74a9d6; border-radius:8px; color:#15568e; background:#f6fbff; font-weight:700; cursor:pointer; }
.desktop-ocr-entry:hover { background:#edf7ff; }
.modal-open { overflow:hidden; }
.ocr-overlay { position:fixed; inset:0; z-index:120; display:flex; align-items:center; justify-content:center; padding:22px; background:#061b2e99; }
.ocr-overlay.hidden { display:none; }
.ocr-sheet { width:min(860px,100%); max-height:calc(100dvh - 44px); display:flex; flex-direction:column; overflow:hidden; border-radius:16px; background:#fff; box-shadow:0 24px 70px #03111f80; }
.ocr-head { flex:none; display:flex; align-items:center; justify-content:space-between; padding:18px 22px 14px; border-bottom:1px solid #e3ebf2; }
.ocr-head h2 { margin:2px 0 0; font-size:21px; }
.ocr-close { width:38px; height:38px; border:0; border-radius:50%; color:var(--muted); background:#eef3f7; font-size:26px; line-height:1; cursor:pointer; }
.ocr-scroll { flex:1; min-height:0; overflow-y:auto; display:grid; grid-template-columns:minmax(260px,0.9fr) minmax(320px,1.1fr); gap:20px; padding:20px 22px; }
.ocr-preview-wrap { position:relative; min-height:280px; border-radius:12px; overflow:hidden; background:#12283a; }
.ocr-preview { display:block; width:100%; height:100%; min-height:280px; max-height:560px; object-fit:contain; }
.ocr-progress { position:absolute; left:12px; right:12px; bottom:12px; padding:10px 12px; border-radius:8px; color:#fff; background:#071c2dcc; font-size:13px; line-height:1.5; }
.ocr-progress.done { color:#123f2f; background:#dcf5e9e8; }
.ocr-progress.error { color:#7d2020; background:#ffe4e4f2; }
.ocr-fields { min-width:0; }
.ocr-intro { margin:0 0 13px; color:var(--muted); font-size:13px; line-height:1.65; }
.ocr-field { display:block; margin:13px 0 0; color:var(--ink); font-size:14px; font-weight:700; }
.ocr-field input { width:100%; margin-top:6px; padding:12px 13px; border:1px solid #9fb5c8; border-radius:9px; color:var(--ink); background:#fff; font:700 16px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.35px; text-transform:uppercase; }
.ocr-field input:focus { outline:3px solid #2f8be526; border-color:var(--blue); }
.ocr-meta { display:block; min-height:18px; margin-top:5px; color:#5f7890; font-size:12px; font-weight:400; }
.ocr-candidates { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:4px; }
.ocr-candidate-label { color:var(--muted); font-size:12px; }
.ocr-candidates button { padding:5px 8px; border:1px solid #c9d9e7; border-radius:999px; color:#15568e; background:#f5f9fc; font:600 11px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace; }
.ocr-warnings { margin-top:12px; }
.ocr-warnings p { margin:5px 0; padding:8px 10px; border-left:3px solid #e7a637; color:#725000; background:#fff9e8; font-size:12px; line-height:1.5; }
.ocr-provider { margin:11px 0 0; color:var(--muted); font-size:11px; }
.ocr-footer { flex:none; display:flex; justify-content:flex-end; gap:10px; padding:13px 22px calc(13px + env(safe-area-inset-bottom)); border-top:1px solid #e3ebf2; background:#fff; }
.ocr-footer button { min-height:44px; padding:0 20px; border-radius:9px; font-weight:700; cursor:pointer; }
.ocr-secondary { border:1px solid #91abc1; color:#15568e; background:#fff; }
.ocr-primary { border:0; color:#fff; background:var(--blue); }
.ocr-primary:disabled { opacity:.45; cursor:not-allowed; }
.login-overlay { position:fixed; inset:0; display:flex; align-items:center; justify-content:center; padding:20px; background:#0a2540d9; z-index:100; }
.login-overlay.hidden { display:none; }
.login-card { width:min(360px,100%); border-radius:14px; padding:26px 28px; background:#fff; box-shadow:0 24px 60px #04121f66; }
.login-card h2 { margin:0 0 6px; }
.login-sub { margin:0 0 16px; color:var(--muted); font-size:13px; }
.login-card input { width:100%; margin-bottom:12px; }
.login-card button { width:100%; min-height:44px; border:0; border-radius:8px; color:#fff; background:var(--blue); font-weight:700; }
.login-card button:disabled { opacity:.65; }
.login-error { margin:0 0 10px; color:#9a2f2f; font-size:13px; min-height:1em; }
@media (max-width:860px) {
  .summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); row-gap:12px; }
  .summary-field:nth-child(3) { padding-left:0; border-left:0; }
  .spec-grid { grid-template-columns:1fr; }
  .spec-item:nth-child(even) { border-left:0; }
  .pricing-grid { grid-template-columns:1fr; }
}
@media (max-width:620px) {
  .shell { width:min(100% - 20px,1180px); padding-top:10px; }
  .hero { padding:21px; border-radius:14px; flex-direction:column; }
  .hero h1 { font-size:26px; }
  .search-row { flex-direction:column; }
  .search-row button { min-height:45px; }
  .bulk-row { flex-direction:column; align-items:stretch; }
  .bulk-row button { min-height:45px; }
  .summary-grid { grid-template-columns:1fr; padding:12px 18px; }
  .summary-field,.summary-field:nth-child(3) { padding:8px 0; border-left:0; border-top:1px solid #e3eaf1; }
  .summary-field:first-child { border-top:0; }
  .config-area { padding:18px; }
  .config-head,.status-row,.section-heading,.history-item { flex-direction:column; gap:8px; }
  .config-picker { display:grid; grid-template-columns:1fr; }
  .config-tab { width:100%; min-width:0; }
  .spec-item { grid-template-columns:118px minmax(0,1fr); padding:8px 13px; }
  .history-item { align-items:stretch; }
}

/* ===================== 手机应用壳 ===================== */
.mobile-app { display:none; }
.export-actions { display:flex; gap:8px; flex-wrap:wrap; padding:12px 18px; }
.export-actions button { min-height:44px; }
.price-modal { min-width:0; max-height:100dvh; overflow-y:auto; }
.pricing-button:disabled,.m-btn:disabled { opacity:.6; cursor:wait; }
@media (max-width:860px) {
  .desktop-shell { display:none; }
  .mobile-app { display:flex; flex-direction:column; height:100dvh; background:var(--ground); }
  .m-topbar { display:flex; align-items:center; gap:10px; padding:14px 16px 10px; padding-top:calc(14px + env(safe-area-inset-top)); background:#0a386d; color:#fff; flex:none; }
  .m-title { font-size:18px; font-weight:700; }
  .m-back { border:0; background:transparent; color:#cfe7ff; font-size:15px; padding:0; }
  .m-content { flex:1; min-height:0; overflow-y:auto; padding:14px 14px 20px; -webkit-overflow-scrolling:touch; }
  .m-view { display:block; }
  .m-view.hidden { display:none; }
  .m-tabbar { flex:none; display:flex; border-top:1px solid #d8e4ef; background:#fff; padding-bottom:env(safe-area-inset-bottom); }
  .m-tab { flex:1; min-height:44px; padding:10px 0 12px; border:0; background:transparent; color:var(--muted); font-size:13px; font-weight:700; }
  .m-tab.active { color:var(--blue); }
  .m-search { display:flex; gap:8px; }
  .m-search input { flex:1; min-width:0; border:1px solid #a8bacd; border-radius:8px; padding:12px 14px; }
  .m-search button { border:0; border-radius:8px; padding:0 18px; color:#fff; background:var(--blue); font-weight:700; }
  .m-search button:disabled { opacity:.65; }
  .m-ocr-actions { display:grid; grid-template-columns:1.25fr 1fr; gap:9px; margin:11px 0 4px; }
  .m-ocr-button { min-width:0; min-height:64px; display:flex; align-items:center; gap:9px; padding:10px 12px; text-align:left; border:1px solid #b6ccdf; border-radius:10px; color:#15568e; background:#fff; }
  .m-ocr-button.primary { color:#fff; border-color:#176fb9; background:linear-gradient(135deg,#176fb9,#2f8be5); box-shadow:0 5px 14px #176fb92e; }
  .m-ocr-icon { flex:none; width:26px; height:26px; display:grid; place-items:center; border-radius:7px; background:#e7f3ff; color:#176fb9; font-size:16px; font-weight:700; }
  .m-ocr-button.primary .m-ocr-icon { color:#fff; background:#ffffff2c; }
  .m-ocr-button span:last-child { min-width:0; }
  .m-ocr-button strong,.m-ocr-button small { display:block; }
  .m-ocr-button strong { font-size:14px; }
  .m-ocr-button small { margin-top:2px; color:inherit; opacity:.75; font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .m-bulk-status { margin:12px 0; padding:9px 12px; border:1px solid #efd185; border-radius:8px; color:#7c5100; background:#fff8df; font-size:13px; }
  .m-bulk-status.confirmed { color:#126044; border-color:#b7e4cf; background:#e4f7ee; }
  .m-section-title { margin:6px 0 12px; color:#15568e; font-size:16px; font-weight:700; }
  .m-wide-primary { width:100%; min-height:48px; border:0; border-radius:9px; color:#fff; background:var(--blue); font-weight:700; }
  .m-pricing-switch { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-bottom:12px; padding:5px; border:1px solid #d8e4ef; border-radius:10px; background:#fff; }
  .m-pricing-switch button { min-height:40px; border:0; border-radius:7px; color:var(--muted); background:#f2f6f9; font-size:12px; font-weight:700; }
  .m-pricing-switch button.active { color:#fff; background:var(--blue); }
  .m-rule-search { display:flex; gap:7px; margin-bottom:10px; }
  .m-rule-search input { min-width:0; min-height:44px; font-size:16px; }
  .m-rule-search button { flex:none; border:0; border-radius:8px; padding:0 15px; color:#fff; background:var(--blue); font-weight:700; }
  .m-filter-sheet { margin:0 0 10px; border:1px solid #d8e4ef; border-radius:9px; background:#fff; }
  .m-filter-sheet summary { padding:11px 12px; color:#315c88; font-size:13px; font-weight:700; cursor:pointer; }
  .m-filter-grid { display:grid; grid-template-columns:1fr 1fr; gap:7px; padding:0 10px 10px; }
  .m-filter-grid select,.m-filter-grid button { min-width:0; min-height:42px; border:1px solid #c3d2df; border-radius:8px; padding:0 8px; color:var(--ink); background:#f9fbfd; }
  .m-filter-grid button { color:#315c88; background:#fff; font-weight:700; }
  .m-pricing-panel .simple-rule-list { margin-top:10px; }
  .m-pricing-panel .simple-rule-item { grid-template-columns:minmax(0,1fr); }
  .m-pricing-panel .simple-rule-item b { white-space:normal; }
  .m-rule-actions { display:flex; gap:7px; margin-top:8px; }
  .m-rule-actions button { flex:1; min-height:38px; border:1px solid #8eb7d8; border-radius:7px; color:#15568e; background:#fff; font-weight:700; }
  .batch-panel { margin-top:12px; }
  .batch-summary { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .batch-controls { display:grid; grid-template-columns:1fr; align-items:stretch; }
  .batch-controls label { min-width:0; }
  .batch-controls .pricing-button { min-height:44px; }
  .batch-row { grid-template-columns:46px minmax(0,1fr); }
  .batch-row em { grid-column:2; text-align:left; }
  .simple-rule-grid { grid-template-columns:1fr; }
  .market-grid { grid-template-columns:1fr; }
  .simple-rule-list { margin-bottom:14px; }
  .m-result-head { margin:10px 0 12px; }
  .m-result-head h2 { margin:0 0 4px; font-size:18px; }
  .m-result-head p { margin:0; color:var(--muted); font-size:13px; }
  .m-config-card { display:block; width:100%; margin-bottom:10px; padding:13px 14px; text-align:left; border:1px solid #d8e4ef; border-radius:10px; background:#fff; }
  .m-config-card:active { background:#f2f8fd; }
  .m-card-group { margin:-3px 0 8px; padding:5px 7px; border-radius:6px; color:#15568e; background:#edf6ff; font-size:11px; font-weight:700; }
  .m-card-top { display:flex; justify-content:space-between; gap:8px; }
  .m-card-title { font-size:15px; font-weight:700; color:var(--ink); }
  .m-card-year { flex:none; color:var(--muted); font-size:12px; }
  .m-card-cap { margin-top:3px; color:var(--muted); font-size:13px; }
  .m-card-model { margin-top:3px; color:var(--muted); font-size:13px; }
  .m-card-params { display:flex; flex-wrap:wrap; gap:3px 12px; margin-top:7px; }
  .m-card-params span { color:var(--muted); font-size:12px; }
  .m-card-params b { color:var(--ink); font-size:12.5px; font-weight:700; }
  .m-card-prices { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-top:10px; }
  .m-price { min-width:0; border:1px solid #e0eaf3; border-radius:7px; padding:8px 9px; background:#f8fbfe; }
  .m-price span { display:block; color:var(--muted); font-size:11px; }
  .m-price strong { display:block; margin-top:3px; font-size:15px; word-break:break-word; }
  .m-price em { display:block; margin-top:2px; color:#9a7a2f; font-style:normal; font-size:11px; line-height:1.4; }
  .m-price strong { font-variant-numeric:tabular-nums; font-size:14px; }
  .m-card-prices .m-price em { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .m-result-head .export-actions { padding:10px 0 0; }
  .m-search input,.m-bulk-form input,.price-modal input,.price-modal select { font-size:16px; }
  .m-pager button { min-height:44px; }
  .m-key-params div,.m-detail-head,.m-params strong { min-width:0; overflow-wrap:anywhere; }
  .m-pager { display:flex; align-items:center; justify-content:center; gap:14px; margin:14px 0; }
  .m-pager button { border:1px solid #74a9d6; border-radius:7px; padding:7px 14px; color:var(--blue); background:#fff; font-weight:700; }
  .m-pager button:disabled { opacity:.4; }
  .m-pager span { color:var(--muted); font-size:13px; }
  .m-empty { padding:26px 12px; text-align:center; color:var(--muted); }
  .m-warn { margin:10px 0; padding:10px 12px; border-left:3px solid #e7a637; color:#725000; background:#fff9e8; font-size:13px; }
  .m-history-item { width:100%; display:flex; justify-content:space-between; gap:12px; margin-bottom:8px; padding:12px 14px; text-align:left; border:1px solid #e2ebf3; border-radius:9px; background:#fff; }
  .m-history-item strong,.m-history-item span { display:block; }
  .m-history-item span { margin-top:3px; color:var(--muted); font-size:12px; }
  .m-bulk-form label { display:block; margin-bottom:12px; font-weight:700; font-size:14px; }
  .m-bulk-form input { width:100%; margin-top:6px; border:1px solid #a8bacd; border-radius:8px; padding:12px 14px; }
  .m-bulk-form button { width:100%; min-height:46px; border:0; border-radius:8px; color:#fff; background:var(--blue); font-weight:700; }
  .m-hint { color:var(--muted); font-size:12px; line-height:1.6; }

  /* 配置详情 */
  .m-detail-head { margin-bottom:12px; }
  .m-detail-head h2 { margin:0 0 4px; font-size:18px; }
  .m-detail-head p { margin:0; color:var(--muted); font-size:13px; }
  .m-detail-prices { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-bottom:12px; }
  .m-detail-prices .m-price { padding:10px 11px; }
  .m-key-params { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-bottom:12px; }
  .m-key-params div { border:1px solid #e0eaf3; border-radius:8px; padding:10px; background:#fff; }
  .m-key-params span { display:block; color:var(--muted); font-size:11px; }
  .m-key-params strong { display:block; margin-top:3px; font-size:14px; }
  .m-collapse { margin-bottom:8px; border:1px solid #d8e4ef; border-radius:8px; background:#fff; overflow:hidden; }
  .m-collapse summary { padding:12px 14px; font-weight:700; color:#15568e; cursor:pointer; list-style:none; }
  .m-collapse summary::-webkit-details-marker { display:none; }
  .m-collapse summary::after { content:'▾'; float:right; color:var(--muted); }
  .m-collapse[open] summary::after { content:'▴'; }
  .m-section-body { padding:4px 14px 14px; color:var(--ink); font-size:14px; line-height:1.7; }
  .m-params { display:grid; grid-template-columns:1fr; gap:0; }
  .m-params div { display:flex; justify-content:space-between; gap:10px; padding:7px 0; border-bottom:1px solid #eef2f6; }
  .m-params div:last-child { border-bottom:0; }
  .m-params span { color:var(--muted); font-size:13px; }
  .m-params strong { text-align:right; font-size:13px; }
  .m-detail-actions { display:flex; gap:10px; margin-top:14px; }
  .m-btn { flex:1; min-height:44px; border:1px solid #74a9d6; border-radius:8px; color:var(--blue); background:#fff; font-weight:700; }
  .m-btn.primary { color:#fff; border:0; background:var(--blue); }

  /* 手机全屏设价表单 */
  .price-overlay,.simple-rule-overlay { align-items:stretch; padding:0; }
  .price-modal { width:100%; min-height:100dvh; border-radius:0; padding:18px 18px calc(18px + env(safe-area-inset-bottom)); display:flex; flex-direction:column; overflow-y:auto; }
  .price-modal label { margin-top:14px; }
  .price-modal input,.price-modal select { width:100%; margin-top:6px; }
  .price-modal-actions { margin-top:auto; padding-top:14px; }
  .price-modal-actions .pricing-button { width:100%; min-height:48px; }
  .history-table { font-size:12px; }

  /* 手机端图片识别为原生应用式全屏确认页 */
  .ocr-overlay { align-items:stretch; padding:0; background:#fff; }
  .ocr-sheet { width:100%; max-height:none; height:100dvh; border-radius:0; box-shadow:none; }
  .ocr-head { padding:calc(14px + env(safe-area-inset-top)) 16px 12px; }
  .ocr-head h2 { font-size:18px; }
  .ocr-close { width:36px; height:36px; }
  .ocr-scroll { display:block; padding:12px 14px 16px; }
  .ocr-preview-wrap { min-height:220px; max-height:43dvh; }
  .ocr-preview { min-height:220px; max-height:43dvh; }
  .ocr-fields { margin-top:14px; }
  .ocr-intro { margin-bottom:8px; }
  .ocr-field { margin-top:11px; }
  .ocr-field input { min-height:46px; font-size:15px; }
  .ocr-footer { display:grid; grid-template-columns:1fr 1.45fr; padding:10px 14px calc(10px + env(safe-area-inset-bottom)); }
  .ocr-footer button { width:100%; min-height:48px; padding:0 10px; }
}

@media (max-width:620px) {
  .batch-head { align-items:stretch; flex-direction:column; }
  .batch-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width:980px) and (min-width:861px) {
  .rule-filters { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
.field-hint{display:block;margin-top:5px;color:#1769aa;font-size:12px;font-weight:600;line-height:1.35}.field-hint.warning{color:#9a5b00}
.user-controls{display:flex;align-items:center;gap:10px}.user-controls .text-button{color:#fff;border-color:rgba(255,255,255,.5);background:rgba(255,255,255,.1)}
.m-account-summary{display:flex;justify-content:space-between;align-items:center;margin:0 0 12px;padding:14px;border:1px solid #d8e4ef;border-radius:10px;background:#fff}.m-account-summary span{color:var(--muted);font-size:13px}
.m-wide-primary.secondary{margin-bottom:18px;color:#15568e;border:1px solid #8eb7d8;background:#fff}
.account-management-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.unified-account-card{border-color:#bdd9ee;background:#f8fcff}.m-wide-primary.account-management-link{width:100%;min-height:46px;color:#fff;background:var(--blue);border-radius:9px;font-weight:700}
.user-management-modal{max-width:980px}.user-create-grid{grid-template-columns:1.2fr 1.2fr 1fr 1.2fr auto;align-items:end;margin-bottom:16px}.user-create-grid .pricing-button{min-height:44px}
.user-table{width:100%;border-collapse:collapse}.user-table th,.user-table td{padding:10px;border-bottom:1px solid #e2eaf2;text-align:left;vertical-align:middle}.user-table select,.user-table input{min-height:38px;padding:7px 9px;border:1px solid #b8c8d7;border-radius:7px}.user-table .rule-actions{display:flex;gap:7px;flex-wrap:wrap}
@media(max-width:860px){.user-management-modal{max-width:none}.user-create-grid{grid-template-columns:1fr}.user-table{min-width:720px}.user-controls{display:none}}
