/* 每日排班台：运营台风格（深色侧栏、按组分卡、状态色条）。颜色只在这里定义，深色模式自动切换。 */
:root{--bg:#f3f5fa;--panel:#fff;--ink:#0f172a;--ink-2:#475569;--ink-3:#8a97ad;--line:#e4e9f2;--line-2:#cfd7e6;
--hover:#f2f5fb;--accent:#3563e9;--accent-soft:#eaf0ff;--accent-ink:#2447c2;--on-accent:#fff;
--side:#0f1b33;--side-ink:#aeb9d0;--side-hi:#fff;--side-line:rgba(255,255,255,.09);--side-on:rgba(255,255,255,.11);
--red:#dc2626;--red-soft:#fdecec;--red-ink:#b42318;--amber:#e08a00;--amber-soft:#fff3dc;--amber-ink:#8a5200;
--green:#16a34a;--green-soft:#e6f7ec;--green-ink:#0f7a37;--gray-soft:#eef1f6;--gray-ink:#516078;
--violet:#7c3aed;--violet-soft:#f1eaff;--violet-ink:#5b21b6;--violet-line:#c9b2f5;--slate:#3d6a99;--slate-soft:#e6eef8;--slate-ink:#2b4f78;--slate-line:#a9c1de;
--radius:12px;--shadow:0 1px 2px rgba(15,27,51,.05),0 1px 3px rgba(15,27,51,.04);--shadow-lg:0 18px 44px rgba(15,27,51,.18);
--font:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",system-ui,sans-serif;
--mono:ui-monospace,SFMono-Regular,Consolas,Menlo,monospace}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#0a1020;--panel:#111a2e;--ink:#e6ebf5;--ink-2:#a3b0c7;
--ink-3:#6c7a93;--line:#1f2a42;--line-2:#2d3a57;--hover:#16213a;--accent:#5b86f5;--accent-soft:#15244a;--accent-ink:#a9c1ff;
--side:#0a1326;--red-soft:#3b1717;--red-ink:#ffb4ab;--amber-soft:#3a2a0c;--amber-ink:#fcd34d;--green-soft:#0d2e1f;--green-ink:#6ee7a0;
--gray-soft:#1a2540;--gray-ink:#b4c0d6;--violet:#a78bfa;--violet-soft:#2a1b4d;--violet-ink:#d9c9ff;--violet-line:#5b3fa0;
--slate:#86a9d4;--slate-soft:#16263d;--slate-ink:#b5cdec;--slate-line:#36557d;--shadow:none;--shadow-lg:0 18px 44px rgba(0,0,0,.55)}}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 var(--font)}
a{color:var(--accent-ink);text-decoration:none} a:hover{text-decoration:underline}
input,select,textarea,button{font:inherit;color:inherit}
input,select,textarea{background:var(--panel);border:1px solid var(--line-2);border-radius:9px;padding:7px 11px;min-height:36px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
button,.btn{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line-2);border-radius:9px;
padding:7px 14px;min-height:36px;cursor:pointer;color:var(--ink);text-decoration:none;white-space:nowrap;transition:background .12s,border-color .12s}
button:hover,.btn:hover{background:var(--hover);text-decoration:none} button:disabled{opacity:.5;cursor:not-allowed}
.btn-primary,button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn-primary:hover,button.primary:hover{background:var(--accent-ink);color:var(--on-accent)}
.btn-sm{min-height:30px;padding:4px 10px;font-size:13px}
code{font-family:var(--mono);background:var(--gray-soft);padding:2px 6px;border-radius:6px;word-break:break-all;font-size:12.5px}
pre{white-space:pre-wrap;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px}

