/* ═══════════════════════════════════════════════
   找资质 · 工程圈主站同色 · H5
   ═══════════════════════════════════════════════ */
:root{
  --ink:        #f5f6fa;
  --ink-2:      #ffffff;
  --ink-3:      #f0fdfa;
  --line:       rgba(15,118,110,.12);
  --line-strong:rgba(15,118,110,.28);
  --paper:      #1a1a2e;
  --dim:        #6b7280;
  --accent:     #0f766e;
  --accent-2:   #134e4a;
  --accent-3:   #fbbf24;
  --accent-soft:rgba(15,118,110,.08);
  --accent-glow:0 4px 16px rgba(15,118,110,.25);
  --gradient:   linear-gradient(135deg, #0f766e 0%, #14b8a6 100%);
  --gradient-warm:linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
  --cyan:       #0f766e;
  --green:      #059669;
  --red:        #ef4444;
  --yellow:     #fbbf24;
  --purple:     #0f766e;
  --serif:"Noto Serif SC", serif;
  --sans:"Noto Sans SC", sans-serif;
  --mono:"IBM Plex Mono", monospace;
  --radius:10px;
  --app-w:480px;
  --tabbar-h:62px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html{scroll-behavior:smooth;overflow-x:hidden}
body{
  background:#f5f6fa;color:var(--paper);
  font-family:var(--sans);font-size:15px;line-height:1.7;
  overflow-x:hidden;max-width:100vw;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;background:none;border:none;color:inherit}
input,select,textarea{font-family:inherit;font-size:15px;color:var(--paper)}
::selection{background:var(--accent);color:#fff}

.blueprint-bg{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(700px 500px at 15% -5%, rgba(15,118,110,.06), transparent 60%),
    radial-gradient(600px 400px at 85% 5%, rgba(20,184,166,.05), transparent 60%),
    radial-gradient(500px 600px at 50% 100%, rgba(245,158,11,.04), transparent 60%),
    #f5f6fa;}
.blueprint-bg::before{content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(15,118,110,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(15,118,110,.04) 1px,transparent 1px);
  background-size:44px 44px;
  mask-image:radial-gradient(ellipse 80% 60% at 50% 0%,#000 20%,transparent 85%);}

/* ── H5 外壳 ─────────────────────────── */
.app{
  position:relative;max-width:var(--app-w);min-height:100dvh;margin:0 auto;
  background:linear-gradient(180deg, #f5f6fa 0%, #f5f6fa 100%);
  border-left:1px solid var(--line);border-right:1px solid var(--line);
  box-shadow:0 0 80px rgba(15,118,110,.1);
  overflow-x:hidden;
}
.mono{font-family:var(--mono)}
.dim{color:var(--dim)}
.small{font-size:12px}
.req{color:var(--accent);font-style:normal;margin-left:2px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 22px;border-radius:var(--radius);
  border:1px solid var(--line-strong);color:var(--paper);
  font-size:14.5px;font-weight:500;transition:transform .15s,background .15s,border-color .15s;}
.btn:active{transform:scale(.97)}
.btn-accent{background:var(--gradient);border:none;color:#fff;font-weight:700;
  box-shadow:var(--accent-glow);}
.btn-accent-warm{background:var(--gradient-warm);border:none;color:#fff;font-weight:700;
  box-shadow:0 6px 20px rgba(245,158,11,.35);}
.btn-ghost{border-color:var(--line-strong);color:var(--dim)}
.btn-sm{padding:7px 14px;font-size:12.5px}
.btn-lg{width:100%;padding:14px;font-size:15.5px}
.btn.block{width:100%}

/* ── 视图 ─────────────────────────────── */
.view{display:none;min-height:100dvh;padding:0 16px calc(var(--tabbar-h) + 48px)}
.view.is-active{display:block;animation:viewIn .35s cubic-bezier(.22,.9,.3,1)}
@keyframes viewIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.page-head{padding:max(18px, env(safe-area-inset-top)) 0 14px;display:flex;align-items:flex-end;justify-content:space-between}
.page-title{font-family:var(--serif);font-weight:900;font-size:25px;letter-spacing:.03em}
.page-sub{font-size:10px;letter-spacing:.2em;color:var(--dim)}
.head-brand{display:flex;align-items:center;gap:10px;color:var(--cyan)}
.head-brand div{display:flex;flex-direction:column;line-height:1.2}
.head-brand strong{font-family:var(--serif);font-size:18px;letter-spacing:.08em;color:var(--paper)}
.head-brand em{font-family:var(--mono);font-style:normal;font-size:8px;letter-spacing:.22em;color:var(--dim)}
.head-loc{font-size:10.5px;color:var(--dim);letter-spacing:.1em}
.head-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.loc-btn{display:flex;align-items:center;gap:4px;color:var(--purple);font-size:11.5px;
  font-family:var(--mono);letter-spacing:.04em;padding:2px 0;}
.loc-btn:active{opacity:.7}

/* ── 招标 / 中标信息 ─────────────────── */
.b-tabs{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.b-tab{font-size:12.5px;padding:6px 15px;border-radius:99px;
  border:1px solid var(--line-strong);color:var(--dim);}
.b-tab.is-active{border-color:var(--accent);color:#fff;background:var(--accent);font-weight:700}
.b-live{margin-left:auto;display:flex;align-items:center;gap:5px;
  font-family:var(--mono);font-size:10px;color:var(--green);letter-spacing:.08em}
.b-live i{width:6px;height:6px;border-radius:50%;background:var(--green);
  box-shadow:0 0 6px var(--green);animation:pulseDot 1.6s infinite}
@keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.35}}
.b-list{display:flex;flex-direction:column;gap:9px}
.b-item{
  display:flex;flex-direction:column;gap:6px;
  border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);
  background:#fff;
  padding:12px 13px;transition:border-color .15s;
}
.b-item.win{border-left-color:var(--green)}
.b-item:active{border-color:var(--accent)}
.b-item b{font-size:13.5px;font-weight:500;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.b-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.04em}
.b-meta .b-region{color:var(--purple)}
.b-meta .b-winner{color:var(--green)}
.b-meta .b-link{margin-left:auto;color:var(--cyan)}
.b-meta .b-source{
  display:inline-flex;align-items:center;
  padding:1px 7px;border-radius:99px;font-size:9.5px;
  background:var(--accent-soft);color:var(--accent);
  border:1px solid rgba(15,118,110,.25);letter-spacing:.02em;
}

/* ── 发现页 ───────────────────────────── */
.fake-search{
  width:100%;display:flex;align-items:center;gap:9px;
  background:#fff;border:1px solid var(--line-strong);
  border-radius:99px;padding:11px 16px;color:var(--dim);font-size:13.5px;
}
.stat-strip{
  display:grid;grid-template-columns:repeat(4,1fr);
  border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));
  margin:14px 0 4px;overflow:hidden;
}
.s-item{padding:13px 4px;text-align:center;border-right:1px dashed var(--line)}
.s-item:last-child{border-right:none}
.s-item b{display:block;font-family:var(--mono);font-weight:600;font-size:21px;
  background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;line-height:1.2}
.s-item b.o{background:var(--gradient-warm);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.s-item span{font-size:10.5px;color:var(--dim);letter-spacing:.05em}

.block-head{display:flex;align-items:baseline;justify-content:space-between;margin:24px 0 12px}
.block-head h3{font-family:var(--serif);font-weight:900;font-size:18px;letter-spacing:.03em;position:relative;padding-left:12px}
.block-head h3::before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;border-radius:2px;background:var(--gradient)}
.block-head .mono{font-size:9.5px;letter-spacing:.2em;color:var(--dim)}
.more-btn{font-size:12.5px;color:var(--cyan)}

.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.cat-item{
  display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:13px 4px;border:1px solid var(--line);border-radius:var(--radius);
  background:#fff;transition:border-color .15s,background .15s;
}
.cat-item:active{border-color:var(--accent);background:var(--accent-soft)}
.cat-item svg{color:var(--accent)}
.cat-item span{font-size:11.5px;letter-spacing:.02em}

.h-scroll{display:flex;gap:12px;overflow-x:auto;padding:2px 16px 10px;margin:0 -16px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.h-scroll::-webkit-scrollbar{display:none}
.h-scroll::after{content:"";flex:0 0 4px} /* 右侧收尾留白 */
.u-card{
  scroll-snap-align:start;flex:0 0 min(240px,72%);
  border:1px solid rgba(245,158,11,.35);border-radius:var(--radius);
  background:linear-gradient(160deg,rgba(245,158,11,.10),var(--ink-2) 55%);
  padding:20px 22px;display:flex;flex-direction:column;gap:10px;
}
.u-card .count{font-family:var(--mono);font-size:11px;color:var(--accent-3);letter-spacing:.06em}
.u-card b{font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.u-card .u-meta{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--dim)}

/* ── 搜索 / 筛选 ─────────────────────── */
.search-box{
  display:flex;align-items:center;gap:9px;
  background:#fff;border:1px solid var(--line-strong);
  border-radius:99px;padding:0 15px;color:var(--dim);
}
.search-box:focus-within{border-color:var(--accent)}
.search-box input{flex:1;background:none;border:none;outline:none;padding:11px 0;font-size:14px;min-width:0}
.search-box input::placeholder{color:var(--dim)}

/* 已入驻企业轮播 */
.pv-marquee{
  display:flex;align-items:center;gap:10px;margin-bottom:12px;
  background:#fff;border:1px solid var(--line-strong);
  border-radius:99px;padding:7px 14px 7px 8px;overflow:hidden;
}
.pv-mq-badge{
  flex:none;background:var(--accent);color:#fff;font-size:10.5px;font-weight:700;
  letter-spacing:.1em;border-radius:99px;padding:4px 10px;
}
.pv-mq-mask{
  flex:1;min-width:0;overflow:hidden;position:relative;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.pv-mq-track{
  display:inline-flex;align-items:center;white-space:nowrap;
  animation:pvMarquee linear infinite;
}
.pv-mq-item{font-size:12.5px;color:var(--paper);letter-spacing:.02em}
.pv-mq-dot{flex:none;width:4px;height:4px;border-radius:50%;background:var(--cyan);opacity:.7;margin:0 14px}
@keyframes pvMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.filter-row{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}
.select{
  flex:1;min-width:0;background:#fff;border:1px solid var(--line-strong);
  border-radius:99px;padding:8px 10px;outline:none;font-size:12.5px;color:var(--paper);
  appearance:none;text-align:center;cursor:pointer;
}
.select option{background:#fff}
.chip-row{display:flex;gap:8px;flex-wrap:wrap;padding:12px 0 4px}
.q-chip{
  flex-shrink:0;font-size:12.5px;padding:6px 15px;border-radius:99px;
  border:1px solid var(--line-strong);color:var(--dim);transition:all .15s;
}
.q-chip.is-active{border-color:var(--accent);color:#fff;background:var(--accent);font-weight:600}
.result-count{font-size:11px;color:var(--dim);letter-spacing:.08em;margin:10px 0 8px}

/* ── 列表卡片 ─────────────────────────── */
.list{display:flex;flex-direction:column;gap:11px}
.d-card{
  border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(165deg,var(--ink-2),var(--ink-3));
  padding:16px 18px;display:flex;flex-direction:column;gap:10px;
  transition:border-color .15s;
}
.d-card:active{border-color:var(--accent)}
.d-card-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tag{font-family:var(--mono);font-size:10px;letter-spacing:.08em;
  padding:2.5px 8px;border-radius:4px;border:1px solid var(--line-strong);color:var(--cyan);white-space:nowrap;}
.tag-qual{border-color:rgba(15,118,110,.4);background:rgba(15,118,110,.08)}
.tag-urgent{border-color:rgba(245,158,11,.5);color:var(--accent-3);background:rgba(245,158,11,.10)}
.tag-closed{border-color:var(--dim);color:var(--dim)}
.tag-region{color:var(--purple)}
.d-card-title{font-family:var(--serif);font-weight:700;font-size:16px;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;}
.d-card-desc{color:var(--dim);font-size:12.5px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;}
.d-card-meta{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;
  border-top:1px dashed var(--line-strong);padding-top:10px;}
.meta-item{display:flex;flex-direction:column;min-width:0}
.meta-item em{font-style:normal;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;color:var(--dim)}
.meta-item b{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meta-item b.hl{color:var(--accent-3)}
.meta-item b.cy{color:var(--cyan)}
.d-card-foot{display:flex;justify-content:space-between;align-items:center;
  font-family:var(--mono);font-size:10.5px;color:var(--dim);letter-spacing:.05em;}

/* 企业卡 */
.p-card{
  border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(165deg,var(--ink-2),var(--ink-3));
  padding:16px 18px;display:flex;flex-direction:column;transition:border-color .15s;
}
.p-card:active{border-color:var(--accent)}
.p-row{display:flex;gap:13px}
.p-logo{
  flex-shrink:0;width:50px;height:50px;border-radius:var(--radius);
  border:1px solid var(--line-strong);
  background:linear-gradient(150deg,#e8f0ff,#d4e3ff);
  display:grid;place-items:center;
  font-family:var(--serif);font-weight:900;font-size:20px;
  background-clip:padding-box;
  -webkit-background-clip:padding-box;
  color:var(--accent);
  position:relative;
}
.p-logo::after{content:"";position:absolute;inset:0;border-radius:var(--radius);
  background:var(--gradient);-webkit-background-clip:text;background-clip:text;opacity:0;}
.p-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.p-name{font-weight:700;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p-tags{display:flex;gap:6px;flex-wrap:wrap}
.p-intro{font-size:12px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p-certs{display:flex;gap:6px;font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.04em}
.p-certs i{font-style:normal;color:var(--green)}

/* 卡片操作按钮（收藏 / 关注，底部胶囊，互不挤压） */
.card-actions{display:flex;gap:10px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.act-btn{
  flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:8px 0;border-radius:99px;border:1px solid var(--line-strong);
  color:var(--dim);font-size:12.5px;transition:all .15s;
}
.act-btn:active{transform:scale(.96)}
.act-btn.is-on{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.act-mini{flex:none;padding:5px 16px;font-size:12px}

/* ── 空状态 ───────────────────────────── */
.empty-state{text-align:center;padding:44px 20px;border:1px dashed var(--line-strong);border-radius:var(--radius);margin-top:6px}
.empty-state .mono{font-size:10px;letter-spacing:.2em}
.empty-state h3{font-family:var(--serif);font-size:17px;margin:6px 0 4px}
.empty-state p{color:var(--dim)}

/* ── 表单 ─────────────────────────────── */
.form-sheet{display:flex;flex-direction:column;gap:15px;
  border:1px solid var(--line-strong);border-radius:var(--radius);
  background:linear-gradient(170deg,var(--ink-2),var(--ink-3));
  padding:20px 16px;}
.form-sheet{ display:grid;grid-template-columns:1fr 1fr; }
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field.span-2{grid-column:1 / -1}
.field label{font-size:13px;font-weight:500}
.label-hint{font-weight:400;color:var(--dim);font-size:11.5px;margin-left:5px}
.field input,.field select,.field textarea{
  background:var(--ink-3);border:1px solid var(--line-strong);
  border-radius:var(--radius);padding:11px 12px;outline:none;width:100%;
  transition:border-color .15s;}
.field textarea{resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}
.field input::placeholder,.field textarea::placeholder{color:rgba(107,114,128,.5)}
.field .invalid{border-color:var(--red)!important}
.field select{cursor:pointer;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;}
.field select option{background:#fff}
.field input[type="date"]{color-scheme:light}
.input-suffix{position:relative}
.input-suffix input{padding-right:32px}
.input-suffix span{position:absolute;right:12px;top:50%;transform:translateY(-50%);
  font-family:var(--mono);color:var(--dim);font-size:13px;pointer-events:none;}
.form-actions{grid-column:1 / -1;padding-top:6px}

/* 需求类型切换 */
.type-toggle{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.type-opt{
  padding:11px 0;border-radius:var(--radius);font-size:13.5px;
  border:1px solid var(--line-strong);color:var(--dim);transition:all .15s;
}
.type-opt.is-active{border-color:var(--accent);color:#fff;
  background:var(--accent);font-weight:700;}

/* 上传区 */
.upload-zone{border:1.5px dashed var(--line-strong);border-radius:var(--radius);
  background:rgba(15,118,110,.04);cursor:pointer;transition:border-color .15s,background .15s;}
.upload-zone:active{border-color:var(--accent);background:var(--accent-soft)}
.upload-inner{display:flex;flex-direction:column;align-items:center;gap:5px;
  padding:22px 14px;text-align:center;color:var(--dim);}
.upload-inner svg{color:var(--cyan)}
.upload-inner p{font-size:13px}
.upload-actions{display:flex;gap:10px;padding:0 14px 16px;justify-content:center}
.upload-actions .btn{flex:1;max-width:170px;padding:9px 0;font-size:13px;gap:6px}
.file-preview-list{display:flex;flex-wrap:wrap;gap:9px;margin-top:10px}
.file-chip{position:relative;display:flex;align-items:center;gap:8px;
  border:1px solid var(--line-strong);border-radius:var(--radius);
  background:#fff;padding:6px 30px 6px 7px;max-width:200px;}
.file-chip img{width:36px;height:36px;object-fit:cover;border-radius:3px;cursor:zoom-in}
.file-chip .file-ico{width:36px;height:36px;display:grid;place-items:center;
  background:rgba(15,118,110,.10);border-radius:4px;color:var(--cyan);
  font-family:var(--mono);font-size:9px;font-weight:600;}
.file-chip span{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file-chip button{position:absolute;top:3px;right:3px;width:19px;height:19px;
  color:var(--dim);font-size:14px;line-height:1;}
.file-chip button:active{color:var(--red)}
.file-chip.existing{border-color:rgba(15,118,110,.3);background:rgba(15,118,110,.06)}
.file-chip .existing-tag{color:var(--cyan);font-size:10px;margin-left:4px;white-space:nowrap;font-weight:600}

/* ── 底部标签栏 ───────────────────────── */
.tabbar{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:min(var(--app-w),100%);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  background:rgba(255,255,255,.92);backdrop-filter:blur(20px);
  border-top:1px solid var(--line-strong);
  display:grid;grid-template-columns:repeat(5,1fr);z-index:70;
  overflow:visible;
}
.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--dim);font-size:10.5px;letter-spacing:.04em;position:relative;transition:color .2s;}
.tab svg{width:22px;height:22px}
.tab.is-active{color:var(--accent)}
.tab-publish span:last-child{margin-top:20px}
.publish-btn{
  position:absolute;top:-19px;left:50%;transform:translateX(-50%);
  width:52px;height:52px;border-radius:50%;
  background:var(--gradient);color:#fff;display:grid;place-items:center;
  box-shadow:0 6px 20px rgba(15,118,110,.5),0 0 0 5px #fff;
  transition:transform .15s;}
.tab-publish:active .publish-btn{transform:translateX(-50%) scale(.92)}
.tab-publish{position:relative;color:var(--dim)}

/* ── 覆盖层（详情 / 入驻） ────────────── */
.sheet{
  position:fixed;inset:0;z-index:90;
  width:min(var(--app-w),100%);margin:0 auto;left:0;right:0;
  background:var(--ink);display:flex;flex-direction:column;
  animation:sheetIn .32s cubic-bezier(.22,.9,.3,1);
}
@keyframes sheetIn{from{transform:translateY(6%);opacity:.4}to{transform:none;opacity:1}}
.sheet-head{
  display:flex;align-items:center;gap:10px;
  padding:max(12px, env(safe-area-inset-top)) 14px 12px;
  border-bottom:1px solid var(--line);background:var(--ink-2);
}
.sheet-back{width:44px;height:44px;display:grid;place-items:center;
  border:1.5px solid var(--line-strong);border-radius:50%;color:var(--paper);
  background:var(--accent-soft);flex-shrink:0;transition:background .15s,border-color .15s;}
.sheet-back:active{background:var(--accent);border-color:var(--accent);}
.sheet-back svg{width:24px;height:24px;}
#sheetTitle{font-family:var(--serif);font-weight:700;font-size:17px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-head-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-shrink:0}
.sheet-close{width:44px;height:44px;display:grid;place-items:center;
  border:1.5px solid var(--line-strong);border-radius:50%;color:var(--dim);
  background:var(--ink-3);font-size:22px;line-height:1;font-weight:300;flex-shrink:0;
  transition:background .15s,color .15s,border-color .15s;}
.sheet-close:active{background:rgba(239,68,68,.15);color:var(--red);border-color:var(--red);}
.icon-btn{width:40px;height:40px;display:grid;place-items:center;
  border:1px solid var(--line-strong);border-radius:50%;color:var(--dim);font-size:18px;}
.icon-btn.is-on{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.sheet-body{flex:1;overflow-y:auto;padding:18px 16px calc(24px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}

.detail-title{font-family:var(--serif);font-weight:900;font-size:21px;line-height:1.45;margin:4px 0 12px}
.detail-tags{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:16px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;margin-bottom:18px;}
.detail-cell{background:var(--ink-2);padding:11px 13px}
.detail-cell em{display:block;font-style:normal;font-family:var(--mono);
  font-size:9.5px;letter-spacing:.12em;color:var(--dim);margin-bottom:2px;}
.detail-cell b{font-size:14px;font-weight:600}
.detail-cell b.hl{color:var(--accent-3)}
.detail-cell b.cy{color:var(--cyan)}
.detail-block{margin-bottom:18px}
.detail-block h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;
  color:var(--cyan);font-weight:600;margin-bottom:7px;}
.detail-block p{color:var(--paper);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}
.detail-cell b{overflow-wrap:anywhere}
.attach-gallery{display:flex;flex-wrap:wrap;gap:10px}
.attach-gallery img{width:104px;height:78px;object-fit:cover;border-radius:var(--radius);
  border:1px solid var(--line-strong);cursor:zoom-in;}
.attach-file{display:inline-flex;align-items:center;gap:7px;
  border:1px solid var(--line-strong);border-radius:var(--radius);
  padding:9px 13px;font-size:12.5px;color:var(--cyan);background:rgba(15,118,110,.06);}
.sheet-cta{
  position:sticky;bottom:0;margin:24px -16px 0;padding:12px 16px calc(14px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);
  border-top:1px solid var(--line-strong);display:flex;gap:10px;
}
.sheet-cta .btn{flex:1}
.contact-line{font-family:var(--mono);font-size:13px;color:var(--cyan)}

/* ── 智能匹配排名 ─────────────────────── */
.match-list{display:flex;flex-direction:column;gap:9px}
.match-item{display:flex;align-items:center;gap:11px;
  border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));
  padding:11px 13px;transition:border-color .15s;}
.match-item:active{border-color:var(--accent)}
.match-rank{flex-shrink:0;width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;border:1px solid var(--line-strong);
  font-family:var(--mono);font-size:11.5px;color:var(--dim);}
.match-rank.top{background:var(--gradient);border:none;color:#fff;font-weight:700}
.match-logo{flex-shrink:0;width:38px;height:38px;border-radius:var(--radius);
  border:1px solid var(--line-strong);
  background:linear-gradient(150deg,#e8f0ff,#d4e3ff);
  display:grid;place-items:center;
  font-family:var(--serif);font-weight:900;font-size:16px;color:var(--accent);}
.match-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.match-main b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.match-main span{font-size:11px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.match-score{flex-shrink:0;font-family:var(--mono);font-weight:600;font-size:17px;color:var(--cyan)}
.match-score.best{color:var(--accent-3)}
.match-score i{font-style:normal;font-size:10px;color:var(--dim);margin-left:2px}

/* ── OCR 自动识别字段（只读 + 高亮） ───── */
.field input[readonly],.field select:disabled{
  color:var(--cyan);background:rgba(15,118,110,.05);
  border-style:dashed;cursor:default;background-image:none;}
.field input.auto-filled,.field select.auto-filled{
  border-color:var(--cyan);box-shadow:0 0 0 1px rgba(15,118,110,.3);}
.ocr-edit{align-self:flex-end;font-size:11.5px;color:var(--dim);
  text-decoration:underline;text-underline-offset:3px;padding:2px 0;}
.ocr-edit:active{color:var(--cyan)}

/* ── 积分 / 打赏 ─────────────────────── */
.points-card{display:flex;align-items:center;gap:12px;margin-top:13px;
  border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(160deg,rgba(15,118,110,.10),var(--ink-2) 60%);padding:13px 16px;}
.points-main{flex:1;display:flex;align-items:baseline;gap:8px;min-width:0}
.points-main em{font-style:normal;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--dim)}
.points-main b{font-family:var(--mono);font-size:22px;
  background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.points-main span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tip-callout{display:flex;align-items:center;gap:10px;margin-top:12px;
  border:1px dashed var(--line-strong);border-radius:var(--radius);padding:10px 12px;}
.tip-callout span{flex:1;font-size:11.5px;color:var(--dim);line-height:1.5}
.tip-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:6px 0 4px}
.tip-opt{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--ink-2);
  padding:14px 0;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all .15s;}
.tip-opt:active{border-color:var(--accent);background:var(--accent-soft);transform:scale(.96)}
.tip-opt b{font-family:var(--mono);font-size:18px;
  background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.tip-opt i{font-style:normal;font-size:10px;color:var(--dim)}
.pack-list{display:flex;flex-direction:column;gap:10px}
.pack-item{position:relative;display:flex;align-items:center;gap:12px;
  border:1px solid var(--line-strong);border-radius:var(--radius);
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));padding:15px 16px;transition:all .15s;}
.pack-item:active{border-color:var(--accent);transform:scale(.98)}
.pack-item b{font-family:var(--mono);font-size:19px;color:var(--cyan)}
.pack-item b i{font-style:normal;font-size:11px;color:var(--dim);margin-left:3px}
.pack-tag{font-size:10px;color:var(--accent-3);border:1px solid rgba(245,158,11,.5);border-radius:4px;
  padding:1px 6px;font-family:var(--mono);}
.pack-price{margin-left:auto;font-family:var(--mono);font-size:16px;color:var(--paper)}

/* ── 成功案例 / 客户评价 ─────────────── */
.c-card{scroll-snap-align:start;flex:0 0 min(250px,74%);
  border:1px solid rgba(16,185,129,.30);border-radius:var(--radius);
  background:linear-gradient(160deg,rgba(16,185,129,.08),var(--ink-2) 55%);
  padding:16px 18px;display:flex;flex-direction:column;gap:8px;}
.c-badge{align-self:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:.06em;
  color:var(--green);border:1px solid rgba(16,185,129,.45);border-radius:4px;padding:2px 7px;}
.c-card b{font-size:13.5px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;}
.c-meta{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--dim)}
.c-days{font-family:var(--mono);font-size:10px;color:var(--cyan);letter-spacing:.06em}
.rv-list{display:flex;flex-direction:column;gap:9px}
.rv-item{border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));padding:12px 14px;}
.rv-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.rv-stars{color:var(--yellow);font-size:13px;letter-spacing:.1em}
.rv-by{font-size:10.5px;color:var(--dim);font-family:var(--mono)}
.rv-item p{font-size:12.5px;color:var(--paper);overflow-wrap:anywhere}
.rv-stars-pick{display:flex;gap:6px;margin-bottom:8px}
.rv-stars-pick button{font-size:22px;color:var(--dim);transition:transform .1s}
.rv-stars-pick button.on{color:var(--yellow)}
.rv-stars-pick button:active{transform:scale(1.2)}

/* 入驻页证件卡预览 */
.doc-cert{border:1px solid var(--line-strong);border-radius:var(--radius);
  background:linear-gradient(150deg,#f8fafb,#ffffff);
  padding:14px;display:flex;flex-direction:column;gap:6px;margin-bottom:10px;}
.doc-cert .seal{width:40px;height:40px;border:2px solid rgba(239,68,68,.75);border-radius:50%;
  display:grid;place-items:center;color:rgba(239,68,68,.9);font-size:8.5px;font-weight:700;transform:rotate(-12deg);}
.doc-cert b{font-family:var(--serif);font-size:14px}
.doc-cert span{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.08em}

/* ── 我的 ─────────────────────────────── */
.me-card{display:flex;align-items:center;gap:13px;
  border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));padding:16px;}
.me-avatar{width:52px;height:52px;border-radius:50%;
  background:var(--gradient);
  display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:20px;color:#fff;}
.me-info{flex:1;display:flex;flex-direction:column}
.me-info b{font-size:16px}
.me-actions{display:flex;flex-direction:column;gap:8px}
.me-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;margin:13px 0 0;}
.me-stat{background:var(--ink-2);padding:13px 4px;text-align:center}
.me-stat b{display:block;font-family:var(--mono);font-size:19px;color:var(--cyan)}
.me-stat span{font-size:11px;color:var(--dim)}

.mine-tabs{display:flex;gap:0;margin-top:20px;border-bottom:1px solid var(--line)}
.mine-tab{flex:1;padding:10px 0;font-size:14px;color:var(--dim);
  border-bottom:2px solid transparent;margin-bottom:-1px;}
.mine-tab.is-active{color:var(--accent);border-bottom-color:var(--accent);font-weight:700}
.sub-tabs{display:flex;gap:8px;margin:12px 0 4px}
.sub-tab{font-size:12px;padding:5px 14px;border-radius:99px;
  border:1px solid var(--line-strong);color:var(--dim);}
.sub-tab.is-active{border-color:var(--accent);color:var(--accent);background:rgba(15,118,110,.08)}
.mine-panel{display:none;padding-top:13px}
.mine-panel.is-active{display:block}

.my-provider-block{margin-top:26px}
.my-provider-block .block-head{margin-top:0}

/* ── 我的企业 · 联系人管理 ─────────────────── */
.contacts-block{margin-top:16px;padding:14px 14px 12px;background:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius)}
.contacts-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}
.contacts-title{font-family:var(--serif);font-weight:700;font-size:14px;color:var(--paper);letter-spacing:.02em;position:relative;padding-left:10px}
.contacts-title::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:2.5px;border-radius:2px;background:var(--gradient)}
.contacts-list{display:flex;flex-direction:column;gap:6px;min-height:24px}
.contact-row{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--ink-3);border:1px solid var(--line);border-radius:8px}
.contact-name{flex:0 0 auto;font-weight:600;font-size:13.5px;color:var(--paper)}
.contact-phone{flex:1 1 auto;font-family:var(--mono);font-size:12.5px;color:var(--dim);letter-spacing:.02em}
.contact-del{flex:0 0 auto;width:24px;height:24px;border:none;border-radius:6px;background:rgba(239,68,68,.12);color:var(--red);font-size:16px;line-height:1;cursor:pointer;transition:background .15s,color .15s}
.contact-del:hover{background:var(--red);color:#fff}
.contact-copy{flex:0 0 auto;width:28px;height:28px;display:grid;place-items:center;border-radius:6px;background:rgba(15,118,110,.08);color:var(--accent);cursor:pointer;transition:background .15s,color .15s;border:none}
.contact-copy:hover{background:var(--accent);color:#fff}
.phone-link{color:var(--accent);text-decoration:none;font-weight:600}
.phone-link:active{opacity:.7}
.contact-actions{display:flex;gap:10px;margin:12px 0 4px}
.contact-actions .btn{flex:1}
.contact-call-btn{display:inline-flex;align-items:center;gap:6px}

/* ── 游客登录提示 ─────────────────── */
.guest-prompt{text-align:center;padding:28px 20px;margin:16px 0;background:#fff;border:1px solid var(--line);border-radius:var(--radius)}
.guest-prompt-icon{width:64px;height:64px;margin:0 auto 14px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}
.guest-prompt p{color:var(--dim);font-size:14px;line-height:1.6;margin:0}

/* ── Header exit button ─────────────────── */
.header-exit-btn{position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:40px;height:40px;display:grid;place-items:center;border-radius:50%;
  border:1px solid var(--line-strong);background:var(--ink-3);color:var(--dim);
  cursor:pointer;transition:all .15s}
.header-exit-btn:hover{color:var(--red);border-color:var(--red);background:rgba(239,68,68,.1)}
.header-exit-btn:active{transform:translateY(-50%) scale(.93)}
.page-head{position:relative}

/* ── Join enterprise flow ─────────────────── */
.join-results{display:flex;flex-direction:column;gap:8px;margin-top:10px;max-height:320px;overflow-y:auto}
.join-result-item{padding:12px 14px;background:var(--ink-3);border:1.5px solid var(--line);
  border-radius:var(--radius);cursor:pointer;transition:all .15s}
.join-result-item:hover,.join-result-item:active{border-color:var(--accent);background:var(--accent-soft)}
.join-result-name{font-family:var(--serif);font-weight:600;font-size:15px;color:var(--paper);margin-bottom:6px}
.join-result-meta{display:flex;gap:6px;flex-wrap:wrap}
.join-selected-company{display:flex;align-items:center;gap:10px;padding:12px 14px;
  background:var(--accent-soft);border:1px solid rgba(15,118,110,.3);border-radius:var(--radius)}
.join-selected-company b{flex:1;font-family:var(--serif);font-size:15px;color:var(--paper)}
.join-selected-company .dim{display:block;font-size:11px;margin-bottom:2px}
.join-change{flex:0 0 auto;padding:5px 12px;font-size:12px;border-radius:6px;
  border:1px solid var(--line-strong);background:var(--ink-2);color:var(--cyan);cursor:pointer}
.join-change:active{transform:scale(.95)}

/* ── Upload box (ID card) ─────────────────── */
.upload-box{border:1.5px dashed var(--line-strong);border-radius:var(--radius);
  padding:20px;text-align:center;cursor:pointer;transition:all .15s;background:var(--ink-3)}
.upload-box:hover,.upload-box:active{border-color:var(--accent);background:var(--accent-soft)}
.upload-box.has-file{border-style:solid;border-color:var(--green);background:rgba(16,185,129,.08)}
.upload-placeholder{font-size:13px;color:var(--dim)}

/* ── Lightbox / Toast ─────────────────── */
.lightbox{position:fixed;inset:0;z-index:130;background:rgba(7,5,26,.94);
  display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:fadeIn .2s;}
.lightbox img{max-width:94vw;max-height:88vh;border:1px solid var(--line-strong);border-radius:var(--radius)}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.toast-wrap{position:fixed;top:max(16px, env(safe-area-inset-top));left:50%;transform:translateX(-50%);
  z-index:140;display:flex;flex-direction:column;gap:8px;width:min(340px,86vw);}
.toast{display:flex;align-items:center;gap:9px;
  background:var(--ink-2);border:1px solid var(--line-strong);
  border-left:3px solid var(--green);border-radius:var(--radius);
  padding:12px 15px;font-size:13px;box-shadow:0 14px 40px rgba(0,0,0,.12);
  animation:toastIn .28s cubic-bezier(.22,.9,.3,1);}
.toast.error{border-left-color:var(--red)}
@keyframes toastIn{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
.toast.out{animation:toastOut .25s forwards}
@keyframes toastOut{to{opacity:0;transform:translateY(-14px)}}

::-webkit-scrollbar{width:0;height:0}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}


/* ========== PC 网页版适配（≥768px：宽屏网页布局，手机端不受影响） ========== */
@media (min-width: 768px) {
    :root { --app-w: 1100px; }
}


/* ===== 返回键 + 去登录注册 ===== */
.back-home{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--accent-soft);color:var(--paper);font-size:30px;font-weight:700;line-height:1;text-decoration:none;margin-right:10px;flex-shrink:0;border:1.5px solid var(--line-strong);transition:background .15s,border-color .15s;}
.back-home:active{background:var(--accent);border-color:var(--accent);}
#switchAccountBtn{display:none!important;}


/* 发布方式：完整填写 / 一句话发布 */
.pub-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 14px}
.pub-mode-btn{appearance:none;border:1px solid rgba(15,118,110,.25);background:#fff;color:var(--ink);
  border-radius:12px;padding:10px 12px;font-size:14px;font-weight:600;cursor:pointer}
.pub-mode-btn.is-active{background:var(--ink,#0f766e);color:#fff;border-color:transparent}
.one-shot-panel{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;padding:14px;
  border:1px dashed rgba(15,118,110,.35);border-radius:14px;background:rgba(15,118,110,.04)}
.one-shot-panel[hidden]{display:none!important}
.one-shot-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.one-shot-actions .btn{width:100%;min-height:44px}
.btn-ghost{background:#fff;border:1px solid rgba(15,118,110,.3);color:var(--ink,#0f766e);font-weight:600;border-radius:12px}
.field input.auto-filled,.field select.auto-filled,.field textarea.auto-filled{
  border-color:rgba(15,118,110,.55)!important;box-shadow:0 0 0 2px rgba(15,118,110,.12)}

.one-shot-panel{margin-top:18px;margin-bottom:24px}
.one-shot-head{margin-bottom:4px}
.one-shot-title{margin:0 0 6px;font-size:16px;font-weight:700;color:var(--ink,#0f766e)}

#oneShotFillBtn{
  background:var(--gradient);
  border:none;
  color:#fff;
  font-weight:700;
  box-shadow:var(--accent-glow);
}

.one-shot-actions-single{display:block}
.one-shot-actions-single .btn{width:100%;min-height:48px;font-size:16px}
#view-publish .one-shot-panel{margin-top:8px}

.d-card-contact{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 6px;padding:8px 10px;border-radius:10px;background:rgba(15,118,110,.08);border:1px solid rgba(15,118,110,.2)}
.d-card-contact-text{font-size:13px;font-weight:600;color:var(--accent);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.d-card-contact-acts{display:flex;gap:6px;flex-shrink:0}
.d-act-call,.d-act-copy{appearance:none;border:none;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:700;cursor:pointer;text-decoration:none}
.d-act-call{background:var(--gradient);color:#fff}
.d-act-copy{background:#fff;color:var(--accent);border:1px solid rgba(15,118,110,.35)}
.demand-contact-block .contact-line{font-size:15px;font-weight:700;margin:0 0 8px}
