:root{
  /* 320–480px 全手机范围：小屏保持可读，大屏平滑放大，横屏不无限增大。 */
  --wx-text-caption:clamp(12px,3.2vw,13.5px);
  --wx-text-body:clamp(13px,3.4667vw,14.5px);
  --wx-text-subtitle:clamp(14px,3.7333vw,15.8px);
  --wx-text-title:clamp(15px,4vw,17px);
  --wx-text-stat:clamp(21px,5.6vw,24px);
}
*{box-sizing:border-box}
html,body{
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  min-height:100%!important;
  margin:0!important;
  overflow-x:hidden!important;
  background:var(--bg,#f2f6fb)!important;
  -webkit-text-size-adjust:100%!important;
  text-size-adjust:100%!important;
}
body{overscroll-behavior-x:none!important}
.app{
  width:100%!important;
  max-width:none!important;
  min-height:100vh!important;
  min-height:100dvh!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.miniapp-header{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
  overflow:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}
main{margin-top:0!important;padding-top:env(safe-area-inset-top,0px)!important}
.bottom-nav,.selection-bar,.action-bar,.bottom-bar,.fixed-bottom,.fixed-actions,.form-actions,.detail-actions,.sheet-actions,.ai-input-wrap,.input-dock{
  width:100%!important;
  max-width:none!important;
}
.sheet,.message-sheet,.history-sheet,.profile-sheet,.filter-drawer,.map-detail-sheet{max-width:none!important}

/* AI 专区遮罩与弹窗铺满当前微信 WebView，避免 375px 上限造成左右露底。 */
.ai-backdrop{
  inset:0!important;
  left:0!important;
  right:0!important;
  width:100%!important;
  max-width:none!important;
  transform:none!important;
}
.ai-sheet{
  left:0!important;
  right:0!important;
  width:100%!important;
  max-width:none!important;
  transform:translateY(100%)!important;
}
.ai-backdrop.open .ai-sheet{transform:translateY(0)!important}

/* iOS/微信日期类控件统一使用表单高度并垂直居中。 */
input[type="date"],input[type="month"],input[type="time"],input[type="datetime-local"]{
  display:block!important;
  width:100%!important;
  min-width:100%!important;
  height:42px!important;
  min-height:42px!important;
  padding-top:0!important;
  padding-bottom:0!important;
  line-height:42px!important;
  vertical-align:middle!important;
}
input[type="date"]::-webkit-date-and-time-value,input[type="month"]::-webkit-date-and-time-value,input[type="time"]::-webkit-date-and-time-value,input[type="datetime-local"]::-webkit-date-and-time-value{
  display:flex!important;
  width:100%!important;
  height:42px!important;
  min-height:42px!important;
  align-items:center!important;
  line-height:1.2!important;
  text-align:left!important;
}

/* 与离线演示版保持一致的弹窗关闭按钮和毛玻璃。 */
.message-sheet-close,.history-close,.profile-sheet-close,.ai-sheet-close,.filter-sheet-close,.sheet-close,.detail-close,.sheet .close,[role="dialog"] button[aria-label^="关闭"]{
  position:absolute!important;
  right:16px!important;
  top:-38px!important;
  display:grid!important;
  width:32px!important;
  height:32px!important;
  padding:0!important;
  place-items:center!important;
  border:1px solid rgba(255,255,255,.88)!important;
  border-radius:10px!important;
  color:#48617f!important;
  font-family:Arial,sans-serif!important;
  font-size:22px!important;
  font-weight:400!important;
  line-height:1!important;
  background:rgba(255,255,255,.80)!important;
  box-shadow:0 3px 12px rgba(29,66,108,.07),inset 0 1px 0 rgba(255,255,255,.72)!important;
  -webkit-backdrop-filter:blur(18px) saturate(115%)!important;
  backdrop-filter:blur(18px) saturate(115%)!important;
}
.profile-sheet-close span,.filter-sheet-close span{display:block!important;margin:0!important;line-height:1!important;transform:translateY(-1px)!important}
.bottom-nav,.selection-bar,.action-bar,.bottom-bar,.fixed-bottom,.fixed-actions,.form-actions,.detail-actions,.sheet-actions,.ai-input-wrap,.input-dock{
  background:rgba(255,255,255,.82)!important;
  -webkit-backdrop-filter:blur(20px) saturate(135%)!important;
  backdrop-filter:blur(20px) saturate(135%)!important;
}

/* 所有筛选弹窗统一为双栏底部弹窗。 */
body:has(.filter-drawer.open){overflow:hidden!important}
.section:has(.filter-drawer.open),.page-wrap:has(.filter-drawer.open),.filter-shell:has(.filter-drawer.open){z-index:240!important}
.filter-panel.drawer-open{margin-bottom:8px!important;border-radius:12px!important}
.filter-drawer{
  position:fixed!important;
  z-index:250!important;
  left:50%!important;
  right:auto!important;
  top:auto!important;
  bottom:0!important;
  display:none!important;
  width:100%!important;
  max-width:none!important;
  height:min(520px,72vh)!important;
  padding:24px 0 0!important;
  overflow:visible!important;
  grid-template-columns:96px minmax(0,1fr)!important;
  grid-template-rows:minmax(0,1fr) calc(62px + env(safe-area-inset-bottom))!important;
  gap:0!important;
  border:0!important;
  border-radius:18px 18px 0 0!important;
  background:#fff!important;
  box-shadow:0 -100vh 0 100vh rgba(16,37,64,.32),0 -14px 38px rgba(20,55,94,.16)!important;
  transform:translateX(-50%)!important;
  -webkit-backdrop-filter:blur(22px) saturate(118%)!important;
  backdrop-filter:blur(22px) saturate(118%)!important;
}
.filter-drawer.open{display:grid!important}
.filter-drawer:before{
  content:"";
  position:absolute!important;
  left:50%!important;
  top:10px!important;
  display:block!important;
  width:34px!important;
  height:4px!important;
  margin:0!important;
  border-radius:4px!important;
  background:#d6dfeb!important;
  transform:translateX(-50%)!important;
}
.filter-drawer .filter-categories{
  position:static!important;
  display:block!important;
  grid-column:1!important;
  grid-row:1!important;
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  padding:2px 0!important;
  border:0!important;
  border-radius:0 10px 10px 0!important;
  background:#f4f6f8!important;
  scrollbar-width:none!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
}
.filter-drawer .filter-categories::-webkit-scrollbar{display:none!important}
.filter-drawer .filter-category{
  display:flex!important;
  width:calc(100% - 10px)!important;
  min-width:0!important;
  height:44px!important;
  margin:2px 5px!important;
  padding:0 10px!important;
  align-items:center!important;
  justify-content:flex-start!important;
  border:0!important;
  border-radius:8px!important;
  color:#66717e!important;
  font-size:12px!important;
  font-weight:500!important;
  text-align:left!important;
  background:transparent!important;
  white-space:nowrap!important;
}
.filter-drawer .filter-category:before{display:none!important}
.filter-drawer .filter-category.active{color:#172e4d!important;font-weight:700!important;background:#fff!important}
.filter-drawer .filter-values{
  position:static!important;
  display:block!important;
  grid-column:2!important;
  grid-row:1!important;
  min-height:0!important;
  overflow-y:auto!important;
  padding:0 14px!important;
  background:#fff!important;
  overscroll-behavior:contain!important;
}
.filter-drawer .drawer-option{
  display:flex!important;
  width:100%!important;
  min-height:48px!important;
  margin:0!important;
  padding:0 2px!important;
  align-items:center!important;
  justify-content:space-between!important;
  border:0!important;
  border-radius:0!important;
  color:#56616d!important;
  font-size:12px!important;
  font-weight:500!important;
  text-align:left!important;
  background:transparent!important;
  box-shadow:none!important;
}
.filter-drawer .drawer-option.active{color:#172e4d!important;font-weight:600!important;background:transparent!important}
.filter-drawer .drawer-radio{position:relative!important;display:block!important;width:16px!important;height:16px!important;flex:0 0 16px!important;border:1px solid #b9c3ce!important;border-radius:50%!important;background:#fff!important}
.filter-drawer .drawer-option.active .drawer-radio{border-color:#1265e0!important}
.filter-drawer .drawer-option.active .drawer-radio:after{content:""!important;position:absolute!important;inset:4px!important;border-radius:50%!important;background:#1265e0!important}
.filter-drawer .filter-actions{
  position:relative!important;
  display:grid!important;
  grid-column:1/-1!important;
  grid-row:2!important;
  width:auto!important;
  height:calc(62px + env(safe-area-inset-bottom))!important;
  min-height:calc(62px + env(safe-area-inset-bottom))!important;
  grid-template-columns:1fr 1fr!important;
  gap:8px!important;
  margin:0!important;
  padding:7px 7px calc(7px + env(safe-area-inset-bottom))!important;
  border:0!important;
  background:rgba(255,255,255,.86)!important;
  box-shadow:0 -4px 14px rgba(24,65,112,.055)!important;
  -webkit-backdrop-filter:blur(20px) saturate(135%)!important;
  backdrop-filter:blur(20px) saturate(135%)!important;
}
.filter-drawer .filter-actions button{display:grid!important;width:100%!important;height:38px!important;padding:0!important;place-items:center!important;border-radius:19px!important;font-size:12px!important;font-weight:600!important}
.filter-drawer .filter-reset{border:1px solid #d5dde7!important;color:#5f7188!important;background:#fff!important}
.filter-drawer .filter-done{border:0!important;color:#fff!important;background:linear-gradient(90deg,#1265e0,#128dff)!important;box-shadow:0 3px 10px rgba(18,101,224,.11)!important}

/* 全站移动端自适应字号。banner 主标题、顶部栏、模块标题、轮播图不在覆盖范围内。 */
body{font-size:var(--wx-text-body)!important}
.hero-copy p,.hero p,.banner-copy p,.detail-copy p,.title-wrap p{font-size:var(--wx-text-body)!important}
.entry-search input,.search input,.search-box input,.list-search input,.service-item,.job-tab strong,.group-entry b,.priority-card p{font-size:var(--wx-text-body)!important}
main article:not([aria-roledescription="轮播图"]) h3,main .list-card h3,main .job-card h3,main .job-card-standard h3,main .fair-card h3,main .venue-card h3,main .policy-card h3,main .resource-card h3,main .guidance-card h3,main .service-card h3,main .training-card h3,main .project-card h3,main .mentor-card h3,main .article-card h3,main .question-card h3,main .institution-card h3{font-size:var(--wx-text-title)!important}
main article:not([aria-roledescription="轮播图"]) h4,main .list-card h4,main .venue-card h4{font-size:var(--wx-text-subtitle)!important}
main article:not([aria-roledescription="轮播图"]) p,main .list-card p,main .job-card p,main .job-card-standard p,main .fair-card p,main .venue-card p,main .policy-card p,main .resource-card p,main .guidance-card p,main .panel-card p,main .form-card p{font-size:var(--wx-text-body)!important}
.salary{font-size:var(--wx-text-title)!important}
.tag,.tags span,.card-tags span,.fair-status,.job-state,.resume-entry-meta span,.group-entry small{font-size:var(--wx-text-caption)!important}
.fair-card header i,.fair-date span,.fair-date small,.fair-stats,.fair-card footer{font-size:var(--wx-text-caption)!important}
.filter-trigger,.filter-btn,.filter-drawer .filter-category,.filter-drawer .drawer-option{font-size:var(--wx-text-body)!important}
.profile-switch button,.resource-switch button,.finance-switch button,.mode-switch button,.capsule-switch button{font-size:var(--wx-text-body)!important}
.sheet-field>span:not(.sheet-select),.sheet-multi-field legend,.field label,.form-row label{font-size:var(--wx-text-body)!important}
.sheet-field input,.sheet-field select,.sheet-field textarea,.field input,.field select,.field textarea,.form-row input,.form-row select,.form-row textarea{font-size:var(--wx-text-body)!important}
.bottom-nav a{font-size:var(--wx-text-caption)!important}
.message-card strong,.history-item strong{font-size:var(--wx-text-subtitle)!important}
.message-card p,.history-item p{font-size:var(--wx-text-body)!important}
.message-card time,.history-item time{font-size:var(--wx-text-caption)!important}
.profile-stats .stat strong{font-size:var(--wx-text-stat)!important}
.profile-stats .stat span{font-size:var(--wx-text-caption)!important}
.recommend-overview strong{font-size:var(--wx-text-title)!important}
.recommend-overview span{font-size:var(--wx-text-caption)!important}
main :where(.meta,.subtitle,.description,.summary,.company,.address,.time,.location,.card-meta,.card-subtitle,.info-row,.field-value){font-size:var(--wx-text-body)!important}
main :where(.article-sheet,.article-section,.detail-content,.detail-card,.content-card,.info-card,.venue-card,.field-card,.expand-card) :where(p,li,dd,dt,.info-row){font-size:var(--wx-text-body)!important}
main :where(.article-sheet,.article-section,.detail-content,.detail-card,.content-card,.info-card,.venue-card,.field-card,.expand-card) :where(h3,h4){font-size:var(--wx-text-title)!important}

@media(min-width:376px){.app{box-shadow:none!important}}
