/* 电车汽车·销售跟进经营看板 — 共用样式（2026-09-14 按三方设计评审重写）
   规则：所有颜色/间距/圆角/字号只从 :root token 取值；不要在文件末尾追加覆盖块，
   改样式请直接改对应规则。手机端表格由 .table-wrap 的 stacked 规则接管。 */
:root{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",sans-serif;
  font-size:16px;line-height:1.45;color:var(--fg);background:var(--bg);
  /* 颜色 */
  --fg:#17211b;            /* 正文/数字 */
  --fg-2:#3f4d45;          /* 次要文字 */
  --fg-muted:#5b6a61;      /* 辅助说明、标签（白底 5.7:1） */
  --bg:#f3f6f4;            /* 页面底 */
  --surface:#ffffff;       /* 卡片 */
  --surface-2:#f6f9f7;     /* 表头、次级面板 */
  --line:#e1e8e3;          /* 分割线 */
  --brand:#123a28;         /* 页头 */
  --brand-fg:#ffffff;
  --brand-muted:#b9d3c3;   /* 页头辅助文字 */
  --green:#0f7a36;         /* 主按钮/链接/主指标（白底 5.4:1） */
  --green-soft:#e6f4ea;
  --warn:#b45309;          /* 警示色：待处理/判定无效 */
  --warn-soft:#fdf1e4;
  --neutral:#718078;
  --neutral-soft:#edf1ee;
  --table-line:#c8d3cc;  /* 手机指标网格需要比普通卡片边界更清晰 */
  --info:#1f5f9e;--info-soft:#e8f1fb;
  --accent:#5b3fa8;--accent-soft:#efeafa;   /* 触达分布第四色 */
  --green-hover:#0c6a2f;--hover-line:#9cc9ad;--hover-bg:#f6fbf8;
  --warn-fg:#8a4108;--brand-nav:#e3eee7;
  /* 间距 4/8 刻度 */
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;
  /* 圆角 */
  --r1:8px;--r2:12px;--r3:16px;
  /* 字号 */
  --t-xs:12px;--t-sm:14px;--t-md:16px;--t-lg:20px;--t-xl:24px;--t-2xl:32px;
  --shadow:0 1px 2px rgba(16,24,20,.06);
  --tap:44px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0}
button,select,input{font:inherit;color:inherit}
h1,h2,h3,p{margin:0}
h1{font-size:var(--t-xl);font-weight:700;line-height:1.2}
h2{font-size:var(--t-lg);font-weight:700;line-height:1.25}
h3{font-size:var(--t-md);font-weight:650;line-height:1.3}
p{color:var(--fg-muted)}
b,strong{font-variant-numeric:tabular-nums}

/* ---------- 页头（两页共用） ---------- */
.app-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s4);padding:var(--s5) clamp(16px,4vw,48px);background:var(--brand);color:var(--brand-fg)}
.app-header>div:first-child{min-width:0;flex:1 1 240px}
.app-header h1{overflow-wrap:anywhere}
.app-header p{color:var(--brand-muted);font-size:var(--t-sm);margin-top:var(--s1)}
.header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3);max-width:100%}
.view-nav{display:flex;padding:2px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);border-radius:var(--r2)}
.view-nav a{display:flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 var(--s4);border-radius:var(--r1);color:var(--brand-nav);text-decoration:none;font-size:var(--t-sm)}
.view-nav a.active{color:var(--brand);background:var(--surface);font-weight:650}
/* WebKit 不让 select 跟随 min-height：关掉原生外观、显式定高、自绘箭头 */
.app-header select{-webkit-appearance:none;appearance:none;height:var(--tap);min-width:160px;max-width:100%;padding:0 var(--s6) 0 var(--s3);border:1px solid rgba(255,255,255,.3);border-radius:var(--r1);color:var(--fg);background:var(--surface) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%235b6a61' stroke-width='1.6'/></svg>") no-repeat right var(--s3) center}

/* ---------- 布局 ---------- */
main{padding:var(--s5) clamp(16px,4vw,48px);max-width:1600px;margin:auto}
.panel,.card,.status-card,.workspace-panel,.denied{background:var(--surface);border:1px solid var(--line);border-radius:var(--r2)}
.panel{margin-top:var(--s4);padding:var(--s5)}
.section-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--s3)}
.section-head>div{min-width:0;flex:1 1 220px}
.section-head p{margin-top:var(--s1);font-size:var(--t-sm)}
.panel>h3{margin:var(--s5) 0 var(--s3)}
.view-hint{display:none}
.page-loading{max-width:560px;margin:80px auto;padding:var(--s5);display:flex;align-items:center;gap:var(--s4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--shadow)}
.page-loading p{margin-top:var(--s1);font-size:var(--t-sm)}
.load-state{min-height:120px;margin:var(--s4) 0;padding:var(--s5);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s3);text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r2)}
.load-state p{max-width:520px}
.load-state .ghost{min-width:120px}
.spinner{width:24px;height:24px;border:3px solid var(--line);border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.spinner{animation:none;border-color:var(--green)}}

