*{box-sizing:border-box}
body{margin:0;font-family:"Microsoft YaHei",system-ui,-apple-system,"PingFang SC",sans-serif;font-size:13px;color:#1f2328;background:#f4f6f9}
a{color:#2f6fb3;text-decoration:none}
.hidden{display:none!important}
#app{display:flex;min-height:100vh}
.side{width:180px;background:#12395c;color:#cfe1f3;flex:0 0 180px;padding:14px 0}
.side .logo{padding:0 16px 14px;font-size:15px;font-weight:700;color:#fff;border-bottom:1px solid #1d4d75;margin-bottom:8px}
.side .nav{padding:8px 16px;cursor:pointer;display:flex;justify-content:space-between}
.side .nav:hover{background:#17496f}
.side .nav.on{background:#2f6fb3;color:#fff;font-weight:700}
.side .nav .badge{background:#e04b4b;color:#fff;border-radius:9px;padding:0 6px;font-size:11px}
.main{flex:1;padding:16px 20px;overflow:auto}
h1{font-size:18px;margin:0 0 14px}
h2{font-size:14px;margin:18px 0 8px;color:#12395c}
.card{background:#fff;border:1px solid #e1e7ef;border-radius:6px;padding:12px;margin-bottom:12px}
.grid{display:grid;gap:12px}
.g4{grid-template-columns:repeat(4,1fr)}
.g2{grid-template-columns:1fr 1fr}
.kpi{background:#fff;border:1px solid #e1e7ef;border-radius:6px;padding:12px}
.kpi .n{font-size:22px;font-weight:800;color:#12395c}
.kpi .l{color:#6b7785;margin-top:2px}
.kpi.warn .n{color:#e08a00}
.kpi.danger .n{color:#e04b4b}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{border-bottom:1px solid #eef2f7;padding:7px 8px;text-align:left;vertical-align:top}
th{background:#f7fafd;color:#12395c;font-weight:700;white-space:nowrap}
tr:hover td{background:#fbfdff}
.btn{display:inline-block;border:1px solid #c8d3de;background:#fff;border-radius:4px;padding:3px 10px;cursor:pointer;font-size:12px;color:#12395c}
.btn:hover{background:#eef6ff}
.btn.p{background:#2f6fb3;border-color:#2f6fb3;color:#fff}
.btn.p:hover{background:#28619c}
.btn.d{color:#c0392b;border-color:#e6b0a8}
.btn.sm{padding:1px 7px;font-size:11px}
input,select,textarea{border:1px solid #c8d3de;border-radius:4px;padding:4px 7px;font-size:12px;font-family:inherit;width:100%}
label{display:block;color:#6b7785;margin:8px 0 3px;font-size:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tag{display:inline-block;border-radius:3px;padding:1px 7px;font-size:11px;white-space:nowrap}
.t-gray{background:#eef2f7;color:#5b6672}
.t-blue{background:#e4f0fb;color:#1c5f9e}
.t-green{background:#e6f7ec;color:#1e7a41}
.t-orange{background:#fff3e0;color:#a35b00}
.t-red{background:#fdeceb;color:#b83a2c}
.t-purple{background:#f1e9fb;color:#6b3fa0}
.modal{position:fixed;inset:0;background:rgba(15,25,40,.45);display:flex;align-items:center;justify-content:center;z-index:50}
.modal-box{background:#fff;border-radius:8px;padding:18px;min-width:520px;max-width:900px;max-height:88vh;overflow:auto}
.muted{color:#8a94a0}
.bold{font-weight:700}
.err{color:#c0392b}
.day-grid td{border:1px solid #eef2f7;text-align:center;padding:4px 2px;font-size:11px}
.day-grid .busy{background:#cfe3f7;color:#12395c;font-weight:700}
.day-grid .empty{background:#fafcff;color:#c3ccd6}
.hint{background:#eef6ff;border-left:3px solid #7ab3e0;padding:6px 10px;color:#24455f;margin:8px 0;font-size:12px}
.day-grid .wait{background:#f3f5f8;color:#9aa5b1;font-style:italic}


/* 出车看板打印友好 */
@media print {
  .side, .row button, h1 + .row { display: none !important; }
  body { background: #fff; }
  .main { padding: 0; }
  .card { break-inside: avoid; box-shadow: none; }
  .grid.g4 { display: none; }
}
