:root{
  --bg:#0f1115; --panel:#171a21; --panel2:#1e222b; --line:#2a2f3a;
  --txt:#e9edf4; --mut:#9aa3b2; --red:#e23b3b;
  --ok:#34c759; --amb:#ffb02e; --no:#e23b3b; --empty:#3a4252;
  --rad:14px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased}
body{padding-bottom:env(safe-area-inset-bottom)}
.icn{vertical-align:-3px}

#topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));
  background:linear-gradient(180deg,#1a1d24,#141720);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:baseline;gap:10px}
.unit{font-weight:800;font-size:22px;letter-spacing:.5px;color:#fff;background:var(--red);padding:1px 9px;border-radius:8px}
.sub{color:var(--mut);font-size:13px}
.save{font-size:12px;color:var(--mut);border:1px solid var(--line);padding:3px 9px;border-radius:20px}
.save.ok{color:var(--ok);border-color:#1f3b29}
.save.saving{color:var(--amb);border-color:#3b341f}
.save.err{color:var(--red);border-color:#3b1f1f}

main{padding:14px 14px 92px;max-width:820px;margin:0 auto}
.loading{color:var(--mut);text-align:center;padding:60px 0}
h2.sec{font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);margin:20px 4px 10px}
.muted{color:var(--mut)}.small{font-size:12px}.mt8{margin-top:8px}.center{text-align:center}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--rad);padding:14px;margin-bottom:12px}
.row{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:0}.row .k{color:var(--mut);font-size:14px}.row .v{text-align:right;font-weight:600;font-size:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px}
.stat .n{font-size:24px;font-weight:800}.stat .l{color:var(--mut);font-size:12px;margin-top:2px}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:2px 8px;border-radius:20px;border:1px solid var(--line);color:var(--mut)}
.pill.amb{color:#ffd98a;border-color:#4a3f1f;background:#272016}
.pill.blu{color:#a9d6f5;border-color:#1f3b4a;background:#162531}
.pill.red{color:#ffb4b4;border-color:#4a2424;background:#2a1818}
.pill.grn{color:#a9f0bf;border-color:#214a2e;background:#16271c}

/* tab bar */
#tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:#11141b;
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
#tabbar button{flex:1;background:none;border:0;color:var(--mut);font-size:11px;padding:8px 0 7px;
  display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer}
#tabbar button .ic{height:20px}#tabbar button.active{color:var(--red)}

/* readiness strip */
.rstrip{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.barwrap{flex:1;height:9px;background:var(--panel2);border-radius:6px;overflow:hidden}
.bar{height:100%;background:linear-gradient(90deg,var(--red),var(--amb),var(--ok))}

/* truck schematic */
.viewwrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--rad);padding:10px 10px 4px;margin-bottom:12px}
.viewwrap h3{margin:2px 4px 6px;font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:1px}
svg.truck{width:100%;height:auto;display:block}
.cmp{cursor:pointer}
.cmp rect{stroke-width:2;transition:fill .15s}
.cmp.s-ok rect{fill:rgba(52,199,89,.20);stroke:var(--ok)}
.cmp.s-amb rect{fill:rgba(255,176,46,.20);stroke:var(--amb)}
.cmp.s-no rect{fill:rgba(226,59,59,.18);stroke:var(--no)}
.cmp.s-empty rect{fill:#222838;stroke:#46506a}
.cmp:active rect{filter:brightness(1.3)}
.cmp .cid{fill:#fff;font-weight:700}
.cmp .csub{fill:#c2cbdb}
.body-out{fill:#141821;stroke:#46506a;stroke-width:2}
.wheel{fill:#0c0e12;stroke:#525a6c;stroke-width:3}.hub{fill:#2a2f3a}
.cab{fill:#1b2230;stroke:#46506a;stroke-width:2}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--mut);margin:8px 2px 2px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{width:12px;height:12px;border-radius:3px;display:inline-block}

/* storage cards */
.scards{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.scard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px;cursor:pointer;
  border-left:4px solid var(--empty)}
.scard.s-ok{border-left-color:var(--ok)}.scard.s-amb{border-left-color:var(--amb)}
.scard.s-no{border-left-color:var(--no)}.scard.s-empty{border-left-color:var(--empty)}
.scard .nm{font-weight:600;font-size:13px;display:flex;align-items:center;gap:7px}
.scard .ct{color:var(--mut);font-size:12px;margin-top:3px}

/* gear list */
.toolbar{position:sticky;top:calc(53px + env(safe-area-inset-top));z-index:10;background:var(--bg);padding:6px 0 8px;margin:-4px 0 6px}
.search{width:100%;padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--txt);font-size:15px}
.chips{display:flex;gap:7px;overflow-x:auto;padding:9px 2px 2px}
.chip{flex:0 0 auto;font-size:12px;padding:6px 12px;border-radius:20px;border:1px solid var(--line);background:var(--panel);color:var(--mut);cursor:pointer;white-space:nowrap}
.chip.on{background:var(--red);border-color:var(--red);color:#fff}
.item{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:9px 11px;margin-bottom:7px}
.item .ig{color:var(--mut);flex:0 0 auto}
.item .meta{flex:1;min-width:0}.item .nm{font-weight:600;font-size:14px}
.item .sub2{color:var(--mut);font-size:12px;margin-top:3px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.qtybox{display:flex;align-items:center;gap:6px}
.qbtn{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--txt);font-size:18px;line-height:1;cursor:pointer}
.qnum{min-width:26px;text-align:center;font-weight:700}.qreq{color:var(--mut);font-size:12px}
.dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.dot.ok{background:var(--ok)}.dot.amb{background:var(--amb)}.dot.no{background:var(--no)}.dot.opt{background:#4b5468}
select.sel{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:13px;width:100%}
.item.col{flex-direction:column;align-items:stretch;gap:9px}
.item.col .itop{display:flex;align-items:center;gap:10px}
.actbtns{display:flex;gap:7px}
.actbtn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;background:var(--panel2);
  border:1px solid var(--line);color:var(--mut);border-radius:9px;padding:9px 5px;font-size:12px;font-weight:600;cursor:pointer}
.actbtn.on.ok{background:rgba(52,199,89,.16);border-color:var(--ok);color:#bdf0cb}
.actbtn.on.blu{background:rgba(58,155,226,.16);border-color:#3b9be2;color:#bfe0fb}
.actbtn.on.loc{background:#2a3550;border-color:#46506a;color:#dbe4f5}
.needrow{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--mut);margin-top:2px}
.nbtn{width:24px;height:24px;border-radius:7px;border:1px solid var(--line);background:var(--panel2);color:var(--txt);font-size:15px;line-height:1;cursor:pointer}
.needv{min-width:18px;text-align:center;font-weight:700;color:var(--txt)}.nu{color:var(--mut)}
input[type=number].search{-moz-appearance:textfield}

/* loadout (compartment sheet) */
.shelf{border:1px solid var(--line);border-radius:12px;margin:9px 0;overflow:hidden}
.shelf .sh-h{display:flex;justify-content:space-between;align-items:center;padding:8px 11px;background:var(--panel2);font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.7px}
.shelf .sh-add{background:none;border:0;color:var(--red);font-size:13px;cursor:pointer;display:flex;align-items:center;gap:4px}
.shelf .sh-body{display:flex;flex-wrap:wrap;gap:7px;padding:10px;min-height:46px}
.shelf.drop-hot{outline:2px dashed var(--red);outline-offset:-3px}
.gchip{display:inline-flex;align-items:center;gap:6px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:6px 10px;font-size:13px;cursor:grab;user-select:none}
.gchip .gi{color:var(--mut)}
.gchip .gq{color:var(--mut);font-size:11px}
.gchip.s-ok{border-color:#28543a}.gchip.s-amb{border-color:#4a3f1f}.gchip.s-no{border-color:#4a2424}
.shelf-empty{color:var(--mut);font-size:12px;padding:4px 2px}

/* rings */
.rings{display:flex;gap:10px;flex-wrap:wrap;justify-content:space-around}
.ring{text-align:center}.ring .rl{font-size:12px;color:var(--mut);margin-top:4px}
.ring .rn{font-size:13px;font-weight:700}

/* sheet */
.sheet{position:fixed;inset:0;z-index:50}.sheet.hidden{display:none}
.sheet-bg{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.sheet-card{position:absolute;left:0;right:0;bottom:0;max-height:86vh;overflow:auto;background:var(--panel);
  border-radius:18px 18px 0 0;border-top:1px solid var(--line);
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));max-width:820px;margin:0 auto}
.sheet-card h3{margin:2px 0;font-size:18px}
.close{position:absolute;right:12px;top:12px;background:var(--panel2);border:1px solid var(--line);color:var(--txt);width:34px;height:34px;border-radius:50%;font-size:18px;cursor:pointer}
.btn{display:inline-flex;align-items:center;gap:6px;justify-content:center;background:var(--red);color:#fff;border:0;border-radius:10px;padding:11px 14px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none}
.btn.ghost{background:var(--panel2);border:1px solid var(--line);color:var(--txt)}
.btn.wide{width:100%;margin-top:8px}
.fld{margin:12px 0 4px}.fld label{font-size:12px;color:var(--mut);display:block;margin-bottom:5px}

/* print */
#printarea{display:none}
@media print{
  #topbar,#tabbar,main,.sheet{display:none !important}
  body{background:#fff;color:#000}
  #printarea{display:block !important;padding:0}
  #printarea h1{font-size:20px;margin:0 0 2px}#printarea h2{font-size:14px;margin:16px 0 6px;border-bottom:1px solid #000;padding-bottom:3px}
  #printarea table{width:100%;border-collapse:collapse;font-size:12px}
  #printarea td,#printarea th{border:1px solid #999;padding:4px 6px;text-align:left}
  #printarea .chk{width:18px;height:18px;border:1px solid #000;display:inline-block}
}
