/* 修漏记 · H5 端样式
 * 原则：一屏一个动作，按钮大，字大，绝不放第二个选择让人犹豫。
 */
:root{
  --blue:#14539A; --blue-2:#1E6BC4; --orange:#E08A22; --green:#1F9E6B;
  --red:#D2453A; --ink:#1B2233; --ink-2:#5A6579; --ink-3:#8A93A5;
  --line:#E4E9F2; --bg:#F2F5FA; --white:#fff; --radius:14px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:#E9EDF4;color:var(--ink);font-size:15px;line-height:1.5;
}
#phone{
  max-width:460px;margin:0 auto;min-height:100vh;background:var(--bg);
  position:relative;display:flex;flex-direction:column;
  box-shadow:0 0 40px rgba(20,40,80,.10);
}
#app{flex:1;overflow-y:auto;padding-bottom:76px;-webkit-overflow-scrolling:touch}
#tabbar{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:460px;height:60px;background:#fff;
  border-top:1px solid var(--line);display:flex;z-index:50;
  padding-bottom:env(safe-area-inset-bottom);
}
#tabbar .tab{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-size:11px;color:var(--ink-3);gap:2px;cursor:pointer;
}
#tabbar .tab.on{color:var(--blue);font-weight:600}
#tabbar .tab .ic{width:22px;height:22px;line-height:0}
#tabbar .tab .ic svg{width:22px;height:22px}

/* ---------- 顶部 ---------- */
.nav{
  position:sticky;top:0;z-index:30;background:var(--blue);color:#fff;
  padding:12px 14px;display:flex;align-items:center;gap:10px;
  padding-top:calc(12px + env(safe-area-inset-top));
}
.nav.plain{background:transparent;color:var(--ink);position:static;padding-top:16px}
.nav .back{font-size:20px;width:26px;cursor:pointer;opacity:.95}
.nav .tt{font-size:17px;font-weight:600;flex:1;text-align:center;margin-right:26px}
.nav .act{font-size:14px;opacity:.95;cursor:pointer}
.nav.plain .tt{text-align:left;margin-right:0}

/* ---------- 卡片 ---------- */
.wrap{padding:12px}
.card{background:#fff;border-radius:var(--radius);padding:14px;margin-bottom:12px;box-shadow:0 1px 3px rgba(20,40,80,.05)}
.card.tight{padding:0;overflow:hidden}
.h{font-size:13px;color:var(--ink-3);margin:0 0 8px;letter-spacing:.4px}
.row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:0}
.row .k{color:var(--ink-2);font-size:14px}
.row .v{font-size:14px;font-weight:500;text-align:right}
.row .v.hint{color:var(--ink-3);font-weight:400}