/* ---------- 按钮 ---------- */
.primary,.ghost{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 var(--s4);border-radius:var(--r1);font-weight:600;cursor:pointer;white-space:nowrap}
.primary{width:100%;border:0;background:var(--green);color:var(--brand-fg)}
.primary.compact{width:auto}
.ghost{border:1px solid var(--line);background:var(--surface);color:var(--green)}
.primary:hover{background:var(--green-hover)}.ghost:hover{background:var(--green-soft)}

/* ---------- 筛选栏（index）/ 工具栏（daily） ---------- */
.range-bar,.daily-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s4);margin-bottom:var(--s4)}
.range-bar>div:first-child,.daily-toolbar>div:first-child{flex:1 1 260px;min-width:0;margin-right:auto}
.range-bar b,.daily-toolbar b{font-size:var(--t-md)}
.range-bar span,.daily-toolbar span{display:block;color:var(--fg-muted);font-size:var(--t-sm);margin-top:var(--s1)}
.range-bar label,.daily-toolbar label{flex:1 1 150px;min-width:0;font-size:var(--t-xs);color:var(--fg-muted)}
.range-bar input,.daily-toolbar input{display:block;width:100%;min-height:var(--tap);margin-top:var(--s1);padding:0 var(--s3);border:1px solid var(--line);border-radius:var(--r1);color:var(--fg);background:var(--surface)}
.range-actions{display:flex;gap:var(--s2);flex:0 0 auto}
/* iOS WebKit：日期值由内部容器渲染，不随 min-height 拉伸，会贴顶；显式定高并让内部容器 flex 居中 */
input[type=date]{-webkit-appearance:none;appearance:none;position:relative;height:var(--tap);display:flex;align-items:center;line-height:1.2}
input[type=date]::-webkit-date-and-time-value{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:1.2em;margin:0;text-align:center}
input[type=date]::-webkit-datetime-edit{display:flex;align-items:center;height:100%;padding:0}
@supports (-webkit-touch-callout:none){
  input[type=date]:not(.has-value)::before{content:"年/月/日";color:var(--fg-muted);position:absolute;left:var(--s3);top:50%;transform:translateY(-50%);pointer-events:none}
  input[type=date].has-value::before{content:none}
}

/* ---------- 指标卡（index 6 张） ---------- */
.cards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--s3)}
.card{min-width:0;min-height:120px;padding:var(--s4);text-align:left;cursor:pointer;box-shadow:var(--shadow);overflow-wrap:anywhere}
.card:hover,.status-card button:hover,td button:hover,.lead:hover,.action-list button:hover,.daily-card:hover{border-color:var(--hover-line);background:var(--hover-bg)}
.card span{display:flex;justify-content:space-between;align-items:center;gap:var(--s2);color:var(--fg-2);font-size:var(--t-sm)}
.card strong{display:block;margin:var(--s3) 0 var(--s2);font-size:var(--t-2xl);line-height:1;color:var(--fg)}
.card small{color:var(--fg-muted);font-size:var(--t-xs)}
.card[data-metric="uncalled"] strong{color:var(--neutral)}