/* 外壳：深色侧栏 + 内容 */
.shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;padding:18px 12px}
.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 22px;color:var(--side-hi)} .brand:hover{text-decoration:none}
.logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#5b86f5,#7c5cf0);color:#fff;display:grid;place-items:center;font-weight:700;box-shadow:0 4px 12px rgba(91,134,245,.4)}
.brand-t{display:flex;flex-direction:column;line-height:1.2} .brand-t b{font-size:15px;letter-spacing:.3px} .brand-t small{color:var(--side-ink);font-size:11px;opacity:.8}
.side-nav{display:flex;flex-direction:column;gap:3px}
.side-nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:9px;color:var(--side-ink);font-weight:500;position:relative}
.side-nav a:hover{background:var(--side-line);text-decoration:none;color:var(--side-hi)}
.side-nav a.on{background:var(--side-on);color:var(--side-hi)}
.side-nav a.on::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#7da2ff}
.side-nav svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.side-foot{margin-top:auto;padding:14px 10px 0;border-top:1px solid var(--side-line);color:var(--side-ink);font-size:12px;line-height:1.65;opacity:.85}
.content{min-width:0;padding:26px 34px 56px}
main{max-width:1440px}

/* 页头 */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.page-head h1{font-size:24px;font-weight:650;margin:0;letter-spacing:.2px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.page-head .sub{color:var(--ink-2);font-size:13px;margin-top:3px}
.wk{font-size:13px;font-weight:600;color:var(--ink-2);background:var(--gray-soft);padding:2px 11px;border-radius:99px}
.today-badge{font-size:12px;font-weight:600;color:var(--accent-ink);background:var(--accent-soft);padding:2px 11px;border-radius:99px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.day-nav .btn{background:var(--panel);box-shadow:var(--shadow)}
h2{font-size:15px;font-weight:600;margin:26px 0 10px}

/* 横幅与说明 */
.banner{padding:10px 14px;margin:0 0 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel);font-size:13px}
.banner.crit{background:var(--red-soft);color:var(--red-ink);border-color:transparent}
.banner.warn{background:var(--amber-soft);color:var(--amber-ink);border-color:transparent}
.banner.ok{background:var(--green-soft);color:var(--green-ink);border-color:transparent}
.muted{color:var(--ink-3);font-size:12.5px} .red{color:var(--red)}
.chain{margin:2px 0 4px} .chain-line{font-size:13px;line-height:1.8}
.chain-base{white-space:nowrap} .chain-mark{display:block;margin-left:1.6em}
.chain-mark.bad{color:var(--red-ink)} .chain-mark.warn{color:var(--amber-ink)} .chain-mark.ok{color:var(--ink-3)}
.chain-hint{margin-top:4px}

/* 卡片与指标 */
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:16px 18px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:18px}
.kpi{border-top:3px solid var(--line-2)}
.kpi:nth-child(1){border-top-color:var(--accent)} .kpi:nth-child(2){border-top-color:var(--green)}
.kpi:nth-child(3){border-top-color:var(--red)} .kpi:nth-child(4){border-top-color:var(--amber)}
.kpi .k-label{color:var(--ink-2);font-size:12.5px} .kpi .k-val{font-size:30px;font-weight:650;margin-top:2px;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.kpi .k-val small{font-size:14px;color:var(--ink-3);font-weight:500}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;margin-bottom:8px}
.day-card{display:block;color:var(--ink);padding:14px 15px;transition:transform .12s,border-color .12s} .day-card:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-1px)}
.day-card.today{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.day-card .d-top{display:flex;justify-content:space-between;color:var(--ink-2);font-size:12.5px}
.day-card .d-num{font-size:22px;font-weight:650;margin:4px 0 9px;font-variant-numeric:tabular-nums}
.bar{height:7px;background:var(--gray-soft);border-radius:99px;overflow:hidden} .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--green),#34d399);border-radius:99px}
.day-card .d-stats{display:flex;flex-direction:column;gap:3px;margin-top:10px;font-size:12px;color:var(--ink-2)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:1px}
.dot.r{background:var(--red)} .dot.a{background:var(--amber)} .dot.g{background:var(--green)} .dot.n{background:var(--ink-3)}

