*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",Arial,sans-serif;
  background:#f4f5f7;color:#1c1c1c;font-size:15px;line-height:1.6;padding-bottom:calc(64px + env(safe-area-inset-bottom))}
.loading{padding:60px;text-align:center;color:#888;font-size:14px}
a{color:#185FA5;text-decoration:none}

/* 顶部 */
.nav{position:sticky;top:0;z-index:20;background:#185FA5;color:#fff;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;
  display:flex;align-items:center;gap:8px;font-size:17px}
.nav .back{font-size:15px;opacity:.9}
.nav .title{flex:1;font-weight:500}
.nav .act{font-size:14px;opacity:.95}

/* 底部 */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:#fff;
  border-top:1px solid #e6e6e6;padding-bottom:env(safe-area-inset-bottom)}
.tabbar a{flex:1;text-align:center;padding:9px 0 7px;color:#888;font-size:12px}
.tabbar a.on{color:#185FA5}
.tabbar .ic{display:block;font-size:19px;line-height:1.3}

/* 卡片与通用 */
.wrap{padding:12px}
.card{background:#fff;border-radius:12px;padding:14px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.card h3{margin:0 0 8px;font-size:16px;font-weight:500}
.muted{color:#888;font-size:13px}
.small{font-size:13px}
.row{display:flex;gap:10px;align-items:center}
.between{display:flex;justify-content:space-between;align-items:center;gap:10px}
.grow{flex:1;min-width:0}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.tag{background:#eef3fa;color:#185FA5;border-radius:14px;padding:3px 10px;font-size:12px}
.tag.gray{background:#f0f0f0;color:#666}
.tag.red{background:#fceaea;color:#A32D2D}
.tag.green{background:#e8f4e4;color:#3B6D11}
.tag.amber{background:#fdf1de;color:#854F0B}
.empty{padding:40px 20px;text-align:center;color:#999;font-size:14px}

/* 表单 */
label.f{display:block;margin:12px 0 6px;font-size:13px;color:#555}
input,select,textarea{width:100%;padding:11px 12px;border:1px solid #dcdcdc;border-radius:9px;font-size:16px;
  background:#fff;font-family:inherit}
textarea{min-height:76px;resize:vertical}
input:focus,textarea:focus,select:focus{outline:none;border-color:#185FA5}
.inline{display:flex;gap:8px}
.inline>*{flex:1}
.btn{display:block;width:100%;padding:13px;border:0;border-radius:10px;background:#185FA5;color:#fff;font-size:16px;text-align:center}
.btn:active{opacity:.85}
.btn.ghost{background:#fff;color:#185FA5;border:1px solid #185FA5}
.btn.gray{background:#eee;color:#444}
.btn.red{background:#A32D2D}
.btn.sm{display:inline-block;width:auto;padding:8px 14px;font-size:14px}
.btnrow{display:flex;gap:10px;margin-top:14px}
.btn:disabled,.btn.sm:disabled{opacity:.5;color:#888;border-color:#dcdcdc;background:#f2f2f2}
.btn.ghost:disabled{background:#f2f2f2;color:#888;border-color:#dcdcdc}
.f{display:block;font-size:13px;color:#666;margin:0 0 6px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid #d5d5d5;border-radius:18px;padding:6px 12px;font-size:13px;background:#fff;color:#444}
.chip.on{background:#185FA5;border-color:#185FA5;color:#fff}
.chip.amber.on{background:#854F0B;border-color:#854F0B}

/* 列表 */
.item{background:#fff;border-radius:12px;padding:13px 14px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
/* a 是行内元素，直接用 <a class="item"> 会把卡片压扁、文字溢出，必须显式 block */
a.item{display:block;color:inherit;text-decoration:none}
a.item:active{background:#f7f9fc}
.chk{display:flex;align-items:flex-start;gap:9px;margin-top:10px;font-size:14px;line-height:1.5}
.chk input{width:18px;height:18px;margin:2px 0 0;flex:0 0 auto;accent-color:#185FA5}
.item .t{font-size:15px;font-weight:500;margin-bottom:4px}
.item .s{font-size:13px;color:#777}
.item .badge{float:right;font-size:12px;padding:2px 8px;border-radius:10px;background:#f0f0f0;color:#666}
.badge.pending{background:#eef3fa;color:#185FA5}
.badge.serving{background:#fdf1de;color:#854F0B}
.badge.done{background:#e8f4e4;color:#3B6D11}
.badge.abandoned{background:#f0f0f0;color:#888}
.badge.urgent{background:#fceaea;color:#A32D2D}

/* toast */
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:100px;background:rgba(0,0,0,.78);color:#fff;
  padding:10px 16px;border-radius:20px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:99;max-width:80%}
.toast.on{opacity:1}

/* modal */
.modal{position:fixed;inset:0;z-index:60}
.modal.hidden{display:none}
.modal-mask{position:absolute;inset:0;background:rgba(0,0,0,.4)}
.modal-body{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:14px 14px 0 0;
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));max-height:80vh;overflow:auto}

/* 地图 */
.map{width:100%;height:260px;border-radius:10px;background:#eaeaea}
.map.big{height:52vh}
#suggest{position:relative;z-index:5}
.sug-list{position:absolute;left:0;right:0;top:100%;background:#fff;border:1px solid #ddd;border-top:0;
  border-radius:0 0 8px 8px;max-height:220px;overflow:auto}
.sug{padding:10px 12px;font-size:14px;border-bottom:1px solid #f0f0f0}
.sug .ad{color:#999;font-size:12px}

/* 小区候选列表 */
.poilist{margin-top:6px;border:1px solid #e5e5e5;border-radius:10px;background:#fff;
  max-height:300px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.poilist .poi{padding:10px 12px;border-bottom:1px solid #f2f2f2;cursor:pointer}
.poilist .poi:last-child{border-bottom:0}
.poilist .poi:active{background:#eaf1fb}
.poilist .poi .ti{font-size:14px;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.poilist .poi .ti>span:first-child{flex:1 1 auto;min-width:0}
.poilist .poi .ad{color:#999;font-size:12px;margin-top:3px;line-height:1.4}
.dist{color:#185FA5;font-size:12px;white-space:nowrap;flex:0 0 auto}
/* 地图中心准星：手机上手点点不准，改成拖地图对准中心 */
.mapwrap{position:relative}
.mappin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);pointer-events:none;z-index:3}
.mappin i{display:block;width:16px;height:16px;border-radius:50%;background:#e02020;border:3px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.35)}
.mappin b{display:block;width:2px;height:16px;margin:0 auto;background:#e02020;box-shadow:0 0 0 1px rgba(255,255,255,.9)}
.picked{margin-top:10px;padding:10px 12px;background:#eaf1fb;border-radius:10px;font-size:14px}
.picked .ad{color:#666;font-size:12px;margin-top:3px;line-height:1.4}
.picked a{float:right;font-size:12px;color:#185FA5;text-decoration:none}

.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat{background:#fff;border-radius:12px;padding:14px;text-align:center}
.stat .n{font-size:22px;font-weight:500;color:#185FA5}
.stat .l{font-size:12px;color:#888}
.hidden{display:none !important}

/* 全局悬浮录单按钮 */
.fab{position:fixed;right:14px;bottom:calc(20px + env(safe-area-inset-bottom));z-index:55;
  display:flex;align-items:center;gap:4px;padding:12px 18px;border-radius:26px;
  background:#185FA5;color:#fff;font-size:15px;text-decoration:none;
  box-shadow:0 3px 12px rgba(0,0,0,.28)}
.fab.has-tab{bottom:calc(76px + env(safe-area-inset-bottom))}
.fab:active{opacity:.85}

/* 微信内提示条 */
.wxtip{background:#fff8e1;color:#7a5b00;font-size:12px;line-height:1.6;padding:9px 14px;
  border-bottom:1px solid #f0e0b0}
.wxtip b{color:#a06a00}
.wxtip a{display:inline-block;margin-left:8px;color:#185FA5}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace}