/* ---------- 销售工作区 ---------- */
.workspace-panel{margin-top:var(--s4);padding:var(--s4)}
.workspace-copy{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s3)}
.workspace-copy>div{display:flex;align-items:center;gap:var(--s3);min-width:0;flex:1 1 220px}
.workspace-copy b,.workspace-copy small{display:block}
.workspace-copy small{color:var(--fg-muted);font-size:var(--t-sm);margin-top:2px}
.workspace-mark{width:36px;height:36px;border-radius:var(--r1);background:var(--green-soft);color:var(--green);display:grid;place-items:center}
.workspace-mark svg{width:18px;height:18px;fill:currentColor}
.distribution-badge{padding:var(--s1) var(--s3);border-radius:999px;font-size:var(--t-xs);font-weight:600;white-space:nowrap}
.distribution-badge.paused{background:var(--warn-soft);color:var(--warn-fg)}
.distribution-badge.active{background:var(--green-soft);color:var(--green)}
.sales-entry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--s2);margin-top:var(--s3)}
.sales-entry{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:var(--s2);min-height:var(--tap);text-decoration:none;color:var(--fg);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r1);padding:var(--s2) var(--s3)}
.sales-entry:hover{background:var(--green-soft);border-color:var(--hover-line)}
.sales-avatar{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--r1);background:var(--green-soft);color:var(--green);font-weight:700}
.sales-entry b,.sales-entry small{display:block}
.sales-entry small{color:var(--fg-muted);font-size:var(--t-xs);margin-top:2px}
.entry-action{color:var(--green);font-size:var(--t-xs)}
.workspace-empty{padding:var(--s3) 0;font-size:var(--t-sm)}

/* ---------- 状态分布 ---------- */
.status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s3);margin-top:var(--s4);align-items:stretch}
.status-card{height:100%;padding:var(--s3) var(--s4)}
.status-card>div{display:flex;justify-content:space-between;align-items:center;min-height:var(--s6);margin-bottom:var(--s2)}
.status-card>div b{font-size:var(--t-lg);color:var(--fg)}
.status-card button{width:100%;min-height:var(--tap);border:0;border-top:1px solid var(--line);background:transparent;display:grid;grid-template-columns:minmax(0,1fr) minmax(4ch,auto) 5.5ch;gap:0 var(--s2);align-items:center;text-align:left;padding:0;cursor:pointer;font-size:var(--t-sm);line-height:1.3}
.status-card button span{overflow-wrap:anywhere;color:var(--fg-2)}
.status-card em{display:contents;font-style:normal;white-space:nowrap}
.status-card em b{font-weight:650;font-size:var(--t-md);color:var(--fg)}
.status-card em small{font-size:var(--t-xs);color:var(--fg-muted)}
.status-card .status-ok span{color:var(--green)}
.status-card .status-warn span{color:var(--warn-fg)}