/* ---------- 单子卡片 ---------- */
.order{background:#fff;border-radius:var(--radius);padding:13px 14px;margin-bottom:10px;box-shadow:0 1px 3px rgba(20,40,80,.05);cursor:pointer;position:relative}
.order:active{background:#F8FAFD}
.order .l1{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.order .no{font-size:11px;color:var(--ink-3);font-family:ui-monospace,Menlo,monospace}
.order .tt{font-size:15px;font-weight:600;line-height:1.35;margin-bottom:6px}
.order .l3{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--ink-3)}
.order .amt{font-size:15px;font-weight:700;color:var(--orange)}
.pill{font-size:11px;padding:2px 8px;border-radius:20px;background:#EEF3FB;color:var(--blue);font-weight:600}
.pill.new{background:#F0F2F6;color:#77808F}
.pill.quoted{background:#E8F0FC;color:#2A6FD6}
.pill.signed{background:#E4F6EE;color:var(--green)}
.pill.working{background:#FDF1DF;color:#C4790F}
.pill.done{background:#EDF0F6;color:#5B6B85}
.pill.approved{background:#E4F6EE;color:#1F9E6B}
.pill.accepted{background:#EDF0F6;color:#5B6B85}
.pill.auditing{background:#FBF0DC;color:#9A6412}
.pill.settled{background:#DDF3E8;color:#0F7A52}

/* ---------- 表单 ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;color:var(--ink-2);margin-bottom:7px;font-weight:500}
.field label .req{color:var(--red);margin-left:2px}
input,select,textarea{
  width:100%;border:1px solid var(--line);border-radius:10px;padding:11px 12px;
  font-size:15px;font-family:inherit;background:#fff;color:var(--ink);outline:none;
}
input:focus,select,textarea:focus{border-color:var(--blue-2)}
textarea{min-height:64px;resize:vertical}
.two{display:flex;gap:10px}
.two>*{flex:1}

/* ---------- 芯片选择 ---------- */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{
  padding:8px 14px;border-radius:10px;background:#fff;border:1px solid var(--line);
  font-size:14px;color:var(--ink-2);cursor:pointer;user-select:none;
}
.chip.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.chip.sm{padding:6px 11px;font-size:13px}
/* 工人标签上的小叉：点一下就把这个人从名单里删掉 */
.chip .wkdel{
  display:inline-block;min-width:20px;height:20px;line-height:19px;text-align:center;
  border-radius:10px;background:rgba(0,0,0,.10);color:inherit;font-style:normal;font-size:14px;
  margin:-3px -5px -3px 7px;vertical-align:1px;
}
.chip.on .wkdel{background:rgba(255,255,255,.28)}

/* ---------- 按钮 ---------- */
.btn{
  display:block;width:100%;padding:14px;border:0;border-radius:12px;
  background:var(--blue);color:#fff;font-size:16px;font-weight:600;
  font-family:inherit;cursor:pointer;text-align:center;
}
.btn:active{opacity:.88}
.btn.ghost{background:#fff;color:var(--blue);border:1px solid var(--blue)}
.btn.orange{background:var(--orange)}
.btn.gray{background:#EDF0F6;color:var(--ink-2)}
.btn.sm{padding:9px;font-size:14px;border-radius:9px}
.btn:disabled{opacity:.45}
.btnRow{display:flex;gap:10px;margin-top:12px}
.btnRow .btn{margin:0}

/* ---------- 拍照 ---------- */
.photoGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.shot{position:relative;aspect-ratio:3/4;border-radius:10px;overflow:hidden;background:#F4F6FA;border:1px dashed #CFD8E6;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer}
.shot img{width:100%;height:100%;object-fit:cover}
.shot .ph{font-size:26px;color:#B9C4D6;margin-bottom:4px}
.shot .nm{font-size:12px;color:var(--ink-2);font-weight:600}
.shot .tp{font-size:10px;color:var(--ink-3);margin-top:2px;padding:0 4px;text-align:center;line-height:1.3}
.shot.done{border:1px solid var(--line)}
.shot.locked{background:#F7F9FC;border-color:#DDE3EC;opacity:.72}
.shot.locked .ph{color:#C3CEDF}
.shot.locked .nm{color:#8A93A5}
.shot .who{position:absolute;bottom:0;left:0;right:0;background:rgba(31,158,107,.94);color:#fff;font-size:9.5px;padding:2px 4px;line-height:1.35;text-align:center;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shot .tag{position:absolute;top:6px;left:6px;background:rgba(31,158,107,.92);color:#fff;font-size:10px;padding:2px 7px;border-radius:6px;font-weight:600}
.shot .del{position:absolute;top:6px;right:6px;background:rgba(0,0,0,.5);color:#fff;width:20px;height:20px;border-radius:50%;font-size:12px;display:flex;align-items:center;justify-content:center}

/* ---------- 报价值 ---------- */
.ql{display:flex;align-items:center;gap:9px;padding:10px 0;border-bottom:1px solid var(--line)}
.ql .ck{width:22px;height:22px;border-radius:6px;border:1.5px solid #C3CEDF;flex:0 0 22px;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;cursor:pointer}
.ql .ck.on{background:var(--blue);border-color:var(--blue)}
.ql .nm{flex:1;font-size:14px;line-height:1.35}
.ql .nm small{display:block;font-size:11px;color:var(--ink-3);margin-top:2px}
.ql .qty{width:46px;text-align:center;border:1px solid var(--line);border-radius:7px;padding:5px 2px;font-size:13px}
.ql .pr{width:64px;text-align:right;font-size:13px;font-weight:600;color:var(--ink)}
.ql .am{width:74px;text-align:right;font-size:13px;font-weight:700;color:var(--orange)}
.ql.off{opacity:.42}
/* 自己加的工序：带一个「删」字，点掉就没了 */
.ql .nm .lnDel{float:right;font-size:11px;color:var(--red);font-weight:400;padding:0 2px 0 6px}
/* 报价方式四选一：两列等宽，点哪个出哪个界面 */
.panelGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pgBtn{padding:11px 6px;text-align:center;font-size:13.5px;border-radius:10px;
  border:1px solid var(--line);background:#fff;color:var(--ink-2)}
.pgBtn.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.addRow{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--blue);
  font-size:13.5px;font-weight:600;padding:12px 0 4px;border-top:1px dashed var(--line);margin-top:4px}
.sum{display:flex;justify-content:space-between;padding:7px 0;font-size:14px}
.sum.big{border-top:1px dashed var(--line);margin-top:6px;padding-top:11px;font-size:17px;font-weight:700}
.sum.big .n{color:var(--orange);font-size:19px}
.warn{background:#FEF4E7;border:1px solid #F6DFC0;color:#9A5B12;font-size:12.5px;padding:9px 11px;border-radius:9px;margin-top:10px;line-height:1.5}
.tip{background:#EEF4FD;border:1px solid #D8E4F7;color:#2A5C9E;font-size:12.5px;padding:9px 11px;border-radius:9px;margin-top:10px;line-height:1.5}

/* ---------- 签字 ---------- */
.signpad{border:1px dashed #C3CEDF;border-radius:12px;background:#FCFDFF;touch-action:none;display:block;width:100%}
.signed-img{max-width:100%;border:1px solid var(--line);border-radius:10px;background:#fff}

/* ---------- 空态 ---------- */
.empty{text-align:center;padding:56px 24px;color:var(--ink-3)}
.empty .ic{font-size:44px;opacity:.35;margin-bottom:12px}
.empty .t{font-size:15px;color:var(--ink-2);margin-bottom:6px}
.empty .s{font-size:13px;line-height:1.6}

/* ---------- 首页头部 ---------- */
.hero{background:linear-gradient(135deg,#14539A,#1E6BC4);color:#fff;padding:18px 16px 16px;padding-top:calc(18px + env(safe-area-inset-top))}
.hero .hi{font-size:13px;opacity:.85;margin-bottom:3px}
.hero .nm{font-size:19px;font-weight:700;margin-bottom:14px}
.hero .grid{display:flex;gap:10px}
.hero .cell{flex:1;background:rgba(255,255,255,.14);border-radius:11px;padding:10px}
.hero .cell .n{font-size:19px;font-weight:700;line-height:1.2}
.hero .cell .l{font-size:11px;opacity:.85;margin-top:2px}

/* ---------- 布局小件 ---------- */
.flex{display:flex}.between{justify-content:space-between}.center{align-items:center}
.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}
.f12{font-size:12px}.f13{font-size:13px}.c3{color:var(--ink-3)}.c2{color:var(--ink-2)}
.b{font-weight:600}

/* ---------- toast ---------- */
#toast{
  position:fixed;left:50%;bottom:88px;transform:translateX(-50%) translateY(10px);
  background:rgba(24,32,48,.92);color:#fff;padding:10px 18px;border-radius:22px;
  font-size:14px;opacity:0;pointer-events:none;transition:.22s;z-index:99;max-width:80%;text-align:center;
}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- 报价单打印视图 ---------- */
.sheet{background:#fff;padding:16px;border-radius:var(--radius);font-size:13px}
.sheet h3{text-align:center;font-size:16px;margin:0 0 4px}
.sheet .sub{text-align:center;font-size:11px;color:var(--ink-3);margin-bottom:12px}
.sheet table{width:100%;border-collapse:collapse;font-size:11.5px}
.sheet th,.sheet td{border:1px solid #D8DFEA;padding:5px 4px;text-align:center}
.sheet th{background:#EEF3FB;font-weight:600}
.sheet td.l{text-align:left}
@media print{
  #tabbar,#toast,.nav,.no-print{display:none!important}
  #phone{max-width:none;box-shadow:none}
  #app{padding-bottom:0}
  body{background:#fff}
}

/* 工地码 */
.qrBox{display:flex;justify-content:center;padding:14px 0 10px}
.qrBox canvas{width:200px;height:200px;border-radius:10px;background:#fff}
.qrCode{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:23px;font-weight:700;
  letter-spacing:5px;color:var(--brand);margin-top:2px}
.btnRow{display:flex;gap:10px}
.btnRow .btn{flex:1}
.btn.sm2{padding:11px;font-size:14px}

/* 工地照片 */
.pgGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pgItem{position:relative;border-radius:10px;overflow:hidden;background:#E9EEF6;aspect-ratio:3/4}
.pgItem img{width:100%;height:100%;object-fit:cover;display:block}
.pgWho{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.58);color:#fff;
  font-size:10px;padding:2px 5px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pgDel{position:absolute;right:4px;top:4px;width:22px;height:22px;border-radius:50%;
  background:rgba(0,0,0,.5);color:#fff;font-size:14px;line-height:22px;text-align:center}
/* 大图 */
.bigView{position:fixed;inset:0;background:#000;z-index:99990;display:flex;flex-direction:column}
.bigView .bvTop{color:#fff;font-size:13px;padding:calc(12px + env(safe-area-inset-top)) 16px 10px;
  display:flex;justify-content:space-between;align-items:center;background:rgba(255,255,255,.08);gap:10px}
.bigView .bvInfo{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.9}
.bigView .bvActs{display:flex;align-items:center;gap:4px;flex:0 0 auto}
.bigView .bvSave{font-size:13px;font-weight:600;color:#0B1220;background:#fff;padding:6px 14px;border-radius:16px}
.bigView .bvClose{font-size:22px;padding:0 8px}
.bigView .bvBody{flex:1;display:flex;align-items:center;justify-content:center;padding:8px;overflow:hidden}
.bigView .bvBody img{max-width:100%;max-height:100%;object-fit:contain}
.bigView .bvBot{color:#fff;font-size:12px;text-align:center;padding:10px 16px calc(16px + env(safe-area-inset-bottom));opacity:.8}
.bigView .bvCount{opacity:.55;font-size:12px;margin-left:2px}
.bigView .bvBody{position:relative}
.bigView .bvNav{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:64px;line-height:60px;text-align:center;
  font-size:30px;color:#fff;background:rgba(255,255,255,.14);border-radius:10px;user-select:none}
.bigView .bvPrev{left:6px}
.bigView .bvNext{right:6px}

/* 登录 / 注册 —— 深色科技风落地页 */
.authWrap{min-height:100vh;background:#070C16;padding-bottom:28px;position:relative}
.landHero{position:relative;overflow:hidden;padding:18px 18px 26px;
  background:radial-gradient(125% 92% at 50% -16%,#1D4674 0%,#0C1A2E 48%,#070C16 100%)}
.landGrid{position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(140,180,255,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(140,180,255,.07) 1px,transparent 1px);
  background-size:26px 26px;
  -webkit-mask-image:radial-gradient(115% 78% at 50% 0%,#000 0%,rgba(0,0,0,.5) 58%,transparent 100%);
  mask-image:radial-gradient(115% 78% at 50% 0%,#000 0%,rgba(0,0,0,.5) 58%,transparent 100%)}
.orb{position:absolute;border-radius:50%;pointer-events:none;will-change:transform}
.orbA{width:300px;height:300px;top:-130px;right:-110px;
  background:radial-gradient(circle,rgba(56,189,248,.40),rgba(56,189,248,0) 68%);
  animation:orbA 17s ease-in-out infinite}
.orbB{width:250px;height:250px;top:120px;left:-120px;
  background:radial-gradient(circle,rgba(129,140,248,.34),rgba(129,140,248,0) 68%);
  animation:orbB 21s ease-in-out infinite}
@keyframes orbA{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(-26px,30px,0)}}
@keyframes orbB{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(28px,-22px,0)}}

.heroTop{position:relative;z-index:2;display:flex;align-items:center;gap:10px}
.heroLogo{flex:none;width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,#2F80ED,#22D3EE);box-shadow:0 6px 18px rgba(34,211,238,.32)}
.heroLogo svg{width:18px;height:18px}
.heroName{font-size:19px;font-weight:700;color:#fff;letter-spacing:1.6px;line-height:1.2}
.heroName span{display:block;font-size:10px;font-weight:400;color:#8FA6C4;letter-spacing:.8px;margin-top:3px}
.landChip{display:inline-flex;align-items:center;gap:7px;position:relative;z-index:2;margin-top:15px;
  padding:5px 11px;border-radius:999px;font-size:11px;color:#A8E4FA;
  background:rgba(34,211,238,.10);border:1px solid rgba(34,211,238,.36)}
.landChip i{width:6px;height:6px;border-radius:50%;background:#34D399;animation:dotPulse 2.4s ease-out infinite}
@keyframes dotPulse{0%{box-shadow:0 0 0 0 rgba(52,211,153,.55)}70%{box-shadow:0 0 0 7px rgba(52,211,153,0)}100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}}

.heroLead{position:relative;z-index:2;margin-top:12px;font-size:21px;line-height:1.45;font-weight:700;
  color:#F1F6FF;letter-spacing:.2px;text-shadow:0 2px 28px rgba(56,189,248,.26)}
.heroLead em{font-style:normal;color:#5FD3F5}
.heroSub{position:relative;z-index:2;margin-top:9px;font-size:12.5px;line-height:1.75;color:#9BAFCB}

.docCard{position:relative;z-index:2;margin:18px 0 0;border-radius:15px;padding:12px 13px 11px;
  background:linear-gradient(152deg,rgba(20,34,58,.96),rgba(9,16,28,.99));
  border:1px solid rgba(120,180,255,.18);
  box-shadow:0 16px 36px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.07);
  animation:cardFloat 7.5s ease-in-out infinite}
@keyframes cardFloat{0%,100%{transform:translateY(0) rotate(-.3deg)}50%{transform:translateY(-6px) rotate(.3deg)}}
.dcTop{display:flex;align-items:center;justify-content:space-between}
.dcNo{font-size:9.5px;color:#8098B8;letter-spacing:.6px;font-variant-numeric:tabular-nums}
.dcPill{font-size:9.5px;color:#9BE8FF;background:rgba(34,211,238,.13);
  border:1px solid rgba(34,211,238,.34);padding:1px 7px;border-radius:999px}
.dcAddr{margin-top:7px;font-size:12.5px;color:#DCE9FF;font-weight:600;line-height:1.4}
.dcAmt{margin-top:5px;font-size:23px;font-weight:800;color:#5FD3F5;letter-spacing:.3px;
  font-variant-numeric:tabular-nums;text-shadow:0 0 20px rgba(34,211,238,.4)}
.dcAmt span{font-size:10.5px;color:#8EA3C0;font-weight:400;margin-left:9px;letter-spacing:0}
.dcFlow{display:flex;margin-top:11px}
.dcStep{flex:1;height:3px;border-radius:2px;background:rgba(120,180,255,.16);margin-right:4px}
.dcStep.on{background:linear-gradient(90deg,#22D3EE,#2F80ED);box-shadow:0 0 8px rgba(34,211,238,.55)}
.dcStep:last-child{margin-right:0}
.dcNames{display:flex;margin-top:5px;font-size:8.5px;color:#738BAA;letter-spacing:.2px}
.dcNames span{flex:1;text-align:center}
.dcFoot{display:flex;justify-content:space-between;margin-top:9px;padding-top:8px;
  border-top:1px dashed rgba(120,180,255,.16);font-size:9.5px;color:#7E95B3}

.heroStats{position:relative;z-index:2;display:flex;margin-top:16px}
.heroStat{flex:1;text-align:center;position:relative}
.heroStat+.heroStat::before{content:'';position:absolute;left:0;top:7px;bottom:7px;width:1px;background:rgba(120,180,255,.14)}
.heroStat b{display:block;font-size:16px;font-weight:700;color:#EAF3FF;letter-spacing:.4px;
  font-variant-numeric:tabular-nums}
.heroStat b i{font-style:normal;font-size:10px;font-weight:400;color:#8FA6C4;margin-left:2px}
.heroStat span{display:block;font-size:10px;color:#829CBB;margin-top:4px;letter-spacing:.3px}

.heroCta{position:relative;z-index:2;display:block;width:100%;margin-top:16px;height:47px;border:0;
  border-radius:13px;font-family:inherit;font-size:16.5px;font-weight:700;color:#04202E;cursor:pointer;
  background:linear-gradient(118deg,#B4F4FF,#5ECBFA 52%,#3E9BF0);
  box-shadow:0 10px 26px rgba(47,128,237,.34);overflow:hidden}
.heroCta::after{content:'';position:absolute;top:0;left:-45%;width:32%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);
  animation:sweep 3.8s ease-in-out infinite}
@keyframes sweep{0%{left:-45%}52%{left:118%}100%{left:118%}}
.heroCta:active{transform:scale(.985)}
.heroAlt{position:relative;z-index:2;text-align:center;font-size:11.5px;color:#8599B7;margin-top:11px}
.heroAlt b{color:#7DD3FC;font-weight:500}

/* 卖点网格（bento） */
.bento{display:flex;flex-wrap:wrap;padding:10px 12px 0;position:relative;z-index:2}
.bcell{width:50%;padding:0 3px 8px;display:flex}
.bcellIn{flex:1;display:flex;gap:8px;padding:11px 10px;border-radius:14px;
  background:linear-gradient(165deg,rgba(255,255,255,.07),rgba(255,255,255,.02));
  border:1px solid rgba(130,175,255,.12);box-shadow:inset 0 1px 0 rgba(255,255,255,.07)}
.bcellIc{flex:none;width:27px;height:27px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  background:rgba(47,128,237,.20);border:1px solid rgba(120,180,255,.22)}
.bcellIc svg{width:15px;height:15px;stroke:#9BE8FF;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.bcellT{font-size:12.5px;font-weight:600;color:#E7F0FF;line-height:1.35}
.bcellS{font-size:10.5px;color:#8DA4C2;line-height:1.5;margin-top:2px}

/* 登录卡 */
.authCard{position:relative;z-index:2;margin:6px 14px 0;padding:17px 15px 15px;border-radius:19px;
  background:linear-gradient(180deg,rgba(23,37,60,.95),rgba(10,18,31,.98));
  border:1px solid rgba(130,175,255,.16);
  box-shadow:0 18px 42px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.07)}
.authTitle{font-size:17.5px;font-weight:700;color:#EDF4FF;margin-bottom:5px}
.authLead{font-size:11.5px;color:#95AAC7;line-height:1.65;margin:0 0 14px}
.authLbl{display:block;font-size:11.5px;color:#8EA3C0;margin:0 0 6px 2px}
.authInp{width:100%;border:1px solid rgba(130,175,255,.20);border-radius:11px;padding:12px 13px;
  font-size:16px;outline:none;font-family:inherit;margin-bottom:12px;background:#101E33;color:#F7FAFF}
.authInp::placeholder{color:#6E85A6}
.authInp:focus{border-color:#3FA9E5;background:#101C2F;box-shadow:0 0 0 3px rgba(47,128,237,.16)}
.btn.authBtn{width:100%;margin-top:2px;padding:0;height:46px;line-height:46px;border:0;border-radius:12px;
  font-size:16px;font-weight:700;color:#04202E;
  background:linear-gradient(118deg,#B4F4FF,#5ECBFA 52%,#3E9BF0);
  box-shadow:0 8px 22px rgba(47,128,237,.30)}
.btn.authBtn:active{opacity:1;transform:scale(.985)}
.authSwap{text-align:center;font-size:12.5px;color:#7DD3FC;padding:14px 0 4px;font-weight:500}
.authSwap.dim{padding-top:2px;font-size:11.5px;color:#8EA3C0;font-weight:400}
.landNote{text-align:center;padding:16px 24px 0;color:#7C91AD;font-size:11px;line-height:1.8}
.landNote b{color:#7DD3FC;font-weight:500}

/* 入场与滚动渐显 */
.fresh [data-in]{animation:inUp .72s cubic-bezier(.22,1,.36,1) both}
.fresh [data-in="2"]{animation-delay:.09s}
.fresh [data-in="3"]{animation-delay:.18s}
.fresh [data-in="4"]{animation-delay:.27s}
.fresh [data-in="5"]{animation-delay:.36s}
@keyframes inUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
[data-rv].rv-in{animation:rvUp .6s cubic-bezier(.22,1,.36,1) both}
@keyframes rvUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){
  .orbA,.orbB,.docCard,.heroCta::after,.landChip i{animation:none}
  .fresh [data-in],[data-rv].rv-in{animation:none}
}

/* 报价页单价输入 */
.ql .pr{width:66px;border:1px solid #E4E9F2;border-radius:7px;text-align:right;
  padding:5px 5px;font-size:12.5px;font-weight:600;font-family:inherit;background:#fff;
  color:var(--ink);outline:none;-moz-appearance:textfield}
.ql .pr:focus{border-color:var(--brand)}
.ql .pr::-webkit-outer-spin-button,.ql .pr::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
/* 价目表 */
.pbRow{padding:11px 0;border-bottom:1px solid #EEF2F8}
.pbRow:last-child{border-bottom:0}
.pbTop{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}
.pbName{font-size:14px;line-height:1.35;flex:1;padding-right:8px}
.pbDot{display:inline-block;margin-left:6px;font-size:10px;color:#1F9E6B;background:#E9F7F1;
  padding:1px 5px;border-radius:4px;vertical-align:middle;font-weight:500}
.pbUnit{font-size:11px;color:#8A93A5;white-space:nowrap;padding-top:2px}
.pbPrices{display:flex;gap:8px}
.pbCell{flex:1;display:flex;align-items:center;border:1px solid #E4E9F2;border-radius:9px;
  padding:0 8px;background:#FBFCFE}
.pbCell i{font-style:normal;font-size:11px;color:#8A93A5;margin-right:4px}
.pbCell input{border:0;background:transparent;width:100%;padding:9px 0;font-size:15px;
  font-weight:600;font-family:inherit;outline:none;color:var(--ink);-moz-appearance:textfield}
.pbCell input::-webkit-outer-spin-button,.pbCell input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.pbNote{font-size:11px;color:#9AA3B4;margin-top:6px;line-height:1.4}

/* 报价行压缩，给工序名留出位置 */
.ql{gap:7px}
.ql .ck{width:20px;height:20px;border-radius:5px;flex:0 0 20px;font-size:12px}
.ql .nm{font-size:13.5px}
.ql .nm small{font-size:10.5px;margin-top:1px}
.ql .qty{width:40px;font-size:12.5px;padding:5px 1px}
.ql .pr{width:58px;font-size:12px;padding:5px 3px}
.ql .am{width:64px;font-size:12.5px}

/* 首页：紧急标、资金类型、筛选 */
.urgentTag{background:#FDE8E8;color:#C0392B;font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:4px;border:1px solid #F3C0C0;white-space:nowrap}
.order .l1{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ptTag{border-radius:4px;font-size:10.5px;font-weight:700;padding:1px 6px;white-space:nowrap}

/* 落地页细节：顶部光带、进度呼吸、数值微光 */
.landHero::before{content:'';position:absolute;left:0;right:0;top:0;height:1.5px;z-index:3;
  background:linear-gradient(90deg,transparent,rgba(125,233,250,.85),rgba(47,128,237,.6),transparent)}
.authCard::before{content:'';position:absolute;left:22px;right:22px;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(125,233,250,.55),transparent)}
.docCard{box-shadow:0 16px 36px rgba(0,0,0,.5),0 0 30px rgba(34,211,238,.10),inset 0 1px 0 rgba(255,255,255,.07)}
.dcStep.on{animation:barGlow 3.2s ease-in-out infinite}
.dcStep.on:nth-child(2){animation-delay:.35s}
.dcStep.on:nth-child(3){animation-delay:.7s}
@keyframes barGlow{0%,100%{opacity:.72}50%{opacity:1}}
.heroStat b{text-shadow:0 0 16px rgba(34,211,238,.35)}
@media (prefers-reduced-motion: reduce){.dcStep.on{animation:none}}
/* 网格缓慢流动，制造"数据在跑"的感觉（很轻，肉眼几乎察觉不到） */
.landGrid{animation:gridDrift 40s linear infinite}
@keyframes gridDrift{from{background-position:0 0,0 0}to{background-position:26px 26px,26px 26px}}
@media (prefers-reduced-motion: reduce){.landGrid{animation:none}}

/* 登录页：整页深色，去掉给底部导航留的 76px 空白，避免滚到底露出浅色 */
#app.authing{padding-bottom:0;background:#070C16}

/* 首屏下载入口 */
.heroGet{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:7px;
  width:100%;margin-top:10px;padding:11px 12px;border-radius:12px;
  background:rgba(255,255,255,.045);border:1px solid rgba(140,180,255,.20);
  color:#CFE3FF;font-size:13px;font-weight:500;text-decoration:none;font-family:inherit;
  -webkit-tap-highlight-color:transparent;box-sizing:border-box}
.heroGet svg{width:15px;height:15px;stroke:#7DD3FC;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.heroGet i{font-style:normal;font-size:10.5px;color:#7E93B0;margin-left:3px}
.heroGet:active{background:rgba(255,255,255,.09)}

/* 单据卡竖向扫描光 */
.docCard{overflow:hidden}
.docCard::after{content:'';position:absolute;left:0;right:0;top:-45%;height:38%;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(125,233,250,.11),transparent);
  animation:scanY 6s linear infinite}
@keyframes scanY{0%{top:-45%}55%{top:108%}100%{top:108%}}
@media (prefers-reduced-motion: reduce){.docCard::after{animation:none}}

/* 主标题缓慢扫光（不支持渐变文字的老浏览器自动退回纯白字） */
@supports (-webkit-background-clip:text) or (background-clip:text){
  .heroLead{background:linear-gradient(96deg,#FFFFFF 6%,#FFFFFF 40%,#A9ECFF 50%,#FFFFFF 60%,#FFFFFF 94%);
    background-size:230% 100%;-webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;color:transparent;text-shadow:none;
    animation:titleShine 9s ease-in-out infinite}
  .heroLead em{-webkit-text-fill-color:#5FD3F5;color:#5FD3F5}
  @keyframes titleShine{0%{background-position:130% 0}52%{background-position:-30% 0}100%{background-position:-30% 0}}
  @media (prefers-reduced-motion: reduce){.heroLead{animation:none;background-position:50% 0}}
}

/* 卖点逐格入场 */
.bento .bcell:nth-child(2).rv-in{animation-delay:.07s}
.bento .bcell:nth-child(3).rv-in{animation-delay:.14s}
.bento .bcell:nth-child(4).rv-in{animation-delay:.21s}

/* 页脚 */
.landFoot{text-align:center;color:#4E6483;font-size:10.5px;padding:16px 20px 4px;letter-spacing:.3px}

/* 品牌行：名字放大 + 右上角下载入口 */
.heroTop{align-items:center}
.heroLogo{width:40px;height:40px;border-radius:13px}
.heroLogo svg{width:22px;height:22px}
.heroName{flex:1;font-size:25px;letter-spacing:2px}
.heroName span{font-size:10.5px;letter-spacing:.5px;margin-top:4px}

.dlBtn{position:relative;flex:none;margin-left:6px;display:flex;align-items:center;gap:5px;
  padding:8px 12px;border-radius:12px;font-size:12.5px;font-weight:600;color:#C6F1FF;cursor:pointer;
  background:linear-gradient(140deg,rgba(34,211,238,.24),rgba(47,128,237,.15));
  border:1px solid rgba(96,222,255,.46);overflow:hidden;
  -webkit-tap-highlight-color:transparent;
  animation:dlGlow 3.4s ease-in-out infinite}
@keyframes dlGlow{
  0%,100%{box-shadow:0 0 13px rgba(34,211,238,.16),inset 0 1px 0 rgba(255,255,255,.16)}
  50%{box-shadow:0 0 26px rgba(34,211,238,.40),inset 0 1px 0 rgba(255,255,255,.24)}}
.dlBtn::after{content:'';position:absolute;top:0;left:-60%;width:45%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(170,242,255,.42),transparent);
  animation:dlSweep 3.4s ease-in-out infinite}
@keyframes dlSweep{0%{left:-60%}55%{left:135%}100%{left:135%}}
.dlBtn svg{width:14px;height:14px;stroke:#8FE8FF;fill:none;stroke-width:2.1;
  stroke-linecap:round;stroke-linejoin:round;position:relative;z-index:1}
.dlBtn span{position:relative;z-index:1}
.dlBtn em{width:5px;height:5px;border-radius:50%;background:#34D399;position:relative;z-index:1;
  box-shadow:0 0 6px rgba(52,211,153,.95)}
.dlBtn:active{transform:scale(.97)}
@media (prefers-reduced-motion: reduce){.dlBtn,.dlBtn::after{animation:none}}

/* 装到手机的说明抽屉 */
.dlMask{position:fixed;inset:0;z-index:9200;background:rgba(4,8,16,.64);
  animation:fadeIn .22s ease both}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.dlSheet{position:fixed;left:0;right:0;bottom:0;z-index:9201;max-width:460px;margin:0 auto;
  border-radius:20px 20px 0 0;padding:20px 18px calc(18px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,#16273E,#0A1220);
  border:1px solid rgba(130,175,255,.20);border-bottom:0;
  box-shadow:0 -18px 44px rgba(0,0,0,.6);
  animation:sheetUp .34s cubic-bezier(.22,1,.36,1) both}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:none}}
.dlT{font-size:16.5px;font-weight:700;color:#EAF3FF;margin-bottom:5px}
.dlS{font-size:12px;color:#8FA3C0;line-height:1.7;margin-bottom:14px}
.dlStep{display:flex;gap:10px;margin-bottom:11px;align-items:flex-start}
.dlStep i{flex:none;width:20px;height:20px;border-radius:50%;font-style:normal;
  background:linear-gradient(150deg,#2F80ED,#22D3EE);color:#04121F;
  font-size:11.5px;font-weight:800;text-align:center;line-height:20px}
.dlStep span{font-size:13px;color:#D6E4F7;line-height:1.7}
.dlStep span b{color:#8FE8FF;font-weight:600}
.dlRow{display:flex;gap:9px;margin-top:16px}
.dlRow button{flex:1;height:44px;border-radius:11px;border:1px solid rgba(130,175,255,.22);
  background:rgba(255,255,255,.06);color:#CFE3FF;font-size:14px;font-weight:600;font-family:inherit;
  cursor:pointer}
.dlRow button.pri{border:0;color:#04202E;background:linear-gradient(118deg,#B4F4FF,#5ECBFA 52%,#3E9BF0);
  box-shadow:0 8px 20px rgba(47,128,237,.28)}

/* 落地页：三种报法横条 */
.modeBar{position:relative;z-index:2;margin:14px 12px 0;padding:14px 12px 12px;border-radius:16px;
  background:linear-gradient(160deg,rgba(34,211,238,.10),rgba(47,128,237,.06));
  border:1px solid rgba(120,180,255,.18)}
.modeTtl{font-size:12.5px;font-weight:700;color:#E7F0FF;text-align:center;letter-spacing:.3px}
.modeRow{display:flex;margin-top:11px}
.modeIt{flex:1;text-align:center;position:relative;padding:0 4px}
.modeIt+.modeIt::before{content:'';position:absolute;left:0;top:3px;bottom:3px;width:1px;background:rgba(120,180,255,.16)}
.modeIt b{display:block;font-size:12.5px;font-weight:600;color:#9BE8FF}
.modeIt span{display:block;font-size:10px;color:#7E93B0;margin-top:3px;line-height:1.4}
.modeTip{margin-top:11px;padding-top:9px;border-top:1px dashed rgba(120,180,255,.16);
  text-align:center;font-size:11px;color:#8FA6C4}
.modeTip em{font-style:normal;color:#5FD3F5;font-weight:600}

/* 落地页：证据链 */
.proofCard{position:relative;z-index:2;margin:4px 12px 0;padding:14px 13px;border-radius:16px;
  background:linear-gradient(160deg,rgba(255,255,255,.06),rgba(255,255,255,.02));
  border:1px solid rgba(130,175,255,.14);box-shadow:inset 0 1px 0 rgba(255,255,255,.07)}
.proofHead{display:flex;align-items:center;gap:8px}
.proofHead svg{width:16px;height:16px;stroke:#9BE8FF;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.proofT{font-size:12.5px;font-weight:700;color:#E7F0FF}
.proofL{margin-top:9px;font-size:10.5px;color:#8DA4C2;line-height:1.9}
.proofL i{font-style:normal;color:#C6DBF5}
.proofN{margin-top:8px;font-size:10.5px;color:#7E93B0;line-height:1.7;
  padding-top:8px;border-top:1px dashed rgba(120,180,255,.14)}
.proofN b{color:#5FD3F5;font-weight:600}

/* ---------- 会员 / 开通码 ---------- */
.subHero{background:#fff;border-radius:16px;padding:16px 16px 14px;border:1px solid var(--line);
  box-shadow:0 2px 10px rgba(20,40,80,.05)}
.subHero.on{background:linear-gradient(135deg,#14539A,#1E6BC4);border-color:#14539A;color:#fff}
.subHT{font-size:14px;font-weight:700;color:var(--ink)}
.subHero.on .subHT{color:#fff}
.subHD{font-size:12.5px;color:var(--ink-2);margin-top:7px;line-height:1.7}
.subHero.on .subHD{color:#CFE1F7}
.subHD b{color:var(--blue);font-weight:700}
.subHero.on .subHD b{color:#fff}
.subBar{height:6px;border-radius:99px;background:#E9EEF7;margin-top:10px;overflow:hidden}
.subHero.on .subBar{background:rgba(255,255,255,.22)}
.subBar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#2A7BD4,#5ECBFA);
  transition:width .5s ease}
.subHero.on .subBar i{background:linear-gradient(90deg,#B4F4FF,#5ECBFA)}
.subHF{font-size:11.5px;color:var(--ink-3);margin-top:9px;line-height:1.7}
.subHero.on .subHF{color:#BBD4F1}
.subHF b{color:#B08040}

.subPlans{display:flex;gap:8px}
.subPlan{flex:1;border:1.5px solid var(--line);border-radius:12px;padding:11px 8px 10px;text-align:center;cursor:pointer;
  background:#FBFCFE}
.subPlan.on{border-color:var(--blue);background:#F2F7FE;box-shadow:0 2px 10px rgba(20,83,154,.10)}
.subPn{font-size:12.5px;font-weight:700;color:var(--ink)}
.subPp{font-size:11px;color:var(--ink-3);margin-top:6px}
.subPp b{font-size:21px;color:var(--blue);font-weight:800;margin:0 2px}
.subPp i{font-style:normal;font-size:10.5px;color:var(--ink-3)}
.subPo{font-size:10px;color:#A7AEBE;text-decoration:line-through;margin-top:2px}
.subPt{font-size:10px;color:var(--ink-3);margin-top:6px;line-height:1.45}

.subMine{border:1px solid #D6E2F2;background:#F7FAFF}
.subMT{font-size:14px;font-weight:700;color:#14539A}
.subBadge{flex:none;font-size:12px;font-weight:700;color:#fff;background:#14539A;
  padding:6px 11px;border-radius:99px;white-space:nowrap}
.subBadge.on{background:#1F9E6B}

.subAdmLine{text-align:center;font-size:12px;color:#9AA3B4;padding:4px 0 20px;text-decoration:underline}

.subCodes{margin-top:8px}
.subCode{display:flex;justify-content:space-between;align-items:center;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;letter-spacing:1px;
  padding:9px 11px;border-radius:9px;background:#fff;border:1px solid #CFE9DA;margin-bottom:7px;
  color:#177653;font-weight:700}
.subCode span{font-family:inherit;font-size:11px;font-weight:400;color:#8A93A5;letter-spacing:0}

.subRec{display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:9px 0;border-bottom:1px solid var(--line)}
.subRec:last-child{border-bottom:0}
.subRc{font-size:13.5px;color:var(--ink);letter-spacing:.6px}
.subRs{flex:none;font-size:11px;padding:3px 8px;border-radius:99px;background:#EAF7F0;color:#177653;font-weight:600}
.subRs.used{background:#F1F3F7;color:#8A93A5}
.subRs.rev{background:#FDECEC;color:#A32B2B}

/* 会员页的输入框（浅色底，别用落地页那套深色） */
.subInp{width:100%;border:1px solid var(--line);border-radius:11px;padding:13px;
  font-size:16px;font-family:inherit;background:#FBFCFE;color:var(--ink);outline:none;margin-bottom:12px}
.subInp:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(20,83,154,.10)}
.subInp::placeholder{color:#A7AEBE;letter-spacing:.5px}