/* 胶囊与标签 */
.pill{display:inline-flex;align-items:center;padding:3px 11px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap}
.pill .st-dot{width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:6px;display:inline-block}
.pill.crit{background:var(--red-soft);color:var(--red-ink)} .pill.warn{background:var(--amber-soft);color:var(--amber-ink)}
.pill.ok{background:var(--green-soft);color:var(--green-ink)} .pill.none{background:var(--gray-soft);color:var(--gray-ink)}
.chip{display:inline-flex;align-items:center;padding:2px 9px;border:1px solid var(--line-2);border-radius:7px;font-size:12.5px;font-weight:600;font-family:var(--mono);background:var(--panel)}
.tag{position:relative;display:inline-block;margin:1px 4px 3px 0;padding:1px 9px;border-radius:99px;font-size:11.5px;cursor:help;white-space:nowrap;border:1px solid transparent}
.tag-crit{background:var(--red-soft);color:var(--red-ink)} .tag-warn{background:var(--amber-soft);color:var(--amber-ink)} .tag-info{background:var(--slate-soft);color:var(--slate-ink)}
.tag .tip{display:none;position:fixed;z-index:60;width:min(440px,80vw);padding:10px 12px;background:var(--panel);color:var(--ink);
border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);white-space:pre-line;font-size:12.5px;line-height:1.6;cursor:default}
.tag:hover .tip,.tag:focus .tip,.tag:focus-within .tip{display:block}

/* 表格（来源页、待处理清单、历史、录入共用） */
.wrap{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:auto}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
th{position:sticky;top:0;background:var(--panel);color:var(--ink-3);text-align:left;font-weight:600;font-size:12px;padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:1}
td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:none}
tr.lv-crit td{background:var(--red-soft)} tr.lv-warn td{background:var(--amber-soft)}
.issue-crit{color:var(--red-ink)} .issue-warn{color:var(--amber-ink)} .issue-ok{color:var(--ink-3)}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.split img{max-width:100%;border:1px solid var(--line);border-radius:var(--radius)}
form.inline{display:inline} details form{margin:6px 0}

/* 日排班总表：按组分卡，每个班次一行 */
#desk{display:flex;flex-direction:column;gap:16px}
.grp-card{overflow:hidden}
table.slots,table.slots tbody,table.slots tr.grp,table.slots tr.grp td{display:block}
tr.slot{display:grid;grid-template-columns:96px 190px 92px minmax(0,1fr) 130px 210px 34px;align-items:center;border-bottom:1px solid var(--line)}
tr.slot:last-child{border-bottom:none}
tr.slot td{border-bottom:none;min-width:0}
tr.grp td{background:var(--hover);padding:0;border-bottom:1px solid var(--line)}
.g-head{display:flex;align-items:center;gap:12px;padding:11px 16px}
.g-name{font-weight:650;font-size:14px} .g-count{color:var(--ink-3);font-size:12.5px}
.g-prog{margin-left:auto;width:120px;height:6px;background:var(--line-2);border-radius:99px;overflow:hidden}
.g-prog i{display:block;height:100%;background:var(--green);border-radius:99px}
.g-done{color:var(--ink-2);font-size:12.5px;min-width:78px;text-align:right;font-variant-numeric:tabular-nums}
tr.slot{cursor:pointer;--stripe:transparent}
tr.slot.st-confirmed{--stripe:var(--green)} tr.slot.st-cancelled{--stripe:var(--ink-3)}
tr.slot.st-unconfirmed{--stripe:var(--amber)} tr.slot.st-red,tr.slot.st-conflict{--stripe:var(--red)}
tr.slot td{padding:12px 14px;vertical-align:middle;transition:background .1s}
tr.slot td:first-child{box-shadow:inset 4px 0 0 var(--stripe)}
tr.slot:hover td{background:var(--hover)} tr.slot.sel td{background:var(--accent-soft)}
tr.slot:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.t-cell .dep{display:block;font-size:17px;font-weight:650;line-height:1.15;font-variant-numeric:tabular-nums}
.t-cell .cd{display:block;margin-top:2px;font-family:var(--mono);font-size:11.5px;font-weight:500;color:var(--ink-3)}
td.route{font-weight:550;color:var(--ink);letter-spacing:.2px}
tr.slot.st-empty td.route,tr.slot.st-empty .dep{color:var(--ink-3)}
tr.slot.st-empty .cd{opacity:.7}
td.drivers{line-height:1.2}
.seg{display:inline-flex;align-items:center;gap:6px;margin:2px 6px 2px 0;padding:2px 11px 2px 3px;border:1px solid var(--line);border-radius:99px;background:var(--panel);font-size:12.5px;white-space:nowrap}
.seg em{font-style:normal;color:var(--ink-3);font-size:10.5px;margin-left:5px;margin-right:-2px}
.seg .av{width:21px;height:21px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;font-size:11px;font-weight:700}
.seg .ok{font-style:normal;color:var(--green);font-weight:800;margin-left:2px}
.seg-bad{background:var(--red-soft);border-color:transparent;color:var(--red-ink)} .seg-bad .av{background:var(--panel);color:var(--red)}
.seg-none{background:transparent;border:1px dashed var(--line-2);color:var(--ink-3);padding-left:4px}
.seg-none em{margin-right:4px}
.hint{color:var(--ink-3);font-size:12.5px;border:1px dashed var(--line-2);border-radius:99px;padding:2px 13px;white-space:nowrap}
tr.slot td.go{color:var(--ink-3);text-align:right;font-size:18px}
tr.slot:hover td.go{color:var(--accent)}
tr.slot td.notes{white-space:normal}

