/* 医联致美 · 客户运营中心 · 原型套件公用样式
   单一来源：所有模块页引用本文件，改动一处全站生效 */

  /* ══════════ 设计令牌：与 appointment.ununion.cn 同一套 ══════════ */
  :root{
    --bg:#f4f6fb; --card:#fff; --ink:#2C2C2A; --muted:#5F5E5A; --line:#e8ecf3;
    --accent:#185FA5; --accent-soft:#e6f1fb; --accent-line:#cfe0ff;
    --ok:#1e6b30; --ok-bg:#eaf3de; --warn:#854F0B; --warn-bg:#faefdd;
    --bad:#A32D2D; --bad-bg:#fcebeb;
    --mut-ink:#44506a; --mut-ink-2:#5a6b85; --mut-line:#eef1f5; --mut-mark:#9aa7bd;
    --bg-soft:#fbfcfe; --bg-head:#f7f9fc;
    --zone-zhen:#1d4ed8; --zone-zhi:#047857; --zone-ji:#9333ea;
    --zone-shang:#b45309; --zone-onda:#0e7490;
    --zone-zhen-bg:#e7eefc; --zone-zhi-bg:#e5f5ec; --zone-ji-bg:#f1e9fd;
    --zone-shang-bg:#fdf1e3; --zone-onda-bg:#e3f4f8;
    --shadow-1:0 1px 3px rgba(20,30,50,.06); --shadow-2:0 8px 28px rgba(20,30,50,.12);
    --z-head:20; --z-panel:45; --z-modal:50; --z-toast:99;
  }
  *{box-sizing:border-box}
  body{margin:0;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;
    font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Segoe UI,sans-serif;
    -webkit-font-smoothing:antialiased}
  button{font-family:inherit}
  .hidden{display:none!important}

  /* ══════════ 顶栏 ══════════ */
  header.top{position:sticky;top:0;z-index:var(--z-head);background:#fff;border-bottom:1px solid var(--line);
    padding:0 16px;height:52px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow-1)}
  .brand{display:flex;align-items:baseline;gap:8px;font-size:15px;font-weight:700;white-space:nowrap}
  .brand small{font-size:10.5px;color:var(--muted);font-weight:400}
  nav.main{display:flex;gap:2px}
  nav.main a{color:var(--muted);text-decoration:none;font-size:12.5px;font-weight:500;padding:0 12px;height:28px;
    display:inline-flex;align-items:center;border-radius:9px;transition:.15s}
  nav.main a:hover{background:var(--bg-soft);color:var(--ink)}
  nav.main a.on{background:var(--accent);color:#fff;font-weight:600}
  .gsearch{margin-left:auto;position:relative}
  .gsearch input{width:230px;height:30px;border:1px solid var(--line);border-radius:9px;padding:0 12px 0 30px;
    font-size:12.5px;background:var(--bg-soft);outline:none;transition:.15s}
  .gsearch input:focus{border-color:var(--accent-line);background:#fff;width:280px}
  .gsearch svg{position:absolute;left:9px;top:8px;opacity:.45}
  .me{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent);
    display:grid;place-items:center;font-size:11px;font-weight:700;cursor:pointer}
  .proto-tag{font-size:10px;font-weight:700;color:var(--warn);background:var(--warn-bg);
    padding:2px 7px;border-radius:6px;letter-spacing:.3px}

  /* ══════════ 主体两栏 ══════════ */
  .wrap{display:flex;align-items:flex-start;gap:16px;padding:14px 16px 60px;max-width:1660px;margin:0 auto}

  /* 左筛选栏 */
  aside.filters{width:228px;flex:0 0 228px;background:#fff;border:.5px solid var(--line);border-radius:16px;
    padding:4px 0;position:sticky;top:66px}
  .fgroup{padding:11px 14px;border-bottom:1px solid var(--mut-line)}
  .fgroup:last-child{border-bottom:0}
  .fgroup h4{margin:0 0 8px;font-size:11.5px;color:var(--mut-ink-2);font-weight:700;letter-spacing:.4px;
    display:flex;justify-content:space-between;align-items:center}
  .chips{display:flex;flex-wrap:wrap;gap:5px}
  .chip{border:1px solid var(--line);background:#fff;color:var(--mut-ink);border-radius:7px;padding:2px 8px;
    font-size:12px;cursor:pointer;transition:.12s;line-height:1.6}
  .chip:hover{border-color:var(--accent-line);color:var(--accent)}
  .chip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent);font-weight:700}
  .fgroup select{width:100%;height:29px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;
    padding:0 8px;color:var(--ink);background:#fff;outline:none}
  .fgroup .two{display:flex;gap:6px;align-items:center}
  .fgroup .two input{width:100%;height:29px;border:1px solid var(--line);border-radius:8px;padding:0 8px;
    font-size:12.5px;outline:none}
  .fgroup .two span{color:var(--mut-mark);font-size:12px}
  .flabel{display:flex;justify-content:space-between;font-size:12px;color:var(--mut-ink);padding:3px 0;cursor:pointer}
  .flabel input{accent-color:var(--accent);margin-right:6px}
  .freset{display:block;width:calc(100% - 28px);margin:8px 14px 10px;height:28px;border:1px solid var(--line);
    background:#fff;border-radius:8px;font-size:12px;color:var(--mut-ink);cursor:pointer}
  .freset:hover{border-color:var(--accent-line);color:var(--accent)}

  /* 右主区 */
  main.list{flex:1;min-width:0}
  .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
  .stat{background:#fff;border:.5px solid var(--line);border-radius:14px;padding:10px 13px;position:relative;overflow:hidden}
  .stat b{display:block;font-size:21px;font-weight:700;letter-spacing:-.3px;font-variant-numeric:tabular-nums}
  .stat span{font-size:11.5px;color:var(--mut-ink-2)}
  .stat .sub{font-size:11px;color:var(--mut-mark);margin-top:1px}
  .stat.hl{background:linear-gradient(180deg,#fff, var(--accent-soft));border-color:var(--accent-line)}
  .stat.hl b{color:var(--accent)}
  .stat.warn b{color:var(--warn)}

  .panel{background:#fff;border:.5px solid var(--line);border-radius:16px;overflow:hidden}
  .toolbar{display:flex;align-items:center;gap:9px;padding:11px 13px;border-bottom:1px solid var(--line);
    background:var(--bg-soft);flex-wrap:wrap}
  .search{position:relative;flex:1;min-width:200px;max-width:340px}
  .search input{width:100%;height:31px;border:1px solid var(--line);border-radius:9px;padding:0 10px 0 30px;
    font-size:13px;outline:none;background:#fff}
  .search input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}
  .search svg{position:absolute;left:9px;top:9px;opacity:.4}
  .btn{border:1px solid var(--line);background:#fff;color:var(--ink);height:31px;padding:0 12px;border-radius:9px;
    cursor:pointer;font-size:12.5px;font-weight:500;display:inline-flex;align-items:center;gap:5px;transition:.12s;white-space:nowrap}
  .btn:hover{border-color:var(--accent-line);color:var(--accent)}
  .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
  .btn.primary:hover{background:#134e86;color:#fff}
  .btn.ghost{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent);font-weight:600}
  .btn.sm{height:26px;padding:0 9px;font-size:11.5px;border-radius:7px}
  .btn.danger{color:var(--bad);border-color:var(--bad-bg);background:var(--bad-bg)}
  .spacer{margin-left:auto}
  .rescount{font-size:12px;color:var(--mut-ink-2)}
  .rescount b{color:var(--ink);font-size:13px}

  /* 表格 */
  .tablewrap{overflow-x:auto}
  table.grid{width:100%;border-collapse:collapse;font-size:13px}
  table.grid th{text-align:left;padding:8px 10px;color:var(--mut-ink-2);font-size:11.5px;font-weight:700;
    background:var(--bg-head);border-bottom:1px solid var(--line);white-space:nowrap;letter-spacing:.2px}
  table.grid th.sortable{cursor:pointer;user-select:none}
  table.grid th.sortable:hover{color:var(--accent)}
  table.grid th .arw{opacity:.35;font-size:9px;margin-left:2px}
  table.grid td{padding:8px 8px;border-bottom:1px solid var(--mut-line);vertical-align:middle}
  table.grid tbody tr{cursor:pointer;transition:background .12s}
  table.grid tbody tr:hover{background:var(--bg-soft)}
  table.grid tbody tr.sel{background:var(--accent-soft)}
  .num{font-variant-numeric:tabular-nums;white-space:nowrap}
  .who{display:flex;align-items:center;gap:8px;min-width:160px}
  .ava{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-size:12.5px;font-weight:700;
    flex:0 0 32px;letter-spacing:0}
  .who .nm{font-weight:600;display:flex;align-items:center;gap:6px}
  .who .meta{font-size:11px;color:var(--mut-mark);display:flex;gap:6px;margin-top:1px}
  .grade{width:18px;height:18px;border-radius:5px;font-size:10.5px;font-weight:800;display:inline-grid;place-items:center}
  .g-S{background:#fde8e8;color:#a10000}
  .g-A{background:#faefdd;color:#854F0B}
  .g-B{background:var(--accent-soft);color:var(--accent)}
  .g-C{background:#eef1f5;color:var(--mut-ink)}
  .zone{font-size:11.5px;font-weight:600;padding:1px 7px;border-radius:6px;white-space:nowrap}
  .z-珍美{background:var(--zone-zhen-bg);color:var(--zone-zhen)}
  .z-致美{background:var(--zone-zhi-bg);color:var(--zone-zhi)}
  .z-吉美{background:var(--zone-ji-bg);color:var(--zone-ji)}
  .z-尚美{background:var(--zone-shang-bg);color:var(--zone-shang)}
  .z-onda{background:var(--zone-onda-bg);color:var(--zone-onda)}
  .tag{font-size:10.5px;padding:1px 6px;border-radius:5px;background:var(--mut-line);color:var(--mut-ink);font-weight:600;white-space:nowrap}
  .tag.blue{background:var(--accent-soft);color:var(--accent)}
  .tag.warn{background:var(--warn-bg);color:var(--warn)}
  .tag.bad{background:var(--bad-bg);color:var(--bad)}
  .tag.ok{background:var(--ok-bg);color:var(--ok)}
  .sleep{color:var(--bad);font-weight:600}
  .sleep.mid{color:var(--warn)}
  .empty{padding:56px 20px;text-align:center;color:var(--mut-mark)}
  .empty b{display:block;font-size:15px;color:var(--mut-ink);margin-bottom:4px}
  .pager{display:flex;align-items:center;gap:6px;padding:10px 13px;border-top:1px solid var(--line);font-size:12.5px}
  .pager .pg{min-width:28px;height:28px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer;
    font-size:12.5px;color:var(--mut-ink)}
  .pager .pg.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
  .pager .pg:hover:not(.on){border-color:var(--accent-line);color:var(--accent)}

  /* 批量条 */
  .bulkbar{display:flex;align-items:center;gap:8px;padding:8px 13px;background:#1f2937;color:#fff;font-size:12.5px}
  .bulkbar .btn{height:26px;background:rgba(255,255,255,.12);border-color:transparent;color:#fff;font-size:11.5px}
  .bulkbar .btn:hover{background:rgba(255,255,255,.22);color:#fff}

  /* ══════════ 详情页 ══════════ */
  .detail{padding:14px 16px 70px;max-width:1440px;margin:0 auto}
  .backrow{display:flex;align-items:center;gap:10px;margin-bottom:10px}
  .back{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--mut-ink);cursor:pointer;
    border:1px solid var(--line);background:#fff;border-radius:8px;height:28px;padding:0 10px}
  .back:hover{color:var(--accent);border-color:var(--accent-line)}
  .crumb{font-size:12px;color:var(--mut-mark)}

  .hero{background:#fff;border:.5px solid var(--line);border-radius:18px;padding:16px 18px 0;margin-bottom:12px}
  .hero-top{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap}
  .hero .ava{width:54px;height:54px;border-radius:16px;font-size:19px;flex:0 0 54px}
  .hname{font-size:20px;font-weight:700;letter-spacing:-.3px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
  .hmeta{font-size:12.5px;color:var(--mut-ink-2);display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:5px}
  .hmeta .dot{color:#d3dae6}
  .hactions{margin-left:auto;display:flex;gap:7px;flex-wrap:wrap}
  .alert{display:flex;align-items:center;gap:8px;margin:13px 0 0;padding:8px 12px;border-radius:11px;
    background:var(--warn-bg);color:var(--warn);font-size:12.5px;font-weight:500;flex-wrap:wrap}
  .alert.blue{background:var(--accent-soft);color:var(--accent)}
  .alert b{font-weight:700}
  .kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:0;border-top:1px solid var(--mut-line);margin-top:13px}
  .kpi{padding:12px 14px 14px;border-right:1px solid var(--mut-line)}
  .kpi:last-child{border-right:0}
  .kpi span{display:block;font-size:11px;color:var(--mut-ink-2);margin-bottom:3px}
  .kpi b{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
  .kpi b small{font-size:11px;font-weight:600;color:var(--mut-mark);margin-left:2px}
  .kpi em{font-style:normal;font-size:11px;color:var(--mut-mark);display:block;margin-top:2px}

  .cols{display:grid;grid-template-columns:1fr 322px;gap:12px;align-items:start}
  .box{background:#fff;border:.5px solid var(--line);border-radius:16px;overflow:hidden}
  .tabs{display:flex;gap:2px;padding:0 10px;border-bottom:1px solid var(--line);background:var(--bg-soft);overflow-x:auto}
  .tabs button{border:none;background:transparent;color:var(--mut-ink-2);font-size:12.5px;font-weight:600;
    padding:11px 12px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;transition:.12s}
  .tabs button:hover{color:var(--ink)}
  .tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}
  .tabs .cnt{font-size:10.5px;color:var(--mut-mark);margin-left:3px;font-weight:600}
  .tabbody{padding:14px 16px}
  .boxh{padding:11px 14px;border-bottom:1px solid var(--line);font-size:12.5px;font-weight:700;color:var(--mut-ink);
    background:var(--bg-soft);display:flex;justify-content:space-between;align-items:center}
  .boxb{padding:12px 14px}

  /* 概览 */
  .ov-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .ov-t{font-size:11.5px;font-weight:700;color:var(--mut-ink-2);margin-bottom:9px;letter-spacing:.3px}
  .bars{display:flex;align-items:flex-end;gap:7px;height:118px;padding-top:6px}
  .bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;height:100%}
  .bar i{width:100%;max-width:26px;background:var(--accent-soft);border-radius:5px 5px 0 0;transition:.2s;
    display:block;border-bottom:2px solid var(--accent-line)}
  .bar:hover i{background:var(--accent);border-bottom-color:var(--accent)}
  .bar u{font-size:9.5px;color:var(--mut-mark);text-decoration:none}
  .bar b{font-size:9.5px;color:var(--mut-ink);font-weight:600;font-variant-numeric:tabular-nums}
  .rank{list-style:none;margin:0;padding:0}
  .rank li{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed var(--mut-line);font-size:12.5px}
  .rank li:last-child{border-bottom:0}
  .rank .i{width:17px;height:17px;border-radius:5px;background:var(--mut-line);color:var(--mut-ink);font-size:10px;
    font-weight:700;display:grid;place-items:center;flex:0 0 17px}
  .rank .i.top{background:var(--accent);color:#fff}
  .rank .n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rank .v{font-variant-numeric:tabular-nums;font-weight:600;font-size:12px}
  .rank .p{font-size:10.5px;color:var(--mut-mark);width:38px;text-align:right}

  /* 时间线 */
  .tl{position:relative;margin:0;padding:0 0 0 20px;list-style:none}
  .tl:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1.5px;background:var(--mut-line)}
  .tl li{position:relative;padding:0 0 16px 0}
  .tl li:last-child{padding-bottom:0}
  .tl .pt{position:absolute;left:-20px;top:4px;width:11px;height:11px;border-radius:50%;background:#fff;
    border:2px solid var(--mut-mark)}
  .tl .pt.appt{border-color:var(--accent)}
  .tl .pt.visit{border-color:var(--ok)}
  .tl .pt.order{border-color:#b45309;background:#b45309}
  .tl .pt.follow{border-color:#9333ea}
  .tl .when{font-size:11px;color:var(--mut-mark);font-variant-numeric:tabular-nums}
  .tl .ttl{font-size:13px;font-weight:600;margin:1px 0 1px}
  .tl .dsc{font-size:12px;color:var(--mut-ink-2)}
  .tl .amt{font-size:13px;font-weight:700;color:var(--bad);font-variant-numeric:tabular-nums}

  /* 卡项 */
  .cardrow{border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:9px;background:var(--bg-soft)}
  .cardrow .t{display:flex;justify-content:space-between;align-items:center;gap:8px}
  .cardrow .nm{font-weight:700;font-size:13px}
  .cardrow .m{font-size:11.5px;color:var(--mut-ink-2);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap}
  .prog{height:5px;border-radius:3px;background:var(--mut-line);margin-top:8px;overflow:hidden}
  .prog i{display:block;height:100%;background:var(--accent);border-radius:3px}
  .prog i.low{background:var(--warn)}
  .prog i.out{background:var(--bad)}

  /* 表格（详情内） */
  table.mini{width:100%;border-collapse:collapse;font-size:12.5px}
  table.mini th{text-align:left;padding:6px 8px;font-size:11px;color:var(--mut-mark);font-weight:700;
    border-bottom:1px solid var(--line);white-space:nowrap}
  table.mini td{padding:7px 8px;border-bottom:1px solid var(--mut-line)}
  table.mini tr:last-child td{border-bottom:0}

  /* 右栏档案 */
  .field{display:flex;padding:5px 0;font-size:12.5px;border-bottom:1px dashed var(--mut-line);gap:10px}
  .field:last-child{border-bottom:0}
  .field .k{color:var(--mut-mark);flex:0 0 72px}
  .field .v{flex:1;color:var(--ink);word-break:break-all}
  .field .v.editable{cursor:pointer}
  .field .v.editable:hover{color:var(--accent)}
  .assets{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .asset{border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:var(--bg-soft)}
  .asset span{font-size:10.5px;color:var(--mut-ink-2);display:block}
  .asset b{font-size:15px;font-variant-numeric:tabular-nums}
  .asset b small{font-size:10px;font-weight:500;color:var(--mut-mark)}

  /* ══════════ 抽屉 / 弹窗 ══════════ */
  .mask{position:fixed;inset:0;background:rgba(18,26,42,.42);z-index:var(--z-modal);display:flex;
    justify-content:flex-end;animation:fade .16s ease both}
  .mask.center{align-items:center;justify-content:center}
  @keyframes fade{from{opacity:0}to{opacity:1}}
  @keyframes slidein{from{transform:translateX(24px);opacity:.6}to{transform:none;opacity:1}}
  .drawer{width:520px;max-width:94vw;height:100%;background:#fff;box-shadow:var(--shadow-2);display:flex;
    flex-direction:column;animation:slidein .2s ease both}
  .drawer h3{margin:0;font-size:15px}
  .dh{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
  .db{padding:16px 18px;overflow:auto;flex:1}
  .df{padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;background:var(--bg-soft)}
  .x{border:none;background:transparent;font-size:18px;color:var(--mut-mark);cursor:pointer;line-height:1}
  .x:hover{color:var(--ink)}
  .form{margin-bottom:13px}
  .form label{display:block;font-size:12px;color:var(--mut-ink-2);font-weight:600;margin-bottom:4px}
  .form label .req{color:var(--bad)}
  .form input,.form select,.form textarea{width:100%;height:33px;border:1px solid var(--line);border-radius:9px;
    padding:0 10px;font-size:13px;outline:none;font-family:inherit;background:#fff}
  .form textarea{height:62px;padding:8px 10px;resize:vertical}
  .form input:focus,.form select:focus,.form textarea:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}
  .form .hint{font-size:11px;color:var(--mut-mark);margin-top:4px}
  .dup{display:flex;align-items:center;gap:8px;margin-top:6px;padding:8px 10px;border-radius:9px;
    background:var(--warn-bg);color:var(--warn);font-size:12px}
  .modal{width:600px;max-width:94vw;background:#fff;border-radius:18px;box-shadow:var(--shadow-2);overflow:hidden;
    animation:slidein .18s ease}
  .cmplist{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px 18px}
  .cmpcol{border:1px solid var(--line);border-radius:12px;padding:11px 13px}
  .cmpcol .nm{font-weight:700;font-size:13.5px;margin-bottom:6px}
  .cmpcol .r{display:flex;justify-content:space-between;font-size:11.5px;padding:2px 0;color:var(--mut-ink-2)}
  .cmpcol .r b{color:var(--ink);font-weight:600}
  .diff{color:var(--warn);font-weight:700}

  /* Toast */
  #toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%) translateY(12px);background:#1f2937;color:#fff;
    padding:9px 16px;border-radius:11px;font-size:12.5px;opacity:0;pointer-events:none;transition:.2s;z-index:var(--z-toast)}
  #toast.on{opacity:1;transform:translateX(-50%)}

  @media (max-width:1200px){
    .kpis{grid-template-columns:repeat(3,1fr)}
    .kpi:nth-child(3){border-right:0}
    .cols{grid-template-columns:1fr}
    aside.filters{display:none}
    .stats{grid-template-columns:repeat(2,1fr)}
    nav.main{display:none}
  }

/* ══════════════════════════════════════════════════════════
   以下为多模块原型新增组件（2026-11-02）
   ══════════════════════════════════════════════════════════ */

/* 页面容器 */
.page{padding:14px 16px 60px;max-width:1660px;margin:0 auto}
.pagehead{display:flex;align-items:flex-end;gap:14px;margin-bottom:12px;flex-wrap:wrap}
.ptitle{font-size:19px;font-weight:700;letter-spacing:-.3px}
.psub{font-size:12px;color:var(--mut-ink-2);margin-top:2px}
.pagehead .right{margin-left:auto;display:flex;gap:7px;align-items:center;flex-wrap:wrap}

/* 分段控件 */
.seg{display:inline-flex;background:var(--bg-soft);border:1px solid var(--line);border-radius:9px;padding:2px;gap:2px}
.seg button{border:none;background:transparent;color:var(--mut-ink-2);font-size:12px;font-weight:600;
  padding:4px 11px;border-radius:7px;cursor:pointer;transition:.12s;white-space:nowrap}
.seg button:hover{color:var(--ink)}
.seg button.on{background:#fff;color:var(--accent);box-shadow:0 1px 2px rgba(20,30,50,.08)}

/* 指标条（横向紧凑版） */
.mrow{display:grid;grid-template-columns:repeat(6,1fr);background:#fff;border:.5px solid var(--line);
  border-radius:16px;overflow:hidden;margin-bottom:12px}
.mcell{padding:12px 15px;border-right:1px solid var(--mut-line)}
.mcell:last-child{border-right:0}
.mcell span{display:block;font-size:11px;color:var(--mut-ink-2);margin-bottom:2px}
.mcell b{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.mcell b small{font-size:11px;font-weight:600;color:var(--mut-mark);margin-left:2px}
.mcell em{font-style:normal;font-size:10.5px;color:var(--mut-mark);display:block;margin-top:1px}
.mcell.up b{color:var(--bad)}  /* 涨=红（中式） */
.mcell.down b{color:var(--ok)}
.mcell.hl{background:linear-gradient(180deg,#fff,var(--accent-soft))}
.mcell.hl b{color:var(--accent)}

/* 手绘图表 */
.chart{position:relative;height:190px;padding:6px 0 0}
.chart svg{display:block;width:100%;height:100%;overflow:visible}
.chart .gl{stroke:#eef1f5;stroke-width:1}
.chart .ln{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .ln2{fill:none;stroke:#b45309;stroke-width:1.6;stroke-dasharray:4 3;stroke-linejoin:round}
.chart .area{fill:url(#ga);opacity:.5}
.chart .dt{fill:var(--accent);stroke:#fff;stroke-width:1.5}
.chart .xl{font-size:9.5px;fill:#9aa7bd}
.chart .yl{font-size:9.5px;fill:#9aa7bd}
.legend{display:flex;gap:14px;font-size:11px;color:var(--mut-ink-2);margin-top:6px}
.legend i{display:inline-block;width:14px;height:3px;border-radius:2px;margin-right:5px;vertical-align:middle}

/* 堆叠条 */
.stack{display:flex;height:26px;border-radius:7px;overflow:hidden;background:var(--mut-line)}
.stack i{display:block;height:100%;position:relative;transition:.2s}
.stack i:hover{filter:brightness(1.08)}
.stack.legend-wrap{margin-bottom:8px}

/* 漏斗 */
.funnel{display:flex;flex-direction:column;gap:6px}
.fn{display:flex;align-items:center;gap:10px}
.fn .lb{width:86px;font-size:12px;color:var(--mut-ink-2);text-align:right;flex:0 0 86px}
.fn .barw{flex:1;background:var(--bg-soft);border-radius:7px;overflow:hidden;height:30px;position:relative}
.fn .barw i{display:block;height:100%;background:var(--accent);border-radius:7px;transition:.3s;
  display:flex;align-items:center;justify-content:flex-end;padding-right:8px;color:#fff;font-size:11px;font-weight:700}
.fn .barw i.l2{background:#3b7fbb}
.fn .barw i.l3{background:#6aa2cf}
.fn .barw i.l4{background:#9dc2e0;color:#1b3a54}
.fn .rt{width:52px;font-size:11px;color:var(--mut-mark);text-align:right;flex:0 0 52px;font-variant-numeric:tabular-nums}

/* ══════ 预约：时段 × 门店 网格 ══════ */
.cal{overflow-x:auto}
.cal table{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed;min-width:900px}
.cal th{background:var(--bg-head);color:var(--mut-ink-2);font-size:11.5px;font-weight:700;
  padding:9px 8px;border-bottom:1px solid var(--line);border-left:1px solid var(--mut-line);text-align:left}
.cal th:first-child{border-left:0;width:56px}
.cal th .sub2{display:block;font-size:10px;font-weight:500;color:var(--mut-mark);margin-top:1px}
.cal td{border-bottom:1px solid var(--mut-line);border-left:1px solid var(--mut-line);padding:3px 4px;vertical-align:top;height:44px}
.cal td:first-child{border-left:0;background:var(--bg-head);color:var(--mut-mark);font-size:10.5px;
  text-align:center;font-variant-numeric:tabular-nums;padding-top:6px;font-weight:600}
.cal tr:hover td{background:#fdfefe}
.cal tr:hover td:first-child{background:var(--bg-head)}
.ap{border-radius:6px;padding:3px 6px;margin-bottom:2px;font-size:11px;line-height:1.35;cursor:pointer;
  border-left:2.5px solid var(--accent);background:var(--accent-soft);color:#14486f;transition:.12s;overflow:hidden}
.ap:hover{filter:brightness(.97);transform:translateX(1px)}
.ap b{font-weight:700}
.ap .m{font-size:9.5px;opacity:.78;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap.done{border-left-color:var(--ok);background:var(--ok-bg);color:#1e6b30}
.ap.miss{border-left-color:#b8bfcc;background:#f2f4f7;color:#7b8598;text-decoration:line-through}
.ap.hot{border-left-color:var(--bad);background:var(--bad-bg);color:#8a2424}
.ap.free{border-left-color:#cfd8e4;background:#fafbfd;color:#9aa7bd;font-style:normal}
.callegend{display:flex;gap:12px;font-size:11px;color:var(--mut-ink-2);padding:8px 12px;border-top:1px solid var(--line);background:var(--bg-soft)}
.callegend i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:4px;vertical-align:middle}

/* ══════ 到诊 ══════ */
.vgroup{margin-bottom:14px}
.vgh{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.vgh .zn{font-size:13px;font-weight:700}
.vgh .cnt{font-size:11px;color:var(--mut-mark)}
.vgh .line{flex:1;height:1px;background:var(--line)}
.vlist{display:grid;gap:7px}
.vitem{display:flex;align-items:center;gap:11px;background:#fff;border:.5px solid var(--line);
  border-radius:12px;padding:9px 12px;cursor:pointer;transition:.12s;border-left:3px solid var(--accent)}
.vitem:hover{box-shadow:var(--shadow-1);border-color:var(--accent-line)}
.vitem.done{border-left-color:var(--ok)}
.vitem.miss{border-left-color:#c3ccdb;background:#fafbfd}
.vitem .tm{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;width:46px;flex:0 0 46px;color:var(--mut-ink)}
.vitem .who2{min-width:130px}
.vitem .who2 b{font-size:13px}
.vitem .who2 span{font-size:11px;color:var(--mut-mark);display:block}
.vitem .proj{flex:1;font-size:12px;color:var(--mut-ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vitem .tag{flex:0 0 auto}

/* ══════ 订单 ══════ */
.ordrow{cursor:pointer}
.ordrow:hover td{background:var(--bg-soft)}
.orddetail td{background:#fbfdff;padding:0!important;border-bottom:1px solid var(--line)}
.odbox{padding:10px 14px 12px 48px}
.odt{font-size:11px;color:var(--mut-mark);font-weight:700;margin-bottom:5px;letter-spacing:.3px}
.odline{display:flex;align-items:center;gap:10px;font-size:12px;padding:4px 0;border-bottom:1px dashed var(--mut-line)}
.odline:last-child{border-bottom:0}
.odline .n{flex:1}
.odline .q{width:52px;text-align:right;color:var(--mut-ink-2)}
.odline .a{width:86px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.paybar{display:flex;gap:2px;height:100%;border-radius:6px;overflow:hidden}

/* ══════ 卡项 ══════ */
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:10px}
.ccard{background:#fff;border:.5px solid var(--line);border-radius:14px;padding:12px 13px;transition:.15s;position:relative}
.ccard:hover{box-shadow:var(--shadow-1);transform:translateY(-1px);border-color:var(--accent-line)}
.ccard .ch{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.ccard .cn{font-size:13px;font-weight:700;line-height:1.4;flex:1}
.ccard .cp{font-size:18px;font-weight:700;color:var(--accent);margin:7px 0 2px;font-variant-numeric:tabular-nums}
.ccard .cp small{font-size:11px;color:var(--mut-mark);font-weight:500}
.ccard .cm{font-size:11px;color:var(--mut-ink-2);display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.ccard .bar{height:5px;background:var(--mut-line);border-radius:3px;margin-top:9px;overflow:hidden}
.ccard .bar i{display:block;height:100%;background:var(--accent);border-radius:3px}
.ccard .bar i.full{background:var(--bad)}
.ccard .bar i.half{background:var(--warn)}

/* 表格里的小进度 */
.miniprog{width:64px;height:4px;background:var(--mut-line);border-radius:2px;overflow:hidden;display:inline-block;vertical-align:middle}
.miniprog i{display:block;height:100%;background:var(--accent)}
.miniprog i.low{background:var(--warn)}
.miniprog i.out{background:var(--bad)}

/* 空态 / 提示卡 */
.tip{display:flex;gap:9px;align-items:flex-start;padding:10px 13px;border-radius:11px;
  background:var(--accent-soft);color:#14486f;font-size:12px;line-height:1.6}
.tip.warn{background:var(--warn-bg);color:var(--warn)}
.tip b{font-weight:700}

@media (max-width:1200px){
  .mrow{grid-template-columns:repeat(3,1fr)}
  .mcell:nth-child(3){border-right:0}
}
