:root { color-scheme: light; --bg:#f3f0ea; --surface:#ffffff; --surface-2:#f6ead1; --text:#271b1c; --muted:#6f5c55; --line:#e1d0bd; --accent:#e2a21a; --accent-strong:#9e171c; --accent-soft:#fff0c9; --positive:#a31b20; --negative:#b23a25; --shadow:0 14px 34px rgba(74,30,24,.13); --radius:12px; --table-cell-y:10px; --table-cell-x:9px; }
body.dark { color-scheme:dark; --bg:#211719; --surface:#302023; --surface-2:#442b28; --text:#fff8e9; --muted:#d4c0ab; --line:#62423a; --accent:#f4c64c; --accent-strong:#ffe29a; --accent-soft:#573924; --positive:#ffd05a; --negative:#ff9b7d; --shadow:none; }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
body { margin:0; min-width:320px; background:radial-gradient(circle at 83% -8%,#f9dc96 0,transparent 22%),linear-gradient(135deg,#f8f4ea 0%,#f0ece7 48%,#eee7dd 100%); color:var(--text); font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif; font-size:14px; }
button,input,select { font:inherit; }
.app-shell { min-height:100dvh; display:grid; grid-template-columns:264px minmax(0,1fr); }.app-shell[hidden] { display:none; }
.sidebar { position:sticky; top:0; height:100dvh; padding:24px 15px 18px; display:flex; flex-direction:column; border-right:1px solid #5a1519; background:linear-gradient(180deg,#54131b 0%,#340f16 56%,#241016 100%); box-shadow:10px 0 30px rgba(62,18,22,.22); }
.brand { display:flex; align-items:center; gap:11px; padding:0 10px 28px; color:#fff7e6; font-size:18px; font-weight:760; letter-spacing:-.03em; }
.brand-mark { width:32px; height:32px; border-radius:9px; display:grid; place-items:center; color:#59151a; background:#f3c246; font-size:17px; font-weight:850; box-shadow:0 5px 14px rgba(0,0,0,.16); }
.nav-list { display:grid; gap:5px; overflow:auto; padding-right:2px; }
.nav-button { width:100%; display:flex; gap:10px; align-items:center; padding:11px 11px; border:0; border-radius:9px; background:transparent; color:#d9bdb3; text-align:left; cursor:pointer; transition:background .16s,color .16s,transform .16s; }
.nav-button:hover { background:rgba(255,235,188,.09); color:#fff7e6; }.nav-button:active { transform:translateY(1px); }.nav-button.active { background:#e8ae2d; color:#4e1217; font-weight:760; box-shadow:inset 3px 0 0 #fff0b2,0 6px 18px rgba(23,4,6,.18); }.nav-index { width:20px; color:#b98e84; opacity:1; font:11px ui-monospace,SFMono-Regular,Menlo,monospace; }.nav-button.active .nav-index { color:#7a1a1e; }
.source-note { margin-top:auto; padding:17px 10px 2px; color:#c7a59b; display:grid; gap:5px; font-size:12px; border-top:1px solid rgba(255,227,157,.16); }.source-note strong { color:#fff4d9; font-size:12px; font-weight:650; }.source-note small { font-size:11px; }
.main-content { min-width:0; padding:24px clamp(18px,3vw,48px) 44px; }.topbar { display:flex; justify-content:space-between; align-items:center; gap:16px; margin:3px 0 22px; }.title-block p { margin:0 0 5px; color:var(--accent-strong); font-size:12px; font-weight:700; }.title-block h1 { margin:0; font-size:28px; letter-spacing:-.04em; }.topbar-actions { display:flex; align-items:center; gap:14px; flex-wrap:wrap; justify-content:flex-end; }.updated-at,.current-user { color:var(--muted); font-size:12px; }.row-density-control { display:flex; align-items:center; gap:5px; padding:4px 6px 4px 9px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--muted); font-size:11px; font-weight:700; }.row-density-control button { width:24px; height:24px; padding:0; border:0; border-radius:5px; background:var(--surface-2); color:var(--accent-strong); font-size:17px; line-height:1; cursor:pointer; }.row-density-control input { width:72px; accent-color:var(--accent); }.icon-button,.reset-button,.import-button { border:1px solid var(--line); background:var(--surface); color:var(--text); border-radius:8px; cursor:pointer; }.icon-button { width:34px; height:34px; font-size:18px; }.reset-button { align-self:end; height:38px; padding:0 13px; }.import-button { height:34px; padding:0 12px; color:var(--accent-strong); font-size:12px; font-weight:700; }.icon-button:hover,.reset-button:hover,.import-button:hover { border-color:var(--accent); color:var(--accent-strong); }
.filter-panel { display:grid; grid-template-columns:repeat(5,minmax(128px,1fr)) minmax(190px,1.45fr) auto; gap:10px; padding:15px; border:1px solid #dfc7ad; border-radius:var(--radius); background:rgba(255,255,255,.93); box-shadow:var(--shadow); }.filter-panel label { display:grid; gap:6px; color:#76584f; font-size:11px; font-weight:700; }.filter-panel select,.filter-panel input { width:100%; min-height:39px; padding:0 10px; color:var(--text); background:#fffdf8; border:1px solid #dfc7ad; border-radius:7px; outline:none; }.filter-panel select:focus,.filter-panel input:focus { border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent); }.active-filters { min-height:19px; padding:10px 1px 0; color:var(--muted); font-size:12px; }.filter-chip { display:inline-flex; margin-right:7px; padding:3px 8px; border-radius:999px; color:var(--accent-strong); background:var(--accent-soft); font-weight:650; }
.management-intro { padding:24px 26px; border:1px solid #dfc7ad; border-radius:var(--radius); background:linear-gradient(115deg,#fffaf0,#fff 62%); box-shadow:var(--shadow); }.management-intro h2 { margin:0 0 8px; font-size:24px; }.management-intro p { margin:0; color:var(--muted); }.management-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:18px; }.management-card { min-height:180px; display:flex; flex-direction:column; padding:22px; border:1px solid #dfc7ad; border-top:4px solid var(--accent); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }.management-eyebrow { color:var(--accent-strong); font-size:12px; font-weight:800; }.management-card h2 { margin:10px 0 8px; font-size:20px; }.management-card p { flex:1; margin:0 0 18px; color:var(--muted); line-height:1.65; }.management-card .import-submit { width:100%; }
.secondary-followup-form { display:grid; grid-template-columns:repeat(2,minmax(180px,1fr)); gap:14px; align-items:end; }.secondary-followup-form label { display:grid; gap:6px; color:#76584f; font-size:12px; font-weight:700; }.secondary-followup-form select,.secondary-followup-form textarea { width:100%; border:1px solid #dfc7ad; border-radius:7px; padding:10px; color:var(--text); background:#fffdf8; font:inherit; }.secondary-followup-form textarea { min-height:92px; resize:vertical; }.secondary-followup-note { grid-column:1 / -1; }.secondary-followup-actions { display:flex; align-items:center; gap:12px; grid-column:1 / -1; }.secondary-followup-actions .import-submit { min-width:180px; }.secondary-followup-history { margin-top:22px; border-top:1px solid var(--line); padding-top:15px; }.secondary-followup-history h3 { margin:0 0 10px; font-size:14px; }.secondary-followup-history div { display:grid; grid-template-columns:minmax(160px,.8fr) 2fr auto; gap:12px; padding:10px 0; border-bottom:1px solid var(--line); font-size:13px; }.secondary-followup-history span,.secondary-followup-history small { color:var(--muted); }
.dashboard-root { display:grid; gap:16px; }.metric-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:13px; }.terminal-metric-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }.metric-card { min-height:126px; padding:18px; border:1px solid #e6cfae; border-top:3px solid #e2a21a; border-radius:var(--radius); background:linear-gradient(145deg,#fff 0%,#fffaf1 100%); box-shadow:0 12px 26px rgba(79,30,22,.10); }.metric-label { color:#75584f; font-size:12px; font-weight:650; }.metric-value { margin:15px 0 8px; font-size:28px; letter-spacing:-.05em; font-weight:780; }.metric-note { color:#80685e; font-size:12px; }.positive { color:var(--positive); }.negative { color:var(--negative); }
.content-grid { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(310px,.8fr); gap:16px; }.panel { min-width:0; padding:17px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }.panel-header { display:flex; justify-content:space-between; align-items:start; gap:14px; margin-bottom:16px; }.panel h2 { margin:0; font-size:16px; letter-spacing:-.02em; }.panel-subtitle { margin:5px 0 0; color:var(--muted); font-size:12px; }.panel-detail { color:var(--muted); font-size:12px; white-space:nowrap; }.chart { min-height:240px; display:flex; align-items:end; gap:10px; padding-top:10px; overflow-x:auto; }.bar-set { flex:1 0 38px; min-width:38px; height:220px; display:flex; flex-direction:column; align-items:center; justify-content:end; gap:6px; }.bars { width:100%; height:180px; display:flex; align-items:end; justify-content:center; gap:3px; }.bar { width:min(16px,45%); min-height:2px; border-radius:4px 4px 1px 1px; background:var(--accent); transition:height .28s ease; }.bar.prior { background:#c8a37c; }.bar-label { color:var(--muted); font:11px ui-monospace,SFMono-Regular,Menlo,monospace; }.chart-legend { display:flex; gap:12px; color:var(--muted); font-size:12px; }.legend-dot { display:inline-block; width:8px; height:8px; margin-right:4px; border-radius:99px; background:var(--accent); }.legend-dot.prior { background:#c8a37c; }
.rank-list { display:grid; gap:0; }.rank-row { display:grid; grid-template-columns:26px minmax(0,1fr) auto; align-items:center; gap:9px; padding:10px 0; border-bottom:1px solid var(--line); }.rank-row:last-child { border-bottom:0; }.rank { color:var(--muted); font:11px ui-monospace,SFMono-Regular,Menlo,monospace; }.rank-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.rank-name small { display:block; margin-top:3px; color:var(--muted); font-size:11px; }.rank-value { text-align:right; font-weight:700; white-space:nowrap; }.rank-value small { display:block; margin-top:3px; color:var(--muted); font-size:11px; font-weight:400; }
.table-panel { overflow:hidden; }.table-scroll { overflow:auto; max-height:520px; }.data-table { min-width:0; table-layout:fixed; border-collapse:collapse; font-size:13px; }.data-table th { position:sticky; top:0; z-index:1; padding:var(--table-cell-y) var(--table-cell-x); color:var(--muted); background:var(--surface-2); text-align:left; font-size:11px; white-space:nowrap; }.data-table th .header-label { display:block; overflow:hidden; text-overflow:ellipsis; }.data-table th { position:sticky; }.column-resizer { position:absolute; top:0; right:-4px; z-index:3; width:8px; height:100%; cursor:col-resize; touch-action:none; }.column-resizer::after { content:''; position:absolute; top:18%; bottom:18%; left:3px; width:2px; border-radius:2px; background:transparent; transition:background .15s; }.data-table th:hover .column-resizer::after,.data-table th.is-resizing .column-resizer::after { background:var(--accent-strong); }.data-table td { padding:var(--table-cell-y) var(--table-cell-x); border-bottom:1px solid var(--line); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.data-table tr:last-child td { border-bottom:0; }.data-table .numeric { text-align:right; font-variant-numeric:tabular-nums; }.data-table tbody tr:hover { background:var(--accent-soft); }.limit-note { padding-top:11px; color:var(--muted); font-size:12px; }
.table-scroll .data-table th:first-child,.table-scroll .data-table td:first-child,.table-scroll .data-table th:nth-child(2),.table-scroll .data-table td:nth-child(2) { position:sticky; }
.table-scroll .data-table th:first-child,.table-scroll .data-table td:first-child { left:0; }
.table-scroll .data-table th:nth-child(2),.table-scroll .data-table td:nth-child(2) { left:var(--sticky-first-width,130px); }
.table-scroll .data-table th:first-child,.table-scroll .data-table th:nth-child(2) { z-index:4; }
.table-scroll .data-table td:first-child,.table-scroll .data-table td:nth-child(2) { z-index:2; background:var(--surface); }
.table-scroll .data-table th:nth-child(2),.table-scroll .data-table td:nth-child(2) { box-shadow:5px 0 7px -7px rgba(65,33,28,.55); }
.table-scroll .data-table tbody tr:hover td:first-child,.table-scroll .data-table tbody tr:hover td:nth-child(2) { background:var(--accent-soft); }
.coverage-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:11px; }.coverage-item { padding:13px; background:var(--surface-2); border-radius:9px; }.coverage-item strong { display:block; margin:9px 0 5px; font-size:20px; }.coverage-item span { color:var(--muted); font-size:12px; }.empty-state { padding:54px 16px; border:1px dashed var(--line); border-radius:var(--radius); text-align:center; background:var(--surface); }.empty-state h2 { margin:0 0 8px; font-size:18px; }.empty-state p { margin:0; color:var(--muted); }.loading-state { display:grid; grid-template-columns:repeat(4,1fr); gap:13px; }.loading-state span { height:126px; border-radius:var(--radius); background:linear-gradient(90deg,var(--surface-2),var(--surface),var(--surface-2)); background-size:200% 100%; animation:loading 1.2s infinite; }@keyframes loading { to { background-position:-200% 0; }}.import-dialog { width:min(500px,calc(100vw - 32px)); padding:0; border:1px solid var(--line); border-radius:12px; color:var(--text); background:var(--surface); box-shadow:0 24px 80px rgba(20,42,54,.24); }.import-dialog::backdrop { background:rgba(20,32,40,.36); }.import-dialog form { display:grid; gap:16px; padding:22px; }.dialog-header { display:flex; align-items:start; justify-content:space-between; gap:12px; }.dialog-header h2 { margin:0; font-size:18px; }.dialog-header p,.import-note,.import-status { margin:6px 0 0; color:var(--muted); font-size:12px; line-height:1.55; }.import-dialog label { display:grid; gap:7px; color:var(--text); font-weight:650; }.import-dialog input[type=file] { width:100%; padding:10px; border:1px dashed var(--line); border-radius:8px; background:var(--surface-2); color:var(--muted); }.import-submit { min-height:40px; border:0; border-radius:8px; background:var(--accent); color:#fff; font-weight:700; cursor:pointer; }.import-submit:disabled { opacity:.6; cursor:wait; }
.maintenance-dialog { width:min(1280px,calc(100vw - 40px)); max-height:min(860px,calc(100dvh - 40px)); padding:0; border:1px solid var(--line); border-radius:14px; color:var(--text); background:var(--surface); box-shadow:0 24px 80px rgba(20,42,54,.30); }.maintenance-dialog::backdrop { background:rgba(20,24,28,.48); }.maintenance-shell { display:grid; gap:16px; padding:22px; }.maintenance-toolbar { display:flex; align-items:end; gap:10px; flex-wrap:wrap; padding:13px; border:1px solid var(--line); border-radius:9px; background:var(--surface-2); }.maintenance-toolbar label,.maintenance-form label,.maintenance-login label { display:grid; gap:6px; color:var(--muted); font-size:12px; font-weight:700; }.maintenance-toolbar select,.maintenance-form input,.maintenance-login input { min-width:220px; height:38px; padding:0 10px; border:1px solid var(--line); border-radius:7px; color:var(--text); background:var(--surface); }.maintenance-count { margin-left:auto; color:var(--muted); font-size:12px; }.maintenance-note { margin:0; color:var(--muted); font-size:12px; }.maintenance-editor { padding:17px; border:1px solid #dfc7ad; border-radius:10px; background:#fffaf0; }.maintenance-editor h3,.maintenance-login h3 { margin:0 0 14px; font-size:16px; }.maintenance-form { display:grid; gap:14px; }.maintenance-form-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:11px; }.maintenance-form label { min-width:0; }.maintenance-form input { width:100%; min-width:0; }.maintenance-form b { color:var(--accent-strong); }.maintenance-actions { display:flex; justify-content:flex-end; gap:10px; }.maintenance-actions .reset-button { align-self:auto; }.maintenance-actions .import-submit { padding:0 18px; }.maintenance-table { border:1px solid var(--line); border-radius:9px; overflow:hidden; }.maintenance-table .table-scroll { max-height:460px; }.maintenance-row-actions { display:flex; gap:6px; }.maintenance-row-actions .reset-button { align-self:auto; height:30px; padding:0 9px; font-size:12px; }.status-pill { display:inline-flex; padding:3px 7px; border-radius:999px; color:#6b4d14; background:#ffedba; font-size:11px; font-weight:700; }.status-pill.stopped { color:#7a1b21; background:#f5d6d7; }.maintenance-login { display:grid; gap:13px; width:min(420px,100%); margin:32px auto; padding:22px; border:1px solid var(--line); border-radius:10px; background:var(--surface-2); }.maintenance-login p { margin:0; color:var(--muted); font-size:12px; }.maintenance-login input { width:100%; }
.maintenance-imports { display:grid; gap:12px; padding:15px; border:1px solid #dfc7ad; border-radius:10px; background:linear-gradient(120deg,#fff4d7,#fffaf1); }.maintenance-imports h3 { margin:0; font-size:15px; }.maintenance-imports p { margin:5px 0 0; color:var(--muted); font-size:12px; line-height:1.6; }.maintenance-import-actions { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; }.maintenance-import-card { min-height:92px; display:grid; align-content:start; gap:5px; padding:12px; border:1px solid #dfc7ad; border-top:3px solid var(--accent); border-radius:8px; color:var(--text); background:var(--surface); text-align:left; cursor:pointer; }.maintenance-import-card:hover { border-color:var(--accent); background:#fffdf8; }.maintenance-import-card strong { color:var(--accent-strong); font-size:13px; }.maintenance-import-card small { color:var(--muted); font-size:11px; line-height:1.45; }
.followup-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; }.followup-form label { display:grid; gap:5px; color:var(--muted); font-size:12px; font-weight:650; }.followup-form select,.followup-form textarea { width:100%; padding:9px 10px; border:1px solid var(--line); border-radius:7px; color:var(--text); background:var(--surface); }.followup-form textarea { min-height:78px; resize:vertical; }.followup-form .followup-note,.followup-form .import-submit,.followup-form .import-status { grid-column:1 / -1; }.followup-user { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; padding:9px 10px; border-radius:8px; background:var(--accent-soft); color:var(--accent-strong); font-weight:700; }.followup-user .reset-button { align-self:auto; height:30px; font-size:12px; }.followup-history { display:grid; gap:0; margin-top:15px; }.followup-history div { display:grid; gap:3px; padding:9px 0; border-top:1px solid var(--line); }.followup-history span,.followup-history small { color:var(--muted); font-size:12px; }.followup-history small { font-size:11px; }
.receivable-plan-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; }.receivable-plan-form label { display:grid; gap:5px; color:var(--muted); font-size:12px; font-weight:650; }.receivable-plan-form select,.receivable-plan-form input,.receivable-plan-form textarea { width:100%; padding:9px 10px; border:1px solid var(--line); border-radius:7px; color:var(--text); background:var(--surface); }.receivable-plan-form textarea { min-height:76px; resize:vertical; }.receivable-plan-form .import-submit,.receivable-plan-form .import-status { grid-column:1 / -1; }
.receivable-editor-status { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 12px; padding:10px 11px; border:1px solid var(--line); border-radius:8px; color:var(--muted); background:var(--surface-2); font-size:12px; }.receivable-editor-status .reset-button { align-self:auto; height:30px; font-size:12px; white-space:nowrap; }.inline-plan-input,.inline-plan-note { width:100%; min-width:104px; padding:6px 7px; border:1px solid var(--line); border-radius:6px; color:var(--text); background:var(--surface); font-size:12px; }.inline-plan-number { min-width:92px; text-align:right; font-variant-numeric:tabular-nums; }.inline-plan-note { min-width:170px; min-height:42px; resize:vertical; vertical-align:top; }.inline-plan-save { padding:6px 10px; border:0; border-radius:6px; color:#fff; background:var(--accent); font-size:12px; font-weight:700; cursor:pointer; }.inline-plan-save:disabled { opacity:.6; cursor:wait; }.inline-plan-result { display:block; max-width:120px; margin-top:4px; color:var(--muted); font-size:10px; white-space:normal; }
.promotion-import-dialog { width:min(620px,calc(100vw - 32px)); }
.promotion-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 16px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }.promotion-toolbar div { display:grid; gap:4px; }.promotion-toolbar strong { font-size:14px; }.promotion-toolbar span { color:var(--muted); font-size:12px; }.promotion-warning { padding:12px 15px; border:1px solid #e7bd67; border-radius:9px; color:#7e5110; background:#fff0c9; font-size:12px; font-weight:650; }
.promotion-policy-summary { display:grid; grid-template-columns:minmax(180px,1fr) auto auto; gap:14px; align-items:center; margin-bottom:14px; padding:12px 14px; border-radius:9px; background:var(--surface-2); }.promotion-policy-summary span { color:var(--muted); font-size:12px; }
.promotion-policy-form { display:grid; gap:14px; }.promotion-policy-meta { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; }.promotion-policy-meta label,.promotion-policy-row label { display:grid; gap:5px; color:var(--muted); font-size:11px; font-weight:700; }.promotion-policy-meta input,.promotion-policy-row input { width:100%; min-height:38px; padding:0 9px; border:1px solid var(--line); border-radius:7px; color:var(--text); background:var(--surface); }.promotion-policy-meta input:focus,.promotion-policy-row input:focus,.promotion-feedback:focus { outline:3px solid color-mix(in srgb,var(--accent) 18%,transparent); border-color:var(--accent); }
.promotion-policy-rows { display:grid; gap:10px; max-height:470px; overflow:auto; padding:2px; }.promotion-policy-row { display:grid; grid-template-columns:130px 180px 150px 190px 130px 100px 100px 220px 240px 180px auto; gap:8px; align-items:end; min-width:1730px; padding:12px; border:1px solid var(--line); border-radius:9px; background:var(--surface-2); }.promotion-policy-row .reset-button { align-self:end; white-space:nowrap; }.promotion-policy-actions { display:flex; align-items:center; gap:12px; }.promotion-policy-actions .import-status { flex:1; margin:0; }.promotion-policy-actions .import-submit { min-width:150px; padding:0 16px; }
.promotion-feedback { width:100%; min-width:190px; min-height:58px; padding:7px 8px; border:1px solid var(--line); border-radius:7px; color:var(--text); background:var(--surface); font:inherit; font-size:12px; resize:vertical; }.empty-state.compact { padding:28px 14px; box-shadow:none; }
.promo-overview-grid { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr); gap:16px; }.promo-chart-card { min-width:0; padding:20px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }.promo-chart-heading h3 { margin:0; font-size:16px; }.promo-chart-heading p { margin:5px 0 0; color:var(--muted); font-size:12px; }.promo-columns { height:250px; display:flex; align-items:end; justify-content:space-around; gap:24px; padding:24px 10px 0; }.promo-column { width:min(150px,30%); height:100%; display:grid; grid-template-rows:auto 1fr auto auto; gap:6px; text-align:center; }.promo-column-value { color:var(--accent-strong); font-size:14px; font-weight:800; }.promo-column-track { min-height:130px; display:flex; align-items:end; justify-content:center; border-bottom:1px solid var(--line); background:repeating-linear-gradient(to top,transparent 0,transparent 32px,color-mix(in srgb,var(--line) 45%,transparent) 33px); }.promo-column-track span { width:min(74px,70%); min-height:2px; border-radius:8px 8px 2px 2px; background:linear-gradient(180deg,#f2be42,var(--accent-strong)); }.promo-column strong { font-size:12px; }.promo-column small { color:var(--muted); font-size:10px; }.promo-distribution { min-height:250px; display:flex; align-items:center; justify-content:center; gap:28px; }.promo-donut { width:152px; aspect-ratio:1; display:grid; place-items:center; border-radius:50%; background:conic-gradient(var(--accent) 0 var(--promo-ratio),var(--surface-2) var(--promo-ratio) 100%); position:relative; }.promo-donut::after { content:''; position:absolute; inset:22px; border-radius:50%; background:var(--surface); }.promo-donut span { z-index:1; display:grid; gap:2px; text-align:center; }.promo-donut strong { font-size:30px; }.promo-donut small,.promo-distribution-copy span,.promo-distribution-copy small { color:var(--muted); font-size:11px; }.promo-distribution-copy { display:grid; gap:5px; }.promo-distribution-copy strong { color:var(--accent-strong); font-size:24px; }
.promo-manufacturer-list { display:grid; gap:12px; }.promo-manufacturer { border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--surface); }.promo-manufacturer>summary { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:15px 17px; cursor:pointer; background:linear-gradient(90deg,var(--surface-2),var(--surface)); list-style:none; }.promo-manufacturer>summary::-webkit-details-marker { display:none; }.promo-manufacturer>summary span { display:grid; gap:4px; }.promo-manufacturer>summary strong { font-size:15px; }.promo-manufacturer>summary small { color:var(--muted); font-size:11px; }.promo-manufacturer>summary b { color:var(--accent-strong); font-size:11px; }.promo-plan-list { display:grid; gap:12px; padding:14px; border-top:1px solid var(--line); }.promo-plan { min-width:0; padding:15px; border:1px solid var(--line); border-left:4px solid var(--accent); border-radius:9px; background:var(--surface); }.promo-plan>header { display:flex; justify-content:space-between; gap:18px; margin-bottom:13px; }.promo-plan h3 { margin:0 0 5px; font-size:14px; }.promo-plan p { margin:0 0 4px; color:var(--muted); font-size:11px; }.promo-plan header small { color:var(--muted); font-size:10px; }.promo-plan-result { display:flex; gap:16px; text-align:right; white-space:nowrap; }.promo-plan-result span { display:grid; gap:3px; color:var(--muted); font-size:10px; }.promo-plan-result strong { color:var(--text); font-size:14px; }
.promo-analysis-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }.promo-legend { display:flex; gap:13px; align-items:center; flex-wrap:wrap; margin-bottom:12px; color:var(--muted); font-size:10px; }.promo-legend i { display:inline-block; width:9px; height:9px; margin-right:4px; border-radius:2px; background:var(--accent); }.promo-legend i.average { background:#b99777; }.promo-legend i.customers { background:var(--accent-strong); }.promo-legend em { margin-left:auto; font-style:normal; }.promo-people-chart { display:grid; gap:9px; max-height:560px; overflow:auto; padding-right:4px; }.promo-person-row { display:grid; grid-template-columns:minmax(90px,150px) 1fr; gap:11px; align-items:center; }.promo-person-name { min-width:0; display:grid; gap:3px; }.promo-person-name strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px; }.promo-person-name small { color:var(--muted); font-size:9px; }.promo-person-bars { display:grid; gap:3px; }.promo-bar-line { min-height:15px; display:grid; grid-template-columns:1fr 48px; align-items:center; gap:6px; background:linear-gradient(90deg,var(--surface-2),transparent); border-radius:4px; }.promo-bar { display:block; height:8px; min-width:0; border-radius:0 4px 4px 0; background:var(--accent); }.promo-bar.average { background:#b99777; }.promo-bar-line b { color:var(--muted); font-size:9px; font-variant-numeric:tabular-nums; text-align:right; }.promo-customer-track { height:3px; margin-right:54px; background:var(--surface-2); border-radius:3px; overflow:hidden; }.promo-customer-track span { display:block; height:100%; background:var(--accent-strong); }.promotion-source-note { margin-top:-7px; color:var(--muted); font-size:10px; text-align:right; }
.promotion-template-legend { display:flex; flex-wrap:wrap; gap:8px 18px; margin:0 0 12px; padding:11px 13px; border:1px solid var(--line); border-radius:8px; color:var(--muted); background:var(--surface-2); font-size:11px; }.promotion-template-legend span { display:inline-flex; gap:7px; align-items:center; }.promotion-template-legend b { color:var(--accent-strong); }.promotion-template-scroll { max-height:650px; }.promotion-activity-table th { text-align:center; vertical-align:middle; }.promotion-activity-table thead tr:first-child th { top:0; }.promotion-activity-table thead tr:nth-child(2) th { top:calc(var(--table-cell-y) * 2 + 18px); left:auto!important; z-index:3; box-shadow:none!important; }.promotion-activity-table .promotion-manufacturer-header { color:var(--accent-strong); border-left:1px solid var(--line); border-right:1px solid var(--line); }.promotion-activity-table td { vertical-align:top; }.promotion-activity-table td:nth-last-child(-n+2) { overflow:visible; white-space:normal; }.promotion-autosave { display:block; margin-top:4px; color:var(--muted); font-size:9px; white-space:normal; }
.recon-hero { padding:26px; border:1px solid #dfc7ad; border-radius:var(--radius); background:linear-gradient(120deg,#fff2d4,#fff 64%); box-shadow:var(--shadow); }.recon-hero span { color:var(--accent-strong); font-size:12px; font-weight:800; }.recon-hero h2 { margin:8px 0; font-size:24px; }.recon-hero p { margin:0; color:var(--muted); }.recon-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }.recon-upload { display:grid; gap:15px; }.recon-upload label,.recon-mapping-sheets label,.recon-map-fields label { display:grid; gap:6px; color:var(--muted); font-size:12px; font-weight:700; }.recon-upload input { padding:11px; border:1px dashed var(--line); border-radius:8px; background:var(--surface-2); }.recon-history { display:grid; gap:8px; max-height:310px; overflow:auto; }.recon-history-item { display:grid; grid-template-columns:130px 1fr auto; gap:10px; padding:11px; border:1px solid var(--line); border-radius:8px; color:var(--text); background:var(--surface-2); text-align:left; cursor:pointer; }.recon-history-item span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.recon-history-item small { color:var(--muted); }.recon-stepbar,.recon-result-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }.recon-stepbar .reset-button,.recon-result-toolbar .reset-button { align-self:auto; }.recon-mapping-sheets { display:grid; grid-template-columns:1fr 1fr 180px; gap:12px; margin-bottom:18px; padding:14px; border-radius:9px; background:var(--surface-2); }.recon-mapping-sheets select,.recon-mapping-sheets input,.recon-map-fields select,.recon-result-toolbar select { min-height:38px; padding:0 9px; border:1px solid var(--line); border-radius:7px; color:var(--text); background:var(--surface); }.recon-map-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }.recon-map-grid section { padding:16px; border:1px solid var(--line); border-radius:9px; }.recon-map-grid h3 { margin:0 0 4px; }.recon-map-grid section>p { margin:0 0 13px; color:var(--muted); font-size:12px; }.recon-map-fields { display:grid; grid-template-columns:1fr 1fr; gap:10px; }.recon-map-fields b { color:var(--negative); }.recon-actions { display:flex; align-items:center; justify-content:flex-end; gap:14px; margin-top:18px; }.recon-actions .import-status { margin-right:auto; }.recon-actions .import-submit { min-width:190px; padding:0 18px; }.recon-result-toolbar h2 { margin:0; }.recon-export-button { min-height:36px; padding:0 14px; white-space:nowrap; }.table-scroll .data-table .recon-customer-row td { background:#fff1f0; }.table-scroll .data-table .recon-company-row td { background:#eef7ff; }.recon-customer-row td:first-child { color:#a82d34; font-weight:800; border-left:3px solid #c9484f; }.recon-company-row td:first-child { color:#2366a0; font-weight:800; border-left:3px solid #3f83bd; }.data-table tbody .recon-customer-row:hover td { background:#ffe3e0; }.data-table tbody .recon-company-row:hover td { background:#dfefff; }
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }}

/* 操作密度由顶部“行距”控件维护，默认适中。 */
.import-dialog::backdrop { background:rgba(20,32,40,.52); }
.import-dialog input:not([type=file]),.import-dialog select { min-height:39px; padding:0 10px; border:1px solid var(--line); border-radius:8px; color:var(--text); background:var(--surface-2); }
.app-login-dialog { width:min(430px,calc(100vw - 32px)); }
.app-login-dialog form { padding:28px; }
.app-login-gate { position:fixed; inset:0; z-index:1000; display:grid; place-items:center; padding:20px; background:linear-gradient(135deg,rgba(44,8,18,.96),rgba(102,18,25,.88)); }.app-login-gate[hidden] { display:none; }.app-login-gate form { display:grid; gap:16px; width:min(430px,100%); padding:30px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:0 28px 80px rgba(0,0,0,.35); }.app-login-gate label { display:grid; gap:7px; color:var(--muted); font-size:13px; font-weight:700; }.app-login-gate input { width:100%; height:42px; padding:0 12px; border:1px solid var(--line); border-radius:8px; color:var(--text); background:#fff; font:inherit; box-sizing:border-box; }.app-login-gate input:focus { outline:3px solid rgba(226,162,26,.28); border-color:var(--accent); }
@media (max-width:1240px) { .filter-panel { grid-template-columns:repeat(3,1fr); }.filter-panel .search-label { grid-column:span 2; }.reset-button { justify-self:start; }.metric-grid,.terminal-metric-grid { grid-template-columns:repeat(2,1fr); }.promo-overview-grid,.promo-analysis-grid { grid-template-columns:1fr; } }
@media (max-width:850px) { .app-shell { grid-template-columns:1fr; }.sidebar { position:static; height:auto; padding:14px 14px 8px; border-right:0; border-bottom:1px solid var(--line); }.brand { padding-bottom:12px; }.nav-list { display:flex; overflow:auto; padding-bottom:5px; }.nav-button { width:auto; flex:0 0 auto; }.source-note { display:none; }.main-content { padding:19px 16px 30px; }.filter-panel { grid-template-columns:repeat(2,minmax(0,1fr)); }.filter-panel .search-label { grid-column:span 2; }.content-grid,.recon-grid,.recon-map-grid { grid-template-columns:1fr; }.recon-mapping-sheets { grid-template-columns:1fr; }.coverage-grid { grid-template-columns:1fr; }.maintenance-form-grid,.receivable-plan-form,.maintenance-import-actions,.promotion-policy-meta { grid-template-columns:repeat(2,minmax(0,1fr)); }.maintenance-count { width:100%; margin-left:0; }.promotion-policy-summary { grid-template-columns:1fr; }.promotion-toolbar { align-items:flex-start; } }
@media (max-width:520px) { .topbar { align-items:start; }.updated-at { display:none; }.title-block h1 { font-size:24px; }.filter-panel { grid-template-columns:1fr; }.filter-panel .search-label { grid-column:auto; }.metric-grid { grid-template-columns:1fr; }.metric-card { min-height:105px; }.metric-value { margin:11px 0 6px; }.panel { padding:14px; }.promo-columns { gap:8px; padding-left:0; padding-right:0; }.promo-column-value { font-size:11px; }.promo-distribution { flex-direction:column; gap:12px; }.promo-plan>header { display:grid; }.promo-plan-result { text-align:left; }.promo-person-row { grid-template-columns:90px 1fr; } }