/* ---------- 表格（桌面/平板） ---------- */
.daily-title{margin-top:var(--s5)}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--r2);background:var(--surface)}
table{width:100%;border-collapse:collapse;background:var(--surface)}
th,td{padding:0;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
tr:last-child td{border-bottom:0}
th{height:var(--tap);background:var(--surface-2);color:var(--fg-muted);font-weight:600;font-size:var(--t-sm)}
th:not(:first-child){min-width:76px}
th:first-child,td:first-child{text-align:left;padding:0 var(--s4);min-width:140px}
.sales-name{font-weight:650;color:var(--fg)}
.sales-ledger-link{display:flex;flex-direction:column;justify-content:center;min-height:var(--tap);color:var(--fg);text-decoration:none}
.sales-ledger-link small{color:var(--green);font-size:var(--t-xs);margin-top:2px}
.sales-ledger-link:hover .sales-name{text-decoration:underline;text-underline-offset:3px}
td button{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:0 var(--s2);border:0;background:transparent;cursor:pointer;color:var(--fg)}
td button:disabled{cursor:default;color:var(--fg-muted)}
td .empty,td.empty{padding:var(--s6);text-align:center;color:var(--fg-muted)}

/* ---------- 查看者（无下钻权限） ---------- */
body.no-drill [data-metric]{cursor:default;pointer-events:none}
body.no-drill [data-metric] i{display:none}
body.no-drill .status-card button{grid-template-columns:minmax(0,1fr) auto}
body.no-drill .action-list button{grid-template-columns:minmax(0,1fr) auto}
body.no-drill .drill-hint{display:none}
body.no-drill .view-hint{display:inline}

/* ---------- 拒绝页 / 抽屉 / 下钻 ---------- */
.denied{max-width:520px;margin:80px auto;padding:var(--s5)}
.denied p{margin-top:var(--s2)}
.denied-actions{margin-top:var(--s4)}
.denied-actions .primary{display:flex;text-align:center;text-decoration:none}
body.drawer-open{overflow:hidden}
.shade{position:fixed;inset:0;background:rgba(12,28,20,.55);z-index:20}
.drawer{position:fixed;z-index:21;right:0;top:0;width:min(520px,100%);height:100dvh;background:var(--bg);padding:var(--s4) var(--s4) var(--s6);overflow:auto;box-shadow:-8px 0 24px rgba(0,0,0,.12)}
.drawer-head{position:sticky;top:calc(-1 * var(--s4));background:var(--bg);display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s3);padding:var(--s4) 0;border-bottom:1px solid var(--line);z-index:2}
.drawer-head h2{margin-top:var(--s1)}
.drawer-head p{font-size:var(--t-sm);margin-top:var(--s1)}
.drawer-head>button{position:relative;flex:0 0 auto;background:var(--surface);border:1px solid var(--line);width:var(--tap);height:var(--tap);border-radius:50%;cursor:pointer}
.drawer-head>button::before,.drawer-head>button::after{content:"";position:absolute;left:13px;top:20px;width:16px;height:2px;background:var(--fg-2)}
.drawer-head>button::before{transform:rotate(45deg)}
.drawer-head>button::after{transform:rotate(-45deg)}
.drawer-head .back{width:auto;border:0;border-radius:var(--r1)}
.drawer-head .back::before,.drawer-head .back::after{content:none}
.back{border:0;background:none;color:var(--green);padding:0 var(--s2);min-height:var(--tap);cursor:pointer;font-size:var(--t-sm)}
.breakdown{display:grid;gap:var(--s2);margin:var(--s4) 0}
.breakdown>div{display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:var(--s3);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s3);background:var(--surface)}
.green{color:var(--green);background:var(--green-soft)}
.blue{color:var(--info);background:var(--info-soft)}
.purple{color:var(--accent);background:var(--accent-soft)}
.orange{color:var(--warn);background:var(--warn-soft)}
.definitions{display:grid;gap:var(--s3);margin-top:var(--s4)}
.definitions p{padding:var(--s3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r1);color:var(--fg-2);font-size:var(--t-sm)}
.lead-list{display:grid;gap:var(--s2);padding-top:var(--s3)}
.lead{position:relative;width:100%;border:1px solid var(--line);border-radius:var(--r2);padding:var(--s3) var(--s4);text-align:left;background:var(--surface);cursor:pointer}
.lead>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s2)}
.lead>div span{color:var(--fg-muted);font-size:var(--t-sm)}
.lead p{display:flex;gap:var(--s1);flex-wrap:wrap;margin:var(--s2) 0}
.lead small{color:var(--fg-muted);font-size:var(--t-xs)}
.tag{padding:2px var(--s2);border-radius:var(--s1);font-size:var(--t-xs)}
.tag.ok{background:var(--green-soft);color:var(--green)}
.tag.warn{background:var(--warn-soft);color:var(--warn-fg)}
.tag.muted{background:var(--neutral-soft);color:var(--fg-muted)}
.detail-hero{display:flex;align-items:center;gap:var(--s3);background:var(--brand);color:var(--brand-fg);border-radius:var(--r2);padding:var(--s4)}
.detail-hero p{color:var(--brand-muted);margin-top:var(--s1)}
.detail-avatar{width:44px;height:44px;border-radius:var(--r2);background:rgba(255,255,255,.14);display:grid;place-items:center;font-size:var(--t-lg);font-weight:700}
.detail-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s4);margin-top:var(--s3)}
.detail-group h3{margin-bottom:var(--s2)}
.detail-group>div{display:grid;grid-template-columns:minmax(72px,100px) 1fr;gap:var(--s3);padding:var(--s2) 0;border-top:1px solid var(--line)}
.detail-group>div span{color:var(--fg-muted);font-size:var(--t-sm)}
.detail-group>div b{font-weight:550;word-break:break-word}
.empty{padding:var(--s6);text-align:center;color:var(--fg-muted)}

/* ---------- 平板 ---------- */
@media(max-width:1050px){
  .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
  .status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  th:not(:first-child){min-width:64px}
  th:first-child,td:first-child{min-width:120px;padding:0 var(--s3)}
  td button{padding:0 var(--s1)}
}

@media(max-width:900px) and (min-width:761px){
  .range-bar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) auto}
  .range-bar>div:first-child{grid-column:1/-1}
  .range-actions{align-self:end}
}

