
  :root{--ink:#131a24;--panel1:#171f2b;--panel2:#212c3c;--line:#e7e5df;--line2:#f1f0ea;--paper:#f7f6f2;--card:#fff;--sub:#727880;--turo:#2f6fed;--self:#15a86f;--wknd:#f4f2ea;--seldaybg:#cfe0fb;--selwkbg:#e3edfb;--today:#f2a218;--accent:#131a24;--direct:#15a86f;--maint:#8a929c;--paid:#0f7d51;--due:#c0392b;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;--sans:system-ui,"Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif;}
  *{box-sizing:border-box} body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;}
  .wrap{max-width:none;margin:0 auto;padding:10px 10px 40px;}   /* 全宽 + 窄边距,多放信息 */
  header.top{background:linear-gradient(135deg,var(--panel1),var(--panel2));color:#f5f4ef;border-radius:14px;padding:12px 16px;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;}
  .ttl{font-size:20px;font-weight:750;line-height:1.12;} .ttl small{display:block;font-weight:400;color:#9aa2ad;font-size:11.5px;margin-top:5px;font-family:var(--mono);}
  .kpis{display:flex;gap:8px;} .kpi{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09);border-radius:12px;padding:9px 13px;min-width:82px;text-align:center;} .kpi b{font-family:var(--mono);font-size:24px;font-weight:600;display:block;line-height:1;} .kpi span{font-size:10px;color:#9aa2ad;display:block;margin-top:5px;} .kpi.hero b{color:#66e2ad}
  .bar-ctl{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:14px 2px 10px;}
  .seg{display:inline-flex;background:#eceae2;border:1px solid var(--line);border-radius:10px;padding:3px;} .seg button{border:0;background:transparent;font:inherit;font-size:13px;font-weight:600;color:var(--sub);padding:6px 14px;border-radius:8px;cursor:pointer;} .seg button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.1);}
  .legend{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:12px;color:var(--sub);} .legend .sw{display:inline-flex;align-items:center;gap:6px;} .chip{width:22px;height:11px;border-radius:6px;} .chip.t{background:var(--turo)} .chip.s{background:var(--self)} .chip.d{background:var(--direct)} .chip.m{background:var(--maint)} .chip.f{background:var(--card);border:1px solid var(--line);border-radius:4px;width:13px;}
  .spacer{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end;} .updated{font-family:var(--mono);font-size:10.5px;color:#9aa0a8}
  .btn{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:7px 12px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;} .btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);} .btn.on{background:var(--accent);color:#fff;border-color:var(--accent);} .btn.lock{background:#eef4ff;border-color:#cfe0ff;color:#2b4b8f}
  .banner{margin:0 2px 12px;font-size:12px;border-radius:10px;padding:9px 12px;display:none;} .banner.info{display:block;background:#eef4ff;border:1px solid #cfe0ff;color:#2b4b8f;} .banner.warn{display:block;background:#fef6e7;border:1px solid #f6e2ad;color:#8a6d1f;}
  .scroll{overflow:auto;border:1px solid var(--line);border-radius:14px;background:var(--card);-webkit-overflow-scrolling:touch;}
  table{border-collapse:separate;border-spacing:0;width:100%;font-size:12px;} th,td{white-space:nowrap;}
  thead .wk{position:sticky;top:0;z-index:6;background:var(--card);} th.wklab{padding:8px 0 6px;text-align:center;font-size:11px;font-weight:700;color:var(--sub);border-bottom:1px solid var(--line);border-left:2px solid var(--line);cursor:pointer;} th.wklab .wn{color:var(--ink)} th.wklab small{display:block;font-family:var(--mono);font-weight:500;font-size:9.5px;margin-top:1px;color:var(--sub);} th.wklab.on{background:var(--selwkbg);box-shadow:inset 0 -4px 0 var(--accent)}
  thead .dr{position:sticky;z-index:5}
  thead .dr th{position:sticky;top:35px;z-index:6;background:var(--card);padding:0;} .dhead{padding:4px 0 3px;text-align:center;min-width:34px;cursor:pointer;border-bottom:1px solid var(--line);} .dhead .dn{font-family:var(--mono);font-size:13px;font-weight:700;line-height:1.1} .dhead .wd{font-size:9px;color:var(--sub);margin-top:2px} .dhead.wknd .wd{color:#e0443a} .dhead.wknd{background:var(--wknd)} .dhead.wkstart{border-left:2px solid var(--line)} .dhead.today .dn{color:#fff;background:var(--today);border-radius:6px;padding:1px 3px;} .dhead.on{background:var(--seldaybg);box-shadow:inset 0 -4px 0 var(--accent)}
  th.corner{position:sticky;left:0;top:0;z-index:9;background:var(--card);text-align:left;padding:8px 12px;min-width:260px;font-size:11px;color:var(--sub);font-weight:700;border-bottom:1px solid var(--line);box-shadow:7px 0 8px -7px rgba(0,0,0,.14);}
  td.car{position:sticky;left:0;z-index:3;background:var(--card);padding:5px 10px;min-width:260px;max-width:300px;border-bottom:1px solid var(--line2);box-shadow:7px 0 8px -7px rgba(0,0,0,.10);white-space:normal;vertical-align:middle} .car-row{display:flex;align-items:center;gap:9px} .thumb{width:56px;height:36px;border-radius:7px;object-fit:cover;flex:0 0 auto;background:#eef0f3} .thumb.ph{display:flex;align-items:center;justify-content:center;font-size:20px;color:#b3b9c2} .thumb.big{width:120px;height:78px;font-size:30px} .car-info{flex:1;min-width:0} td.car .nm{font-weight:650;font-size:12.5px;line-height:1.25;overflow-wrap:anywhere} td.car .pl{font-family:var(--mono);font-size:9.5px;color:var(--sub);margin-top:2px} .rates{flex:0 0 auto;text-align:right;font-family:var(--mono);font-size:10px;line-height:1.4;color:var(--sub)} .rates b{color:var(--ink);font-weight:600;font-size:11.5px} td.car .fd{font-family:var(--mono);font-size:9.5px;color:var(--self);background:#e8f7f0;padding:2px 6px;border-radius:20px}
  td.cell{height:48px;padding:0;position:relative;border-bottom:1px solid var(--line2);} td.cell.wkstart{border-left:2px solid var(--line2)} td.cell.wknd::before{content:"";position:absolute;inset:0;background:var(--wknd)} td.cell.selday{background:var(--seldaybg)} td.cell.selwk{background:var(--selwkbg)} td.cell.selday.wknd::before{background:var(--seldaybg)} td.cell.selwk.wknd::before{background:var(--selwkbg)} td.cell.selday .fill{box-shadow:inset 0 0 0 2px rgba(19,26,36,.28)} .cnt.on{background:var(--seldaybg)} td.cell .fill{position:absolute;top:7px;bottom:7px;left:0;right:0;z-index:1;} td.cell.turo .fill{background:var(--turo)} td.cell.self .fill{background:var(--self)} td.cell.direct .fill{background:var(--direct)} td.cell.maint .fill{background:var(--maint)} td.cell.rs .fill{z-index:2} td.cell[data-eid]{cursor:pointer} .fill .lbl{position:absolute;left:0;top:0;height:100%;display:flex;align-items:center;gap:8px;padding:0 9px;box-sizing:border-box;color:#fff;font-size:12px;font-weight:600;white-space:nowrap;pointer-events:none} .fill .lbl .t{overflow:hidden;text-overflow:ellipsis;min-width:0} .fill .lbl b{font-family:var(--mono);font-weight:600;margin-left:auto;flex:none} td.cell.rs .fill{left:3px;border-top-left-radius:9px;border-bottom-left-radius:9px} td.cell.re .fill{right:3px;border-top-right-radius:9px;border-bottom-right-radius:9px}
  td.cell[data-eid]:hover .fill{box-shadow:inset 0 0 0 2px rgba(255,255,255,.85)}
  tfoot td{position:sticky;bottom:0;background:#fbfaf6;border-top:1px solid var(--line);} tfoot .lab{position:sticky;left:0;z-index:3;background:#fbfaf6;padding:6px 12px;font-size:11px;color:var(--sub);font-weight:700;box-shadow:7px 0 8px -7px rgba(0,0,0,.10);} .cnt{font-family:var(--mono);font-size:12px;font-weight:600;text-align:center;padding:5px 0 6px} .cnt .bar{height:4px;border-radius:3px;background:var(--self);margin:4px auto 0;width:56%;opacity:.85} .cnt.wkstart{border-left:2px solid var(--line2)}
  .detail{margin-top:16px;border:1px solid var(--line);border-radius:14px;background:var(--card);padding:16px 18px;} .detail h2{margin:0;font-size:15px} .detail .d-sub{font-family:var(--mono);font-size:11px;color:var(--sub);margin:3px 0 12px} .cols{display:grid;grid-template-columns:1fr 1fr;gap:18px} @media(max-width:660px){.cols{grid-template-columns:1fr}.kpi{min-width:74px}.ttl{font-size:18px}}
  .col h3{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--sub);margin:0 0 8px} .col h3 .tag{font-family:var(--mono);background:#f0efe9;color:var(--ink);border-radius:20px;padding:1px 8px;font-size:11px} .carline{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:13px;border-bottom:1px solid var(--line2)} .dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto} .dot.t{background:var(--turo)} .dot.s{background:var(--self)} .dot.d{background:var(--direct)} .dot.m{background:var(--maint)} .dot.f{background:#fff;border:1px solid #cfd3d8} .carline .meta{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--sub)} .carline .fdw{color:var(--self);font-weight:600} .empty{color:var(--sub);font-size:12.5px;padding:8px 0}
  .foot-note{margin-top:14px;font-size:11.5px;color:var(--sub);line-height:1.6}
  .modal-bg{position:fixed;inset:0;background:rgba(19,26,36,.45);display:none;align-items:center;justify-content:center;z-index:50;padding:16px;} .modal-bg.open{display:flex} .modal{background:var(--card);border-radius:16px;max-width:440px;width:100%;padding:20px;box-shadow:0 20px 60px -20px rgba(0,0,0,.5);max-height:88vh;overflow:auto;} .modal.wide{max-width:560px} .modal h3{margin:0 0 14px;font-size:16px;display:flex;align-items:center;gap:8px} .modal h3 .x{margin-left:auto;cursor:pointer;color:var(--sub);font-weight:400}
  .fld{margin-bottom:12px} .fld label{display:block;font-size:12px;color:var(--sub);font-weight:600;margin-bottom:5px} .fld input,.fld select{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font:inherit;font-size:15px;background:#fff}
  .types{display:flex;gap:8px} .types label{flex:1;border:1px solid var(--line);border-radius:9px;padding:9px;text-align:center;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px} .types input{display:none} .types label.selT{border-color:var(--turo);background:#eaf1fd;color:var(--turo)} .types label.selS{border-color:var(--self);background:#e7f7f0;color:#0f7d51} .types label.selD{border-color:var(--direct);background:#e7f7f0;color:#0f7d51} .types label.selM{border-color:var(--maint);background:#f0f1f3;color:#4c545e} .types .d{width:10px;height:10px;border-radius:3px} .types .d.t{background:var(--turo)} .types .d.s{background:var(--self)} .types #tyD .d{background:var(--direct)} .types .d.m{background:var(--maint)}
  .row2{display:flex;gap:10px} .row2 .fld{flex:1} .modal-act{display:flex;gap:10px;margin-top:16px;align-items:center} .modal-act .del{margin-right:auto;color:#c0392b;border-color:#f0c7c2;background:#fdf2f1} .err{color:#c0392b;font-size:12px;margin-top:6px;display:none}
  .clist{border:1px solid var(--line2);border-radius:10px;overflow:hidden;margin-bottom:12px} .crow{display:flex;align-items:center;gap:10px;padding:9px 11px;border-bottom:1px solid var(--line2);font-size:13px} .crow:last-child{border-bottom:0} .crow .ci{flex:1;min-width:0} .crow .cn{font-weight:650} .crow .cmeta{font-family:var(--mono);font-size:10.5px;color:var(--sub);margin-top:2px;white-space:normal} .crow .rev{cursor:pointer;color:#2b4b8f;text-decoration:underline;font-family:var(--sans)} .crow . retired{opacity:.5} .mini{border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 9px;font-size:12px;font-weight:600;cursor:pointer} .mini.del{color:#c0392b;border-color:#f0c7c2}
  .lockmsg{font-size:12px;color:var(--sub);margin-top:8px;text-align:center}
  .login-bg{position:fixed;inset:0;background:linear-gradient(135deg,#141a24,#232f42);display:none;align-items:center;justify-content:center;z-index:100;padding:18px;}
  .login-bg.open{display:flex}
  .login-card{background:var(--card);border-radius:20px;max-width:390px;width:100%;padding:28px 26px;box-shadow:0 30px 90px -24px rgba(0,0,0,.7);animation:pop .18s ease}
  @keyframes pop{from{transform:translateY(8px) scale(.98);opacity:0}to{transform:none;opacity:1}}
  /* 迁移提示:弹窗(每个标签页首次打开)+ 顶部常驻条 */
  .move-bg{position:fixed;inset:0;background:rgba(20,26,36,.72);display:none;align-items:center;justify-content:center;z-index:120;padding:18px}
  .move-bg.open{display:flex}
  .move-card{background:var(--card);border-radius:20px;max-width:420px;width:100%;padding:26px 24px;box-shadow:0 30px 90px -24px rgba(0,0,0,.7);animation:pop .18s ease}
  .move-card h2{margin:0 0 8px;font-size:19px}
  .move-card p{margin:0 0 16px;color:var(--sub);font-size:14px;line-height:1.7;word-break:break-all}
  .move-card .go{display:block;width:100%;padding:13px;border:0;border-radius:12px;background:#e11d48;color:#fff;font-weight:800;font-size:15px;cursor:pointer}
  .move-card .later{display:block;width:100%;margin-top:8px;padding:9px;border:0;background:none;color:var(--sub);font-size:13px;cursor:pointer}
  .move-bar{display:none;background:#fff1f2;color:#9f1239;border-bottom:1px solid #fecdd3;padding:8px 14px;font-size:13px;text-align:center;position:sticky;top:0;z-index:50}
  .move-bar.open{display:block} .move-bar a{color:#be123c;font-weight:800}
  .lc-logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,var(--turo),#173b8f);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:18px;margin-bottom:12px}
  .lc-brand{font-size:20px;font-weight:750;letter-spacing:.2px} .lc-sub{color:var(--sub);font-size:13px;margin:4px 0 18px}
  .lc-tabs{display:flex;background:#eceae2;border:1px solid var(--line);border-radius:11px;padding:3px;margin-bottom:16px} .lc-tabs button{flex:1;border:0;background:transparent;font:inherit;font-size:14px;font-weight:600;color:var(--sub);padding:9px;border-radius:8px;cursor:pointer;transition:.12s} .lc-tabs button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
  .lc-go{width:100%;justify-content:center;padding:12px;margin-top:2px;font-size:14px} .lc-note{color:var(--sub);font-size:11.5px;margin-top:12px;line-height:1.55}
  .login-card .fld input{font-size:16px}
  /* ---- 车辆图片上传 ---- */
  .photo-row{display:flex;align-items:center;gap:12px} .photo-act{display:flex;gap:6px}
  /* ---- 收款 / 押金结算 流水表 ---- */
  .lg-head{display:flex;align-items:center;justify-content:space-between;margin:10px 0 6px;font-size:12px;font-weight:700;color:var(--sub)}
  .ltable{border:1px solid var(--line2);border-radius:10px;overflow:hidden;background:#fff}
  .lrow{display:grid;grid-template-columns:70px 110px 92px 108px 160px 1fr 30px;gap:8px;align-items:center;padding:7px 10px;border-bottom:1px solid var(--line2);font-size:12.5px} .lrow.dd{grid-template-columns:150px 70px 100px 92px 150px 1fr 30px} .lrow.ex{grid-template-columns:70px 110px 92px 160px 1fr 30px} .lrow.ro{grid-template-columns:2fr 1fr 1.2fr 1.4fr 40px} .lrow input.rate:disabled{background:#f6f5f1;color:#b5b1a6} .lg-sum .cny-note{flex-basis:100%;font-size:11px;color:#8a6d2b}
  .lrow.hd{background:#fbfaf6;color:var(--sub);font-size:11px;font-weight:700} .lrow input,.lrow select{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:12.5px;background:#fff} .lrow .del{border:0;background:transparent;color:#c0392b;cursor:pointer;font-size:15px;padding:0}
  .lg-addrow{display:block;width:100%;border:0;border-top:1px dashed var(--line);background:#fafaf7;padding:8px;font:inherit;font-size:12.5px;font-weight:600;color:var(--sub);cursor:pointer} .lg-empty{padding:12px;text-align:center;color:var(--sub);font-size:12px}
  .lg-sum{display:flex;flex-wrap:wrap;gap:8px 22px;background:#f7f6f2;border:1px solid var(--line2);border-radius:10px;padding:8px 12px;font-size:12px;color:var(--sub);margin:6px 0 4px} .lg-sum b{font-family:var(--mono);color:var(--ink);margin-left:6px} .lg-sum .neg{color:var(--due)} .lg-sum .pos{color:var(--paid)}
  .lg-brief{font-size:12px;color:var(--sub);line-height:1.8} .lg-brief b{font-family:var(--mono);color:var(--ink)} .kv-sub{font-size:11px;color:var(--sub);margin-top:6px}
  /* ---- 设置页 ---- */
  .set-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px} .set-item{text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 14px;cursor:pointer;font:inherit} .set-item b{display:block;font-size:14px} .set-item span{display:block;font-size:11.5px;color:var(--sub);margin-top:3px} .set-item:hover{border-color:var(--accent)}
  .back{margin-left:8px;font-weight:500} @media(max-width:660px){.set-nav{grid-template-columns:1fr}}
  /* ---- 车辆搜索 & 单车竖版排期 ---- */
  .search{position:relative;flex:1 1 160px;max-width:260px} .search input{width:100%;padding:6px 26px 6px 10px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:13px;background:#fff} .search .clr{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--sub);cursor:pointer;font-size:14px;display:none} .search.has .clr{display:block}
  td.car[data-car]{cursor:pointer} td.car:hover .nm{text-decoration:underline}
  .cc-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px} .cc-head .nm{font-weight:700;font-size:15px} .cc-head .sub{font-family:var(--mono);font-size:11px;color:var(--sub)} .cc-head .rates{font-family:var(--mono);font-size:11.5px;color:var(--sub)}
  .cc-month{margin-top:14px} .cc-month h4{margin:0 0 6px;font-size:13px;position:sticky;top:-20px;background:var(--card);padding:6px 0;z-index:2}
  .cc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px} .cc-wd{font-size:10px;color:var(--sub);text-align:center;padding:2px 0} .cc-wd.we{color:#e0443a}
  .cc-day{position:relative;min-height:52px;border:1px solid var(--line2);border-radius:6px;background:#fff;padding:3px 4px;font-family:var(--mono);font-size:11px;color:var(--sub);cursor:pointer;overflow:hidden} .cc-day.pad{background:transparent;border-color:transparent;cursor:default} .cc-day.we{background:var(--wknd)} .cc-day.today{box-shadow:inset 0 0 0 2px var(--today)}
  .cc-day .bar{position:absolute;left:0;right:0;bottom:4px;height:20px;color:#fff;font-size:10.5px;font-weight:600;line-height:20px;padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--sans)} .cc-day .bar.turo{background:var(--turo)} .cc-day .bar.direct{background:var(--direct)} .cc-day .bar.maint{background:var(--maint)} .cc-day .bar.rs{left:3px;border-radius:6px 0 0 6px} .cc-day .bar.re{right:3px;border-radius:0 6px 6px 0} .cc-day .bar.rs.re{border-radius:6px} .cc-day .bar b{font-family:var(--mono);margin-left:4px}
  .cc-empty{color:var(--sub);font-size:12px;padding:10px 0}
  td.cell.ext .fill{opacity:.5} .cc-day .bar.ext{opacity:.5}   /* 日历多占的天:同色半透明 */
  @media(max-width:660px){.cc-day{min-height:40px} .cc-day .bar{height:16px;line-height:16px;font-size:9.5px}}
  @media(max-width:660px){.lrow,.lrow.dd,.lrow.ex,.lrow.ro{grid-template-columns:1fr 1fr} .lrow.hd{display:none}}
  /* ---- 订单金额:编辑弹窗分区 / 实时预览 ---- */
  .sec-h{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--sub);font-weight:700;margin:14px 0 8px;padding-top:10px;border-top:1px solid var(--line2)}
  .fld label .auto{margin-left:6px;color:#2b4b8f;cursor:pointer;text-decoration:underline;font-weight:500}
  .fin-prev{display:flex;gap:18px;align-items:baseline;background:#f7f6f2;border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin-top:8px;font-size:12px;color:var(--sub)} .fin-prev b{font-family:var(--mono);font-size:18px;color:var(--ink);display:block}
  /* ---- 订单详情抽屉 ---- */
  .drawer{position:fixed;top:0;right:0;bottom:0;width:380px;max-width:100%;background:var(--card);border-left:1px solid var(--line);box-shadow:-16px 0 40px -24px rgba(0,0,0,.35);transform:translateX(100%);transition:transform .2s ease;z-index:40;display:flex;flex-direction:column}
  .drawer.open{transform:none}
  /* 合同文件:列表 / 预览弹窗 / 同步弹窗 */
  .ct-act{display:flex;gap:4px;flex-shrink:0} .ct-up{margin-top:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .ct-list .kv{padding:5px 0;border-bottom:1px dashed var(--line2)} .ct-list .kv:last-child{border-bottom:0}
  #fileBg{z-index:70} #fileBg .modal{width:96vw;max-width:96vw;height:92vh;max-height:92vh;display:flex;flex-direction:column;padding:14px 16px} #fileBody{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#eef0f3;border-radius:10px;overflow:auto} #fileBody iframe{width:100%;height:100%;border:0;background:#fff} #fileBody img{max-width:100%;max-height:100%;object-fit:contain}
  .ct-fb{text-align:center;color:var(--sub);font-size:13px;display:flex;flex-direction:column;gap:12px;align-items:center;padding:20px}
  #syncBg{z-index:80} table.sync{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px} table.sync th,table.sync td{padding:6px 5px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:top} table.sync th{font-size:11px;color:var(--sub);font-weight:600} table.sync tr.na td{color:var(--sub)} table.sync td:nth-child(4){font-weight:650} table.sync td small{color:var(--sub);font-weight:400}
  .badge{display:inline-flex;align-items:center;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:600;color:#fff} .badge.turo{background:var(--turo)} .badge.direct{background:var(--direct)} .badge.maint{background:var(--maint)}
  .pay{border-radius:20px;padding:2px 9px;font-size:11.5px;font-weight:600} .pay.paid{background:#e7f7f0;color:var(--paid)} .pay.partial{background:#fef6e7;color:#8a6d1f} .pay.unpaid{background:#fdf2f1;color:var(--due)} .pay.refunded{background:#f0efe9;color:var(--sub)}

/* 车辆编辑:由 Google 表格同步的字段只读 + 参考报价(见 legacy.js applySheetLock) */
.fld input.locked{background:#f4f6f5;color:#55655d;cursor:not-allowed}
.sheet-hint{background:#fff7e7;color:#856027;border:1px solid #f1deb6;border-radius:10px;padding:10px 13px;font-size:12px;line-height:1.6;margin:0 0 12px}
.sheet-ref{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:0 0 12px;font-size:13px}
.sheet-ref summary{cursor:pointer;font-weight:600;color:#4a5a52}
.sheet-ref dl{display:grid;grid-template-columns:minmax(110px,auto) 1fr;gap:4px 12px;margin:10px 0 2px}
.sheet-ref dt{color:#7a8680}.sheet-ref dd{margin:0;word-break:break-word}

:root{--loaner-body:#c98a2b;--loaner-service:#7c5cbf}
  .chip.lb{background:var(--loaner-body)} .chip.ls{background:var(--loaner-service)} td.cell.loaner-body .fill{background:var(--loaner-body)} td.cell.loaner-service .fill{background:var(--loaner-service)} .dot.lb{background:var(--loaner-body)} .dot.ls{background:var(--loaner-service)} .types label.selLB{border-color:var(--loaner-body);background:#fbf3e6;color:#7a5417} .types label.selLS{border-color:var(--loaner-service);background:#f1edfa;color:#4f3a80} .types .d.lb{background:var(--loaner-body)} .types .d.ls{background:var(--loaner-service)} .bar.loaner-body{background:var(--loaner-body)} .bar.loaner-service{background:var(--loaner-service)} .badge.loaner-body{background:var(--loaner-body)} .badge.loaner-service{background:var(--loaner-service)}

/* 人工订单车辆下拉: conflicts of the chosen vehicle for the form times (legacy.js showCarConflicts) */
#fCarConflicts{margin:8px 0 0;font-size:12px;line-height:1.6}

/* Rental brand, adapted to the Fleet operations workspace. */
:root{color-scheme:light;--ink:#191c21;--paper:#f5f8f6;--card:#fff;--sub:#69736e;--line:#dfe7e2;--line2:#edf1ee;--accent:#0b7654;--direct:#45957a;--self:#0b7654;--turo:#5b77b3;--maint:#909a98;--seldaybg:#e8f5ef;--selwkbg:#f1f8f4;--sans:'Plus Jakarta Sans',system-ui,'PingFang SC','Microsoft YaHei',sans-serif;--display:'Play',var(--sans);--sidebar:228px;--danger:#a9443d;--ok:#0b7654;--heading:#526f5b;--label:#7e8f83;--due:#a9443d;--paid:#0f7d51;--line-strong:#c3d1c8;--drawer-w:540px;--drawer-pad:24px;--shadow:0 2px 4px #17271d03,0 12px 36px -24px #0b765433}
[hidden]{display:none!important}*{box-sizing:border-box}body.fleet-app{background:var(--paper);color:var(--ink);font:14px/1.55 var(--sans);margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid #0b7654;outline-offset:3px}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.035em}input,select,textarea{min-width:0;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px 12px;min-height:42px}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#89958f}input:hover,select:hover,textarea:hover{border-color:#a9c0b3}.fi{flex-shrink:0;vertical-align:middle}.eyebrow{font:700 10px var(--display);letter-spacing:2px;color:var(--accent);margin:0 0 9px}.muted{color:var(--sub);font-size:12px;line-height:1.7}.btn,.mini{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;font-size:12px;font-weight:600;padding:9px 15px;min-height:38px;transition:background .15s,border-color .15s}.btn:hover,.mini:hover{background:#f0f8f3;border-color:#b9d6c6}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:#16684b;border-color:#16684b}.btn.del,.mini.del{color:#a9443d;background:#fff8f6;border-color:#f0d7d2}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--sub)}.icon-btn:hover{background:#e8f5ef;color:var(--accent)}.warning{background:#fff7e7;color:#856027;border:1px solid #f1deb6;border-radius:10px;padding:12px 15px;font-size:12px;line-height:1.7}.status{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 9px;background:#f0f3f1;color:#64736a;white-space:nowrap;font-size:10px;font-weight:600}.status.confirmed,.status.paid,.status.succeeded,.status.rental{background:#e8f5ef;color:#137852}.status.in_progress,.status.turo{background:#eef2fc;color:#526bab}.status.pending_payment,.status.pending,.status.needs_attention{background:#fff3d8;color:#8b6322}.status.cancelled,.status.failed,.status.unpaid{background:#fcefeb;color:#a65343}.status.returned{background:#edf0f1;color:#647477}.status.direct{background:#eaf4ef;color:#4e8067}.status.maintenance{background:#edf0ef;color:#66736d}
.fleet-sidebar{position:fixed;inset:0 auto 0 0;z-index:30;width:var(--sidebar);padding:28px 18px 20px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column}.fleet-brand{display:flex;align-items:center;gap:13px;padding:14px 12px;border-radius:10px;background:#16684b;color:#fff;width:100%;margin-bottom:34px}.fleet-brand img{width:108px;height:auto;max-height:28px;object-fit:contain}.fleet-brand>span{border-left:1px solid #ffffff70;padding-left:12px;font:700 11px var(--display);letter-spacing:2px}.sidebar-label{font-size:10px;color:#98a49d;letter-spacing:2px;padding:0 13px;margin-bottom:12px}.fleet-sidebar nav{display:grid;gap:7px}.fleet-sidebar nav a{display:flex;align-items:center;gap:12px;padding:13px 15px;color:#758078;border-radius:9px;font-size:13px;font-weight:500}.fleet-sidebar nav a:hover{background:#f5f8f6;color:var(--accent)}.fleet-sidebar nav a[aria-current]{background:#e8f5ef;color:var(--accent);font-weight:700}.fleet-sidebar nav a small{margin-left:auto;background:#fff;border-radius:5px;padding:0 5px}.fleet-sidebar nav a small:empty{display:none}.sidebar-bottom{margin-top:auto;padding-top:24px}.rental-link{display:flex;gap:10px;align-items:center;color:#758078;padding:12px 10px;font-size:11px;border-bottom:1px solid var(--line2);margin-bottom:20px}.account-card{display:flex;align-items:center;gap:11px;padding:0 10px}.account-card>.fi{box-sizing:content-box;background:#edf6f0;color:#16684b;padding:9px;border-radius:50%}.account-card div{min-width:0}.account-card b{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-card small{display:block;font-size:9px;color:var(--sub);margin-top:4px}#accountActions{margin:10px 0 0 45px}#loginBtn{background:transparent;border:none;color:var(--sub);font-size:10px;min-height:28px;padding:3px 8px}.fleet-app .wrap{margin-left:var(--sidebar);padding:0 36px 48px;max-width:none;min-width:0}.workspace-bar{height:70px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:12px}.workspace-bar>div{display:flex;gap:12px;align-items:center}.workspace-brand{font-size:12px;font-weight:600;color:#51655a}.workspace-brand span{margin:0 12px;color:#b8c8be}.zone-label{display:flex;align-items:center;gap:8px;font-size:10px;color:#839087}.zone-label b{font-weight:500;font-size:10px}#menuToggle{display:none}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:32px 0 25px}.page-heading h1{font-size:30px;font-weight:700;margin:0 0 9px;line-height:1.2}.page-heading #pageSubtitle{font-size:12px;color:var(--sub);margin:0}.page-actions{display:flex;gap:10px;align-items:center;flex-shrink:0}#updated{display:block;font:10px var(--sans);color:#96a199;margin-top:8px;min-height:12px}.fleet-view{min-width:0}.nav-shade{display:none}.banner{margin:0 0 18px}.banner.warn{display:flex;align-items:center;justify-content:space-between;gap:12px;border-color:#eadcbc;background:#fffaef;color:#805d2a}.rental-test-banner{margin-left:var(--sidebar);padding:7px 20px;background:#e8f5ef;color:#337459;font-size:10px;text-align:center;border-bottom:1px solid #d6e8dc}.move-bar{margin-left:var(--sidebar)}
.schedule-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat-card{position:relative;padding:20px 22px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.stat-card>span{font-size:11px;color:#6e7c73;font-weight:500}.stat-card>b{display:block;font:700 36px/1.1 var(--display);margin:14px 0 10px;letter-spacing:-1px}.stat-card>b small{font:400 10px var(--sans);margin-left:7px;color:#92a096;letter-spacing:0}.stat-card>p{font-size:10px;color:#98a39b;margin:0}.stat-card>.fi{position:absolute;top:18px;right:18px;color:#94b09f;background:#f4f8f5;padding:7px;box-sizing:content-box;border-radius:10px;width:17px;height:17px}.stat-card.primary{background:#0b7654;border-color:#0b7654;color:#fff}.stat-card.primary>span,.stat-card.primary>b small,.stat-card.primary>p{color:#b9ded0}.stat-card.primary>.fi{color:#d1ece1;background:#ffffff14}.today-queue{display:flex;align-items:center;gap:12px;margin:-4px 0 20px}.today-queue button{display:flex;align-items:center;gap:9px;background:transparent;border:none;color:#718078;font-size:11px;padding:5px 0}.today-queue button+button{border-left:1px solid var(--line);padding-left:14px}.today-queue b{color:#16684b;font:700 14px var(--display)}.today-queue .fi{width:13px;height:13px}.schedule-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;min-width:0}.schedule-title{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 22px 12px}.schedule-title h2{font-size:18px;margin:0}.schedule-title .eyebrow{font-size:8px;letter-spacing:1.5px;margin-bottom:5px}#quarterNav{margin:0!important;gap:6px!important}#quarterNav>span{display:none}#quarterNav select{font-size:11px!important;padding:7px 9px!important;min-height:34px}#quarterNav .btn{font-size:11px;min-height:34px;padding:6px 12px!important}.schedule-toolbar{display:flex;align-items:center;gap:10px;padding:12px 22px 18px;flex-wrap:wrap}.schedule-toolbar select{font-size:11px;min-height:35px;padding:7px 10px}.seg{background:#f2f6f3;border:1px solid #e6ece8;border-radius:9px;padding:3px}.seg button{font-size:11px;padding:6px 12px;color:#7b887f;min-height:29px}.seg button.on{background:#fff;color:#126c4f;box-shadow:0 1px 3px #233d2812}.search{border:1px solid var(--line)!important;box-shadow:none!important;border-radius:8px!important;background:#fff;min-width:130px;max-width:260px;flex:1;margin-left:auto;display:flex!important}.search input{font-size:11px!important;min-height:34px;padding:6px 10px!important;border:0;width:100%;background:transparent}.search .clr{background:transparent;border:0;min-width:28px}#rangeRow{padding:0 22px 16px!important;margin:0!important;font-size:11px!important}#rangeRow input{min-height:36px}#rangeRow .btn{min-height:34px}#scheduleScroll{overflow:auto;max-height:530px;scrollbar-width:thin;scrollbar-color:#c6d5cc #f6faf7;border-top:1px solid var(--line2);border-bottom:1px solid var(--line2)}#scheduleGrid{--day-width:38px;--car-width:242px;min-width:calc(var(--car-width) + var(--days)*var(--day-width));width:100%}.quarter-row{display:grid;grid-template-columns:var(--car-width) 1fr;position:relative;min-height:65px}.quarter-head{position:sticky;top:0;z-index:6;min-height:60px;background:#f8fbf9}.quarter-car{position:sticky;left:0;z-index:4;background:#fff;display:flex;align-items:center;gap:10px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line2);padding:14px;text-align:left;box-shadow:6px 0 8px -8px #233d2850;min-width:0;color:var(--ink)}.quarter-car:hover{background:#f5faf7}.quarter-car img,.car-placeholder{width:42px;height:30px;object-fit:contain;flex-shrink:0;border-radius:5px;background:#f2f6f3}.car-placeholder{display:grid;place-items:center;color:#88a493}.quarter-car>span:not(.car-placeholder){flex:1;min-width:0}.quarter-car b{display:block;font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis}.quarter-car small{display:block;font-size:9px;color:#96a197;margin-top:4px;white-space:nowrap}.quarter-car>strong{font:700 12px var(--display);white-space:nowrap;color:#53675b}.quarter-car>strong small{font:400 9px var(--sans);text-align:right}.quarter-car.corner{background:#f8fbf9;display:block;z-index:9;cursor:default;padding:14px 20px}.corner b{font-size:10px;color:#607466}.quarter-days{display:grid;grid-template-columns:repeat(var(--days),minmax(0,1fr));border-bottom:1px solid var(--line2)}.quarter-day{border:0;border-right:1px solid #edf2ee;background:transparent;padding:7px 2px;color:#607165;min-width:0;display:flex;align-items:center;flex-direction:column;gap:3px}.quarter-day small{font-size:8px;color:#99a49c}.quarter-day b{font:700 12px var(--display);padding:2px 4px;min-width:23px;border-radius:6px}.quarter-day.today b{background:#0b7654;color:#fff}.quarter-day.selected{background:#e5f4eb;box-shadow:inset 0 -2px #0b7654}.quarter-day.weekend{color:#aab3ac;background:#f2f6f3}.quarter-track{position:relative;border-bottom:1px solid var(--line2);min-width:0}.track-cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--days),minmax(0,1fr))}.track-cell{border:0;border-right:1px solid #f0f3f1;background:#fff;padding:0;min-width:0}.track-cell.weekend{background:#f8faf9}.track-cell.selected{background:#f0f8f3}.track-cell:hover{background:#e3f4e9}.schedule-block{position:absolute;height:25px;border:0;border-radius:5px;padding:4px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;color:#fff;font:500 9px var(--sans);min-width:3px;background:#0b7654;z-index:2}.schedule-block:hover{filter:brightness(.92);box-shadow:0 0 0 2px #0b76542b}.schedule-block.direct{background:#8abcaa;color:#144e3a}.schedule-block.turo{background:#dce5f9;color:#4c68a0}.schedule-block.maintenance{background:#e6eae8;color:#697871}.schedule-block.hold{background:#f3d691;color:#745b1d}.schedule-block.prep{background:repeating-linear-gradient(135deg,#e4eee7 0,#e4eee7 4px,#cfdfd4 4px,#cfdfd4 6px);color:#5d7c69;opacity:.9}.schedule-block.conflict{outline:1px solid #c3764b;outline-offset:1px}.schedule-footer{padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:9px;color:#9aa69d}#scheduleLegend{display:flex;gap:14px;flex-wrap:wrap}.legend-dot{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}.legend-dot::before{content:'';width:7px;height:7px;border-radius:2px;background:#0b7654}.legend-dot.direct::before{background:#8abcaa}.legend-dot.turo::before{background:#8fa9d9}.legend-dot.maintenance::before{background:#aab9b0}.legend-dot.hold::before{background:#e8c777}.legend-dot.prep::before{background:#d3e2d7}.day-section{margin-top:28px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:16px}.section-heading h2{font-size:19px;margin:0 0 6px}.section-heading p{margin-bottom:0}.section-heading .eyebrow{font-size:8px;letter-spacing:1.5px;margin-bottom:6px}.hour-head,.hour-row{display:grid;grid-template-columns:185px 1fr;gap:15px;padding:0 18px;align-items:center}.hour-head{font-size:9px;color:#8f9b93;padding-block:12px;border-bottom:1px solid var(--line2)}.hour-head>div{display:flex;justify-content:space-between}.hour-row{border-bottom:1px solid var(--line2);background:#fff}.hour-row b{font-size:11px;font-weight:600}.hour-row small{display:block;color:#9aa69d;font-size:9px;margin-top:2px}.hour-track{position:relative;background:repeating-linear-gradient(to right,transparent 0,transparent calc(25% - 1px),#ecf0ed calc(25% - 1px),#ecf0ed 25%)}.hour-track .schedule-block{font-size:9px;height:24px}.hour-free{position:absolute;left:12px;top:17px;font-size:10px;color:#a0b3a7}#dayTimeline{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.mobile-day-list{display:none}#rangeResults{padding:20px;background:#fff;border:1px solid var(--line);border-radius:12px;margin-top:16px}#rangeResults h3{font-size:14px}.range-cars{display:flex;gap:10px;flex-wrap:wrap}.range-cars>span{padding:10px 14px;background:#edf6f0;border-radius:9px;font-size:12px}.range-cars small{color:var(--sub);margin-left:8px}
.list-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:22px}.search-field{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;background:#fff;padding-left:12px;color:#97a39b;min-width:150px}.search-field .fi{width:16px;height:16px}.search-field input{border:0;background:none;font-size:11px;min-width:100px;width:230px;max-width:100%}.list-toolbar>select{font-size:11px;min-height:40px}.list-toolbar>span{margin-left:auto}.table-card{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}.data-table{font-size:11px;width:100%;border-collapse:collapse}.data-table th{background:#f1f6f3;color:#849188;font-size:10px;font-weight:500;text-align:left;padding:16px}.data-table td{padding:19px 16px;border-bottom:1px solid var(--line2);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#fafcfb}.data-table small{display:block;margin-top:5px;color:#8a978d;font-size:10px}.data-table td>b{font-weight:600;font-size:11px}.data-table .amount{font:700 14px var(--display);color:#2c5740}.table-action{min-height:30px;padding:5px 10px;font-size:10px}.table-action .fi{width:13px;height:13px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px;font-size:11px;color:#8a978e}.pagination>div{display:flex;gap:8px}.pagination .btn{font-size:10px;min-height:32px}.fleet-empty{padding:54px 20px;text-align:center;color:#91a398;background:#fff;border:1px dashed var(--line);border-radius:12px}.fleet-empty>.fi{width:28px;height:28px;margin-bottom:12px}.fleet-empty h3{font-size:16px;color:#577062;margin:0 0 10px}.fleet-empty p{font-size:11px;margin:0}.loading-state{padding:60px;text-align:center;background:#fff;border:1px solid var(--line);border-radius:12px;color:var(--sub);font-size:13px}.skeleton-card{height:152px;border-radius:14px;background:linear-gradient(100deg,#eaf0ec,#f9fcfa,#eaf0ec);background-size:200% 100%;animation:skeleton 1.5s infinite}@keyframes skeleton{to{background-position:-200% 0}}.vehicle-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.vehicle-grid>.fleet-empty{grid-column:1/-1}.vehicle-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}.vehicle-media{position:relative;height:165px;display:grid;place-items:center;background:#edf3ef;margin:10px 10px 0;border-radius:10px;overflow:hidden}.vehicle-media>img{width:100%;height:100%;object-fit:contain}.vehicle-media>.fi{width:62px;height:62px;color:#b4c7b9}.vehicle-media>.status{position:absolute;top:10px;left:10px;background:#fff}.vehicle-body{padding:20px}.vehicle-body .eyebrow{font-size:9px;letter-spacing:1.5px}.vehicle-body h2{font-size:19px;margin:0 0 6px}.vehicle-prices{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin:20px 0 14px}.vehicle-prices>b{font:700 25px var(--display);color:#0b7654}.vehicle-prices>b small{font:400 10px var(--sans);margin-left:3px;color:var(--sub)}.vehicle-prices>span{font-size:10px;color:#95a398}.vehicle-badges{display:flex;gap:6px;min-height:25px}.vehicle-body footer{display:flex;gap:7px;border-top:1px solid var(--line2);padding-top:16px;margin-top:16px;flex-wrap:wrap}.vehicle-body footer .btn{font-size:10px;min-height:32px;padding:7px 12px}.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.settings-card{position:relative;text-align:left;padding:26px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow);color:var(--ink)}.settings-card:hover{border-color:#9fc5ae;background:#fcfefd}.setting-icon{display:inline-flex;background:#eaf5ee;color:var(--accent);border-radius:12px;padding:12px;margin-bottom:20px}.settings-card h2{font-size:17px;margin:0 0 9px}.settings-card p{font-size:11px;color:var(--sub);line-height:1.8;margin:0;max-width:90%}.setting-arrow{position:absolute;top:26px;right:24px;color:#8ca294}
.fleet-dialog,.fleet-order-drawer{border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 100px #132c2440;color:var(--ink);background:#fff;padding:0;max-height:calc(100dvh - 40px)}.fleet-dialog{width:min(660px,calc(100vw - 32px))}.fleet-dialog.compact{max-width:440px}.fleet-dialog::backdrop,.fleet-order-drawer::backdrop{background:#173a2b55;backdrop-filter:blur(3px)}.fleet-dialog form{display:flex;flex-direction:column;max-height:calc(100dvh - 44px)}.fleet-dialog header{padding:24px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line2)}.fleet-dialog h2{font-size:22px;margin:0}.fleet-dialog .form-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding:24px;overflow:auto;min-height:0}.form-field{display:flex;flex-direction:column;gap:8px;font-size:12px;min-width:0;color:#4c6053}.form-field>span{font-size:11px;font-weight:600}.form-field input,.form-field select,.form-field textarea{width:100%;font-size:13px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.full{grid-column:1/-1}.form-summary{padding:14px;background:#f1f8f4;border:1px solid #e1eee6;border-radius:10px;font-size:12px;color:#4e705b;overflow-wrap:anywhere}.form-summary p{margin:7px 0 0;font-size:11px;line-height:1.7}.form-content h3{font-size:16px;margin:10px 0 0}.form-content fieldset{border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0}.form-content legend{font-size:12px;color:var(--accent);padding:0 8px}.form-error{background:#fff0ee;border:1px solid #efd6d1;color:#9c4335;border-radius:10px;padding:12px;font-size:12px;line-height:1.6;margin:0}.fleet-dialog footer{display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--line2);padding:18px 24px}.confirm-content{padding:24px}.confirm-content>header{padding:0 0 18px;margin-bottom:18px}.confirm-content h2{font-size:20px;line-height:1.5;margin-bottom:12px}.confirm-content>p{color:var(--sub);font-size:13px;line-height:1.8}.confirm-content footer{padding:20px 0 0}.publication-preview{background:#f6faf7;border-radius:12px;border:1px dashed #c8dfd1;padding:20px;overflow-wrap:anywhere}.publication-preview small{font-size:10px;color:#8a9c8f}.publication-preview h3{margin:12px 0;font-size:20px}.publication-preview p{font-size:12px;color:#6e8173}.publication-preview b{font:700 24px var(--display);color:#0b7654}.vehicle-schedule-list{display:grid;gap:10px;max-height:60vh;overflow:auto}.vehicle-schedule-list>button{display:flex;align-items:center;gap:12px;padding:15px;background:#f8fbf9;border:1px solid var(--line);border-radius:10px;text-align:left}.vehicle-schedule-list b{font-size:11px;font-weight:500;flex:1}
.modal-bg{background:#173a2b55;backdrop-filter:blur(3px)}.modal{border:1px solid var(--line);border-radius:16px;padding:24px;max-height:calc(100dvh - 40px);box-shadow:0 24px 100px #132c2440}.modal h3{font:700 20px var(--display);margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--line2)}.modal h3 .x{font-size:17px;color:#93a197;min-width:28px;text-align:center}.fld label{font-size:11px;font-weight:600;color:#647d6a;margin-bottom:8px}.fld input,.fld select{border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:13px;min-height:40px}.modal .sec-h{color:#52745e;font-size:12px;letter-spacing:0;margin-top:22px;border-color:var(--line2)}.modal .modal-act{padding-top:18px;margin-top:22px;border-top:1px solid var(--line2)}.lg-brief{background:#f2f8f4;color:#6d8273;border-radius:9px;padding:12px;font-size:11px;line-height:1.8}.fin-prev{background:#edf7f0;border:1px solid #dcece1;border-radius:12px}.fin-prev b{font-family:var(--display);color:#126c4d}.types{gap:8px}.types label{border-radius:8px;font-size:11px;padding:10px}.types label.selD{background:#e8f5ef;border-color:#8cbca3}
/* A status badge inside the total row keeps its own colour and size (the row rule above would otherwise win). */
.login-bg{background:#eef5f0;z-index:150}.login-card{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 80px #15392212;max-width:400px;padding:38px}.lc-logo{width:54px;height:54px;border-radius:16px;background:#0b7654;color:#fff;display:grid;place-items:center}.lc-logo .fi{width:27px;height:27px}.lc-brand{font:700 26px var(--display);margin-top:20px}.lc-sub{font-size:12px;color:#809087;line-height:1.8}.lc-go{border-radius:999px;min-height:44px}.lc-note{font-size:10px;color:#97a69c;margin-top:24px}.err{border-radius:10px;background:#fff1ee;color:#a45040;font-size:12px;padding:10px}.lrow input,.lrow select{font-size:11px}.has-legacy-modal{overflow:hidden}#fleetToast{position:fixed;bottom:24px;left:calc(50% + var(--sidebar)/2);transform:translateX(-50%);z-index:2000;display:grid;gap:8px;pointer-events:none;max-width:calc(100vw - 32px)}.toast{padding:12px 20px;border-radius:12px;border:1px solid #bdd8c6;background:#f1faf4;color:#236740;font-size:12px;box-shadow:0 8px 35px #17382320}.toast.bad{border-color:#e8cec4;color:#92523d;background:#fff7f2}.fleet-dialog details{font-size:11px;color:var(--sub);overflow-wrap:anywhere}.fleet-dialog summary{cursor:pointer;color:#386c4f}
@media(min-width:1600px){.fleet-app .wrap{padding-inline:48px}.schedule-scroll{max-height:620px!important}.vehicle-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1200px){:root{--sidebar:200px}.fleet-sidebar{padding:25px 14px}.fleet-brand{gap:8px;padding:12px 9px}.fleet-brand img{width:94px}.fleet-brand>span{font-size:9px;padding-left:8px}.fleet-app .wrap{padding-inline:24px}.stat-card{padding:18px 16px}.stat-card>b{font-size:32px}.schedule-stats{gap:12px}.settings-grid,.vehicle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-footer>span{display:none}.page-heading h1{font-size:27px}.zone-label{font-size:0}.zone-label b{font-size:10px}}
@media(max-width:900px){:root{--sidebar:0px}.fleet-sidebar{width:228px;transform:translateX(-100%);transition:transform .2s;z-index:80}.nav-open .fleet-sidebar{transform:translateX(0)}.nav-open .nav-shade{display:block;position:fixed;inset:0;border:0;background:#183e2c66;backdrop-filter:blur(2px);z-index:79}.fleet-app .wrap{margin:0;padding-inline:22px}#menuToggle{display:inline-flex}.rental-test-banner,.move-bar{margin-left:0}.workspace-bar{height:64px}.page-heading{padding-block:25px}.page-heading h1{font-size:26px}.page-actions .btn{font-size:11px}.schedule-title{padding:20px 18px 10px}.schedule-toolbar{padding:10px 18px 16px;gap:8px}.schedule-stats{gap:10px}.stat-card>p{font-size:9px}.stat-card>.fi{padding:5px;right:12px;width:14px;height:14px}.settings-card{padding:22px}.day-section{margin-top:24px}}
@media(max-width:600px){body.fleet-app{font-size:13px}.fleet-app .wrap{padding-inline:16px;padding-bottom:28px}.workspace-bar{height:58px}.workspace-brand{font-size:10px}.workspace-brand span{margin:0 6px}.zone-label .fi{display:none}.zone-label b{font-size:8px}.page-heading{align-items:flex-start;gap:12px;padding:23px 0 18px;flex-wrap:wrap}.page-heading h1{font-size:26px}.page-heading .eyebrow{font-size:8px;letter-spacing:1.5px}.page-heading #pageSubtitle{font-size:11px}.page-actions{width:100%;justify-content:flex-end;margin-top:-4px}.page-actions .btn{font-size:11px;min-height:38px}.page-actions #globalRefresh{margin-right:auto}.schedule-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px}.stat-card{padding:16px}.stat-card>b{font-size:32px;margin:10px 0 8px}.stat-card>span{font-size:10px}.stat-card>.fi{top:12px;right:12px}.stat-card>p{font-size:9px}.today-queue{gap:9px}.today-queue button{font-size:10px}.schedule-title{align-items:flex-start;flex-wrap:wrap;padding:16px 14px 8px}.schedule-title h2{font-size:17px}#quarterControls{width:100%}#quarterNav{justify-content:flex-start}#quarterNav select{font-size:12px!important;min-height:38px}.schedule-toolbar{padding:10px 14px 14px;gap:8px}.schedule-toolbar .seg{width:100%;display:flex}.schedule-toolbar .seg button{flex:1;font-size:12px;min-height:34px}.schedule-toolbar select{flex:1;font-size:12px;min-height:38px}.schedule-toolbar .search{min-width:100%;order:4;margin:0;max-width:100%}.search input{font-size:16px!important;min-height:40px}.schedule-toolbar select#scheduleType{max-width:50%}#scheduleGrid{--car-width:168px}.quarter-car{padding:12px 10px;gap:7px}.quarter-car img,.car-placeholder{width:31px;height:25px}.quarter-car b{font-size:10px}.quarter-car small{font-size:8px}.quarter-car>strong{display:none}.quarter-car.corner{padding:14px}.schedule-footer{padding:12px 14px}#scheduleLegend{gap:8px 11px;font-size:9px}.schedule-scroll{max-height:430px!important}.section-heading{align-items:flex-start;gap:8px}.section-heading h2{font-size:16px}.section-heading .btn{font-size:9px;padding:7px 10px;min-height:32px}.section-heading p.muted{font-size:10px}.hour-head,.hour-row{display:none}.mobile-day-list{display:block}.mobile-day-list article{padding:16px;border-bottom:1px solid var(--line2)}.mobile-day-list article:last-child{border-bottom:0}.mobile-day-list h3{font-size:13px;margin:0 0 10px}.mobile-day-list p{margin:0}.day-list-item{width:100%;text-align:left;display:grid;grid-template-columns:1fr auto;align-items:center;gap:7px;border:1px solid var(--line2);background:#f8fbf9;padding:10px;border-radius:9px;margin-top:8px}.day-list-item .status{width:fit-content;grid-column:1}.day-list-item>span:nth-child(2){font-size:9px;grid-column:1;color:#7f9486}.day-list-item>.fi{grid-column:2;grid-row:1/3;width:14px;color:#8fa397}.rental-test-banner{font-size:9px;padding:7px 14px}.list-toolbar{gap:9px}.list-toolbar .seg{width:100%;display:flex}.list-toolbar .seg button{flex:1;min-height:34px}.search-field{flex:1;width:100%;min-width:180px}.search-field input{width:100%;font-size:16px;min-height:42px}.list-toolbar select{min-height:42px;font-size:12px}.list-toolbar>span{font-size:10px;margin:0}.data-table{min-width:640px}.data-table th,.data-table td{padding:14px 12px}.data-table .table-action{min-height:38px}.pagination{font-size:10px;flex-wrap:wrap}.vehicle-grid{grid-template-columns:1fr;gap:16px}.vehicle-media{height:180px}.vehicle-body{padding:20px}.vehicle-body footer .btn{min-height:38px;font-size:11px}.vehicle-prices>b{font-size:28px}.settings-grid{grid-template-columns:1fr;gap:12px}.settings-card{padding:20px;display:grid;grid-template-columns:44px 1fr;column-gap:15px}.setting-icon{grid-row:1/3;padding:10px;width:40px;height:40px;margin:0}.settings-card h2{font-size:16px;margin:0 0 6px}.settings-card p{font-size:11px;grid-column:2}.setting-arrow{top:20px;right:20px}.setting-arrow .fi{width:16px}.fleet-dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;inset:0;margin:0;border-radius:0;border:0}.fleet-dialog form{height:100dvh;max-height:100dvh}.fleet-dialog header{padding:20px}.fleet-dialog .form-content{padding:20px;gap:16px;flex:1;align-content:start}.fleet-dialog h2{font-size:20px}.fleet-dialog .form-field input,.fleet-dialog .form-field select,.fleet-dialog .form-field textarea{font-size:16px}.fleet-dialog footer{padding:16px 20px}.fleet-dialog.compact{width:calc(100vw - 32px);max-width:440px;height:auto;max-height:90dvh;margin:auto;inset:0;border:1px solid var(--line);border-radius:16px}.modal-bg{padding:0}.modal-bg .modal{width:100%;max-width:100%!important;height:100dvh;max-height:100dvh;border-radius:0;padding:22px 18px;overflow:auto}.modal .fld input,.modal .fld select{font-size:16px}.modal .row2{gap:10px}.modal .btn{min-height:42px}#ledgerBg .ltable{overflow:auto}#fileBg .modal{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh}.login-card{width:calc(100vw - 32px);padding:30px}.login-card input{font-size:16px}.vehicle-schedule-list>button{flex-wrap:wrap}.vehicle-schedule-list b{font-size:10px}.fleet-empty{padding:38px 16px}.fleet-empty p{font-size:11px;line-height:1.8}#fleetToast{bottom:18px;width:calc(100vw - 32px)}.toast{font-size:11px;padding:12px 16px}.skeleton-card{height:130px}}
.fleet-order-drawer[open]{animation:order-drawer-in .2s ease both}
.fleet-order-drawer[open].is-closing{animation:order-drawer-out .2s ease both;pointer-events:none}
@keyframes order-drawer-in{from{transform:translateX(100%)}to{transform:translateX(0)}}
@keyframes order-drawer-out{from{transform:var(--drawer-exit-from,translateX(0))}to{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Shared restricted Markdown preview, including unbroken links at phone widths. */
.legal-preview { overflow-wrap:anywhere; line-height:1.75; padding:16px; background:var(--surface,#fff); border:1px solid #dce6e0; border-radius:12px; }

.fleet-dialog .collection-choice{display:flex;flex-direction:row;align-items:center;gap:8px;font-weight:700}.fleet-dialog .collection-choice input{width:18px;height:18px;min-height:18px;margin:0;accent-color:#0b7654}.collection-part input:disabled{background:#f2f5f3;color:#7c8881}

/* 生成合同弹窗:左栏驾照照片 / 识别,右栏驾驶人信息 + 条款 + 费用 */
.fleet-dialog.contract-dialog{width:min(1120px,calc(100vw - 32px))}.contract-layout{display:grid;grid-template-columns:minmax(240px,1fr) 2fr;gap:22px;min-width:0}.contract-layout h3{font-size:14px;margin:4px 0 0}.contract-layout h3 small{font:400 10px var(--sans);color:var(--sub);margin-left:6px}.contract-licenses{background:#f6faf7;border:1px solid #e1eee6;border-radius:12px;padding:16px;display:grid;gap:12px;align-content:start;align-self:start;position:sticky;top:0}.contract-licenses .muted{font-size:11px;line-height:1.7;margin:0}.license-list{display:grid;gap:8px}.license-row{display:grid;grid-template-columns:auto 56px 1fr auto;align-items:center;gap:10px;padding:8px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:12px}.license-row input{accent-color:var(--accent)}.license-thumb{width:56px;height:38px;border-radius:6px;background:#e8f1ec;display:grid;place-items:center;overflow:hidden;font-size:18px}.license-thumb img{width:100%;height:100%;object-fit:cover}.license-meta{min-width:0}.license-meta b{display:block;font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.license-meta small{color:var(--sub);font-size:10px}.license-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.license-actions .muted{font-size:11px}.contract-form{display:grid;gap:14px;min-width:0}.contract-form .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.contract-form fieldset.form-grid{border:1px solid var(--line);border-radius:12px;padding:14px}.inline-check{display:flex;align-items:center;gap:8px;font-weight:400}.inline-check input{accent-color:var(--accent);width:16px;height:16px}.form-field.inline-check{flex-direction:column;align-items:flex-start}.form-field.inline-check>label{display:flex;gap:8px;align-items:center;font-size:12px;min-height:40px}.contract-form .form-summary .detail-pair{padding:6px 0}
@media(max-width:900px){.contract-layout{grid-template-columns:1fr}.contract-licenses{position:static}.contract-form .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.contract-form .form-grid{grid-template-columns:1fr}.license-row{grid-template-columns:auto 48px 1fr auto}}

.fleet-dialog.contract-preview{width:min(980px,calc(100vw - 32px))}.contract-preview .confirm-content{display:flex;flex-direction:column;max-height:calc(100dvh - 44px)}.contract-preview-body{flex:1;min-height:0;height:min(76vh,960px);background:#f4f7f5;border-radius:12px;overflow:hidden}.contract-preview-body iframe,.contract-preview-body img{width:100%;height:100%;border:0;display:block}.contract-preview-body img{object-fit:contain}.contract-preview footer{padding:16px 0 0}

/* 代步车(2026-10-08):Body 代步琥珀橙,Service 代步紫 */
:root{--loaner-body:#c98a2b;--loaner-service:#7c5cbf}.status.loaner-body{background:#fbefdd;color:#8a5a12}.schedule-block.loaner-body{background:#f7e3c4;color:#7a5417}.legend-dot.loaner-body::before{background:#e0a85a}.status.loaner-service{background:#efe9fa;color:#54418a}.schedule-block.loaner-service{background:#e6ddf7;color:#4f3a80}.legend-dot.loaner-service::before{background:#a48ad8}
/* Online order panel: the linked booking's offline ledger (same numbers as the customer's Payments panel). */
.courier-phone{padding:8px 10px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:13px}.courier-leg{padding:10px 0 14px;border-bottom:1px dashed var(--line)}.courier-leg:last-of-type{border-bottom:0}.courier-leg h4{margin:0 0 4px;font-size:13px;display:flex;align-items:center;gap:8px}.courier-leg h4 small{font-weight:500;font-size:11px}#fLateChange{margin:0 0 10px}#fLateChange .mini{margin-left:8px}


/* 官网设置 → 社交分享图 */
.share-image{display:grid;gap:12px}
.share-image.is-busy{opacity:.6;pointer-events:none}
.share-image-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.share-image-card{margin:0;display:grid;gap:6px}
.share-image-card img{display:block;width:100%;aspect-ratio:1200/630;object-fit:cover;border-radius:10px;border:1px solid var(--line,#d9e2dd);background:#eef2f0}
.share-image-card figcaption{font-size:12px;color:var(--muted,#5b6b63)}
.share-image-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.share-image-actions label.btn{cursor:pointer}
.share-crop .share-crop-box{position:relative;width:100%;aspect-ratio:1200/630;overflow:hidden;border-radius:10px;background:#111;cursor:grab;touch-action:none;user-select:none}
.share-crop .share-crop-box:active{cursor:grabbing}
.share-crop .share-crop-box img{position:absolute;top:0;left:0;max-width:none;will-change:transform}
.share-crop .share-crop-zoom input[type=range]{width:100%}

/* 费用与地点 → 取车政策: read-only courier directory preview */
.courier-directory{margin:4px 0 0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fff}
.courier-directory h4{margin:0 0 8px;font-size:13px;font-weight:600}
.courier-directory ul{list-style:none;margin:0;padding:0}
.courier-directory li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:8px 0;border-top:1px solid var(--line2);font-size:13px}
.courier-directory li:first-child{border-top:0}
.courier-directory li span{color:var(--sub)}.courier-directory li .phone{color:var(--ink);font-variant-numeric:tabular-nums}
.courier-directory .missing{color:#9a6b1a;background:#fdf3df;border-radius:999px;padding:2px 9px;font-size:12px}
.courier-directory .muted{margin:0 0 6px;font-size:13px}
/* 费用与地点 → 取车地点: add/remove rows for free pickup addresses and paid delivery points */
.location-list{display:grid;gap:12px;min-width:0}
.location-row{position:relative;min-width:0}
.location-row .location-remove{justify-self:start;align-self:end}
.location-row legend{display:flex;align-items:center;gap:6px;min-width:0}
.location-row [data-location-title]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.location-handle{flex:none;border:0;background:none;padding:2px 4px;border-radius:6px;color:var(--sub);font-size:16px;line-height:1;cursor:grab;touch-action:none;user-select:none}
.location-handle:hover{background:var(--line2);color:var(--ink)}.location-handle:active{cursor:grabbing}
.location-handle:focus-visible{outline:2px solid #2f6b4f;outline-offset:1px}
.location-row.is-dragging{opacity:.75;box-shadow:0 10px 30px #132c2426;position:relative;z-index:1}
.location-actions{display:flex;gap:10px}.location-empty{margin:0}
.location-remove:disabled{opacity:.45;cursor:not-allowed}
/* 附加服务: a disabled option stays editable but reads as off */
.location-row.is-off{background:#fafaf8}.location-row.is-off [data-addon-title]{color:var(--sub);text-decoration:line-through}
.addon-off{flex:none;border-radius:999px;padding:1px 8px;font-size:11px;background:#f1efe9;color:var(--sub)}
/* 车辆押金: own line under the rates on the vehicle card */
.vehicle-prices{flex-wrap:wrap}.vehicle-prices>.vehicle-deposit{flex-basis:100%;margin-top:-4px;font-size:11px;font-weight:600;color:#805a15}
/* 电子签署 QR pop-over (esign.ts showSignLink): the open link as a scannable code plus the link text. */
.fleet-dialog.agreement-qr{max-width:460px}
.agreement-qr .confirm-content>p{color:var(--sub);font-size:13px;line-height:1.8;margin:0}
.agreement-qr-code{width:min(260px,70vw);margin:16px auto 10px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:12px}
.agreement-qr-code svg{display:block;width:100%;height:auto}
.agreement-qr-link{overflow-wrap:anywhere;font-size:11px;line-height:1.6;margin:0 0 6px}
.agreement-qr-link a{color:var(--accent)}

/* Compact operations workspace; shares the Jobs visual language. */
.rental-test-banner{position:fixed;top:4px;left:calc(50% + var(--sidebar)/2);transform:translateX(-50%);z-index:81;width:max-content;max-width:calc(100vw - var(--sidebar) - 24px);margin:0;padding:3px 12px;border:1px solid #d6e8dc;border-radius:999px;font-size:9px;line-height:1.5;pointer-events:none;box-shadow:0 2px 8px #17271d08}
.fleet-brand .brand-mark{display:none}
#collapseSidebar{position:absolute;right:0;top:76px;transform:translateX(50%);width:28px;height:28px;margin:0;border-radius:50%;z-index:2;box-shadow:0 2px 6px #17271d0c}
#collapseSidebar .fi{width:16px;height:16px}
@media(min-width:901px){
 .sidebar-collapsed .fleet-brand .brand-lockup{display:none!important}
 .sidebar-collapsed .fleet-brand .brand-mark{display:block;width:40px!important;height:40px!important;max-height:none;border-radius:10px}
 .sidebar-collapsed .fleet-brand{justify-content:center;overflow:visible!important}
}
[hidden]{display:none!important}
body.session-locked>.wrap,body.session-locked>.fleet-sidebar,body.session-locked>.nav-shade,body.session-locked>#drawerShade,body.session-locked>#drawer,body.session-locked>.modal-bg{display:none!important}
body.session-locked{overflow:hidden}
.fleet-brand{padding:0!important;background:none!important;border-radius:0!important;display:inline-flex!important;align-self:flex-start;margin-bottom:12px}
.brand-lockup{display:inline-flex;align-items:center;gap:10px;background:#335b48;border-radius:10px;padding:9px 12px;white-space:nowrap}
.brand-lockup img{display:block;height:19px!important;width:auto!important;max-width:none!important}
.brand-lockup i{width:1px;height:19px;background:#ffffff99;flex-shrink:0}
.brand-lockup b{font:700 11px/1 var(--display);letter-spacing:1.5px;text-transform:uppercase;color:white}
.lc-logo .brand-lockup{background:#16684b;width:max-content}.lc-logo .brand-lockup>*{flex-shrink:0}.lc-logo .brand-lockup b{line-height:1.5}.brand-lockup.small{padding:6px 12px;gap:10px}.brand-lockup.small img,.brand-lockup.small i{height:16px!important}.brand-lockup.small b{font-size:10px;letter-spacing:2px}
.fleet-sidebar{padding:22px 16px 18px}.sidebar-collapse{align-self:flex-end;margin:0 0 12px;color:var(--sub)}
.account-trigger{width:100%;display:flex;align-items:center;gap:7px;padding:7px 9px!important;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;text-align:left;color:var(--ink)}
.account-trigger:hover{background:#f6f7f6}.account-trigger>b{font-size:12px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.account-avatar{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:50%;background:#eaf3ef;color:#397556}.account-avatar .fi{width:16px;height:16px}
.role-badge{display:inline-block!important;flex:none;border-radius:999px;padding:5px 7px;background:#eaf3ef;color:#397556!important;font:700 9px/1.1 var(--display)!important;letter-spacing:.4px;white-space:nowrap}
.account-dialog{max-width:448px;width:calc(100vw - 32px);border-radius:14px}.account-content{padding:28px;position:relative}.account-close{position:absolute;right:12px;top:12px}
.account-heading{display:flex;gap:14px;align-items:center;padding-right:14px}.account-heading .account-avatar{display:flex;flex:0 0 44px;width:44px;height:44px;min-width:44px;min-height:44px;max-width:44px;max-height:44px;aspect-ratio:1/1;align-self:center;box-sizing:border-box;padding:0;overflow:hidden;border-radius:50%}.account-heading .account-avatar .fi{width:20px;height:20px;flex:none;padding:0;background:none}.account-heading>div{min-width:0}
.account-heading h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font:700 17px/1.5 var(--display);margin:0}.account-heading p{font-size:13px;color:var(--sub);margin:4px 0;overflow-wrap:anywhere}
.account-explainer{margin-top:24px;padding:16px;border:1px solid var(--line);background:#f6f7f699;border-radius:12px;font-size:13px;line-height:1.7}.account-explainer p{margin:4px 0 12px;color:var(--sub)}.account-explainer a{color:#397556;font-weight:600;display:inline-flex;gap:6px;align-items:center}.account-explainer .fi{width:16px}
.account-content footer{padding:16px 0 0;margin-top:20px;display:grid;grid-template-columns:1fr;justify-content:stretch;justify-items:stretch;gap:10px}.account-mobile{width:100%;justify-content:center;text-decoration:none;color:var(--accent);border-color:#bdd8c6;background:#f6fbf8}.account-signout{width:100%;color:#b64b42;border-color:#ecd3d0;background:#fff}
.login-bg{background:#f6f7f6;z-index:300;padding:24px}.login-card{width:100%;max-width:384px;border:1px solid #e2e6e3;border-radius:14px;padding:28px;box-shadow:0 2px 8px #17271d05;text-align:left}
.lc-logo{width:auto;height:auto;display:block;background:none;border-radius:0;margin:0;color:inherit}.lc-brand{font:700 26px/1.3 var(--display);margin:24px 0 4px}.lc-sub{font-size:13.5px;line-height:1.7;color:var(--sub);margin:0}.lc-go{margin-top:24px;display:flex;gap:8px;align-items:center;justify-content:center;font-size:13px}.lc-note{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);text-align:center;font-size:12px;line-height:1.7;color:var(--sub)}.lc-note span{font-family:monospace}.login-card #loginSwitch{margin-top:12px;width:100%}
.types input{display:block;position:absolute;opacity:0;width:1px;height:1px}.types label{position:relative}.types label:focus-within{outline:2px solid var(--accent);outline-offset:3px}
.types #tyT .d{background:var(--turo)}.types #tyD .d{background:var(--direct)}.types #tyM .d{background:var(--maint)}
.types #tyT:hover,.types #tyT.selT{color:var(--turo);border-color:var(--turo);background:#edf2fb}.types #tyD:hover,.types #tyD.selD{color:#38765e;border-color:var(--direct);background:#edf7f1}.types #tyM:hover,.types #tyM.selM{color:#5e6866;border-color:var(--maint);background:#f0f2f1}
#drawerShade{position:fixed;inset:0;z-index:89;background:#193d2b33;border:0;cursor:default}.drawer{z-index:90}.modal-bg{z-index:100}#ledgerBg{z-index:110!important}#fileBg{z-index:120}#syncBg{z-index:130}
.schedule-page{height:100dvh;overflow:hidden}.schedule-page .wrap{height:100dvh;max-width:none;display:flex;flex-direction:column;padding:0 24px 16px;min-height:0}
.schedule-page .workspace-bar{height:48px;min-height:48px}.schedule-page .page-heading{padding:13px 0;gap:12px;flex-shrink:0}.schedule-page .page-heading h1{font-size:24px}.schedule-page .page-heading .eyebrow,.schedule-page #pageSubtitle{display:none}.schedule-page #updated{font-size:10px;margin-top:4px}.schedule-page .page-actions .btn{min-height:36px;padding:8px 13px}
#view-schedule{min-height:0}.schedule-page #view-schedule{display:flex;flex-direction:column;flex:1}.schedule-page .schedule-card{display:flex;flex-direction:column;flex:1;min-height:0;margin:0;overflow:hidden}
.schedule-page .schedule-scroll{max-height:none!important;min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;background:#fff}.schedule-page .schedule-footer{flex-shrink:0;padding:9px 14px}.schedule-page .schedule-footer>span{display:none}
.schedule-toolbar{flex-shrink:0;gap:9px;padding:12px;align-items:center}.schedule-toolbar #quarterNav{margin:0!important;gap:6px!important}.schedule-toolbar #quarterNav>span{display:none}.schedule-toolbar #quarterNav select{min-height:34px;font-size:12px!important;padding:6px!important}.schedule-toolbar #qToday{min-height:34px}
.schedule-toolbar .seg button{min-height:34px;padding:6px 10px}.schedule-toolbar .search{min-width:160px;max-width:240px;flex:1;margin:0}.schedule-tools{display:flex;gap:6px;margin-left:auto}.schedule-tools .btn{font-size:11px;min-height:34px;padding:6px 9px;gap:5px}.schedule-tools .fi{width:16px;height:16px}
.schedule-toolbar .seg button{white-space:nowrap}
#scheduleRange{flex-shrink:0;max-height:30vh;overflow:auto}#scheduleRange #rangeResults{margin:0;padding:0 14px 10px}#scheduleRange #rangeResults h3{font-size:12px;margin:8px 0}.range-cars{gap:6px}.range-cars>span{font-size:10px;padding:5px 8px}
.schedule-panel{width:min(900px,calc(100vw - 40px));max-height:90dvh}.schedule-panel>header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line)}.schedule-panel h2{font-size:20px}.schedule-panel-content{padding:24px;overflow:auto;max-height:calc(90dvh - 90px)}.schedule-panel .day-section{margin:0}.schedule-panel .schedule-stats{margin-bottom:16px}.schedule-panel .today-queue{margin-bottom:0}
#schedulePanel-filters{max-width:420px}#schedulePanel-filters .schedule-panel-content{display:grid;gap:16px}#schedulePanel-filters select{width:100%;padding:12px!important;font:inherit!important;border-radius:9px;border:1px solid var(--line)}
@media(min-width:901px){
 body.sidebar-collapsed{--sidebar:76px}.sidebar-collapsed .fleet-sidebar{padding:22px 12px}.sidebar-collapsed .fleet-brand{overflow:hidden;width:50px}.sidebar-collapsed .fleet-sidebar .brand-lockup{padding:10px;width:50px;justify-content:flex-start}.sidebar-collapsed .fleet-sidebar .brand-lockup img{height:19px!important;max-width:none!important}.sidebar-collapsed .fleet-sidebar .brand-lockup i,.sidebar-collapsed .fleet-sidebar .brand-lockup b{display:none}
 .sidebar-collapsed .sidebar-label,.sidebar-collapsed nav a>span,.sidebar-collapsed nav a>small,.sidebar-collapsed .rental-link>span,.sidebar-collapsed .account-trigger>b,.sidebar-collapsed .account-trigger>small{display:none!important}
 .sidebar-collapsed .fleet-sidebar .brand-lockup img{height:auto!important;width:36px!important}.sidebar-collapsed .fleet-sidebar .brand-lockup{padding:10px 7px}
 .sidebar-collapsed .fleet-sidebar nav a,.sidebar-collapsed .rental-link{justify-content:center;padding:13px 0}.sidebar-collapsed .sidebar-collapse{align-self:center}.sidebar-collapsed .account-trigger{justify-content:center;padding:8px!important}.sidebar-collapsed .account-avatar{width:28px}.sidebar-collapsed .sidebar-bottom{min-width:0}
}
@media(max-width:900px){.sidebar-collapse{display:none}.schedule-page .wrap{padding:0 16px 12px}.schedule-page .workspace-bar{height:48px;min-height:48px}.schedule-toolbar{flex-wrap:wrap}.schedule-toolbar .search{max-width:none}.schedule-tools{margin-left:0}.account-trigger>b{font-size:12px}}
@media(max-width:600px){
 .schedule-page .wrap{padding:0 10px 8px}.schedule-page .page-heading{padding:10px 0;flex-wrap:nowrap;align-items:center}.schedule-page .page-heading h1{font-size:20px}.schedule-page .page-actions{width:auto;gap:6px;margin:0}.schedule-page .page-actions .btn{font-size:10px;padding:7px 9px;min-height:34px}.schedule-page .page-actions .fi{width:16px;height:16px}.schedule-page #updated{font-size:8px}
 .schedule-toolbar{padding:9px;gap:7px}.schedule-toolbar #quarterNav{width:auto;flex-wrap:nowrap!important}.schedule-toolbar .seg{width:auto;flex:1}.schedule-toolbar .seg button{font-size:11px;padding:6px;min-height:32px}.schedule-toolbar .search{order:initial!important;min-width:130px!important;width:auto!important;flex:1}.schedule-toolbar .search input{font-size:13px!important;min-height:34px}.schedule-tools{gap:4px}.schedule-tools .btn{padding:6px;font-size:10px}.schedule-tools .fi{width:14px}.schedule-tools #open-day .fi{display:none}.schedule-page .schedule-footer{padding:7px 9px}#scheduleLegend{font-size:8px;gap:5px 8px}
 .schedule-panel{width:100vw;height:100dvh;max-height:100dvh}.schedule-panel-content{max-height:calc(100dvh - 80px);padding:18px}.schedule-panel>header{padding:18px}.schedule-panel .section-heading .eyebrow,.schedule-panel .section-heading p{display:none}.schedule-panel .schedule-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .account-dialog{width:calc(100vw - 32px);height:auto;max-height:90dvh;inset:0;margin:auto;border:1px solid var(--line);border-radius:14px}.account-content{padding:24px}.account-heading h2{font-size:16px}.login-card{padding:28px;width:100%}.login-bg{padding:24px}
 .schedule-toolbar .seg button{font-size:10px;padding:6px 3px}
}
/* All Fleet overlays share a single rounded top-left corner, including mobile. */
.fleet-app :is(.fleet-dialog,.fleet-order-drawer,.modal-bg .modal,.drawer,.login-card){border-radius:20px 0 0 0}
.login-bg{overflow-y:auto;align-items:flex-start}
.login-stack{width:100%;max-width:384px;margin-block:auto;display:flex;flex-direction:column;gap:16px;flex-shrink:0}
.login-stack .login-card{width:100%;max-width:none}
.login-notice{color:var(--ink);min-width:0}#loginNoticeList{display:grid;gap:8px}
.login-notice-row{padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--notice-highlight,#397556);border-radius:0 0 20px 0;background:color-mix(in srgb,var(--notice-highlight,#397556) 6%,white);display:flex;align-items:center;gap:10px;min-width:0}
.login-notice-label{margin:0;color:var(--notice-highlight,#397556);font-size:10px;font-weight:700;white-space:nowrap;flex-shrink:0}
.login-notice h2,#loginNoticeStatus{margin:0;font-size:12px;font-weight:500;line-height:1.6;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}
.login-notice-detail{border:0;background:transparent;color:var(--notice-highlight,#397556);padding:3px 0;font-size:12px;font-weight:600;flex-shrink:0;white-space:nowrap}
.login-notice-detail:hover{text-decoration:underline;text-underline-offset:3px}.login-notice-detail:focus-visible{outline-color:var(--notice-highlight,#397556)}
#loginNoticeRetry{font-size:10px;min-height:26px;white-space:nowrap;padding:3px 7px}
.notice-dialog{width:min(540px,calc(100vw - 32px));max-height:85dvh;overflow:hidden}.notice-dialog>header{position:relative;border-radius:19px 0 0 0;background:color-mix(in srgb,var(--notice-highlight,#397556) 8%,white)}
.notice-dialog>header::before{content:'';position:absolute;inset:0;border:3px solid var(--notice-highlight,#397556);border-bottom:0;border-right:0;border-radius:inherit;pointer-events:none}
.notice-dialog .eyebrow{color:var(--notice-highlight,#397556)}
.notice-dialog h2{overflow-wrap:anywhere}.notice-dialog-body{padding:24px;overflow-wrap:anywhere;line-height:1.9;font-size:13px;color:var(--sub);overflow:auto;max-height:55dvh}
/* Notice bodies are Markdown (same restricted renderer as the website and the rental agreements). */
.notice-markdown p{margin:0 0 10px}.notice-markdown p:last-child{margin-bottom:0}.notice-markdown h1,.notice-markdown h2,.notice-markdown h3{margin:12px 0 6px;font-size:14px;line-height:1.4;color:var(--ink)}.notice-markdown h1:first-child,.notice-markdown h2:first-child,.notice-markdown h3:first-child{margin-top:0}.notice-markdown ul{margin:0 0 10px;padding-left:18px}.notice-markdown li{margin:2px 0}.notice-markdown a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.notice-markdown strong{color:var(--ink)}
#loginNoticeBody{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.85;color:var(--sub)}
@media(max-width:600px){.notice-dialog{width:calc(100vw - 32px);height:auto;max-height:85dvh;margin:auto;inset:0;border:1px solid var(--line)}.notice-dialog-body{padding:20px;max-height:55dvh}}
.staff-notice{flex-shrink:0;margin-top:10px;padding:0;background:transparent;border:1px solid var(--line);border-radius:12px 0 0 0;font-size:12px;color:var(--accent);max-height:30dvh;overflow:auto}
.staff-notice>details{padding:10px 14px;background:color-mix(in srgb,var(--notice-highlight,#397556) 8%,white)}
.staff-notice summary{cursor:pointer;font-weight:600}.staff-notice .notice-markdown{overflow-wrap:anywhere;margin:12px 0 0;line-height:1.8;color:var(--sub)}
.notice-roles{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;gap:16px;flex-wrap:wrap}.notice-roles label{display:flex;gap:7px;align-items:center;font-size:12px}.notice-roles input{min-height:0;width:16px;height:16px}
.staff-notice details+details{border-top:1px solid var(--line)}
.staff-notice summary{color:var(--notice-highlight,#397556);border-left:3px solid var(--notice-highlight,#397556);padding-left:9px}.notice-roles~.form-field input[type=color]{width:100%;padding:4px;height:42px}
.notice-list article>div{border-left:3px solid var(--notice-highlight,#397556);padding-left:12px}
.notice-manager{width:min(860px,calc(100vw - 32px))}.notice-manager-body{padding:24px;overflow:auto;max-height:calc(85dvh - 100px)}
.notice-manager-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 6px}.notice-manager-tools p{margin:0}.notice-list article{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-top:1px solid var(--line)}.notice-list article>div{min-width:0}.notice-list h3{font-size:15px;margin:8px 0;overflow-wrap:anywhere}.notice-list p{font-size:12px;margin:0 0 7px;color:var(--sub)}.notice-list small{font-size:11px;color:var(--sub)}
@media(max-width:600px){.notice-manager{width:100vw}.notice-manager-body{padding:20px;max-height:calc(100dvh - 100px)}}

/* Schedule is the workspace itself; shared actions retain their original handlers. */
.workspace-bar>div{min-width:0;flex:1}
.workspace-bar #menuToggle,.workspace-bar .zone-label{flex-shrink:0}
.workspace-brand{display:flex;align-items:center;overflow-x:auto;min-width:0;white-space:nowrap;padding:8px 0;scrollbar-width:thin}
.workspace-home{color:inherit;flex-shrink:0}
.workspace-brand #workspaceCrumbs{display:inline-flex;align-items:center;margin:0;color:inherit}
#workspaceCrumbs>span{margin:0;color:var(--ink)}
#workspaceCrumbs>.crumb-separator{margin:0 10px;color:#b8c8be}
#workspaceCrumbs>a{color:var(--sub)}#workspaceCrumbs>a:hover,.workspace-home:hover{color:var(--accent)}
.workspace-brand a:focus-visible{outline:2px solid var(--accent);outline-offset:-1px;border-radius:3px}
.settings-grid[hidden],.settings-detail[hidden]{display:none!important}
.settings-detail{max-width:1100px;min-width:0;overflow-wrap:anywhere}
.settings-form,.settings-info,.settings-load-error{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:var(--shadow)}
.settings-fields{margin:0;padding:0;border:0;min-width:0}
.settings-form .form-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;min-width:0}
.settings-form .form-field input,.settings-form .form-field select,.settings-form .form-field textarea{min-height:42px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font:13px var(--sans)}
.settings-form .form-field textarea{line-height:1.7;resize:vertical}
.settings-checkbox{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer}
.settings-form .form-field .settings-checkbox input[type=checkbox]{width:18px;height:18px;min-height:18px;padding:0;flex:0 0 18px;accent-color:var(--accent)}
.settings-fields input,.settings-fields select,.settings-fields textarea{scroll-margin-block:24px calc(var(--settings-savebar-height,88px) + 40px)}
.settings-form .notice-roles label{display:inline-flex;align-items:center;gap:6px;margin:6px 14px 6px 0}
.settings-form .settings-error:not([hidden]){margin-top:20px}
.settings-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding-top:22px;margin-top:24px;border-top:1px solid var(--line2);flex-wrap:wrap}
.settings-actions>a:first-child{margin-right:auto}
.settings-editing .settings-detail{padding-bottom:calc(var(--settings-savebar-height,88px) + 24px)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.settings-savebar{position:fixed;z-index:24;left:calc(var(--sidebar) + 36px);right:36px;bottom:16px;display:flex;flex-wrap:wrap;align-items:center;gap:12px;max-width:1100px;margin:0;padding:16px 20px;padding-bottom:max(16px,env(safe-area-inset-bottom));border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 6px 28px #183a2326}
.settings-error [data-reload]{margin-left:10px;vertical-align:middle}
.settings-load-error .settings-saved-note{margin:0 0 10px;color:var(--sub)}
.settings-save-status{min-width:0;flex:1;display:grid;gap:4px}.settings-save-status b{font-size:13px}.settings-save-status span{font-size:12px;color:var(--sub)}
.settings-savebar .btn{flex-shrink:0;min-height:42px}.settings-savebar.has-changes{border-color:#d3ad60}.settings-savebar.has-changes [data-change-status]{color:#805a15}
.settings-form .setting-changed{border-radius:8px;outline:2px solid #dfbd75;outline-offset:5px;background:#fffaf0}
.settings-form .setting-changed>span:first-child::after,.settings-form .setting-changed>legend::after{content:'已修改';display:inline-block;margin-left:8px;font-size:10px;font-weight:600;color:#805a15}
.settings-form .setting-changed input,.settings-form .setting-changed select,.settings-form .setting-changed textarea{border-color:#bd903f}
.settings-payment-section{min-width:0;margin:0;padding:0;border:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
/* Google 日历事件颜色 (settings.ts calendar): Google's fixed event palette as swatches next to each select and in the facts list. */
.settings-form .gcal-colors{min-width:0;margin:0;padding:16px 18px;border:1px solid var(--line2);border-radius:12px}.settings-form .gcal-colors legend{padding:0 6px;font-size:13px;font-weight:600}.settings-form .gcal-colors>p{margin:4px 0 14px;font-size:12px}
.gcal-color-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 22px}
.gcal-swatch{display:inline-block;width:14px;height:14px;margin-right:6px;border-radius:4px;border:1px solid rgba(0,0,0,.18);vertical-align:-2px;background:repeating-linear-gradient(45deg,#fff 0 3px,#d8d8d8 3px 6px)}
.gcal-swatch[data-c="1"]{background:#7986cb}.gcal-swatch[data-c="2"]{background:#33b679}.gcal-swatch[data-c="3"]{background:#8e24aa}.gcal-swatch[data-c="4"]{background:#e67c73}.gcal-swatch[data-c="5"]{background:#f6bf26}.gcal-swatch[data-c="6"]{background:#f4511e}.gcal-swatch[data-c="7"]{background:#039be5}.gcal-swatch[data-c="8"]{background:#616161}.gcal-swatch[data-c="9"]{background:#3f51b5}.gcal-swatch[data-c="10"]{background:#0b8043}.gcal-swatch[data-c="11"]{background:#d50000}
.gcal-color-fact{white-space:nowrap}
@media(max-width:700px){.gcal-color-grid{grid-template-columns:minmax(0,1fr)}}
.settings-editing #fleetToast{bottom:calc(var(--settings-savebar-height,88px) + 40px)}
@media(max-width:900px){.settings-savebar{left:36px}}
.settings-info h2{font-size:18px;margin:0 0 16px}.settings-info h2:not(:first-child){margin-top:28px}
.settings-info p{font-size:13px;line-height:1.8}.settings-info>.btn{margin:14px 0}
.settings-facts{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;font-size:13px;margin:20px 0}
.settings-facts dt{color:var(--sub)}.settings-facts dd{margin:0}
.settings-list-item{padding:20px 0;border-bottom:1px solid var(--line2)}.settings-list-item h3{font-size:15px;margin:0 0 8px}
.settings-loading{padding:32px;background:#fff;border:1px solid var(--line);border-radius:14px;color:var(--sub)}
.settings-load-error button{margin-top:16px}
.settings-detail>.fleet-empty{margin-bottom:18px}
@media(max-width:600px){
 .workspace-bar{gap:8px}.workspace-bar>div{gap:6px}.workspace-bar .zone-label{display:none}
 #workspaceCrumbs>.crumb-separator{margin:0 7px}
 .settings-form,.settings-info,.settings-load-error{padding:20px 16px}
 .settings-form .form-content,.settings-form .form-grid{grid-template-columns:1fr;gap:18px}
 .settings-form .form-field input,.settings-form .form-field select,.settings-form .form-field textarea{font-size:16px}
 .settings-facts{grid-template-columns:1fr;gap:5px}.settings-facts dd{margin-bottom:10px}
 .settings-actions .btn{min-height:42px}.settings-actions{gap:10px}
 .settings-savebar{left:12px;right:12px;bottom:8px;padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom));gap:8px}
 .settings-save-status{flex:1 1 100%}.settings-save-status b{font-size:12px}.settings-save-status span{font-size:11px}.settings-savebar .btn{flex:1 1 0;padding:9px 14px;font-size:13px}
 .settings-payment-section{grid-template-columns:1fr;gap:18px}
 .settings-info .notice-list article{align-items:flex-start;gap:10px}
 .settings-info .notice-list article>.btn{flex-shrink:0}
}

/* Settings sub-menu: one panel at a time, a shared save bar, per-section change badges. Rail on wide screens, scrollable strip otherwise. */
.has-sections{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;background:transparent;border:0;padding:0;box-shadow:none}
.has-sections>.settings-fields,.has-sections>.settings-panels{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:var(--shadow);min-width:0}
.has-sections .form-content{display:block}
.has-sections>.settings-error:not([hidden]){margin:0}
.settings-panel{min-width:0;scroll-margin-top:72px}
.settings-panel-head{margin:0 0 22px;padding-bottom:16px;border-bottom:1px solid var(--line2)}
.settings-panel-head h2{font-size:18px;margin:0 0 6px}.settings-panel-head p{margin:0;font-size:12px;line-height:1.7;color:var(--sub)}
.settings-form .form-content>.settings-panel-head{grid-column:1/-1}
.settings-panel>.settings-panel-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;min-width:0;margin:0;padding:0;border:0;border-radius:0}
.settings-panel-body>.settings-list-item:first-child{padding-top:0}
.settings-subnav{position:sticky;top:0;z-index:5;min-width:0;padding-block:4px;background:var(--paper)}
.settings-subnav-list{display:flex;gap:4px;max-width:100%;overflow-x:auto;scrollbar-width:none;padding:4px;background:#f2f6f3;border:1px solid #e6ece8;border-radius:12px}
.settings-subnav-list::-webkit-scrollbar{display:none}
.settings-subnav [role=tab]{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:7px 12px;border:0;border-radius:9px;background:transparent;color:#7b887f;font:600 12px var(--sans);white-space:nowrap;transition:background .15s,color .15s}
.settings-subnav [role=tab]:hover{color:var(--accent)}
.settings-subnav [role=tab][aria-selected=true]{background:#fff;color:#126c4f;box-shadow:0 1px 3px #233d2812}
.settings-subnav [role=tab]:focus-visible{outline-offset:-2px}
.settings-subnav .subnav-hint{display:none}
.subnav-count,.subnav-changes{display:inline-flex;align-items:center;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:700;line-height:1.5}
.subnav-count{background:#e6ece8;color:var(--sub)}.subnav-changes{background:#fff3d8;color:#805a15}
.settings-subnav [role=tab].has-changes{color:#805a15}
.settings-group{grid-column:1/-1;margin:6px 0 -6px;padding-top:16px;border-top:1px solid var(--line2);font-size:14px;color:#2f4a3b}
.form-content>.settings-group:first-of-type,.muted+.settings-group{margin-top:0;padding-top:0;border:0}
.notice-page .settings-panels{padding-top:22px}
/* 下拉组 (groups.ts): the fields of one feature behind a one-line summary with the live state; closed by default. */
.settings-block{grid-column:1/-1;min-width:0;margin:0;border:1px solid var(--line2);border-radius:12px;background:#fff}
.settings-block+.settings-block{margin-top:-10px}
.settings-block>summary{list-style:none;display:flex;align-items:center;gap:10px;min-height:48px;padding:12px 16px;cursor:pointer;border-radius:12px;font:600 14px/1.4 var(--sans);color:#2f4a3b;user-select:none}
.settings-block>summary::-webkit-details-marker{display:none}
.settings-block>summary::before{content:'';flex:0 0 7px;width:7px;height:7px;margin:0 4px 2px 0;border-right:2px solid #7b887f;border-bottom:2px solid #7b887f;transform:rotate(-45deg);transition:transform .15s}
.settings-block[open]>summary::before{transform:rotate(45deg);margin-bottom:4px}
.settings-block>summary:hover{background:#f6faf7}
.settings-block[open]>summary{border-radius:12px 12px 0 0;background:#f6faf7}
.settings-block>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.settings-block>summary .block-title{flex:0 1 auto;min-width:0}
.settings-block>summary .block-status{flex:1 1 auto;min-width:0;text-align:right;font:12px/1.5 var(--sans);color:var(--sub);overflow-wrap:anywhere}
.settings-block>summary .subnav-changes{flex:0 0 auto}
.settings-block.has-changes>summary .block-title{color:#805a15}
.settings-block-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;min-width:0;padding:18px 16px 20px;border-top:1px solid var(--line2)}
.settings-block-body>.settings-group:first-child{margin-top:0;padding-top:0;border:0}
.settings-block-body>.form-summary[hidden]{display:none}
@media(min-width:1280px){
 .has-sections{grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start}
 .has-sections>.settings-subnav{grid-column:1}.has-sections>.settings-fields,.has-sections>.settings-panels,.has-sections>.settings-error{grid-column:2}
 .settings-subnav{top:16px;padding:0;background:transparent;max-height:calc(100dvh - var(--settings-savebar-height,0px) - 56px);overflow:auto;scrollbar-width:thin}
 .settings-subnav-list{flex-direction:column;gap:2px;padding:8px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:visible}
 .settings-subnav [role=tab]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:8px;width:100%;padding:11px 12px;white-space:normal;text-align:left;color:#5f6d65;font-size:13px}
 .settings-subnav .subnav-title{grid-column:1;grid-row:1}.settings-subnav .subnav-count{grid-column:2;grid-row:1;justify-self:end}
 .settings-subnav .subnav-changes{grid-column:1/-1;justify-self:start;margin-top:6px}
 .settings-subnav [role=tab][aria-selected=true]{background:#e8f5ef;color:var(--accent);box-shadow:none;font-weight:700}
 .settings-subnav .subnav-hint{display:block;grid-column:1/-1;grid-row:2;margin-top:3px;font-size:10px;font-weight:400;line-height:1.5;color:var(--sub)}
}
@media(max-width:600px){
 .has-sections>.settings-fields,.has-sections>.settings-panels{padding:20px 16px}
 .settings-panel>.settings-panel-body{grid-template-columns:1fr;gap:18px}
 .settings-block+.settings-block{margin-top:-6px}
 .settings-block>summary{flex-wrap:wrap;padding:12px}
 .settings-block>summary .block-status{flex-basis:100%;text-align:left;padding-left:17px}
 .settings-block-body{grid-template-columns:1fr;gap:16px;padding:14px 12px 16px}
 .settings-subnav [role=tab]{min-height:40px;padding:8px 12px}
 .settings-panel-head{margin-bottom:18px}
}

.fleet-app.schedule-page .wrap{padding:0;background:#fff}
.schedule-page .workspace-bar{padding:0 20px;flex-shrink:0}
.schedule-page .page-heading{display:none}
.workspace-brand #scheduleBreadcrumb{margin:0;color:inherit}
.workspace-brand #pageTitle{display:inline;margin:0;font:600 12px/1.5 var(--sans);letter-spacing:0;color:var(--ink)}
.schedule-page .schedule-card{border:0;border-radius:0;box-shadow:none}
.schedule-page .schedule-toolbar{padding:12px 20px 9px;flex-wrap:wrap;border-bottom:1px solid var(--line);gap:9px}
.schedule-page .schedule-toolbar .page-actions{display:flex;width:auto;margin:0;gap:6px;flex-shrink:0}
.schedule-page .schedule-toolbar .page-actions .btn{font-size:11px;min-height:34px;padding:6px 10px;white-space:nowrap}
.schedule-page .schedule-toolbar .page-actions .fi{width:16px;height:16px}
.schedule-meta{display:flex;align-items:center;justify-content:space-between;gap:8px 20px;flex-wrap:wrap;width:100%;font-size:9px;color:var(--sub)}
.schedule-meta #scheduleLegend{gap:8px 14px}
.schedule-page .schedule-meta #updated{margin:0;font-size:9px;white-space:nowrap}
.schedule-page .staff-notice{margin:0;border-width:0 0 1px;border-radius:0}
@media(max-width:600px){
 .schedule-page .workspace-bar{padding:0 10px;gap:6px}
 .schedule-page .workspace-bar .zone-label{display:none}
 .workspace-brand #pageTitle{font-size:11px}
 .schedule-page .schedule-toolbar{padding:10px;gap:8px}
 .schedule-page .schedule-toolbar .page-actions{margin-left:auto}
 .schedule-page .schedule-tools{gap:5px}
 .schedule-meta #scheduleLegend{gap:6px 10px;font-size:9px}
 .schedule-page .schedule-meta #updated{font-size:8px}
}

/* Availability expands within the schedule surface, without nested cards. */
#scheduleRange{max-height:40dvh;border-bottom:1px solid var(--line);background:#fff}
#rangeDisclosure>summary{display:flex;align-items:center;gap:10px;padding:11px 20px;cursor:pointer;list-style:none;font-size:12px;font-weight:600;color:var(--ink)}
#rangeDisclosure>summary::-webkit-details-marker{display:none}
#rangeDisclosure>summary:hover{background:#f6faf7}
#rangeDisclosure>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
#rangeDisclosure>summary>.fi{width:15px;height:15px;color:var(--sub);flex-shrink:0}
#rangeDisclosure[open]>summary>.fi{transform:rotate(90deg)}
.range-disclosure-hint{margin-left:auto;font-size:10px;font-weight:400;color:var(--sub)}
.range-disclosure-hint::before{content:'展开'}
#rangeDisclosure[open] .range-disclosure-hint::before{content:'收起'}
.range-content{padding:0 20px 14px}
#scheduleRange #rangeRow{margin:0!important;padding:4px 0 12px!important;gap:10px!important;font-size:12px!important}
#scheduleRange #rangeRow>span:first-child{display:none}
#scheduleRange #rangeRow input{min-width:0;max-width:100%;min-height:36px;font-size:12px!important}
#scheduleRange #rangeRow .btn{min-height:36px;padding:7px 14px;font-size:12px}
#scheduleRange #rangeResults{padding:0;margin:0;border:0;border-radius:0;box-shadow:none;background:transparent}
#scheduleRange #rangeResults h3{margin:0 0 10px;font-size:12px;font-weight:600;line-height:1.6}
#scheduleRange .range-cars>span{border-radius:4px;font-size:11px;padding:6px 9px}
#scheduleRange #rangeResults p{margin:0;font-size:12px;line-height:1.6}
@media(max-width:600px){
 #rangeDisclosure>summary{padding:10px}
 .range-content{padding:0 10px 12px}
 #scheduleRange #rangeRow{gap:8px!important;display:grid!important;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
 #scheduleRange #rangeRow[style*="display: none"],#scheduleRange #rangeRow[style*="display:none"]{display:none!important}
 #scheduleRange #rangeRow input{width:100%;font-size:14px!important;padding:6px!important}
 #scheduleRange #rGo{grid-column:1/-1;justify-self:end}
}

/* The fixed vehicle column shows both existing rate fields without changing row alignment. */
.quarter-car>.quarter-prices{display:flex;flex-direction:column;gap:5px;flex-shrink:0;font-size:11px;line-height:1.5;text-align:right}
.quarter-car>.quarter-prices>span{display:flex;align-items:baseline;justify-content:flex-end;gap:4px;white-space:nowrap}
.quarter-car>.quarter-prices small{display:inline;margin:0;font-size:9px;font-weight:400;color:var(--sub)}
@media(max-width:600px){
 .quarter-car[data-car-detail]{display:grid;grid-template-columns:31px minmax(0,1fr);gap:7px}
 .quarter-car>.quarter-prices{grid-column:2;align-items:flex-start;font-size:10px;text-align:left;gap:3px}
 .quarter-car>.quarter-prices small{font-size:8px}
}
/* Next-quarter preview shares the grid; only its navigation layer is interactive. */
.quarter-day.quarter-preview{background:#edf0f2;color:#67767b}
.quarter-day.quarter-preview small{color:#69787e;font-size:9px}
.quarter-day.preview-start,.track-cell.preview-start{border-left:2px dashed #9caeb4}
.quarter-preview-overlay{position:absolute;top:0;bottom:0;z-index:3;display:grid;grid-template-columns:repeat(30,minmax(0,1fr));background:repeating-linear-gradient(135deg,#e4e9ec55 0 5px,#f3f5f733 5px 10px);border-left:2px dashed #9caeb4}
.quarter-preview-overlay>button{min-width:0;border:0;border-radius:0;background:transparent;padding:0;cursor:pointer}
.quarter-preview-overlay>button:hover{background:#d0dbe466}
.quarter-preview-overlay>button:focus-visible,.quarter-day.quarter-preview:focus-visible{outline:2px solid #486879;outline-offset:-3px;background:#dce6eb99}
.quarter-track .preview-block{opacity:.58;pointer-events:none;filter:saturate(.55)}
.quarter-day.today,.quarter-day.today.selected,.quarter-day.today.weekend{background:#d6eee1;box-shadow:inset 0 -4px #176046}
.quarter-day.today small,.quarter-day.today.weekend small{color:#15543e;font-weight:800}
.quarter-day.today b,.quarter-day.today.weekend b{background:#176046;color:#fff;box-shadow:0 0 0 2px #fff;padding:2px 5px;border-radius:6px}
.schedule-block.released,.history-segment.released,.legend-dot.released:before{background:repeating-linear-gradient(135deg,#f2f5f3 0 5px,#dce7e0 5px 9px);color:#425a4d;border:1px solid #96ad9e;box-shadow:none}
.history-segment{display:block;font-size:12px;padding:4px 6px;line-height:1.6;border-radius:5px;overflow-wrap:anywhere}
.history-segment+.history-segment{margin-top:5px}
.order-visibility-actions{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--line);padding-top:16px}
.order-visibility-actions p{flex-basis:100%;margin:0 0 6px;overflow-wrap:anywhere}
.order-visibility-actions .btn:disabled{opacity:.55;cursor:not-allowed}
.quarter-track .track-cell.today,.quarter-track .track-cell.today.selected{background:#e0f2e8;box-shadow:inset 2px 0 #429574,inset -2px 0 #429574}

.types #tyLB .d{background:var(--loaner-body)}.types #tyLB:hover,.types #tyLB.selLB{color:#7a5417;border-color:var(--loaner-body);background:#fbf3e6}.types #tyLS .d{background:var(--loaner-service)}.types #tyLS:hover,.types #tyLS.selLS{color:#4f3a80;border-color:var(--loaner-service);background:#f1edfa}
/* Manual payment dialog (payment-requests.ts): header → notices → balance tiles → new link → request list → footer */
.pay-dialog{display:flex;flex-direction:column;max-height:calc(100dvh - 44px);padding:0}
.pay-dialog>header{padding:22px 24px 16px;margin:0}.pay-dialog>header h2{margin:2px 0 0}.pay-customer{margin:6px 0 0;font-size:12px;color:var(--sub)}
.pay-body{padding:18px 24px 22px;overflow:auto;min-height:0;display:grid;gap:16px}
.pay-notices{display:grid;gap:8px}.pay-notices .warning{margin:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap;line-height:1.6}.pay-notices .warning .btn{margin-left:auto;flex-shrink:0}
.pay-notices .warning.is-info{background:#f1f8f4;border-color:#d7e8de;color:#3f6a52}
.pay-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.pay-stat{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0}.pay-stat small{display:block;color:var(--sub);font-size:11px;font-weight:600;letter-spacing:.02em}.pay-stat strong{display:block;font-size:20px;line-height:1.3;margin:2px 0;color:var(--accent)}.pay-stat em{font-style:normal;color:var(--sub);font-size:11px;line-height:1.5}
.pay-link{padding:14px 16px;border:1px solid #bfe3d1;background:#eef8f2;border-radius:12px}.pay-link b{display:block;margin-bottom:4px;color:#145c44}.pay-link p{margin:0 0 10px;font-size:12px;color:#4e705b;line-height:1.6}.pay-link-row{display:flex;gap:8px}.pay-link-row input{flex:1;min-width:0;font-size:12px}
.pay-list-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.pay-list-head h3{margin:0;font-size:14px}.pay-list-head h3 span{color:var(--sub);font-weight:500;margin-left:8px;font-size:12px}
.pay-request{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff}.pay-request+.pay-request{margin-top:10px}
.pay-request-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.pay-request-head>div{display:flex;align-items:center;gap:10px}.pay-amount{font-size:18px}.pay-request-head small{color:var(--sub);font-size:11px}
.pay-chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}.pay-chips span{padding:3px 9px;border-radius:999px;background:var(--paper);font-size:11px;color:var(--sub)}
.pay-request p{margin:8px 0 0;font-size:12px;line-height:1.6}.pay-request .pay-refund{color:#8a5a12}
.pay-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.pay-actions .btn{font-size:11px}
.pay-hold{margin-top:12px;padding-top:10px;border-top:1px solid var(--line2)}.pay-hold>b{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:4px}
.pay-empty{margin:0;padding:18px;border:1px dashed var(--line);border-radius:12px;color:var(--sub);font-size:12px;text-align:center}
.pay-dialog footer{display:flex;gap:10px;align-items:center;padding:14px 24px;border-top:1px solid var(--line2)}.pay-footer-left{display:flex;gap:8px;flex-wrap:wrap;margin-right:auto}
@media(max-width:600px){.pay-stats{grid-template-columns:1fr}.pay-dialog>header,.pay-body,.pay-dialog footer{padding-inline:16px}.pay-notices .warning .btn{margin-left:0}}
/* 业务设置 → 优惠码 */
.promo-list h3{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.promo-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:15px;letter-spacing:.08em;background:#f1f5f2;border:1px solid var(--line);border-radius:6px;padding:2px 8px}.promo-note{font-size:12px;font-weight:400;color:var(--sub)}
.promo-rules{display:flex;flex-wrap:wrap;gap:6px}.promo-rules span{font-size:11px;background:#f4f6f5;border-radius:999px;padding:2px 9px;color:#2f4a3b}
.promo-code-row{display:flex;gap:8px;align-items:stretch}.promo-code-row input{flex:1 1 auto;min-width:0;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em}.promo-code-row .btn{flex:0 0 auto;white-space:nowrap}
.promo-usage{margin:0;font-size:13px;color:#2f4a3b;background:#f1f5f2;border-radius:10px;padding:10px 14px}
/* Customer email dialog (shares the payment dialog frame). */
.mail-dialog .pay-body{gap:18px}.mail-compose{display:grid;gap:10px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#f7faf8}
.mail-compose .form-field{margin:0}.mail-compose .form-field span{display:block;margin-bottom:4px;font-size:12px;color:var(--sub)}.mail-compose select,.mail-compose input,.mail-compose textarea{width:100%;box-sizing:border-box}
.mail-custom{display:grid;gap:10px}.mail-compose-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mail-compose-actions .muted{font-size:12px}
.mail-card .pay-actions{display:flex;gap:6px;margin-top:10px}.pay-empty{padding:18px;border:1px dashed var(--line);border-radius:12px;text-align:center;color:var(--sub);font-size:13px}
.fleet-dialog.mail-preview{width:min(680px,calc(100vw - 32px));padding:0;display:flex;flex-direction:column;max-height:calc(100dvh - 44px)}
.fleet-dialog.mail-preview>header{padding:18px 22px 12px;margin:0}.mail-frame{flex:1;min-height:60vh;width:100%;border:0;border-top:1px solid var(--line2);background:#f5fbf8}
.refund-row-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.refund-row .muted{font-size:11px}.pay-request .pay-refund .muted{color:var(--sub)}

.workspace-bar #openTutorial{flex-shrink:0;color:var(--accent,#397556)}
.workspace-bar .zone-label{margin-left:auto}
.tutorial-restoring{position:fixed;inset:0;z-index:2147483647;background:#f3f7f5;display:grid;place-items:center;color:#286347;font:15px system-ui}
#fleetTutorial{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;overflow:visible;pointer-events:none;color:#24362d;font:14px/1.6 Inter,system-ui,sans-serif}
#fleetTutorial::backdrop{background:transparent;pointer-events:none}
.tutorial-shade{position:fixed;background:rgba(13,29,23,.63);pointer-events:auto}
.tutorial-outline{position:fixed;border:2px solid #8ce4b7;border-radius:8px;box-shadow:0 0 0 3px rgba(140,228,183,.18);pointer-events:none}
/* Scoped to the popover so native dialog header/footer styles cannot create a second modal. */
#fleetTutorial .tutorial-card{position:fixed;width:320px;max-width:calc(100vw - 16px);padding:10px 12px;background:#fff;border:1px solid #c6ded0;border-left:3px solid #397556;border-radius:8px;box-shadow:0 5px 20px #10291b24;pointer-events:auto;overflow:auto;box-sizing:border-box}
#fleetTutorial .tutorial-meta{display:flex;justify-content:space-between;align-items:center;color:#687c71;font-size:10px;line-height:20px}
#fleetTutorial .tutorial-meta .icon-btn{width:24px;height:24px;min-height:24px;padding:3px}
#fleetTutorial .tutorial-card h2{font-size:14px;line-height:1.4;margin:2px 0 4px}
#fleetTutorial .tutorial-description{font-size:12px;line-height:1.5;margin:0 0 6px;color:#24362d}
#fleetTutorial .tutorial-safe{font-size:9px;line-height:14px;color:#397556;margin:0;display:flex;gap:6px;flex-wrap:wrap}
#fleetTutorial .tutorial-card footer{display:flex;gap:6px;justify-content:flex-end;margin:6px 0 0;padding:0;border:0;flex-wrap:wrap}
#fleetTutorial .tutorial-card .btn{min-height:30px;font-size:11px;line-height:16px;padding:5px 9px}
#fleetTutorial button:focus-visible{outline:3px solid #397556;outline-offset:2px}
.tutorial-leader{position:fixed;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.tutorial-leader polyline{fill:none;stroke:#7bdbac;stroke-width:2;stroke-linejoin:round}
.tutorial-leader circle{fill:#397556;stroke:#b4f6d2;stroke-width:2}
@media(max-width:760px){#fleetTutorial .tutorial-card{width:calc(100vw - 16px);padding:8px 10px}#fleetTutorial .tutorial-card h2{font-size:13px}#fleetTutorial .tutorial-description{font-size:11px;line-height:1.4;margin-bottom:4px}#fleetTutorial .tutorial-card footer{margin-top:4px}}

/* 交接验收 (handover inspection) — shared by rental-ui.css (desktop drawers) and mobile-ui.css. Tokens come from app.css / mobile.css. */
.hv{display:grid;gap:14px}
.hv-side{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow)}
.hv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px}
.hv-head .eyebrow{margin-bottom:4px}
.hv-head h3{font:700 16px var(--display);margin:0}
.hv-meta{font-size:11px;color:var(--sub);text-align:right;line-height:1.6;white-space:nowrap}
.hv-meta .hv-confirmed{display:inline-block;border-radius:999px;padding:1px 7px;background:#e8f5ef;color:#137852;font-weight:700;margin-right:4px}
.hv-form{display:grid;gap:12px;margin:0}
.hv-form .form-field>span small{font-weight:500;color:var(--sub);margin-left:4px}
.hv-form input{border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:42px;font:inherit;font-size:16px;background:#fff;color:var(--ink)}
.hv-form input:disabled{background:#f6f8f7;color:#53675b}
.hv-fuel{border:0;padding:0;margin:0;min-width:0}
.hv-fuel legend{font-size:11px;font-weight:600;color:#4c6053;margin-bottom:8px;padding:0}
.hv-fuel legend small{font-weight:500;color:var(--sub);margin-left:4px}
.hv-fuel-scale{display:grid;grid-template-columns:repeat(9,1fr);gap:4px}
.hv-fuel-scale button{min-height:42px;border:1px solid var(--line);border-radius:8px;background:#fff;font:700 13px var(--display);color:#53675b;padding:0;cursor:pointer}
.hv-fuel-scale button[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:#fff}
.hv-fuel-scale button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.hv-fuel:disabled .hv-fuel-scale button{cursor:default;opacity:.85}
.hv-warning{display:flex;align-items:center;gap:6px;margin:0;background:#fff7e7;color:#856027;border:1px solid #f1deb6;border-radius:10px;padding:9px 12px;font-size:12px}
.hv-warning .fi{width:16px;height:16px}
.hv-actions{display:flex;justify-content:flex-end}
.hv-photos{margin-top:16px;padding-top:14px;border-top:1px solid var(--line2)}
.hv-photos-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;margin-bottom:10px}
.hv-count{color:var(--sub);font:600 11px var(--display)}
.hv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}
.hv-thumb,.hv-add{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;padding:0;border:1px solid var(--line);background:#edf3ef;min-width:0}
.hv-thumb{cursor:pointer}
.hv-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.hv-thumb.pending img{opacity:.45}
.hv-thumb.pending{display:grid;place-items:center;color:var(--muted,#66756c)}
.hv-thumb.pending .fi{width:22px;height:22px;opacity:.5}
.hv-thumb.pending.hv-wait{background:#f3f6f4;border-style:dashed}
.hv-thumb.pending.hv-wait span{background:#66756ccc}
.hv-thumb-missing{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;height:100%;color:var(--muted,#66756c);padding:6px}
.hv-thumb-missing small{font-size:10px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hv-thumb.pending span{position:absolute;inset:auto 0 0;background:#0b7654cc;color:#fff;font-size:10px;font-weight:600;text-align:center;padding:3px 0}
.hv-add{display:grid;place-items:center;align-content:center;gap:4px;border-style:dashed;border-color:#b9d6c6;color:var(--accent);font-size:11px;font-weight:600;cursor:pointer;background:#f6fbf8}
.hv-add .fi{width:22px;height:22px}
.hv-add input{display:none}
.hv-progress{font-size:11px;color:var(--sub);margin:8px 0 0;min-height:1em}
.hv-progress:empty{display:none}
.hv-readonly .hv-actions,.hv-readonly .hv-add{display:none}
/* photo preview dialog */
.hv-preview{width:min(920px,calc(100vw - 24px))}
.hv-preview-content{display:flex;flex-direction:column;max-height:calc(100dvh - 44px)}
.hv-preview-content>header{padding:18px 20px}
.hv-preview-content h2{font-size:16px;word-break:break-all}
.hv-preview-stage{flex:1 1 auto;min-height:0;display:grid;place-items:center;background:#111;padding:0}
.hv-preview-stage img{max-width:100%;max-height:min(70dvh,900px);object-fit:contain;display:block}
.hv-preview-content>footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;border-top:1px solid var(--line2)}
.hv-preview-content>footer .btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.hv-preview-content>footer .fi{width:16px;height:16px}
/* desktop drawers */
.order-detail-body .hv{margin:0}
.order-detail-body .hv-side,#drBody .hv-side{box-shadow:none;padding:14px}
#drBody .hv{margin-top:8px}
#drBody .hv-fuel-scale button{min-height:36px;font-size:12px}
/* 现场收款 list under the desktop handover section (collection.ts collectionsSummary): read-only, proof links open the full image. */
.order-collections{margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}
.order-collections h4{font-size:13px;margin:0 0 8px;display:flex;justify-content:space-between;gap:8px}
.order-collections h4 small{font:400 10px var(--sans);color:var(--sub)}
.order-collection{padding:8px 0;border-bottom:1px solid var(--line2)}
.order-collection:last-child{border-bottom:0}
.order-collection-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}
.order-collection-head b{font:700 14px var(--display);color:var(--accent)}
.order-collection.is-unpaid .order-collection-head b{color:#a65343}
.order-collection>small{display:block;color:var(--sub);font-size:11px;margin-top:3px}
.order-collection .warning-text{color:#a65343;font-weight:600}
.order-collection-proof{margin-top:6px;grid-template-columns:repeat(auto-fill,minmax(64px,1fr))}
.order-collection-proof .hv-thumb{display:block}

/* 员工注释 (staff-notes.ts): a post-it pinned at the top-right of the desktop order drawers and of the phone's order page.
   The dock is a zero-height box between the header and the scroll body; the pin floats over the body and takes no flow
   space. Shared by rental-ui.css and mobile-ui.css (scripts/build-fleet.mjs). */
.staff-notes-dock{position:relative;height:0;overflow:visible;z-index:5;flex:0 0 auto;--dock-inset:24px;--dock-top:10px}
.staff-notes-pin{--note-strong:#fff1a8;--note-line:#e9d47a;--note-ink:#574608;--note-meta:#8d7520;position:absolute;top:var(--dock-top);right:var(--dock-inset);width:calc(100% - 2*var(--dock-inset));display:flex;flex-direction:column;align-items:flex-end;pointer-events:none}
.staff-notes-pin>*{pointer-events:auto}
.staff-notes-tab{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border:1px solid var(--note-line);border-radius:4px;background:var(--note-strong);color:var(--note-ink);font-size:12px;font-weight:700;box-shadow:0 8px 18px -10px #6e5a10;transform:rotate(-2deg);transform-origin:100% 0;cursor:pointer}
.staff-notes-tab .fi{width:16px;height:16px}.staff-notes-tab:hover{background:#ffeb8f}
.staff-notes-pin.is-open .staff-notes-tab{display:none}
.staff-notes-pin:not(.is-open) .staff-notes-panel{display:none}
.staff-notes-panel{position:relative;display:flex;flex-direction:column;width:min(320px,100%);max-height:min(60vh,440px);background:linear-gradient(180deg,#fff4b0,#ffefa0);border:1px solid var(--note-line);border-radius:3px;color:var(--note-ink);box-shadow:0 18px 34px -16px #6e5a10,0 2px 6px #6e5a1022;transform:rotate(-1.2deg);transform-origin:100% 0}
.staff-notes-panel::before{content:"";position:absolute;top:-9px;left:50%;width:76px;height:20px;transform:translateX(-50%) rotate(-2deg);background:#ffffff80;border:1px solid #00000010;box-shadow:0 1px 2px #0000000d}
.staff-notes-head{display:flex;align-items:center;gap:8px;padding:10px 12px 6px}
.staff-notes-head b{font:700 13px var(--display,inherit)}
.staff-notes-head small{flex:1;min-width:0;font-size:10px;color:var(--note-meta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.staff-notes-fold{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;border-radius:6px;background:transparent;color:var(--note-meta);cursor:pointer;padding:0}
.staff-notes-fold:hover{background:#00000010}.staff-notes-fold .fi{width:16px;height:16px}
.staff-notes-scroll{overflow:auto;min-height:0;padding:0 12px;scrollbar-width:thin}
.staff-note{padding:8px 0 10px;color:var(--note-ink)}
.staff-notes-all .staff-note{border-top:1px dashed #dcc45f}
.staff-note-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.6}
.staff-note footer{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px}
.staff-note-meta{font-size:11px;color:var(--note-meta);overflow-wrap:anywhere}
.staff-note-actions{display:flex;gap:6px}
.staff-note-actions .btn.mini,.staff-notes-foot .btn.mini{min-height:26px;padding:3px 10px;font-size:11px;background:#fffbe6;border-color:var(--note-line);color:var(--note-ink);border-radius:999px}
.staff-note-actions .btn.mini.del{color:#a9443d;background:#fff8f6;border-color:#f0d7d2}
.staff-notes-foot .btn .fi{width:14px;height:14px}
.staff-notes-all{margin:0}.staff-notes-all>summary{cursor:pointer;font-size:12px;color:var(--note-meta);padding:6px 0}
.staff-notes-foot{padding:8px 12px 12px;border-top:1px dashed #dcc45f}
.m-shell>.staff-notes-dock{--dock-inset:16px;--dock-top:8px}
.m-app .staff-notes-tab{height:40px}
@media(max-width:600px){.fleet-order-drawer>.staff-notes-dock,.drawer>.staff-notes-dock{--dock-inset:20px}.staff-notes-panel{width:100%;max-height:50vh}}
.note-flag{display:inline-flex;vertical-align:middle;margin-left:6px;color:#b08d12}.note-flag .fi{width:14px;height:14px}

/* 订单详情抽屉 (order drawers, desktop rental-ui.css only — mobile-ui.css has its own .kv / .detail-pair): one skin for the
   offline drawer (#drawer: .dr-head / .dr-body / .dr-act, legacy.js openDrawer) and the online drawer (dialog.fleet-order-drawer:
   header / .order-detail-body / footer.order-detail-actions, app.ts renderOrderDetail). Header = tag row + close; body = vehicle
   title + mono sub lines + warnings + collapsible <details class="dr-sec"> sections (drawer-section.ts); rows = .kv / .detail-pair.
   Every rule here uses child combinators where a nested component (handover .hv-side, staff-notes post-it, courier legs,
   collections) carries its own header / section / h4, so nothing leaks into them. */
.drawer,.fleet-order-drawer{width:min(var(--drawer-w),100vw);background:#fff;color:var(--ink)}
.drawer{border-left:1px solid var(--line);box-shadow:-16px 0 64px #15332218;border-radius:16px 0 0 16px}
.fleet-order-drawer{position:fixed;inset:0 0 0 auto;margin:0;height:100dvh;max-height:100dvh;border-radius:16px 0 0 16px;border-right:0}
.fleet-order-drawer[open]{display:flex;flex-direction:column}
/* header: tag row (type / source / status chips) + title + close */
.fleet-order-drawer>header,.dr-head{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:16px var(--drawer-pad) 14px;border-bottom:1px solid var(--line2)}
.fleet-order-drawer>header h2{font:700 20px var(--display);margin:0;overflow-wrap:anywhere}
.dr-headline{flex:1 1 100%;min-width:0}.dr-headline .eyebrow{margin:0 0 4px}
.dr-tags{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0;flex:1 1 auto}
.dr-head .tag,.dr-tags .tag{font-family:var(--mono);background:#f0f3f1;color:var(--sub);border-radius:20px;padding:2px 9px;font-size:11px;white-space:nowrap}
.dr-head .tag.deleted,.dr-tags .tag.deleted{background:#fcefeb;color:var(--danger)}
.dr-head strong.warning,.dr-tags strong.warning{flex:1 1 100%;padding:8px 12px;font-size:11px}
.dr-head .x,.fleet-order-drawer>header>.x{margin-left:auto;width:34px;height:34px;border-radius:10px;font-size:15px;line-height:1;padding:0}
/* body */
.order-detail-body,.dr-body{flex:1 1 auto;min-height:0;overflow:auto;padding:18px var(--drawer-pad) 26px}
.order-detail-hero{margin:0 0 6px}
.dr-car,.order-detail-hero>h3.dr-car{font:700 23px var(--display);margin:0;letter-spacing:-.03em;overflow-wrap:anywhere}
.dr-sub{font-family:var(--mono);font-size:11px;color:var(--sub);margin-top:4px;line-height:1.6;overflow-wrap:anywhere}
.dr-sub b{color:var(--ink);font-weight:600}
.dr-warnings{display:grid;gap:8px;margin:12px 0 2px}
.dr-warnings:empty{display:none}
.dr-warnings>*{margin:0}
.warning.is-info{background:#f1f8f4;border-color:#d7e8de;color:#3f6a52}
/* collapsible sections */
details.dr-sec{margin-top:16px;padding-top:10px;border-top:1px solid var(--line-strong);min-width:0}
details.dr-sec>summary{list-style:none;display:flex;align-items:center;gap:8px;padding:6px 0;cursor:pointer;user-select:none;border-radius:8px}
details.dr-sec>summary::-webkit-details-marker{display:none}
details.dr-sec>summary::after{content:'';flex:0 0 7px;width:7px;height:7px;margin:0 4px 2px 2px;border-right:2px solid #8a978f;border-bottom:2px solid #8a978f;transform:rotate(-45deg);transition:transform .15s}
details.dr-sec[open]>summary::after{transform:rotate(45deg);margin-bottom:4px}
details.dr-sec>summary:hover{color:var(--accent)}
details.dr-sec>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
details.dr-sec>summary>h4{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:8px;margin:0;font:700 14px var(--display);color:var(--heading);letter-spacing:-.02em}
details.dr-sec>summary>h4 .dr-title{display:inline-flex;align-items:center;gap:8px;flex:0 1 auto;min-width:0}
details.dr-sec>summary>h4 .dr-meta{flex:1 1 auto;min-width:0;text-align:right;font:400 11px/1.5 var(--sans);color:var(--sub);overflow-wrap:anywhere}
details.dr-sec>summary>h4 .status{font-size:10px}
details.dr-sec>.dr-sec-body{padding-top:2px;min-width:0}
details.dr-sec details.dr-sec{margin-top:10px;padding-top:4px;border-top:1px dashed var(--line-strong)}
details.dr-sec details.dr-sec>summary>h4{font-size:13px}
.dr-sec-body>p{font-size:12px;line-height:1.7;margin:8px 0 0}
.dr-sec-body>p.muted,.dr-sec-body>.muted{margin:8px 0 0}
/* buttons that follow a paragraph (在线收款 / 客户邮件 / 生成合同 rows) sit on their own line with room above and below */
.dr-sec-body>.btn,.dr-sec-body>.mini{margin:14px 6px 6px 0}.dr-sec-body>.btn+.btn,.dr-sec-body>.mini+.mini{margin-left:0}
.dr-sec-body>.warning{margin:8px 0}
.dr-sec-body>.empty{font-size:12px;color:var(--sub);padding:8px 0}
.dr-sec-body .ct-up{margin-top:10px}
/* rows: the offline .kv look for both drawers */
.kv,.detail-pair{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:9px 0;border-bottom:1px solid var(--line2);font-size:12px;line-height:1.5}
.kv>span:first-child,.detail-pair>span{color:var(--label);min-width:0;overflow-wrap:anywhere}
.kv>span:last-child,.detail-pair>b{font-family:var(--sans);font-size:12px;font-weight:500;text-align:right;overflow-wrap:anywhere;flex-shrink:0;max-width:62%}
.kv>span:last-child .muted,.detail-pair>b .muted{font-size:11px}
.detail-pair>span.muted,.detail-pair>b.muted{color:var(--sub);font-weight:400}
.kv.tot,.detail-pair.total{font-weight:700;border-bottom:0;border-top:1px solid var(--line);margin-top:6px;padding-top:14px}
/* one rule between a list and its total, and none under the last row of a section */
.kv:has(+.kv.tot),.detail-pair:has(+.detail-pair.total),.dr-sec-body>.kv:last-child,.dr-sec-body>.detail-pair:last-child,.dr-sec-body>div>.kv:last-child{border-bottom:0}
.kv.tot>span:last-child,.detail-pair.total>b{font:700 20px var(--display);color:var(--accent)}
.kv.neg>span:last-child,.detail-pair.neg>b{color:var(--danger)}
.kv.tot>span:last-child .pay{font:700 13px var(--sans)}
.kv.tot>span:last-child .pay.paid{color:var(--paid)}.kv.tot>span:last-child .pay.partial{color:#8a6d1f}.kv.tot>span:last-child .pay.unpaid{color:var(--danger)}.kv.tot>span:last-child .pay.refunded{color:var(--sub)}
.kv .tag,.detail-pair .tag{display:inline-block;font-family:var(--mono);background:#f0f3f1;color:var(--sub);border-radius:20px;padding:1px 8px;font-size:10px;margin-left:4px;vertical-align:middle}
.kv-sub{margin:14px 0 2px;font:700 11px var(--sans);letter-spacing:.3px;text-transform:uppercase;color:var(--sub)}
.kv.ct{align-items:center;gap:8px}.kv.ct>span:first-child{min-width:0;overflow-wrap:anywhere;color:var(--ink)}.kv.ct small{display:block;color:var(--sub);font-family:var(--mono);font-size:10.5px;margin-top:2px}.kv.ct>span:last-child{max-width:none}
/* refund / history rows */
.refund-row{font-size:12px;border-bottom:1px solid var(--line2);padding:10px 0}
.refund-row:last-child{border-bottom:0}
.refund-row-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.refund-row p{font-size:11px;color:var(--sub);margin:6px 0 0;line-height:1.6}
.dr-sec-body h4.muted{font:700 11px var(--sans);letter-spacing:.3px;text-transform:uppercase;color:var(--sub);margin:14px 0 2px}
/* footer */
.dr-act,.order-detail-actions{flex:0 0 auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:14px var(--drawer-pad);border-top:1px solid var(--line);background:#fff}
.dr-act .btn,.order-detail-actions .btn{font-size:11px}
.dr-act .del{margin-right:auto}
/* component glue inside sections */
.btn.mini{min-height:30px;padding:4px 10px;font-size:11px}
.order-ledger-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:12px}
.order-ledger-actions .muted{margin:0;font-size:12px;flex:1 1 260px}
.order-contract .detail-pair .btn{min-height:30px;padding:4px 10px}
.order-contract-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.dr-sec .courier-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.dr-sec .courier-select,.dr-sec .courier-return-select{flex:1 1 200px;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:13px;background:#fff}
.dr-sec .courier-phone-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.dr-sec .courier-phone{flex:1 1 160px;min-width:0}
.dr-sec-body>.hv,.dr-sec-body>div>.hv{margin-top:8px}
.dr-sec-body .order-collections{margin-top:14px}
.dr-sec-body>.warning:first-child{margin-top:6px}
.order-visibility-actions{margin-top:16px}
@media(max-width:600px){
  .drawer,.fleet-order-drawer{width:100vw;max-width:100vw;border-radius:0;border-left:0}
  .fleet-order-drawer>header,.dr-head{padding:14px 20px 12px}
  .order-detail-body,.dr-body{padding:16px 20px 24px}
  .dr-act,.order-detail-actions{padding:12px 20px}
  .dr-act .btn,.order-detail-actions .btn{min-height:42px}
  .kv>span:last-child,.detail-pair>b{max-width:58%}
}
/* 合同签署 (esign.ts agreementSection): chip row, recipient rows, action buttons; inside details.dr-sec (manual drawer) or .order-contract (online panel). */
.agreement-box{min-width:0}
.agreement-head{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;padding:8px 0 4px}
.agreement-head .status{font-size:10px}
.agreement-head .tag{font-family:var(--mono);background:#f0f3f1;color:var(--sub);border-radius:20px;padding:1px 8px;font-size:10px}
.agreement-head small{font-size:11px}
.agreement-party>span small{display:block;color:var(--sub);font-family:var(--mono);font-size:10.5px;margin-top:2px}
.agreement-party>b{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.agreement-party>b small{font-size:10.5px}
.agreement-files{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.agreement-files small{flex:1 1 100%;font-size:11px;line-height:1.6}
.agreement-sync{font-size:11px}
.agreement-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.agreement-title{font:700 11px var(--sans);letter-spacing:.3px;text-transform:uppercase;color:var(--sub);margin:16px 0 2px}
.order-agreement{margin-top:4px}
.kv.ct.ct-signed>span:first-child{color:var(--accent)}
