:root{
  --sh-ink:#1F2A37; --sh-ink-soft:#4B5563; --sh-ink-faint:#8A94A6;
  --sh-bg:#F0F3F8; --sh-panel:#FFFFFF; --sh-panel-soft:#F7F9FC; --sh-tint:#E8F0FB;
  --sh-line:#E5E9F0; --sh-line-soft:#EEF1F5;
  --sh-dai:#1F5FB8; --sh-dai-deep:#164A93; --sh-dai-tint:#E8F0FB; --sh-jade:#2E8B57;
  --sh-amber:#C8843C; --sh-amber-tint:#F3E6D2; --sh-gold:#B08D4F;
  --sh-vermil:#B5412E; --sh-vermil-tint:#F5DDD7;
  --sh-ok:#4F9B72; --sh-ok-tint:#DDEFE5; --sh-danger:#B5412E; --sh-danger-tint:#F5DDD7;
  --sh-radius:16px; --sh-radius-sm:11px;
  --sh-shadow-s:0 1px 2px rgba(31,42,55,.05);
  --sh-shadow-m:0 2px 8px rgba(31,42,55,.05),0 18px 42px -30px rgba(31,42,55,.45);
  --sh-serif:"Songti SC","STSong","Source Han Serif SC",Georgia,serif;
  --sh-sans:"PingFang SC",-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box} html,body{margin:0;min-height:100%}