/* ---------- 手机 ---------- */
@media(max-width:760px){
  :root{font-size:15px}
  .app-header{flex-direction:column;align-items:stretch;gap:var(--s3);padding:var(--s4)}
  .app-header>div:first-child{flex:0 0 auto}   /* column 方向下 flex-basis 会变成高度，必须归零 */
  .app-header>div:first-child{display:flex;align-items:baseline;gap:var(--s3)}
  .app-header>div:first-child p{margin-left:auto;text-align:right}
  .header-actions{width:100%;flex-direction:row;align-items:stretch}
  .view-nav{width:100%}
  .view-nav a{flex:1;min-height:var(--tap)}
  .app-header select{width:min(42%,160px);min-width:120px}
  main{padding:var(--s4)}
  .panel{padding:var(--s4)}
  .range-bar,.daily-toolbar{display:grid;grid-template-columns:1fr 1fr}
  .range-bar>div:first-child,.daily-toolbar>div:first-child{grid-column:1/-1}
  .range-actions{grid-column:1/-1}
  .range-actions>*{flex:1}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card{min-height:104px;padding:var(--s3) var(--s4)}
  .card strong{font-size:var(--t-xl)}
  .sales-entry-grid{grid-template-columns:1fr 1fr}
  .sales-entry{grid-template-columns:28px 1fr;padding:var(--s2)}
  .entry-action{display:none}
  .sales-avatar{width:28px;height:28px}
  .status-grid{grid-template-columns:1fr}
  /* 宽表 → 按销售堆叠的卡片：全部指标可见、全部可点下钻 */
  .table-wrap{overflow:visible;border:0;border-radius:0;background:transparent}
  table,tbody,tr,td{display:block}
  thead{display:none}
  tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;background:var(--surface);border:1px solid var(--table-line);border-radius:var(--r2);padding:0;overflow:hidden;margin-bottom:var(--s2)}
  td{border:0;text-align:left;white-space:normal;min-width:0}
  td:first-child{grid-column:1/-1;padding:var(--s2) var(--s4);min-width:0;border-bottom:1px solid var(--table-line);margin:0;background:var(--surface-2)}
  td[data-label]::before{content:attr(data-label);display:block;min-height:16px;font-size:var(--t-xs);color:var(--fg-muted);line-height:16px;margin:0}
  td[data-label]{display:grid;grid-template-rows:16px var(--tap);align-items:start;font-weight:650;color:var(--fg);border-bottom:1px solid var(--table-line);padding:var(--s3) var(--s4)}
  tr:last-child td[data-label]{border-bottom:1px solid var(--table-line)}
  td[data-label]:nth-child(odd){border-left:1px solid var(--table-line)}
  td[data-label]:not(:has(button)){min-height:calc(16px + var(--tap))}
  td[data-label]>.cell-value{display:flex;align-items:center;min-height:var(--tap)}
  td button{display:flex;align-items:center;justify-content:flex-start;width:100%;min-height:var(--tap);min-width:var(--tap);padding:0;margin:0;font-weight:650}
  .cumulative-metrics .cumulative-metrics-row td[data-label]:last-child{grid-column:1/-1;border-left:0;border-bottom:0}
  .daily-metrics .daily-metrics-row td[data-label]:nth-last-child(-n+2){border-bottom:0}
  td.empty{grid-column:1/-1}
  .drawer{top:auto;bottom:0;width:100%;height:min(88dvh,820px);border-radius:var(--r3) var(--r3) 0 0}
}

@media(max-width:420px){
  .app-header{gap:var(--s1);padding:var(--s1) var(--s4)}
  .app-header h1{font-size:18px}
  .app-header p{font-size:var(--t-xs);margin-top:0;max-width:148px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .header-actions{gap:var(--s2)}
  .header-actions .view-nav{width:auto;flex:1 1 190px}
  .header-actions select{flex:0 1 120px}
}

/* 立即刷新 (admins) */
.refresh-now{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.refresh-now button{border:1px solid var(--line,#d0d5dd);background:#fff;border-radius:8px;padding:6px 14px;font:inherit;cursor:pointer;min-height:36px}
.refresh-now button:disabled{opacity:.55;cursor:default}
.refresh-now small{color:var(--muted,#667085)}
