  :root{
    --stage:#D7DEE7; --toolbar-bg:#0F2A44; --toolbar-ink:#fff;
    --bg:#F2F5F9; --card:#FFFFFF; --ink:#1F2A37; --muted:#6B7280;
    --primary:#2E75B6; --primary-dark:#1F4E79; --accent-bg:#EAF2FA; --accent-ink:#2E75B6;
    --line:#E5EAF0; --ok:#1E8E5A; --ok-bg:#E6F4EC; --warn:#C2571A; --warn-bg:#FDF0E4;
    --danger:#C0392B; --danger-bg:#FBE9E7;
    --navbar-bg:#2E75B6; --navbar-ink:#FFFFFF;
    --tab-bg:#FFFFFF; --tab-ink:#8A94A3; --tab-active:#2E75B6;
    --input-bg:#F5F7FA; --input-ink:#1F2A37; --shadow:0 2px 10px rgba(15,42,68,.10);
  }
  html[data-theme="b"]{
    --stage:#0A1524; --toolbar-bg:#0A1524; --toolbar-ink:#E8EEF6;
    --bg:#0E1A2B; --card:#15263C; --ink:#E8EEF6; --muted:#8FA3BC;
    --primary:#3D8FD9; --primary-dark:#5BA0E0; --accent-bg:#1B2F4A; --accent-ink:#6FB1E8;
    --line:#243952; --ok:#3DCC8F; --ok-bg:#123328; --warn:#E8A24B; --warn-bg:#332715;
    --danger:#F2706D; --danger-bg:#3A1E1E;
    --navbar-bg:#12233A; --navbar-ink:#E8EEF6;
    --tab-bg:#101E31; --tab-ink:#8FA3BC; --tab-active:#E8B64C;
    --input-bg:#0F1D30; --input-ink:#E8EEF6; --shadow:0 2px 10px rgba(0,0,0,.35);
  }
  html[data-theme="c"]{
    --stage:#E4D2D4; --toolbar-bg:#7A0E1E; --toolbar-ink:#FFF0F0;
    --bg:#FBF4F4; --card:#FFFFFF; --ink:#2A1B1E; --muted:#8A6E72;
    --primary:#C8102E; --primary-dark:#8E0E21; --accent-bg:#FBE9EC; --accent-ink:#B01C31;
    --line:#EFDFE0; --ok:#1E8E5A; --ok-bg:#E6F4EC; --warn:#C2571A; --warn-bg:#FDF0E4;
    --danger:#C0392B; --danger-bg:#FBE9E7;
    --navbar-bg:#C8102E; --navbar-ink:#FFFFFF;
    --tab-bg:#FFFFFF; --tab-ink:#A08A8E; --tab-active:#C8102E;
    --input-bg:#FAF2F2; --input-ink:#2A1B1E; --shadow:0 2px 10px rgba(120,20,30,.12);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{
    font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif;
    background:var(--stage);color:var(--ink);display:flex;align-items:center;justify-content:center;
    min-height:100vh;padding:24px 12px;
  }
  button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
  input,select{font-family:inherit}

  /* ===== 主题切换（我的页） ===== */
  .theme-switch{display:flex;gap:6px;flex:1;min-width:0}
  .theme-btn{
    flex:1;font-size:12.5px;padding:6px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.35);
    color:var(--toolbar-ink);background:transparent;transition:background .15s;white-space:nowrap;text-align:center;
  }
  .theme-btn:hover{background:rgba(255,255,255,.15)}
  .theme-btn.on{background:#fff;color:#0F2A44;font-weight:700;border-color:#fff}
  .card .theme-btn{border-color:var(--border);color:var(--ink);background:transparent}
  .card .theme-btn:hover{background:var(--hover)}
  .card .theme-btn.on{background:var(--primary);color:#fff;font-weight:700;border-color:var(--primary)}

  /* ===== 手机壳 ===== */
  .phone{
    width:375px;max-width:100%;height:780px;max-height:calc(100vh - 120px);
    background:var(--bg);border-radius:38px;overflow:hidden;position:relative;
    box-shadow:0 18px 50px rgba(10,25,45,.35);border:6px solid #1B2634;margin-top:0;
    display:flex;flex-direction:column;
  }
  .statusbar{
    height:34px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;
    padding:0 22px;color:var(--navbar-ink);background:var(--navbar-bg);font-size:12px;font-weight:600;
  }
  .statusbar .sb-right{display:flex;align-items:center;gap:6px}
  .navbar{
    height:44px;flex:0 0 auto;display:flex;align-items:center;justify-content:flex-start;position:relative;
    padding-left:14px;
    background:var(--navbar-bg);color:var(--navbar-ink);font-size:16px;font-weight:700;
  }
  .navbar .nav-title-wrap{display:flex;align-items:center;gap:7px}
  .navbar .ver{font-size:10px;color:#D99A00;font-weight:400;margin-left:1px;white-space:nowrap}
  .navbar .nav-logo{width:24px;height:24px;border-radius:50%;flex:0 0 auto;object-fit:contain}
  .navbar .nav-capsule{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:flex;gap:6px}
  .navbar .nav-avatar{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.16);border:none;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s;padding:0}
  .navbar .nav-avatar:hover{background:rgba(255,255,255,.28)}
  .navbar .nav-avatar svg{width:19px;height:19px}
  .navbar .nav-avatar.logged{background:#2E75B6;box-shadow:0 0 0 2px rgba(255,255,255,.45)}
  .screen{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;-webkit-overflow-scrolling:touch}
  .page{display:none;padding:14px 14px 24px}
  .page.active{display:block}

  /* ===== 通用组件 ===== */
  .card{background:var(--card);border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:var(--shadow);border:1px solid var(--line)}
  .card-t{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
  .tm-wrap{height:105px;overflow:hidden;position:relative}
  .tm-track{will-change:transform}
  .tm-track.tm-scroll{animation:tmUp 16s linear infinite}
  .tm-track.tm-scroll:hover{animation-play-state:paused}
  @keyframes tmUp{0%{transform:translateY(0)}100%{transform:translateY(-50%)}}
  .card-t .ct{font-size:15px;font-weight:700;color:var(--ink)}
  .card-t .more{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:2px}
  .pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600}
  .pill.ok{background:var(--ok-bg);color:var(--ok)}
  .pill.warn{background:var(--warn-bg);color:var(--warn)}
  .pill.danger{background:var(--danger-bg);color:var(--danger)}
  .pill.blue{background:var(--accent-bg);color:var(--accent-ink)}
  .pill.hist{background:#EEF1F5;color:#6b7785}
  .ldg-date{color:var(--muted);font-size:11px;margin-left:4px}
  .divider{height:1px;background:var(--line);margin:10px 0}

  /* 工作台 */
  .hello{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
  .hello .hi{display:flex;align-items:baseline;justify-content:space-between;flex:1;min-width:0;font-size:17px;font-weight:700}
  #homePlate{font-size:20px;font-weight:800;color:var(--ink)}
  #homeClock{font-size:12px;color:var(--muted);font-weight:400;white-space:nowrap}
  /* 滚动通知条 */
  .notice{display:flex;align-items:center;gap:8px;background:var(--accent-bg);border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:12px;overflow:hidden}
  .notice svg{width:16px;height:16px;color:var(--primary);flex:0 0 auto}
  .n-scroll{flex:1;overflow:hidden;white-space:nowrap;min-width:0}
  .n-inner{display:inline-flex;align-items:center;gap:48px;width:max-content;animation:scroll-left 18s linear infinite}
  .n-item{display:inline-flex;align-items:center;gap:14px;white-space:nowrap}
  .n-text{font-size:12px;color:var(--ink)}
  .n-text.red{color:var(--danger);font-weight:600}
  @keyframes scroll-left{from{transform:translateX(0)}to{transform:translateX(-50%)}}
  @media (prefers-reduced-motion:reduce){.n-inner{animation:none}}
  .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
  .stats.sub{grid-template-columns:1fr;margin-bottom:14px}
  .stats.sub .stat{padding:8px 6px;display:flex;flex-direction:column;justify-content:center}
  .stat{background:var(--card);border-radius:12px;padding:12px 6px;text-align:center;border:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center}
  #carState.busy{color:#D99A00}
  #carState.idle{color:#2E7D32}
  #carCond.ok{color:var(--primary)}
  #carCond.err{color:var(--warn)}
  #carCond.audit{color:var(--primary-dark)}
  #carCond.repair{color:#C0392B}
  #carState,#carCond{cursor:pointer;font-size:20px}
  .m-options{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:0 18px 14px}
  .m-opt{border:1px solid var(--line);background:#fff;border-radius:10px;padding:11px 0;font-size:14px;color:var(--primary-dark);cursor:pointer;text-align:center;transition:background .15s,border-color .15s}
  .m-opt:active{background:var(--accent-bg);border-color:var(--primary)}
  .stat b small{font-size:11px;font-weight:700}
  .mp-head{width:100%;padding:0 2px}
  .mp-row{display:flex;align-items:center;gap:4px;width:100%;margin-top:7px}
  .mp-txt{display:inline-flex;align-items:baseline;flex-shrink:0}
  .mp-lab{font-size:11px;color:var(--primary)}
  .mp-num{min-width:30px;text-align:center}
  .stat .mp-num b{display:inline;font-size:13px;color:var(--primary)}
  .mp-unit{font-size:11px;color:var(--primary)}
  .mp-bar{height:11px;background:#C9CDD3;border-radius:999px;overflow:hidden;flex:1;min-width:0}
  .mp-fill{height:100%;background:var(--primary);border-radius:999px}
  html[data-theme="c"] .mp-bar{background:#C9CDD3}
  html[data-theme="c"] .mp-fill{background:var(--primary)}
  .mp-tip{font-size:10px;color:var(--muted);margin-top:4px;line-height:1.4;text-align:center}
  .stat-line{display:flex;align-items:baseline;justify-content:center;gap:3px}
  .stat-line b{font-size:15px;color:var(--primary-dark);line-height:1.2}
  .stat-line span{font-size:11px;color:var(--muted)}
  .stat-line + .stat-line{border-top:1px dashed var(--line);padding-top:6px;margin-top:3px}
  .stat b{display:block;font-size:22px;color:var(--primary-dark)}
  .stat span{font-size:11.5px;color:var(--muted)}
  .quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:4px}
  .qitem{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 4px;text-align:center;box-shadow:var(--shadow);transition:transform .12s}
  .qitem:active{transform:scale(.95)}
  .qitem svg{width:26px;height:26px;display:block;margin:0 auto 6px}
  .qitem span{font-size:12px;color:var(--ink);font-weight:600}
  .qitem .qsub{display:block;font-size:10px;color:var(--muted);font-weight:400;margin-top:1px}

  /* ===== 三区板块 ===== */
  .zone{margin-bottom:14px}
  .zone-t{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);font-weight:700;margin-bottom:8px}
  .zone-t .ztag{font-size:10px;line-height:1;padding:0;border-radius:0;background:transparent;color:var(--primary);font-weight:600;letter-spacing:.5px}
  .zone-t .ztag svg{width:14px;height:14px;display:block;stroke:var(--primary);fill:var(--primary)}
  .zone-t .ztag.cc svg{fill:none}
  .zone-t .ztag.rule svg{fill:none}
.card-t .ztag{display:inline-flex;align-items:center;justify-content:center;margin-right:6px;vertical-align:middle}
.card-t .ztag svg{width:16px;height:16px;display:block;stroke:var(--primary);fill:none}
  .ops-main{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .op-main{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:15px 8px 13px;border-radius:14px;border:1px solid transparent;background:var(--primary);color:#fff;box-shadow:var(--shadow);transition:transform .12s;position:relative}
  .op-main:active{transform:scale(.96)}
  .op-main svg{width:26px;height:26px;margin-bottom:5px}
  .op-main b{font-size:15px;font-weight:700}
  .op-main small{font-size:11px;opacity:.9}
  .op-main.alt{background:var(--accent-bg);border-color:var(--primary);color:var(--primary-dark)}
  .quick.cols3{grid-template-columns:repeat(3,1fr)}
  .quick.cols2{grid-template-columns:repeat(2,1fr);gap:10px}
  .qitem{position:relative}
  .qempty{grid-column:1/-1;color:var(--muted);font-size:12px;padding:14px 0;text-align:center;background:var(--card);border:1px dashed var(--line);border-radius:12px}
  .qitem .qbadge{display:block;width:max-content;margin:4px auto 0;font-size:9px;line-height:1;padding:2px 5px;border-radius:4px;background:var(--warn-bg);color:var(--warn);font-weight:600}
  /* 登记中心列表项 */
  .mlist{display:flex;align-items:center;gap:12px;width:100%;padding:13px 12px;border-radius:12px;background:var(--input-bg);border:1px solid var(--line);margin-bottom:9px;text-align:left}
  .mlist:last-child{margin-bottom:0}
  .mlist svg{width:24px;height:24px;color:var(--primary);flex:0 0 auto}
  .mlist .mt{font-size:14.5px;font-weight:700;color:var(--ink)}
  .mlist .ms{font-size:11.5px;color:var(--muted);margin-left:auto}
  .mlist .mtag{font-size:9.5px;line-height:1;padding:2px 5px;border-radius:4px;background:var(--warn-bg);color:var(--warn);font-weight:600}
  .mlist .mwrap{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}

  /* 列表行 */
  .row{display:flex;align-items:center;gap:10px;padding:10px 0}
  .row + .row{border-top:1px solid var(--line)}
  .row .rk{width:42px;height:42px;border-radius:10px;background:var(--accent-bg);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
  .row .rk.warn{background:var(--warn-bg);color:var(--warn)}
  .row .rm{flex:1;min-width:0}
  .row .rm b{display:block;font-size:14.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .row .rm span{display:block;font-size:12px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .row .rr{text-align:right;flex:0 0 auto}
  .row .rr b{display:block;font-size:14px;color:var(--ink)}
  .row .rr span{display:block;font-size:11px;color:var(--muted)}

  /* 表单 */
  .form-item{margin-bottom:14px}
  .form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
  .form-row .form-item{margin-bottom:0}
  .to-row{display:flex;gap:8px;margin-bottom:8px}
  .to-row .input{flex:1;min-width:0}
  .to-del{width:38px;height:46px;flex:0 0 auto;border-radius:10px;border:1px solid var(--line);background:var(--input-bg);color:var(--muted);font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}
  .to-add{display:flex;align-items:center;justify-content:center;width:100%;height:40px;border-radius:10px;border:1px dashed var(--primary);background:var(--accent-bg);color:var(--primary);font-size:14px;font-weight:600;cursor:pointer}
  .sign-box{position:relative;border:1px dashed var(--line);border-radius:12px;background:var(--card);overflow:hidden}
  .sign-box canvas{display:block;width:100%;height:160px;touch-action:none;cursor:crosshair}
  .sign-ph{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center;color:var(--muted);font-size:13px;pointer-events:none}
  .sign-clear{position:absolute;right:8px;top:8px;padding:5px 12px;border-radius:8px;border:1px solid var(--line);background:var(--input-bg);color:var(--muted);font-size:12px;cursor:pointer}
  .form-item > label{display:flex;align-items:center;gap:2px;font-size:13px;color:var(--muted);margin-bottom:6px}
  .form-item > label .req{color:var(--danger)}
  .input{
    width:100%;height:44px;border-radius:10px;border:1px solid var(--line);background:var(--input-bg);
    color:var(--input-ink);font-size:15px;padding:0 12px;outline:none;
  }
  .input:focus{border-color:var(--primary)}
  input.input[type=number]::-webkit-inner-spin-button,input.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}
  input.input[type=number]{-moz-appearance:textfield;appearance:textfield}
  textarea.input{resize:none}
  .input.hint{color:var(--muted)}
  select.input{appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23999' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}
  .cur-car{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;background:var(--accent-bg);border:1px solid var(--primary)}
  .cur-car .cc-ic{width:40px;height:40px;flex:0 0 auto;border-radius:10px;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center}
  .cur-car .cc-ic svg{width:22px;height:22px}
  .cur-car .cc-main{flex:1;min-width:0}
  #outPlate{font-size:17px;font-weight:800;color:var(--primary-dark);display:block}
  .cc-sub{display:block;font-size:12px;color:var(--muted);margin-top:2px}
  .mile-row{display:flex;gap:8px}
  .mile-row .input{flex:1;min-width:0}
  .mile-cam{display:flex;align-items:center;justify-content:center;gap:4px;height:44px;padding:0 12px;border-radius:10px;border:1px solid var(--primary);background:var(--accent-bg);color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;flex:0 0 auto;white-space:nowrap}
  .mile-cam svg{width:16px;height:16px}
  .mile-tip{font-size:11px;color:var(--muted);margin-top:4px}
  .mile-thumb{position:relative;display:flex;align-items:center;gap:8px;margin-top:8px}
  .mile-thumb img{width:76px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--line);cursor:pointer;display:block}
  .thumb-tag{font-size:11px;color:var(--primary);background:var(--accent-bg);border:1px solid var(--primary);border-radius:999px;padding:2px 8px}
  .thumb-del{position:absolute;right:-6px;top:-6px;width:20px;height:20px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--muted);font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
  .img-preview{max-width:88%;max-height:78%;background:var(--card);border-radius:14px;padding:12px;display:flex;flex-direction:column;align-items:center;gap:10px;border-top:3px solid var(--primary)}
  .img-preview img{max-width:100%;max-height:58vh;border-radius:8px;display:block;background:#111}
  .img-close{padding:8px 24px;border-radius:10px;border:none;background:var(--primary);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
  .img-close:hover{background:var(--primary-dark)}
  .quick-fill{position:absolute;right:12px;top:96px;bottom:auto;display:flex;align-items:center;justify-content:center;gap:0;width:34px;height:34px;padding:0;border-radius:50%;border:1px solid var(--primary);background:var(--accent-bg);color:var(--primary-dark);font-size:12px;font-weight:600;box-shadow:0 2px 8px rgba(46,117,182,.18);cursor:pointer;z-index:35;white-space:nowrap;transition:width .25s,border-radius .25s,padding .25s,gap .25s}
  .quick-fill svg{width:16px;height:16px;flex:0 0 auto}
  .quick-fill .qf-label{display:none;max-width:0;opacity:0;overflow:hidden;transition:max-width .25s,opacity .2s}
  .quick-fill.open{width:auto;gap:5px;padding:7px 12px;border-radius:999px}
  .quick-fill.open .qf-label{display:inline;max-width:200px;opacity:1}
  .quick-fill:hover{background:var(--primary);color:#fff}
  .quick-fill.done{opacity:0;transform:translateY(6px);pointer-events:none;transition:opacity .3s,transform .3s}
  .chips{display:flex;flex-wrap:wrap;gap:8px}
  .chip{
    font-size:13px;padding:8px 14px;border-radius:999px;border:1px solid var(--line);
    background:var(--input-bg);color:var(--ink);transition:all .12s;
  }
  .chip.on{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
  .picker-list{display:none;margin-top:6px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
  .picker-list.show{display:block}
  .picker-list .pi{padding:11px 12px;font-size:14px;display:flex;justify-content:space-between;align-items:center;gap:8px}
  .picker-list .pi + .pi{border-top:1px solid var(--line)}
  .picker-list .pi-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
  .picker-list .pi-plate{font-size:14px;font-weight:700;color:var(--ink)}
  .picker-list .pi-plate em{font-style:normal;font-size:11px;font-weight:400;color:var(--muted);margin-left:6px}
  .picker-list .pi:active{background:var(--accent-bg)}
  .btn{display:block;width:100%;height:46px;border-radius:12px;font-size:16px;font-weight:700;margin-top:6px;transition:filter .12s}
  .btn:active{filter:brightness(.92)}
  .btn.primary{background:var(--primary);color:#fff}
  .btn.primary:hover{background:var(--primary-dark)}
  .btn.ghost{background:var(--input-bg);color:var(--ink);border:1px solid var(--line)}

  /* 费用登记 & 车辆档案 */
  .fee-today{margin-left:auto;font-size:11.5px;color:var(--primary);font-weight:700;background:var(--accent-bg);padding:3px 9px;border-radius:999px;white-space:nowrap}
  .fleet-card{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--card)}
  .fleet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
  .fleet-head b{font-size:15px;color:var(--primary-dark)}
  .fleet-head-r{display:flex;align-items:center;gap:8px}
  .fleet-edit{font-size:12px;color:var(--primary);border:1px solid var(--line);background:var(--accent-bg);padding:3px 12px;border-radius:999px;font-weight:600}
  .fleet-edit:hover{background:var(--primary);color:#fff}
  .fleet-edit.locked{color:var(--muted);background:var(--input-bg);border-color:var(--line)}
  .fleet-edit.locked:hover{background:var(--input-bg);color:var(--muted)}
  .btn.locked{background:var(--input-bg)!important;color:var(--muted)!important}
  .fleet-sub{display:flex;flex-wrap:wrap;gap:6px 14px;margin:-2px 0 10px;font-size:12px;color:var(--muted)}
  .fleet-sub span{white-space:nowrap}
  .fleet-grid{display:grid;grid-template-columns:1fr;gap:6px 0;font-size:12px;color:var(--muted);line-height:1.6}
  .fleet-grid span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .rank-list{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:2px 14px}
  .rank-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
  .rank-row:last-child{border-bottom:none}
  .rk-num{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .rk-num.n1{color:#D99A00}
  .rk-num.n2{color:#9AA5B1}
  .rk-num.n3{color:#C0794B}
  .rk-num svg{width:20px;height:20px;display:block}
  .rk-plate{font-size:13px;font-weight:600;color:var(--primary-dark);flex:1}
  .rk-times{display:inline-flex;align-items:baseline;font-size:11px;color:var(--muted)}
  .rk-times em{font-style:normal}
  .rk-times i{display:inline-block;min-width:30px;text-align:center;font-style:normal;font-weight:700;color:var(--primary-dark)}
  .rk-mile{font-size:12px;color:var(--muted);font-weight:600}
  #fleetModal{max-height:82vh;overflow-y:auto}
  .pill.purple{background:#EDE7F6;color:#5E35B1}

  /* 台账 */
  .ledger-sum{display:flex;gap:8px;margin-bottom:12px}
  .ledger-sum .ls{flex:1;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center;box-shadow:var(--shadow)}
  .ledger-sum .ls b{display:block;font-size:18px;color:var(--primary-dark)}
  .ledger-sum .ls span{font-size:11px;color:var(--muted)}
  .ledger-tb{width:100%;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);-webkit-overflow-scrolling:touch}
  .ledger-tb.scroll-limit{max-height:520px}
  .ledger-tb table{border-collapse:separate;border-spacing:0;min-width:1960px;font-size:11px;width:auto}
  .ledger-tb th,.ledger-tb td{border:1px solid var(--line);padding:6px 8px;white-space:nowrap;text-align:center;vertical-align:middle}
  .ledger-tb thead th{background:var(--primary);color:#fff;font-weight:600;position:sticky;top:0;z-index:2}
  .ledger-tb td:first-child,.ledger-tb th:first-child{position:sticky;left:0;background:var(--card)}
  .ledger-tb tbody td:first-child{background:var(--card)}
  .ledger-tb .sum-row td:first-child{background:var(--accent-bg)}
  .ledger-tb thead th:first-child{background:var(--primary);z-index:3}
  .ledger-tb .sum-row td{background:var(--accent-bg);color:var(--primary-dark);font-weight:600}
  .ledger-tb tr.d-row td{cursor:pointer;color:#333}
  .ledger-tb tr.d-row:active td{background:var(--accent-bg)}
  .ledger-tb .t-remark{color:var(--danger);font-weight:600}
  .ledger-hint{font-size:10px;color:var(--muted);margin-top:6px;line-height:1.5}
  .pg-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 4px;flex-wrap:wrap}
  .pg-info{font-size:11px;color:var(--muted)}
  .pg-btns{display:flex;gap:5px;flex-wrap:wrap}
  .pg-btn{min-width:30px;height:30px;padding:0 10px;border:1px solid var(--line);background:var(--card);color:var(--primary-dark);border-radius:8px;font-size:12px;cursor:pointer}
  .pg-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
  .pg-btn[disabled]{opacity:.45;cursor:not-allowed}
  .filter-bar .fb-sel{height:32px;padding:0 8px;font-size:12px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);flex:0 0 auto;max-width:130px}
  .filter-bar .fb-export{background:var(--primary);color:#fff;border-color:var(--primary)}
  .filter-bar .fb-plate{color:var(--primary-dark);font-weight:600}
  .filter-bar .fb-date{height:38px;padding:0 8px;font-size:12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);flex:1 1 0;min-width:0}
  .filter-bar .fb-sep{font-size:12px;color:var(--muted);flex:0 0 auto}
  .bf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .bf-type{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:10px 0;font-size:13px;cursor:pointer;transition:all .15s}
  .bf-type:hover{border-color:var(--primary);color:var(--primary)}
  .bf-type.on{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}
  .bf-ph{position:relative;display:inline-block;width:64px;height:64px;margin:4px 6px 4px 0;border-radius:8px;overflow:hidden;border:1px solid var(--line);vertical-align:middle}
  .bf-ph img{width:100%;height:100%;object-fit:cover;display:block}
  .bf-ph i{position:absolute;top:0;right:0;width:18px;height:18px;line-height:16px;text-align:center;background:rgba(0,0,0,.55);color:#fff;font-style:normal;border-radius:0 0 0 6px;cursor:pointer;font-size:12px}
  #scanAllList{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  #scanAllList .m-opt{padding:10px 4px;line-height:1.35}
  #scanAllList .sa-plate{font-size:14px;font-weight:700;color:var(--primary-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #scanAllList .sa-sub{font-size:11px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;align-items:center;justify-content:space-between}
  .filter-bar .fb{flex:0 1 auto;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;height:38px;padding:0 12px;border-radius:10px;background:var(--card);border:1px solid var(--line);font-size:13px;color:var(--muted)}
  .filter-bar .fb-export{flex:1 1 auto;min-width:96px}

  /* 里程块 */
  .mileage-flow{display:flex;align-items:center;gap:6px;text-align:center}
  .mileage-flow .mf{flex:1;background:var(--input-bg);border-radius:10px;padding:8px 4px}
  .mileage-flow .mf b{display:block;font-size:15px;color:var(--ink)}
  .mileage-flow .mf span{font-size:10.5px;color:var(--muted)}
  .mileage-flow .mf.hl{background:var(--accent-bg)}
  .mileage-flow .mf.hl b{color:var(--primary-dark);font-size:17px}
  .mileage-flow .ar{color:var(--muted);font-size:14px}
  .kv{display:flex;justify-content:space-between;padding:7px 0;font-size:13.5px}
  .kv + .kv{border-top:1px dashed var(--line)}
  .kv .k{color:var(--muted)}
  .kv .v{color:var(--ink);font-weight:600;text-align:right}

  /* 我的 */
  .profile{display:flex;align-items:center;gap:12px;padding:6px 2px}
  .avatar{width:54px;height:54px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
  .profile .pn b{display:block;font-size:17px}
  .profile .pn span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
  .menu-item{display:flex;align-items:center;gap:10px;padding:13px 2px;font-size:14.5px;color:var(--ink)}
  .menu-item + .menu-item{border-top:1px solid var(--line)}
  .menu-item svg{width:20px;height:20px;flex:0 0 auto}
  .menu-item .mi-arrow{margin-left:auto;color:var(--muted)}
  /* 车辆二维码 */
  .qr-item{display:flex;align-items:center;gap:14px;padding:12px;border-radius:14px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);margin-bottom:12px}
  .qr-svg{width:86px;height:86px;flex:0 0 auto;background:#fff;border-radius:10px;padding:6px;box-sizing:border-box;border:1px solid var(--line)}
  .qr-svg svg{width:100%;height:100%;display:block}
  .qr-info{flex:1;min-width:0}
  .qr-info b{display:block;font-size:15px;color:var(--ink)}
  .qr-info span{display:block;font-size:12px;color:var(--muted);margin-top:3px}
  .qr-info .qr-hint{color:var(--primary);font-weight:600;margin-top:5px}
  /* 扫码结果 */
  .scan-hero{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 14px 22px;border-radius:16px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);margin-bottom:14px}
  .scan-hero .scan-ic{width:56px;height:56px;border-radius:16px;background:var(--accent-bg);color:var(--primary);display:flex;align-items:center;justify-content:center;margin-bottom:6px}
  .scan-hero .scan-ic svg{width:30px;height:30px}
  .scan-hero b{font-size:22px;color:var(--ink)}
  .scan-hero .scan-car{font-size:14px;color:var(--primary-dark);font-weight:600;margin-top:4px}
  .scan-hero .scan-drv{font-size:14px;color:var(--primary-dark);font-weight:600;margin-top:4px}
  .scan-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}

  /* 底部 TabBar */
  .tabbar{
    flex:0 0 auto;height:58px;background:var(--tab-bg);border-top:1px solid var(--line);
    display:flex;align-items:stretch;padding-bottom:4px;
  }
  .tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--tab-ink);font-size:10.5px}
  .tab svg{width:22px;height:22px}
  .tab.on{color:var(--tab-active);font-weight:700}
  .tab .dot{position:relative}
  .tab .dot::after{content:"";position:absolute;top:-2px;right:-5px;width:8px;height:8px;border-radius:50%;background:var(--danger);border:1.5px solid var(--tab-bg)}

  /* 弹窗（用户规范：卡片底色+顶部蓝色装饰线+提示蓝粗体+按钮底部并排居中） */
  .mask-layer{position:absolute;inset:0;background:rgba(10,20,32,.5);z-index:80;display:none;align-items:center;justify-content:center;padding:28px}
  .mask-layer.show{display:flex}
  .repair-map{position:relative;height:220px;border-radius:12px;margin:4px 0 14px;cursor:crosshair;overflow:hidden;background:linear-gradient(135deg,#e8f1fb 0%,#d8e7f8 45%,#c6ddf2 100%);background-image:linear-gradient(rgba(46,117,182,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(46,117,182,.12) 1px,transparent 1px);background-size:28px 28px}
  .repair-map-pin{position:absolute;left:50%;top:55%;width:22px;height:22px;margin:-11px 0 0 -11px;background:#2E75B6;border:3px solid #fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 2px 6px rgba(0,0,0,.25);pointer-events:none}
  .repair-map-pin::after{content:'';position:absolute;left:5px;top:5px;width:8px;height:8px;background:#fff;border-radius:50%}
  .repair-map-addr{position:absolute;left:10px;bottom:10px;right:10px;background:rgba(255,255,255,.92);border-radius:8px;padding:6px 10px;font-size:12px;color:#1f2937;box-shadow:0 1px 4px rgba(0,0,0,.12)}
  .ck-group{display:flex;flex-wrap:wrap;gap:10px}
  .ck{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--ink);cursor:pointer;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .ck:has(input:checked){border-color:var(--primary);background:var(--accent-bg);color:var(--primary);font-weight:600}
  .ck input{width:17px;height:17px;accent-color:#2E75B6}
  .modal{
    width:100%;background:var(--card);border-radius:14px;overflow:hidden;
    border-top:4px solid var(--primary);box-shadow:0 18px 50px rgba(0,0,0,.4);
    animation:pop .2s ease;
  }
  @keyframes pop{from{transform:translateY(14px);opacity:0}to{transform:none;opacity:1}}
  .modal .m-title{padding:18px 18px 4px;font-size:16px;font-weight:700;color:var(--primary-dark)}
  .modal .m-desc{padding:0 18px 12px;font-size:13px;color:var(--muted);line-height:1.6}
  .modal .m-field{padding:0 18px 12px}
  .modal .m-field label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:5px}
  .modal .m-err{display:none;padding:0 18px 8px;font-size:12.5px;color:var(--danger);font-weight:600}
  .modal .m-err.show{display:block}
  .modal .m-actions{display:flex;gap:10px;justify-content:center;padding:6px 18px 18px}
  .modal .m-actions .btn{width:auto;flex:1;max-width:150px;height:42px;font-size:15px;margin:0}
  .notice-admin{flex:0 0 auto;background:none;border:none;color:var(--muted);display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;cursor:pointer;padding:0}
  .notice-admin:hover{background:var(--accent-bg);color:var(--primary)}
  .na-row{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
  .na-row .na-text{flex:1;min-width:150px;height:38px;font-size:13px}
  .na-row .na-color{width:44px;height:38px;border:1px solid var(--line);border-radius:8px;padding:3px;background:var(--input-bg)}
  .na-row .na-w{width:72px;height:38px;border-radius:8px;border:1px solid var(--line);font-size:12.5px;color:var(--ink);background:var(--input-bg);padding:0 6px}
  .na-row .na-pop{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:4px}
  .na-row .na-del{background:none;border:none;color:var(--danger);font-size:12px;cursor:pointer;padding:4px}
  .resp-veh{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
  .resp-hint{font-size:12px;color:var(--muted);flex-basis:100%}
  .resp-terms{background:var(--input-bg);border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px;white-space:pre-wrap;word-break:break-word}
  .resp-terms p{font-size:12.5px;color:var(--ink);line-height:1.75;margin:0 0 8px;white-space:pre-wrap}
  .resp-terms p:last-child{margin-bottom:0}
  .resp-terms b{color:var(--primary-dark)}
  .sign-wrap{position:relative;border:1.5px dashed var(--primary);border-radius:10px;overflow:hidden;background:#fff}
  .sign-wrap canvas{display:block;width:100%;height:auto;touch-action:none}
  .sign-tip{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:13px;color:#bbb;pointer-events:none}
  .resp-note{font-size:12px;color:var(--muted);margin-top:10px;line-height:1.6}
  .radio-row{display:flex;flex-wrap:wrap;gap:8px}
  .radio-pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-size:13px;color:var(--ink);background:var(--input-bg);cursor:pointer}
  .msel{position:relative}
  .msel-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--input-bg);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px;color:var(--ink);cursor:pointer;text-align:left}
  .msel-head:hover,.msel.open .msel-head{border-color:#2E75B6}
  .msel-head svg{flex:none;color:var(--muted)}
  .msel-panel{display:none;position:absolute;z-index:20;left:0;right:0;top:calc(100% + 4px);background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.1);max-height:200px;overflow:auto;padding:6px}
  .msel.open .msel-panel{display:block}
  .msel-opt{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;font-size:14px;color:var(--ink);cursor:pointer}
  .msel-opt:hover{background:rgba(46,117,182,.08)}
  .msel-opt input{accent-color:#2E75B6}
  .doc-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--input-bg);margin-bottom:8px}
  .doc-name{flex:none;width:104px;font-size:13px;font-weight:600;color:var(--ink)}
  .form-item .doc-row .doc-btn{flex:none;width:auto;display:inline-flex;align-items:center;justify-content:center;height:30px;font-size:12px;padding:0 12px;margin:0;background:var(--primary);color:#fff;border:1px solid var(--primary);border-radius:8px;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.08)}
  .form-item .doc-row .doc-btn:hover{background:var(--primary-dark);border-color:var(--primary-dark)}
  .doc-files{flex:1;min-width:0;font-size:12px;color:var(--muted);word-break:break-all}
  .doc-row.park-doc-row{flex-wrap:wrap;row-gap:8px}
  .doc-row.park-doc-row .doc-name{width:100%;flex:none}
  .doc-row.park-doc-row .doc-files{flex-basis:100%;flex:1 1 100%}
  .radio-pill input{display:none}
  .radio-pill:has(input:checked){background:var(--primary);border-color:var(--primary);color:#fff}
  .cfg-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}
  .cfg-row input{flex:1;height:36px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;color:var(--ink);background:var(--input-bg)}
  .cfg-del{background:none;border:none;color:var(--danger);font-size:12px;cursor:pointer;padding:4px}
  .cfg-price{display:flex;gap:8px;align-items:center;margin-bottom:8px}
  .cfg-price span{font-size:13px;color:var(--muted);width:88px;flex:0 0 auto}
  .cfg-price input{width:90px;height:36px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;color:var(--ink);background:var(--input-bg)}
  .btn.m-primary{background:var(--primary);color:#fff}
  .btn.m-primary:hover{background:var(--primary-dark)}
  .btn.m-ghost{background:var(--input-bg);color:var(--ink);border:1px solid var(--line)}
  .btn.m-ghost:hover{background:var(--accent-bg)}

  /* toast */
  .toast{
    position:absolute;left:50%;bottom:86px;transform:translateX(-50%) translateY(10px);z-index:90;
    background:rgba(20,30,44,.92);color:#fff;font-size:13px;padding:9px 16px;border-radius:999px;
    opacity:0;pointer-events:none;transition:all .22s;white-space:nowrap;max-width:86%;text-align:center;
  }
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

  .demo-note{font-size:11px;color:var(--muted);background:var(--accent-bg);border-radius:8px;padding:8px 10px;margin-bottom:12px;line-height:1.5}
  .demo-note b{color:var(--accent-ink)}

  @media (max-width:520px){
    body{padding:0}
    .phone{margin-top:0;border:none;border-radius:0;height:100vh;max-height:none;width:100%}
  }
  /* 打印：仅显示一车一码网格 */
  @media print {
    body *{visibility:hidden !important}
    #page-qr, #page-qr *{visibility:visible !important}
    #page-qr{position:absolute;left:0;top:0;width:100%;display:block !important}
    #page-qr .demo-note, #page-qr > div:first-of-type{display:none !important}
    #qrList{display:grid !important;grid-template-columns:repeat(3,1fr);gap:10px}
    .qr-item{break-inside:avoid;margin:0 !important}
    .qr-hint{display:none !important}
  }
.zone-like{justify-content:flex-start !important;font-size:12.5px;color:var(--muted);font-weight:700;gap:6px;margin-bottom:8px}
.zone-like .ct{display:inline-flex;align-items:center;font-size:12.5px;color:var(--muted);font-weight:700;margin-right:auto}
.zone-like .ztag svg{width:14px;height:14px}
.zone-like .more{margin-left:auto}
/* 年度统计双卡片 */
.year-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0;width:100%;box-sizing:border-box}
.ys-card{background:var(--card,#fff);border:1px solid var(--line,#e8e8e8);border-radius:12px;padding:14px 16px;position:relative;overflow:hidden;box-sizing:border-box}
.ys-label{font-size:12px;color:var(--muted,#888);font-weight:500}
.ys-num{font-size:24px;font-weight:700;margin-top:4px}
.ys-blue .ys-num{color:#2E75B6}
.ys-green .ys-num{color:#27ae60}
.ys-icon{position:absolute;right:12px;top:12px;font-size:18px;opacity:.25}

/* 最近出车列表字体缩小 */
.tm-list .rm{font-size:12px}
.tm-list .rm b{font-size:13px}
.tm-list .row{padding:6px 0}


/* ===== 手机端/web-view全屏模式：去掉手机壳 ===== */
@media (max-width: 480px) {
  body {
    padding: 0 !important;
    background: var(--bg) !important;
    align-items: stretch !important;
  }
  .phone {
    width: 100% !important;
    height: 100vh !important;
    max-height: 100vh !important;
    border-radius: 0 !important;
    border: none !important;
  }
}


/* ===== 小程序web-view内隐藏H5模拟状态栏和自带导航栏 ===== */
body.mini-program .statusbar,
body.mini-program .navbar { display: none !important; }
body.mini-program .screen { padding-top: 0 !important; }
body.mini-program .phone { height: 100vh !important; }