body{font-family:var(--sh-sans);color:var(--sh-ink);background:var(--sh-bg);-webkit-font-smoothing:antialiased;line-height:1.55}
::selection{background:var(--sh-amber-tint)}
.sh-app{min-height:100vh;display:grid;grid-template-columns:248px 1fr;grid-template-rows:60px 1fr;background:var(--sh-bg)}
.sh-top{grid-column:1/3;display:flex;align-items:center;gap:13px;padding:0 22px;background:rgba(255,255,255,.94);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--sh-line);position:sticky;top:0;z-index:20}
.sh-seal{width:32px;height:32px;border-radius:9px;transform:rotate(-4deg);background:var(--sh-vermil);color:#FAEDE7;font-family:var(--sh-serif);font-size:18px;display:grid;place-items:center;box-shadow:inset 0 0 0 2px rgba(255,255,255,.16)}
.sh-brand{font-family:var(--sh-serif);font-size:18px;letter-spacing:2px;white-space:nowrap}.sh-brand-sub{color:var(--sh-ink-faint);font-size:12px;letter-spacing:1px;margin-left:8px;font-family:var(--sh-sans)}
.sh-page-title{font-size:13px;color:var(--sh-ink-soft);padding-left:14px;margin-left:3px;border-left:1px solid var(--sh-line);white-space:nowrap}
.sh-top-right{margin-left:auto;display:flex;align-items:center;gap:13px}.sh-user{text-align:right;line-height:1.22}.sh-user b{font-size:13.5px}.sh-user small{display:block;color:var(--sh-ink-faint);font-size:11px}.sh-avatar{width:34px;height:34px;border-radius:10px;background:var(--sh-dai-tint);color:var(--sh-dai-deep);font-family:var(--sh-serif);font-size:15px;display:grid;place-items:center}.sh-logout{font-size:12.5px;color:var(--sh-ink-faint);cursor:pointer;border:1px solid var(--sh-line);border-radius:20px;padding:6px 13px;background:#fff}.sh-logout:hover{color:var(--sh-vermil);border-color:#E8C9C1}
.sh-menu-toggle{display:none;border:1px solid var(--sh-line);background:#fff;border-radius:10px;padding:7px 10px;color:var(--sh-dai);font-size:16px}
.sh-side{background:var(--sh-panel);border-right:1px solid var(--sh-line);padding:14px 14px;overflow-y:auto;min-height:calc(100vh - 60px)}
.sh-navsec{font-size:10.5px;letter-spacing:2px;color:var(--sh-ink-faint);margin:16px 10px 8px;font-weight:700}.sh-navsec:first-child{margin-top:2px}
.sh-nav{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:11px;cursor:pointer;color:var(--sh-ink-soft);font-size:13.5px;transition:.13s;position:relative;text-decoration:none;border:0;background:transparent;text-align:left;font-family:var(--sh-sans)}
.sh-nav:hover{background:var(--sh-tint);color:var(--sh-dai-deep)}.sh-nav.is-active{background:var(--sh-dai);color:#fff}.sh-nav-ic{width:20px;height:20px;border-radius:7px;background:rgba(31,95,184,.08);display:grid;place-items:center;flex:none;font-size:13px}.sh-nav.is-active .sh-nav-ic{background:rgba(255,255,255,.16)}
.sh-main{min-width:0;padding:24px 28px 54px;overflow:auto}.sh-main-inner{max-width:1240px;margin:0 auto}.sh-hero{position:relative;margin-bottom:18px}.sh-eyebrow{font-size:11px;letter-spacing:3px;color:var(--sh-gold);font-weight:700}.sh-title{font-family:var(--sh-serif);font-size:27px;margin:4px 0 5px;letter-spacing:1px}.sh-subtitle{color:var(--sh-ink-soft);font-size:13.5px}
.sh-grid{display:grid;gap:14px}.sh-grid.cols-4{grid-template-columns:repeat(4,1fr)}.sh-grid.cols-3{grid-template-columns:repeat(3,1fr)}.sh-grid.layout-2{grid-template-columns:320px 1fr}.sh-grid.layout-3{grid-template-columns:280px 1fr 300px}
.sh-card{background:var(--sh-panel);border:1px solid var(--sh-line);border-radius:var(--sh-radius);box-shadow:var(--sh-shadow-s);overflow:hidden}.sh-card.pad{padding:17px 18px}.sh-card-title{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--sh-ink-soft);font-weight:700;margin:0 0 13px}.sh-card-title::before{content:"";width:3px;height:14px;background:var(--sh-dai);border-radius:3px}.sh-card-title .hint{margin-left:auto;color:var(--sh-ink-faint);font-size:11.5px;font-weight:400}
.sh-kpi{padding:18px}.sh-kpi .n{font-family:var(--sh-serif);font-size:31px;line-height:1}.sh-kpi .l{font-size:12px;color:var(--sh-ink-faint);margin-top:8px}.sh-kpi.accent{background:linear-gradient(160deg,#1F5FB8,#164A93);color:#E8F0FB;border-color:transparent}.sh-kpi.accent .n{color:#fff}.sh-kpi.accent .l{color:#B7C7DD}.sh-kpi.danger .n{color:var(--sh-danger)}
.sh-btn{border:1px solid var(--sh-dai);background:var(--sh-dai);color:#fff;border-radius:10px;padding:9px 14px;font-family:var(--sh-sans);font-size:13px;cursor:pointer}.sh-btn:hover{background:var(--sh-dai-deep)}.sh-btn.ghost{background:#fff;color:var(--sh-dai);border-color:var(--sh-line)}.sh-btn.danger{background:var(--sh-vermil);border-color:var(--sh-vermil)}
.sh-tag{font-size:11px;padding:2px 9px;border-radius:20px;font-weight:700;display:inline-flex;align-items:center;gap:4px}.sh-tag.ok{background:var(--sh-ok-tint);color:#256744}.sh-tag.warn{background:var(--sh-amber-tint);color:#875719}.sh-tag.danger{background:var(--sh-danger-tint);color:#8a2c1c}.sh-tag.neutral{background:#EEF1F5;color:var(--sh-ink-soft)}
.sh-table{width:100%;border-collapse:collapse;font-size:13px}.sh-table th,.sh-table td{text-align:left;border-bottom:1px solid var(--sh-line-soft);padding:10px 12px;vertical-align:top}.sh-table th{font-size:12px;color:var(--sh-ink-faint);font-weight:700;background:var(--sh-panel-soft)}
.sh-empty{color:var(--sh-ink-faint);font-size:13px;text-align:center;padding:28px 10px;line-height:1.8}.sh-muted{color:var(--sh-ink-faint)}.sh-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.sh-alert{border:1px solid var(--sh-vermil);background:var(--sh-vermil-tint);color:#8a2c1c;border-radius:14px;padding:12px 14px}.sh-field{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--sh-line-soft);font-size:13.5px}.sh-field span{color:var(--sh-ink-faint)}
@media(max-width:1000px){.sh-app{grid-template-columns:1fr}.sh-top{grid-column:1}.sh-menu-toggle{display:block}.sh-page-title{display:none}.sh-side{position:fixed;left:0;top:calc(60px + env(safe-area-inset-top,0px));bottom:0;width:248px;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px));transform:translateX(-105%);transition:.18s;z-index:30;box-shadow:var(--sh-shadow-m)}.sh-app.menu-open .sh-side{transform:none}.sh-main{padding:18px 16px 44px}.sh-grid.cols-4,.sh-grid.cols-3,.sh-grid.layout-2,.sh-grid.layout-3{grid-template-columns:1fr}.sh-user{display:none}.sh-brand-sub{display:none}}
.sh-nav-ic svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.sh-nav-ic{color:inherit}.sh-sos-breathe{animation:shSosBreathe 2s ease-in-out infinite}@keyframes shSosBreathe{0%,100%{opacity:.85}50%{opacity:1}}.sh-app .sh-main .topbar,.sh-app .sh-main .head{display:none!important}
/* 但 topbar 里若含工具栏(月份/站点/生成/发布等操作控件),整条被藏会让功能"消失"。
   这类 topbar 保留显示,只隐藏其中与 shell 面包屑重复的页头标题。
   —— 2026-08 老板反馈「智能排单找不到按钮」即由此引起,受影响页面有 5 个。 */
.sh-app .sh-main .topbar:has(button),.sh-app .sh-main .topbar:has(select),
.sh-app .sh-main .topbar:has(input),.sh-app .sh-main .topbar:has(.toolbar),
.sh-app .sh-main .top:has(button),.sh-app .sh-main .top:has(select),
.sh-app .sh-main .top:has(input),.sh-app .sh-main .top:has(.toolbar),
.sh-app .sh-main .head:has(button),.sh-app .sh-main .head:has(select),
.sh-app .sh-main .head:has(input),.sh-app .sh-main .head:has(.toolbar){
  display:flex!important;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
/* 页头里的装饰印章与重复标题仍然隐藏,只留操作控件 */
.sh-app .sh-main .topbar>.seal,.sh-app .sh-main .topbar>.eyebrow,
.sh-app .sh-main .top>.seal,.sh-app .sh-main .head>.seal{display:none!important}
.sh-app .sh-main .topbar>div:not(.toolbar):not([id]):has(h1),
.sh-app .sh-main .top>div:not(.toolbar):not([id]):has(h1),
.sh-app .sh-main .head>div:not(.toolbar):not([id]):has(h1){display:none!important}.sh-app .sh-main .wrap,.sh-app .sh-main .app{max-width:100%;padding:0;margin:0;background:transparent}.sh-app .sh-main .summ{gap:16px}.sh-app .sh-main .card,.sh-app .sh-main .order,.sh-app .sh-main .svc,.sh-app .sh-main .who{border-radius:var(--sh-radius);box-shadow:var(--sh-shadow-s)}@media(max-width:760px){.sh-app .sh-main .app{max-width:430px;margin:0 auto}.sh-app .sh-main{padding:16px 14px 40px}}
.sh-empty-card{border:1px dashed var(--sh-line);background:linear-gradient(180deg,#fff,var(--sh-panel-soft));border-radius:var(--sh-radius);padding:28px 22px;text-align:center;color:var(--sh-ink-soft);box-shadow:var(--sh-shadow-s);white-space:pre-line;line-height:1.85}.sh-empty-card .sh-empty-icon{width:68px;height:68px;margin:0 auto 13px;border-radius:22px;background:var(--sh-dai-tint);color:var(--sh-dai);display:grid;place-items:center}.sh-empty-card .sh-empty-icon svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.sh-empty-card b{display:block;font-size:15px;color:var(--sh-ink);margin-bottom:5px}.sh-empty-card p{font-size:13px;margin:0;color:var(--sh-ink-faint);line-height:1.8}.sh-empty-card .sh-empty-action{margin-top:14px;font-size:12px;color:var(--sh-dai);font-weight:700}
.sh-avatar{border-radius:50%;background:var(--sh-dai-tint);color:var(--sh-dai-deep);font-weight:700}.sh-logo-img{width:32px;height:32px;display:block}.sh-app .sh-main .top{display:none!important}.page-mark,.seal.is-icon{width:44px;height:44px;border-radius:14px;background:var(--sh-dai-tint);color:var(--sh-dai);display:grid;place-items:center}.page-mark svg,.seal.is-icon svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

.sh-person-avatar{background:var(--sh-dai-tint)!important;color:var(--sh-dai-deep)!important;border-radius:50%;font-weight:700}.sh-person-avatar svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.sh-station-badge{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;color:var(--sh-dai-deep);background:var(--sh-dai-tint)}.sh-station-badge svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
/* Shell navigation patch */
.sh-seal{cursor:pointer;text-decoration:none}.sh-page-nav{display:flex;align-items:center;gap:10px;min-width:0}.sh-titlebox{min-width:0}.sh-back{border:1px solid var(--sh-line,#E5E9F0);background:#fff;color:var(--sh-ink,#1F2A37);border-radius:999px;padding:6px 10px;font:inherit;font-size:12.5px;cursor:pointer;white-space:nowrap}.sh-back[hidden]{display:none}.sh-crumb{font-size:11.5px;color:#8A94A6;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw}@media(max-width:640px){.sh-top{gap:8px}.sh-menu-toggle:has(+ .sh-seal){} .sh-back{padding:7px 10px}.sh-page-nav{flex:1}.sh-brand{display:none}.sh-crumb{max-width:58vw}.sh-page-title{font-size:15px}}

/* 双业务线徽标(顶栏) */
.sh-bizline{font-size:11.5px;font-weight:600;padding:4px 12px;border-radius:20px;letter-spacing:1px;text-decoration:none;margin-left:4px}
.sh-bizline.is-ltci{background:var(--sh-dai-tint,#E8F0FB);color:var(--sh-dai-deep,#164A93)}
.sh-bizline.is-voucher{background:#F3E6D2;color:#8a5a1c}

/* ── 数据区滚动容器(2026-08-17):列表在卡片内滚动,页面不再被拉长 ── */
.sh-scroll{max-height:62vh;overflow-y:auto;overscroll-behavior:contain}
.sh-scroll table thead th{position:sticky;top:0;background:var(--sh-panel,#fff);z-index:4;box-shadow:0 1px 0 var(--sh-line,#E2E9E3)}
.sh-scroll::-webkit-scrollbar{width:8px}
.sh-scroll::-webkit-scrollbar-thumb{background:var(--sh-line,#E5E9F0);border-radius:8px}
.sh-listmeta{font-size:12px;color:var(--sh-ink-faint,#8A94A6);margin:6px 2px}
.sh-loadmore{display:block;width:100%;margin:10px 0 2px;padding:9px 0;border:1px dashed var(--sh-line,#E5E9F0);background:transparent;color:var(--sh-dai,#1F5FB8);border-radius:10px;font:inherit;font-size:13px;cursor:pointer}
.sh-loadmore[hidden]{display:none} /* 2026-09-14:display:block 压过了 [hidden],加载完还露着「加载更多」 */
.sh-loadmore:disabled{color:var(--sh-ink-faint,#8A94A6);cursor:default}

.sh-app .sh-main .tblwrap{max-height:62vh;overflow:auto;overscroll-behavior:contain}
.sh-app .sh-main .tblwrap table thead th{position:sticky;top:0;background:var(--sh-panel,#fff);z-index:4;box-shadow:0 1px 0 var(--sh-line,#E2E9E3)}
