/* 外卖平台移动端公共样式 —— 商家端 / 骑手端 / C 端共用 */
:root{
  --c-primary:#ff6b00;
  --c-primary-d:#e85f00;
  --c-primary-l:#fff3e9;
  --c-red:#fa3534;
  --c-green:#19be6b;
  --c-blue:#2979ff;
  --c-amber:#ff9900;
  --t1:#1a1a1a;
  --t2:#666;
  --t3:#999;
  --t4:#bbb;
  --bg:#f5f6f8;
  --card:#fff;
  --line:#eef0f3;
  --r:12px;
  --shadow:0 2px 12px rgba(0,0,0,.06);
  --tab-h:56px;
  --nav-h:48px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--bg);color:var(--t1);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
input,button,select,textarea{font-family:inherit;font-size:14px;outline:none}

/* ---------- 布局骨架 ---------- */
.app{max-width:640px;margin:0 auto;min-height:100vh;background:var(--bg);position:relative;padding-bottom:env(safe-area-inset-bottom)}
.page{padding:12px 12px calc(var(--tab-h) + 16px)}
.page-nobar{padding:12px 12px calc(16px + env(safe-area-inset-bottom))}

/* ---------- 顶部导航 ---------- */
.nav{position:sticky;top:0;z-index:50;height:var(--nav-h);display:flex;align-items:center;
  padding:0 12px;background:#fff;border-bottom:1px solid var(--line)}
.nav.fixed{position:fixed;left:0;right:0;top:0;max-width:640px;margin:0 auto}
.nav-title{flex:1;text-align:center;font-size:16px;font-weight:600}
.nav-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;
  font-size:18px;color:var(--t2);border:0;background:none;border-radius:8px}
.nav-btn:active{background:var(--bg)}

/* ---------- 卡片 ---------- */
.card{background:var(--card);border-radius:var(--r);padding:14px;margin-bottom:10px;box-shadow:var(--shadow)}
.card.flat{box-shadow:none;border:1px solid var(--line)}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.card-t{font-size:15px;font-weight:600}
.card-more{font-size:12px;color:var(--t3)}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;
  height:40px;padding:0 18px;border-radius:20px;border:0;background:var(--c-primary);
  color:#fff;font-size:14px;font-weight:500;transition:.15s}
