
  .dash-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
  .dcard{ background:#fff; border:1px solid var(--line); border-radius:16px; padding:18px 20px; box-shadow:0 10px 26px -22px rgba(120,70,95,.6); }
  .dcard.wide{ grid-column:1 / -1; }
  .dcard h3{ font-size:14.5px; font-weight:800; display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:16px; }
  .dcard h3 .sub{ font-size:11.5px; color:var(--muted); font-weight:600; }
  /* 柱状图（营收趋势） */
  .vbars{ display:flex; align-items:flex-end; gap:8px; height:196px; }
  .vbars .vb{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:7px; height:100%; min-width:0; }
  .vbars .vb b{ font-size:10.5px; color:var(--muted); font-weight:700; }
  .vbars .vb i{ display:block; width:100%; max-width:30px; border-radius:8px 8px 3px 3px; background:linear-gradient(180deg,#e8b3c0,#c25e77); transition:filter .18s; }
  .vbars .vb:hover i{ filter:brightness(1.1); }
  .vbars .vb.cur i{ background:linear-gradient(180deg,#f2cd85,#c9952f); }
  .vbars .vb.cur b{ color:#c9952f; }
  .vbars .vb span{ font-size:10.5px; color:var(--muted); }
  /* 横向条（门店对比 / 等级） */
  .hrow{ margin-bottom:14px; } .hrow:last-child{ margin-bottom:2px; }
  .hrow .ht{ display:flex; justify-content:space-between; align-items:baseline; font-size:12.5px; margin-bottom:7px; gap:10px; }
  .hrow .ht b{ font-weight:700; } .hrow .ht .hv{ color:var(--rose-deep); font-weight:800; } .hrow .ht span{ color:var(--muted); font-size:11.5px; }
  .hbar{ height:9px; border-radius:99px; background:var(--soft); overflow:hidden; }
  .hbar i{ display:block; height:100%; border-radius:99px; background:var(--brand-grad); transition:width .4s ease; }
  .hbar i.g2{ background:linear-gradient(90deg,#f2cd85,#c9952f); }
  .hbar i.g3{ background:linear-gradient(90deg,#c9b7e0,#8a76b8); }
  /* 排行 */
  .rank{ display:flex; align-items:center; gap:12px; padding:10px 0; border-bottom:1px dashed var(--line); }
  .rank:last-child{ border-bottom:none; padding-bottom:2px; }
  .rank .no{ width:23px; height:23px; border-radius:7px; background:var(--soft); color:var(--muted); font-size:12px; font-weight:800; display:flex; align-items:center; justify-content:center; flex:0 0 23px; }
  .rank.t1 .no{ background:var(--brand-grad); color:#fff; } .rank.t2 .no{ background:linear-gradient(135deg,#f2cd85,#c9952f); color:#fff; } .rank.t3 .no{ background:linear-gradient(135deg,#e8b3c0,#d98a9b); color:#fff; }
  .rank .nm{ flex:1; min-width:0; font-size:13px; font-weight:600; }
  .rank .nm small{ display:block; color:var(--muted); font-size:11px; font-weight:500; margin-top:2px; }
  .rank .vv{ font-size:13px; font-weight:800; color:var(--rose-deep); text-align:right; }
  .rank .vv small{ display:block; font-size:11px; color:var(--muted); font-weight:600; margin-top:2px; }
  /* 时段分布 */
  .slots{ display:flex; gap:10px; align-items:flex-end; height:170px; }
  .slots .sl{ flex:1; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; gap:7px; height:100%; min-width:0; }
  .slots .sl b{ font-size:10.5px; color:var(--muted); font-weight:700; }
  .slots .sl i{ display:block; width:100%; max-width:44px; border-radius:8px; background:#f3dfe6; }
  .slots .sl.hot i{ background:var(--brand-grad); }
  .slots .sl.hot b{ color:var(--rose-deep); }
  .slots .sl span{ font-size:10.5px; color:var(--muted); white-space:nowrap; }
  /* 等级构成 */
  .stack{ display:flex; height:16px; border-radius:99px; overflow:hidden; margin:4px 0 14px; }
  .stack i{ display:block; height:100%; }
  .lgd{ display:flex; flex-wrap:wrap; gap:18px; }
  .lgd .li{ display:flex; align-items:center; gap:7px; font-size:12.5px; color:var(--muted); }
  .lgd .li i{ width:10px; height:10px; border-radius:3px; flex:0 0 10px; }
  .lgd .li b{ color:var(--ink); font-weight:700; }
  .empty-state{ min-height:120px; display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:13px; }

  @media (max-width:1180px){
    .stat-row{ grid-template-columns:repeat(2,1fr); }
  }
  @media (max-width:900px){
    .dash-grid{ grid-template-columns:1fr; }
    .dcard.wide{ grid-column:auto; }
  }
  @media (max-width:640px){
    .sidebar{ width:66px; flex-basis:66px; }
    .side-brand .txt,.side-foot,.menu a span.lbl,.menu a .badge{ display:none; }
    .menu .group{ text-align:center; font-size:0; padding:8px 0; }
    .menu .group::after{ content:"···"; font-size:12px; }
    .menu a{ justify-content:center; padding:11px 0; }
    .topbar{ padding:0 10px; gap:8px; }
    .store-btn{ max-width:120px; }
    .vdivider{ display:none; }
    .stat-row{ grid-template-columns:1fr; }
    .dcard{ padding:16px; }
    .vbars{ gap:4px; overflow-x:auto; }
    .vbars .vb{ min-width:24px; }
    .slots{ gap:5px; }
    .lgd{ gap:12px; }
  }
