html,body{margin:0;height:100%;font-family:-apple-system,Segoe UI,Roboto,sans-serif}
#map{position:absolute;inset:0}
.panel{position:absolute;top:10px;left:10px;z-index:1000;background:#fff;border-radius:11px;
  box-shadow:0 2px 14px rgba(10,35,52,.2);padding:13px 15px;width:276px;max-height:94vh;overflow:auto}
.panel h1{font-size:13.5px;margin:0 0 2px;color:#0A2334}
.panel .sub{font-size:11px;color:#5a6b76;margin-bottom:9px}
.row{font-size:12px;color:#0A2334;margin:4px 0;display:flex;align-items:center;justify-content:space-between}
.lab{display:flex;align-items:center}
.ln{width:18px;height:0;border-top-style:solid;margin-right:7px}
.grn{color:#2e8b39;font-weight:700}
.sec{margin-top:9px;padding-top:9px;border-top:1px solid #e7ecef}
.inp{display:flex;align-items:center;justify-content:space-between;margin:5px 0;font-size:12px;color:#0A2334}
.inp input{width:92px;padding:3px 5px;border:1px solid #c9d4db;border-radius:5px;font-size:12px;text-align:right}
.ck{font-size:12px;color:#0A2334;display:block;margin:5px 0}
.cost{font-size:21px;font-weight:800;color:#0973B8}
.st{font-size:10px;color:#8a97a0;margin-top:7px;line-height:1.35}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:7px}
.filebtn{display:block;text-align:center;padding:7px;margin-top:7px;border-radius:7px;font-size:12.5px;font-weight:600;color:#fff;background:#0973B8;cursor:pointer}
input[type=range]{width:100%;margin:4px 0 0}
.sv{font-size:12px;color:#0A2334;font-weight:600;margin-top:8px}
button{width:100%;padding:7px;margin-top:7px;border:0;border-radius:7px;font-size:12.5px;font-weight:600;color:#fff;cursor:pointer}
#opt{background:#0973B8} #rebuild{background:#6b7b86} #exp{background:#3EB549}
.plist{margin:7px 0 4px}
.prow{display:flex;align-items:center;font-size:12px;color:#0A2334;padding:3px 4px;border-radius:5px;cursor:pointer}
.prow.active{background:#eaf3fb}
.prow .pcolor{width:11px;height:11px;border-radius:3px;margin:0 6px 0 2px;flex:0 0 auto}
.prow .pname{flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow .pcount{color:#8a97a0;font-size:10px;margin:0 5px}
.prow .pdel{color:#b94a48;font-weight:700;padding:0 3px;cursor:pointer}
.prow input[type=checkbox]{margin-right:4px}
.segwrap{display:inline-flex;gap:3px}
.seg{width:auto;padding:3px 8px;background:#e7ecef;color:#0A2334;font-size:11px;margin-top:0}
.seg.active{background:#0973B8;color:#fff}
#mapctl{position:absolute;right:10px;bottom:26px;z-index:1100;display:flex;flex-direction:column;align-items:flex-end}
#mapbtn{width:40px;height:40px;border-radius:9px;background:#fff;color:#0A2334;box-shadow:0 2px 10px rgba(10,35,52,.25);font-size:18px;line-height:40px;cursor:pointer;padding:0;border:0;margin:0}
#mapbtn:hover{background:#f3f6f8}
#mapcard{background:#fff;border-radius:13px;box-shadow:0 4px 20px rgba(10,35,52,.3);padding:11px;margin-bottom:8px}
#mapcard.hidden{display:none}
#mapcard .opts{display:flex;flex-wrap:wrap;gap:9px;max-width:262px;justify-content:flex-end}
.opt{width:74px;cursor:pointer;text-align:center}
.opt .thumb{width:74px;height:54px;border-radius:10px;background:#dde3e7 center/cover no-repeat;border:2.5px solid transparent;box-shadow:inset 0 0 0 1px rgba(10,35,52,.08)}
.opt.active .thumb{border-color:#0973B8}
.opt .olabel{font-size:11px;color:#0A2334;margin-top:4px;white-space:nowrap}
.opacrow{display:flex;align-items:center;gap:9px;font-size:11px;color:#5a6b76;margin-top:11px}
.opacrow input{flex:1}