.btn:active{transform:scale(.97);background:var(--c-primary-d)}
.btn[disabled],.btn.disabled{background:#d8dbe0!important;color:#fff!important;pointer-events:none}
.btn-block{display:flex;width:100%}
.btn-sm{height:32px;padding:0 14px;font-size:13px;border-radius:16px}
.btn-lg{height:46px;font-size:15px;border-radius:23px}
.btn-ghost{background:#fff;color:var(--c-primary);border:1px solid var(--c-primary)}
.btn-ghost:active{background:var(--c-primary-l)}
.btn-gray{background:#f2f4f7;color:var(--t2)}
.btn-gray:active{background:#e8ebef}
.btn-danger{background:var(--c-red)}
.btn-line{background:#fff;color:var(--t2);border:1px solid #dcdfe6}
.btn-row{display:flex;gap:8px}
.btn-row .btn{flex:1}

/* ---------- 表单 ---------- */
.field{margin-bottom:14px}
.field>label{display:block;font-size:13px;color:var(--t2);margin-bottom:6px}
.field .tip{font-size:12px;color:var(--t3);margin-top:4px;line-height:1.5}
.input,.select,.textarea{width:100%;height:42px;padding:0 12px;border:1px solid #e2e5ea;
  border-radius:10px;background:#fff;color:var(--t1);transition:.15s}
.textarea{height:auto;min-height:80px;padding:10px 12px;resize:vertical;line-height:1.6}
.input:focus,.select:focus,.textarea:focus{border-color:var(--c-primary)}
.input::placeholder,.textarea::placeholder{color:var(--t4)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}

.switch{position:relative;width:46px;height:26px;border-radius:13px;background:#dcdfe6;
  transition:.2s;flex:0 0 auto;border:0;padding:0;cursor:pointer}
.switch.on{background:var(--c-primary)}
.switch::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch.on::after{left:23px}

/* ---------- 列表 ---------- */
.list-item{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.list-item:last-child{border-bottom:0}
.list-item .li-main{flex:1;min-width:0}
.list-item .li-title{font-size:14px;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.list-item .li-sub{font-size:12px;color:var(--t3);margin-top:2px}
.list-item .li-right{font-size:14px;color:var(--t1);text-align:right;flex:0 0 auto}

/* ---------- 标签 ---------- */
.tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:4px;
  font-size:11px;line-height:1;font-weight:500;white-space:nowrap}
.tag-orange{background:var(--c-primary-l);color:var(--c-primary)}
.tag-red{background:#fff0f0;color:var(--c-red)}
.tag-green{background:#e8f8ef;color:var(--c-green)}
.tag-blue{background:#eef4ff;color:var(--c-blue)}
.tag-gray{background:#f2f4f7;color:var(--t3)}
.tag-amber{background:#fff8e6;color:var(--c-amber)}

/* ---------- Tab ---------- */
.tabs{display:flex;gap:6px;overflow-x:auto;padding:8px 0;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;position:sticky;top:var(--nav-h);z-index:40;background:var(--bg)}
.tabs::-webkit-scrollbar{display:none}
.tab{flex:0 0 auto;height:32px;padding:0 14px;border-radius:16px;background:#fff;
  color:var(--t2);font-size:13px;display:inline-flex;align-items:center;border:1px solid transparent;
  position:relative;white-space:nowrap}
.tab.active{background:var(--c-primary);color:#fff;font-weight:500}
.tab .badge{position:absolute;top:-4px;right:-2px;min-width:16px;height:16px;padding:0 4px;
  border-radius:8px;background:var(--c-red);color:#fff;font-size:10px;line-height:16px;text-align:center}

/* ---------- 底部 TabBar ---------- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;height:var(--tab-h);
  padding-bottom:env(safe-area-inset-bottom);background:rgba(255,255,255,.97);
  -webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);
  border-top:1px solid #f0f1f4;
  box-shadow:0 -1px 12px rgba(15,23,42,.045);
  display:flex;max-width:640px;margin:0 auto}
.tabbar-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;color:#9aa0a6;font-size:10px;font-weight:500;position:relative;border:0;background:none;
  padding:0;transition:color .16s ease}
.tabbar-item .ico{width:25px;height:25px;line-height:1;display:flex;align-items:center;justify-content:center;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.tabbar-item .ico svg{width:25px;height:25px;display:block}
.tabbar-item .lbl{line-height:1.1;letter-spacing:.2px}
.tabbar-item.active{color:var(--c-primary)}
.tabbar-item.active .ico{transform:translateY(-1.5px)}
/* 激活态把线性图标填一层淡色，视觉更"实" */
.tabbar-item.active .ico svg path,
.tabbar-item.active .ico svg circle,
.tabbar-item.active .ico svg rect{fill:currentColor;fill-opacity:.14}
.tabbar-item.active .ico svg [stroke-dasharray]{fill:none}
.tabbar-item:active .ico{transform:scale(.9)}
.tabbar-item .dot{position:absolute;top:4px;right:50%;margin-right:-20px;min-width:16px;height:16px;
  padding:0 4px;border-radius:8px;background:var(--c-red);color:#fff;font-size:10px;line-height:16px;text-align:center}

/* ---------- 空态 / 加载 ---------- */
.empty{text-align:center;padding:60px 20px;color:var(--t3)}
.empty .ico{font-size:48px;opacity:.35;margin-bottom:12px}
.empty p{margin:0;font-size:13px}
.loading{text-align:center;padding:30px;color:var(--t3);font-size:13px}
.spinner{display:inline-block;width:18px;height:18px;border:2px solid #e4e7ed;
  border-top-color:var(--c-primary);border-radius:50%;animation:spin .7s linear infinite;
  vertical-align:middle;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
.skeleton{background:linear-gradient(90deg,#f2f4f7 25%,#e9ecf0 37%,#f2f4f7 63%);
  background-size:400% 100%;animation:sk 1.3s ease infinite;border-radius:8px}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}

/* ---------- Toast / 遮罩 ---------- */
.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9999;
  background:rgba(0,0,0,.78);color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;
  max-width:80vw;text-align:center;animation:fadeIn .18s}
@keyframes fadeIn{from{opacity:0;transform:translate(-50%,-50%) scale(.94)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;animation:fade .18s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:201;max-width:640px;margin:0 auto;
  background:#fff;border-radius:16px 16px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));
  max-height:82vh;overflow-y:auto;animation:up .22s ease}
@keyframes up{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.sheet-t{font-size:16px;font-weight:600}
.sheet-close{font-size:22px;color:var(--t3);border:0;background:none;line-height:1;padding:0 4px}

/* ---------- 通用小件 ---------- */
.hr{height:1px;background:var(--line);margin:12px 0;border:0}
.flex{display:flex;align-items:center}
.flex-1{flex:1;min-width:0}
.between{display:flex;align-items:center;justify-content:space-between}
.gap8{gap:8px}.gap12{gap:12px}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}
.t2{color:var(--t2)}.t3{color:var(--t3)}.t3f{color:var(--t3);font-size:12px}
.small{font-size:12px}.big{font-size:20px;font-weight:700}
.price{color:var(--c-red);font-weight:600}
.strike{text-decoration:line-through;color:var(--t4);font-weight:400}
.center{text-align:center}
.nowrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hide{display:none!important}

/* ---------- 订单卡 ---------- */
.order-card{background:#fff;border-radius:var(--r);padding:14px;margin-bottom:10px;box-shadow:var(--shadow)}
.order-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;
  border-bottom:1px dashed var(--line);margin-bottom:10px}
.order-no{font-size:12px;color:var(--t3)}
.order-time{font-size:11px;color:var(--t4);margin-top:2px}
.order-body{display:flex;gap:10px;margin-bottom:10px}
.order-items{flex:1;min-width:0}
.oi{display:flex;justify-content:space-between;font-size:13px;color:var(--t2);line-height:1.8}
.oi .q{color:var(--t3);font-size:12px;margin-left:4px}
.order-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:10px;
  border-top:1px solid var(--line)}
.order-amount{font-size:13px;color:var(--t2)}
.order-amount b{font-size:17px;color:var(--c-red);margin-left:2px}
.order-acts{display:flex;gap:8px;flex:0 0 auto}

/* ---------- 统计块 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.stat-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stat{background:#fff;border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.stat .k{font-size:12px;color:var(--t3)}
.stat .v{font-size:22px;font-weight:700;color:var(--t1);margin-top:4px;line-height:1.2}
.stat .v small{font-size:13px;font-weight:400;color:var(--t3);margin-left:2px}
.stat .d{font-size:11px;color:var(--t3);margin-top:4px}
.stat.hl{background:linear-gradient(135deg,#ff8a3d,#ff6b00);color:#fff}
.stat.hl .k,.stat.hl .v,.stat.hl .d{color:#fff}
.stat.hl .v small{color:rgba(255,255,255,.8)}

/* ---------- 登录页 ---------- */
.login-wrap{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:0 28px;background:#fff}
.login-logo{width:72px;height:72px;border-radius:20px;background:linear-gradient(135deg,#ff8a3d,#ff6b00);
  display:flex;align-items:center;justify-content:center;font-size:34px;margin:0 auto 16px;
  box-shadow:0 6px 20px rgba(255,107,0,.28)}
.login-title{text-align:center;font-size:22px;font-weight:700;margin-bottom:6px}
.login-sub{text-align:center;font-size:13px;color:var(--t3);margin-bottom:32px}
.login-form .input{height:48px;border-radius:12px;background:#f7f8fa;border-color:transparent}
.login-form .input:focus{background:#fff;border-color:var(--c-primary)}
.login-btn{margin-top:8px;height:48px;border-radius:12px;font-size:16px}
.login-foot{text-align:center;font-size:12px;color:var(--t4);margin-top:24px;line-height:1.8}

/* ---------- 详情块 ---------- */
.detail-row{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:7px 0}
.detail-row .k{color:var(--t3);flex:0 0 auto}
.detail-row .v{color:var(--t1);text-align:right;word-break:break-all}
.timeline{padding-left:6px}
.tl-item{position:relative;padding-left:20px;padding-bottom:14px}
.tl-item::before{content:'';position:absolute;left:3px;top:6px;width:7px;height:7px;border-radius:50%;
  background:#dcdfe6}
.tl-item:first-child::before{background:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-l)}
.tl-item::after{content:'';position:absolute;left:6px;top:16px;bottom:0;width:1px;background:var(--line)}
.tl-item:last-child::after{display:none}
.tl-item .t{font-size:13px;color:var(--t1)}
.tl-item .m{font-size:12px;color:var(--t3);margin-top:2px}

/* ---------- 分段控件 ---------- */
.seg{display:inline-flex;background:#f2f4f7;border-radius:9px;padding:3px}
.seg button{border:0;background:none;height:30px;padding:0 16px;border-radius:7px;font-size:13px;color:var(--t2)}
.seg button.on{background:#fff;color:var(--t1);font-weight:600;box-shadow:0 1px 4px rgba(0,0,0,.08)}

/* ---------- 图片上传 ---------- */
.uploader{display:flex;gap:10px;flex-wrap:wrap}
.up-box{width:88px;height:88px;border-radius:10px;border:1px dashed #d8dbe0;background:#fafbfc;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  color:var(--t3);font-size:11px;position:relative;overflow:hidden}
.up-box img{width:100%;height:100%;object-fit:cover}
.up-box .x{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;
  background:rgba(0,0,0,.5);color:#fff;font-size:12px;line-height:18px;text-align:center;border:0}
.up-box .plus{font-size:22px;line-height:1;color:var(--t4)}

/* ---------- 骑手 ---------- */
.online-bar{background:linear-gradient(135deg,#ff8a3d,#ff6b00);border-radius:var(--r);padding:16px;
  color:#fff;margin-bottom:10px;box-shadow:0 4px 16px rgba(255,107,0,.25)}
.online-bar .t{font-size:13px;opacity:.9}
.online-bar .v{font-size:26px;font-weight:700;margin:2px 0 10px}
.online-bar .sw{display:flex;align-items:center;justify-content:space-between;
  background:rgba(255,255,255,.18);border-radius:10px;padding:8px 12px;font-size:13px}
.pool-card{background:#fff;border-radius:var(--r);padding:14px;margin-bottom:10px;box-shadow:var(--shadow)}
.pool-card .fee{font-size:22px;font-weight:700;color:var(--c-red)}
.dist{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--c-blue);
  background:#eef4ff;padding:2px 8px;border-radius:10px}
.route-line{position:relative;padding-left:26px;font-size:13px;color:var(--t2);line-height:1.7;margin:10px 0}
.route-line::before{content:'';position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:var(--line)}
.route-line .p{position:relative;margin-bottom:6px}
.route-line .p:last-child{margin-bottom:0}
.route-line .p::before{content:'';position:absolute;left:-22px;top:6px;width:8px;height:8px;border-radius:50%;
  background:#fff;border:2px solid var(--c-green)}
.route-line .p.to::before{border-color:var(--c-red)}

/* ---------- 选项胶囊（地址标签 / 规格） ---------- */
.spec-opts{display:flex;flex-wrap:wrap;gap:8px}
.spec-opt{height:32px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:16px;background:#f4f5f7;color:var(--t2);font-size:13px;border:1px solid transparent;
  transition:.15s;user-select:none}
.spec-opt:active{transform:scale(.96)}
.spec-opt.on{background:var(--c-primary-l);color:var(--c-primary);border-color:var(--c-primary);font-weight:600}

/* ---------- 图片/图标占位块 ---------- */
.ph-thumb{display:flex;align-items:center;justify-content:center;flex:0 0 auto;
  border-radius:10px;overflow:hidden;line-height:0}
.ph-thumb svg{opacity:.92}
