:root{--brand:#0d6efd}
body{background:#f4f6f9;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}
.navbar-brand{font-weight:700;letter-spacing:1px}
.main{max-width:1400px;margin:1.2rem auto;padding:0 .8rem}
.kpi{border:none;border-radius:.8rem;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.kpi .num{font-size:1.7rem;font-weight:700}
.kpi .lbl{color:#6c757d;font-size:.85rem}
.card{border:none;border-radius:.8rem;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.card-header{background:#fff;border-bottom:1px solid #eee;font-weight:600;border-radius:.8rem .8rem 0 0!important}
.table{--bs-table-hover-bg:#f8f9ff}
.table thead th{background:#f8f9fa;font-size:.83rem;color:#495057;white-space:nowrap}
.table td{vertical-align:middle;font-size:.9rem}
.badge-grade{font-size:.8rem;width:2.2em}
.grade-A{background:#dc3545}.grade-B{background:#fd7e14}.grade-C{background:#0d6efd}.grade-D{background:#6c757d}
.stars{color:#f5a623;letter-spacing:1px;white-space:nowrap}
.tag-problem{color:#dc3545;font-size:.85rem}
.text-money{font-variant-numeric:tabular-nums}
.nav-link.active{font-weight:600}
.followup-card{border-left:4px solid #0d6efd}
.list-tight li{padding:.45rem 0;border-bottom:1px dashed #eee}
.section-title{font-weight:700;margin:0}
/* 星级打分器：radio 反向排列 + ~ 选择器实现，纯 CSS 无依赖 */
/* 工作台跟进摘要：限宽单行截断，鼠标悬停看全文（title 属性） */
.td-summary{max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-size:.85rem;color:#495057}
@media(max-width:768px){.td-summary{max-width:130px}}
.star-picker{display:inline-flex;flex-direction:row-reverse;gap:.1rem}
.star-picker input{position:absolute;opacity:0;width:0;height:0}
.star-picker label{font-size:1.8rem;line-height:1;color:#dee2e6;cursor:pointer;margin:0;
  min-height:44px;min-width:38px;display:flex;align-items:center;justify-content:center;
  transition:color .12s;user-select:none}
/* 注意顺序：hover 规则必须在前，checked 规则在后。
   两者优先级相同(0,2,2)，靠后出现者胜出，否则鼠标悬停会盖掉已选中的星级 */
.star-picker label:hover,.star-picker label:hover ~ label{color:#ffc75a}
.star-picker input:checked ~ label{color:#f5a623}
.star-picker label:active{transform:scale(1.15)}
@media(max-width:768px){.kpi .num{font-size:1.3rem}}

/* 门店多选器：一份方案可覆盖多家门店，95 家店靠搜索+滚动，不用翻页 */
.store-picker{border:1px solid #dee2e6;border-radius:.5rem;overflow:hidden;background:#fff}
.sp-head{padding:.5rem;border-bottom:1px solid #eee;background:#fafbfc}
.sp-actions{display:flex;align-items:center;gap:.4rem;margin-top:.4rem;flex-wrap:wrap}
.sp-count{font-size:.83rem;color:#6c757d;margin-left:auto}
.sp-count b{color:#0d6efd;font-size:1rem}
.sp-list{max-height:260px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.sp-item{display:flex;align-items:center;gap:.5rem;padding:.45rem .6rem;border-bottom:1px solid #f4f4f4;
  margin:0;cursor:pointer;font-size:.85rem}
.sp-item:hover{background:#f8f9ff}
.sp-item:last-child{border-bottom:none}
.sp-item input[type=checkbox]{width:1.05rem;height:1.05rem;flex:0 0 auto;cursor:pointer;margin:0}
.sp-name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-teacher{flex:0 0 auto;font-size:.78rem;color:#9aa0a6}
/* 移动端：手指点得中，列表可滚，督导名让位 */
@media(max-width:768px){
  .sp-item{padding:.6rem .6rem;min-height:44px}
  .sp-teacher{display:none}
  .sp-list{max-height:220px}
}

/* 行内小操作按钮（跟进/进货/待解决问题用） */
.btn-mini{padding:.15rem .4rem;font-size:.75rem;line-height:1.4;white-space:nowrap}