/* 筛选条：五个统计磁贴 */
.filters{display:flex;gap:12px;align-items:stretch;flex-wrap:nowrap;margin-bottom:18px}
.filters button{flex-direction:column;align-items:flex-start;gap:0;flex:0 1 108px;min-width:60px;padding:10px 14px 9px;min-height:0;border-radius:13px;
border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);font-size:12.5px;color:var(--ink-2);line-height:1.35}
.filters button b{order:-1;font-size:24px;font-weight:650;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.filters button[data-filter=problem] b{color:var(--red)} .filters button[data-filter=unconfirmed] b{color:var(--amber)}
.filters button[data-filter=confirmed] b{color:var(--green)} .filters button[data-filter=evidence] b{color:var(--violet)} .filters button[data-filter=empty] b{color:var(--ink-3)}
.filters button.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px var(--accent-soft);color:var(--accent-ink)}
.filters input{margin-left:auto;align-self:center;flex:1 1 120px;min-width:100px;max-width:260px;border-radius:99px}

/* 右侧滑出面板 */
.drawer{position:fixed;top:0;right:0;bottom:0;width:460px;max-width:100vw;background:var(--panel);border-left:1px solid var(--line);
box-shadow:var(--shadow-lg);transform:translateX(102%);transition:transform .18s ease;z-index:40;display:flex;flex-direction:column}
.drawer.open{transform:none}
.shell.drawer-open .content{margin-right:460px}
.d-head{padding:18px 20px 12px;border-bottom:1px solid var(--line)}
.d-title{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.d-title b{font-size:17px} .d-title b span{font-family:var(--mono)}
.d-meta{color:var(--ink-2);font-size:12.5px;margin-top:5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.d-tabs{display:flex;gap:2px;padding:0 14px;border-bottom:1px solid var(--line)}
.d-tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:11px 12px;min-height:0;color:var(--ink-2)}
.d-tabs button.on{border-bottom-color:var(--accent);color:var(--accent-ink);font-weight:600}
.d-body{flex:1;overflow:auto;position:relative;padding:6px 18px 28px}
.d-sec{margin-bottom:12px} .d-sec h3{font-size:12px;font-weight:600;color:var(--ink-3);margin:0 0 6px;letter-spacing:.3px}
.seg-row{display:grid;grid-template-columns:56px minmax(0,1fr);gap:8px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
.seg-row:last-child{border-bottom:none} .seg-row .lbl{color:var(--ink-3)} .seg-row .who b{font-weight:500}
.note-card{border-radius:10px;padding:10px 13px;margin-bottom:8px;white-space:pre-line;font-size:12.5px;line-height:1.6}
.note-card.crit{background:var(--red-soft);color:var(--red-ink)} .note-card.warn{background:var(--amber-soft);color:var(--amber-ink)} .note-card.info{background:var(--slate-soft);color:var(--slate-ink)}
.note-card b{display:block;margin-bottom:2px}
/* 核对标记（排班 vs 行程证据）：紫 = 有疑点，蓝灰 = 备注；带细边框，和绿/黄/红/灰的状态色区分开 */
.tag.flag-warn{background:var(--violet-soft);color:var(--violet-ink);border-color:var(--violet-line)}
.tag.flag-info{background:var(--slate-soft);color:var(--slate-ink);border-color:var(--slate-line)}
.flag-card{border-radius:10px;padding:10px 13px;margin-bottom:8px;white-space:pre-line;font-size:12.5px;line-height:1.6;border:1px solid transparent}
.flag-card.flag-warn{background:var(--violet-soft);color:var(--violet-ink);border-color:var(--violet-line)}
.flag-card.flag-info{background:var(--slate-soft);color:var(--slate-ink);border-color:var(--slate-line)}
.flag-card b{display:block;margin-bottom:2px} .flag-card .muted{color:inherit;opacity:.8}
.fld{display:flex;flex-direction:column;gap:4px;margin-bottom:12px} .fld label{font-size:12.5px;color:var(--ink-2)}
.fld input,.fld select{width:100%}
.form-actions{display:flex;gap:8px;margin-top:4px}
.form-block{border:1px solid var(--line);border-radius:11px;padding:12px;margin-bottom:12px}
.form-block h4{margin:0 0 8px;font-size:13px;font-weight:600}
.form-block form{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0}
.form-block form input,.form-block form select{flex:1;min-width:120px}
.toast{background:var(--green-soft);color:var(--green-ink);border-radius:10px;padding:9px 13px;margin-bottom:12px;font-size:13px}
.toast.err{background:var(--red-soft);color:var(--red-ink)}
/* 面板里的保存提示悬浮在面板底部、不占版面：保存后内容不会被它顶得上下跳；绿色的不挡点击，红色的点一下关掉 */
.drawer .toast{position:absolute;left:18px;right:18px;bottom:18px;margin:0;z-index:3;box-shadow:var(--shadow-lg);pointer-events:none;animation:toast-in .15s ease}
.drawer .toast.err{pointer-events:auto;cursor:pointer}
@keyframes toast-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.icon-btn{border:none;background:none;min-height:0;padding:4px 7px;color:var(--ink-3);border-radius:7px} .icon-btn:hover{color:var(--ink);background:var(--hover)}

/* 撤销 / 清除：灰色小字，点开才出现原因输入框 */
details.rv{display:inline-block;margin:2px 0}
details.rv>summary{cursor:pointer;color:var(--ink-3);font-size:12px;list-style:none;display:inline-block}
details.rv>summary::-webkit-details-marker{display:none}
details.rv>summary:hover{color:var(--red-ink);text-decoration:underline}
details.rv[open]{display:block}
.rv-form{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0}
.rv-form input[name=basis]{flex:1;min-width:140px}
.rv-form .muted{flex-basis:100%}
.rv-row{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
.rv-row:last-child{border-bottom:none}

/* 录入页 */
.drop{border:2px dashed var(--line-2);border-radius:14px;padding:30px;text-align:center;color:var(--ink-2);background:var(--bg)}
.drop b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}
.grid-2{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px}

/* 抽屉打开时内容区只剩一半宽：让出「方向」和「备注」两列（方向在抽屉标题里，备注在抽屉里），保住车和司机 */
.shell.drawer-open tr.slot{grid-template-columns:92px 88px minmax(0,1fr) 124px 30px}
.shell.drawer-open td.route,.shell.drawer-open td.notes{display:none}
@media (max-width:1380px){tr.slot{grid-template-columns:96px 190px 92px minmax(0,1fr) 130px 34px}td.notes{display:none}}
@media (max-width:1100px){.week{grid-template-columns:repeat(4,minmax(0,1fr))}.shell.drawer-open .content{margin-right:0}tr.slot{grid-template-columns:92px 150px 88px minmax(0,1fr) 124px 30px}}
@media (max-width:800px){.shell{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;align-items:center;gap:12px;padding:10px 16px}
.brand{padding:0}.side-nav{flex-direction:row}.side-nav a.on::before{display:none}.side-foot{display:none}.content{padding:16px}.split,.grid-2{grid-template-columns:1fr}
.week{grid-template-columns:repeat(2,minmax(0,1fr))}.drawer{width:100vw}td.route,td.notes{display:none}tr.slot{grid-template-columns:84px 80px minmax(0,1fr) 112px 24px}.filters{flex-wrap:wrap}.filters button{flex:1 1 92px}}


/* 登录、侧栏登录人 */
.side-user{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 10px;border-top:1px solid var(--side-line);color:var(--side-hi)}
.side-user b{display:block;font-size:13.5px} .side-user small{color:var(--side-ink);font-size:11.5px}
.side-user+.side-foot{margin-top:0}
.link-btn{background:none;border:none;color:var(--side-ink);min-height:0;padding:4px 8px;border-radius:7px;font-size:12.5px}
.link-btn:hover{background:var(--side-line);color:var(--side-hi)}
.login-page{display:grid;place-items:center;min-height:100vh;background:var(--bg)}
.login-card{width:min(380px,92vw);padding:28px 28px 22px}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.login-brand .logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#5b86f5,#7c5cf0);color:#fff;display:grid;place-items:center;font-weight:700}
.login-brand b{display:block;font-size:17px} .login-brand small{color:var(--ink-3)}


.g-owner{color:var(--ink-3);font-size:12px;background:var(--gray-soft);padding:1px 9px;border-radius:99px}


.chk{display:inline-flex;align-items:center;gap:5px;margin:2px 12px 2px 0;font-size:12.5px;white-space:nowrap}
.chk input{min-height:0;width:auto} .stale{color:var(--red-ink)}

/* 临时停开：当天定稿后没排的班次，灰掉，不算待办 */
tr.slot.st-paused{--stripe:var(--line-2);opacity:.6}
tr.slot.st-paused .dep,tr.slot.st-paused .route{color:var(--ink-3)}
.finalize-form{margin:0 0 14px}

/* 抽屉：详情 / 改班 / 回答 三块竖着排，顶上页签是快捷跳转 */
.d-body>section[data-panel]{padding:12px 0 14px;border-top:1px solid var(--line)}
.d-body>section[data-panel]:first-of-type{border-top:none;padding-top:10px}
.d-h{font-size:14px;font-weight:650;margin:0 0 8px}
.kv{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px;padding:3px 0;font-size:13px}
.kv .k{color:var(--ink-3)}
.fld-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fld-row .fld,.d-body .fld{margin-bottom:9px}
.d-body .form-block{margin-bottom:8px;padding:10px}
.tag-more{background:var(--gray-soft);color:var(--gray-ink);cursor:default}

/* 日排班页头不换行：抽屉一开内容区变窄，页头和筛选条不能因此换行，否则下面整个列表会往下跳 */
.day-head{flex-wrap:nowrap}
.day-head>div:first-child{min-width:0;flex:1 1 auto}
.day-head .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.day-head .toolbar{flex:0 0 auto;flex-wrap:nowrap}
td.notes{white-space:nowrap;overflow:hidden}
.banner.one-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 抽屉打开时内容区只剩一半宽：收紧行内边距和司机标签，尽量让每行高度不变（点哪一行，那一行就别跑） */
.shell.drawer-open tr.slot td{padding-left:8px;padding-right:8px}
.shell.drawer-open .seg{margin-right:3px;padding-right:8px;gap:4px}
.shell.drawer-open .seg .av{width:18px;height:18px;font-size:10px}
.shell.drawer-open tr.slot{grid-template-columns:84px 80px minmax(0,1fr) 112px 22px}
/* 司机出勤页 */
.att-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px;padding:12px 16px}
.att-controls label{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}
.att-presets{display:flex;gap:6px}
table.att td .num{display:inline-block;min-width:22px;font-variant-numeric:tabular-nums;font-weight:600}
.att-bar{display:inline-block;vertical-align:middle;width:120px;height:6px;background:var(--gray-soft);border-radius:99px;overflow:hidden;margin-left:8px}
.att-bar i{display:block;height:100%;background:var(--accent);border-radius:99px}
.att-seg{padding:2px 0}
tr.att-off td{color:var(--ink-3)}

/* 司机服务评价：点名字弹出的详情抽屉 */
.svc-drawer{width:520px}
.shell.drawer-open .content{margin-right:520px}
@media (max-width:1100px){.shell.drawer-open .content{margin-right:0}}
a.drv-link{color:inherit;text-decoration:none;border-bottom:1px dotted var(--ink-3)} a.drv-link:hover{color:var(--accent-ink);border-bottom-style:solid}
.svc-detail .d-sec{margin:14px 0 18px}
.svc-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}
.svc-card{border:1px solid var(--line);border-radius:10px;padding:8px 11px;background:var(--panel)}
.svc-card b{display:block;font-size:19px;font-variant-numeric:tabular-nums;margin-top:2px}
.svc-card.big{grid-column:span 3;background:var(--hover)} .svc-card.big b{font-size:30px}
.svc-tbl{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:6px}
.svc-tbl th{text-align:left;color:var(--ink-3);font-weight:600;padding:4px 6px;border-bottom:1px solid var(--line)}
.svc-tbl td{padding:6px;border-bottom:1px solid var(--line);vertical-align:top}
.minus{color:var(--red-ink);font-weight:600;white-space:nowrap} .plus{color:var(--green-ink);font-weight:600}
.svc-rev{border:1px solid var(--line);border-radius:10px;padding:8px 11px;margin-bottom:6px;font-size:12.5px;line-height:1.55}
.svc-rev.dim{background:var(--hover)} .svc-rev div{margin-top:3px}
.svc-good{margin:6px 0;padding:8px 11px;border-radius:10px;background:var(--green-soft);color:var(--green-ink);font-size:12.5px}
.svc-page .d-head{padding-left:0} .svc-page .d-body{padding:6px 0 28px;overflow:visible}
#svc-toast{position:fixed;left:244px;bottom:18px;z-index:70;margin:0;box-shadow:var(--shadow-lg);max-width:460px}
.svc-sum{margin-top:4px;font-size:13px;line-height:1.55;font-weight:500}
.svc-orig{margin-top:4px} .svc-orig summary{cursor:pointer;color:var(--ink-3);font-size:12px}
.svc-orig div{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.55;margin-top:4px;color:var(--ink-2)}
.svc-calc{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px;font-size:12px;font-weight:600}
.acc-flag{display:inline-block;min-width:26px;padding:1px 9px;text-align:center;font-weight:700;color:var(--red-ink);background:var(--red-soft);border:2px solid var(--red);border-radius:6px}
.bd-chip{display:inline-block;padding:2px 10px;margin:2px 6px 2px 0;border:1px solid var(--line-2);border-radius:999px;font-size:12.5px;color:var(--ink-2);text-decoration:none;background:var(--panel)}
.bd-chip:hover{background:var(--hover);color:var(--ink)}
