:root{--city-card-h:96px;
  --ink:#0f2742;--ink-2:#1d3a5c;--text:#1c2733;--muted:#4f5d6c;--line:#d9e0e7;--soft:#f4f6f9;--paper:#fff;
  --red:#d97706;--red-deep:#b45309;--red-soft:#fdf1e1;   /* 主色：琥珀橙（业主 2026-09-26 从红色改；变量名沿用 red）。白底上的文字一律用 --red-deep（对比度 5.0），--red 只用于按钮底、边框、图标块 */
  --ok:#1f7a4d;--ok-soft:#e6f4ec;--bad:#b3261e;--bad-soft:#fdecea;--warn:#7a5200;--warn-soft:#fff4dc;
  --focus:#1a5fb4;
  --r-sm:8px;--r-md:12px;--r-pill:999px;
  --sh-sm:0 1px 2px rgba(15,39,66,.08);--sh-md:0 8px 24px rgba(15,39,66,.10);--sh-lg:0 16px 40px rgba(15,39,66,.16);
  --header-h:72px;--container:1200px;--gutter:25px;   /* 25：内容区正好 1150 宽，广告位规格都是 0 / 5 结尾（通栏 1150、半栏 570、小格 280，业主 2026-09-25） */
  --font:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{scroll-padding-top:calc(var(--header-h) + 16px);-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);font-size:18px;line-height:1.75;color:var(--text);background:var(--paper);overflow-wrap:break-word}
img,svg{display:block;max-width:100%}
a{color:var(--ink-2);text-underline-offset:3px}
a:hover{color:var(--red-deep)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}
h1,h2,h3{color:var(--ink);line-height:1.2;margin:0 0 16px;font-weight:700;letter-spacing:0}
h1{font-size:clamp(34px,4vw,48px)}
h2{font-size:clamp(28px,3.2vw,38px)}
h3{font-size:24px;line-height:1.25}
p{margin:0 0 16px}
.icon{width:24px;height:24px;flex:0 0 auto}
.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.lead{font-size:20px;line-height:1.65;color:var(--muted)}
.small{font-size:14px;line-height:1.6}
main{display:block;min-height:50vh}
main:focus{outline:none}

.skip-link{position:absolute;left:16px;top:-80px;z-index:2000;background:var(--ink);color:#fff;padding:8px 16px;border-radius:var(--r-sm);text-decoration:none;font-size:16px}
.skip-link:focus{top:8px;color:#fff}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 24px;border-radius:var(--r-sm);border:2px solid transparent;font:inherit;font-size:17px;font-weight:600;line-height:1.2;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}
.btn .icon{width:20px;height:20px}
.btn-primary{background:var(--red);color:#fff}
.btn-primary:hover{background:var(--red-deep);color:#fff}
.btn-line{background:#fff;border-color:var(--ink-2);color:var(--ink)}
.btn-line:hover{background:var(--soft);color:var(--ink)}
.btn-danger-text{color:var(--red-deep);border-color:var(--red);background:#fff}
.btn-danger-text:hover{color:#fff;background:var(--red);border-color:var(--red)}
.btn-ghost{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.6);color:#fff}
.btn-ghost:hover{background:rgba(255,255,255,.22);color:#fff}
.btn-sm{min-height:40px;padding:0 16px;font-size:15px}
.btn-lg{min-height:56px;padding:0 32px;font-size:18px}
.btn-block{display:flex;width:100%}

.site-header{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid var(--line)}
.header-row{display:flex;align-items:center;gap:24px;height:var(--header-h)}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);flex:0 0 auto}
.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-sm);background:var(--red);color:#fff;font-size:26px;font-weight:700;line-height:1;box-shadow:inset 0 0 0 3px rgba(255,255,255,.28)}
.brand-text{display:flex;flex-direction:column;line-height:1.25}
.brand-name{font-size:22px;font-weight:700;color:var(--ink);display:block}
.brand-name-row{display:flex;justify-content:space-between;width:100%}
/* 最后一个字带 ™：™ 用绝对定位挂在这个字的右上角外面，不占版面宽度，
   否则它会吃掉 space-between 分给字间距的那十几个像素，字就挤回去了 */
.brand-name-row>span:last-child{position:relative}
/* 英文名不再拉伸到副标题的宽度：字母拉开像被撑开的橡皮筋，紧凑排更好看 */
html[lang="en"] .brand-name-row{justify-content:flex-start;width:auto;letter-spacing:.01em}
html[lang="en"] .brand-sub{font-size:12px}
.brand-tm{position:absolute;top:-2px;left:100%;margin-left:1px;font-size:10px;font-weight:400;line-height:1}
.brand-sub{font-size:14px;color:var(--muted)}
.main-nav{display:flex;align-items:center;gap:24px;margin-left:auto}
.main-nav a{font-size:16px;color:var(--text);text-decoration:none;padding:8px 0;border-bottom:2px solid transparent;white-space:nowrap}
.main-nav a:hover{color:var(--red-deep)}
.main-nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--red);font-weight:600}
.main-nav .nav-country{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--ink)}
.main-nav .nav-country .caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;margin-top:2px}
/* 英文导航项比中文长一大截，同样宽度挤不开、按钮会被挤出屏幕：英文单独用紧一点的
   间距和字号（业主 2026-09-19）。中文不受影响。 */
html[lang="en"] .header-row{gap:16px}
html[lang="en"] .main-nav{gap:16px}
html[lang="en"] .main-nav a{font-size:15px}
html[lang="en"] .nav-cta{min-width:0;padding:0 18px}
.cat-block{padding:24px 0;border-top:1px solid var(--line)}
.cat-block:first-child{border-top:0;padding-top:0}
.cat-block-head{display:flex;align-items:center;gap:12px;font-size:22px;margin:0 0 14px}
.cat-block-head a{display:inline-flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none}
.cat-block-head a:hover{color:var(--red-deep)}
.cat-block-head .cat-icon{width:40px;height:40px}
.cat-block-head .count{font-size:15px;font-weight:400;color:var(--muted)}
.cat-paths{display:flex;flex-direction:column;gap:4px}
.cat-path .muted{color:var(--muted)}
.cat-biz a{color:var(--text)}
.cat-biz a:hover{color:var(--red-deep)}
.chip-head{font-size:16px;color:var(--muted);font-weight:600;margin:0 0 10px}
.chip-list a[aria-current="page"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.header-tools{display:flex;align-items:center;gap:16px;flex:0 0 auto}
.lang-switch{display:inline-flex;align-items:center;gap:4px;font-size:15px;color:var(--text);text-decoration:none;padding:8px 4px;min-height:40px}
.lang-switch .icon{width:20px;height:20px}
.nav-cta{min-width:152px}
.nav-toggle{display:none;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;font:inherit;font-size:16px;color:var(--ink);cursor:pointer}
.bars{display:inline-flex;flex-direction:column;gap:4px}
.bars i{display:block;width:18px;height:2px;background:currentColor;border-radius:2px}
.nav-drawer{display:none}

.bottom-nav{display:none}

@media (max-width:1365px){
  html[lang="en"] .main-nav{gap:11px}   /* 13 → 11：logo 下面的小字显示出来后 logo 宽了二十多像素，从导航间距里匀出来 */
  html[lang="en"] .main-nav a{font-size:14px}
  html[lang="en"] .brand-sub{font-size:10.8px}   /* 原来这里把 logo 下面那行小字藏掉了；业主 2026-10-03：logo 要整块显示、不能少字，放不下就缩小 */
}
/* 抽屉菜单的样式（窄屏用）。中文 767px 以下才用，英文 1199px 以下就用，所以放在这里。 */
@media (max-width:1199px){
  .nav-drawer.is-open{display:block;position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--line);box-shadow:var(--sh-md);padding:8px var(--gutter) 16px;max-height:calc(100vh - var(--header-h) - 64px);overflow:auto}
  .nav-drawer a{display:block;padding:12px 0;font-size:18px;color:var(--text);text-decoration:none;border-bottom:1px solid var(--soft)}
  .nav-drawer a[aria-current]{color:var(--red-deep);font-weight:600}
  .drawer-group{margin-top:16px;padding-top:8px;border-top:2px solid var(--line)}
  .drawer-head{margin:0;font-size:14px;color:var(--muted)}
  /* 英文导航项加起来比中文长一大截，1200px 以下无论怎么压都会把按钮挤出屏幕，
     所以英文提前改用右上角菜单，链接一条不少（业主 2026-09-19）。 */
  html[lang="en"] .main-nav, html[lang="en"] .nav-cta{display:none}
  html[lang="en"] .nav-toggle{display:inline-flex}
  html[lang="en"] .header-tools{margin-left:auto}
}
@media (max-width:1199px){
  html[lang="en"] .main-nav{gap:12px}
  html[lang="en"] .lang-switch-text{display:none}
  .main-nav{gap:13px}   /* 16 → 13：给 logo 下面的小字腾位置 */
  .main-nav a{font-size:15px}
  .brand-sub{font-size:12px}   /* 原来是 display:none；logo 整块显示，小字缩小（业主 2026-10-03） */
  .header-row{gap:16px}
}
@media (max-width:1023px){
  .nav-cta{min-width:0}
  .main-nav{gap:11px}   /* 14 → 11：给 logo 下面的小字腾位置 */
  .main-nav a{font-size:14px}
  .brand-name{font-size:18px}
  .brand-mark{width:40px;height:40px;font-size:22px}
  .brand-sub{font-size:10.5px}
  html[lang="en"] .brand-sub{font-size:clamp(7.5px,2.35vw,10px)}
  .lang-switch-text{display:none}
  .header-tools{gap:8px}
}
@media (max-width:767px){
  :root{--header-h:60px;--gutter:16px}
  .main-nav,.nav-cta{display:none}
  .lang-switch{padding:8px}
  .nav-toggle{display:inline-flex}
  .header-tools{margin-left:auto}
  body{padding-bottom:64px}
  .bottom-nav{display:grid;grid-template-columns:repeat(6,1fr);position:fixed;left:0;right:0;bottom:0;z-index:1000;height:64px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -4px 16px rgba(15,39,66,.06)}
  .bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0 1px;font-size:10px;line-height:1.1;color:var(--muted);text-decoration:none;text-align:center;white-space:nowrap}
  .bottom-nav a .icon{width:18px;height:18px}
  .bottom-nav a[aria-current="page"]{color:var(--red-deep);font-weight:600}
  /* 「老板」「我的」往上弹出的小卡片（业主 2026-10-04）。弹层相对整条底栏定位，靠右贴在按钮上方 */
  .bn-pop{display:flex}
  .bn-pop > .bn-pop-btn{flex:1}
  .bn-menu{display:none;position:absolute;right:6px;bottom:100%;width:132px;padding:6px;margin-bottom:6px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 28px rgba(15,39,66,.22)}
  .bn-pop.is-open .bn-menu{display:block}
  /* 「我的」弹层左右两列：左「老板的」、右「我的」，每列上面一个小标题（业主 2026-10-04） */
  .bn-menu.bn-two{width:276px;max-width:calc(100vw - 12px);grid-template-columns:1fr 1fr;gap:6px;align-items:start}
  .bn-pop.is-open .bn-menu.bn-two{display:grid}
  /* 「便民」在底栏中间，弹层也放中间 */
  .bn-menu.bn-mid{right:auto;left:50%;transform:translateX(-50%)}
  .bn-h{display:block;margin:0 0 5px;font-size:13px;font-weight:600;line-height:22px;color:var(--muted);text-align:center}
  .bottom-nav .bn-menu a{display:block;padding:0;margin:0 0 5px;height:40px;line-height:38px;font-size:16px;font-weight:600;color:var(--ink);text-align:center;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
  .bottom-nav .bn-menu a:last-child{margin-bottom:0}
  .bottom-nav .bn-menu a:hover,.bottom-nav .bn-menu a:active{border-color:var(--red-deep);color:var(--red-deep);background:#fff}
  @media (hover:hover){.bn-pop:hover .bn-menu,.bn-pop:focus-within .bn-menu{display:block}.bn-pop:hover .bn-menu.bn-two,.bn-pop:focus-within .bn-menu.bn-two{display:grid}}
}

.section{padding:64px 0}
.section-soft{background:var(--soft)}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:32px;flex-wrap:wrap}
.section-head h2{margin:0}
.section-head p{margin:8px 0 0}
.section-link{display:inline-flex;align-items:center;gap:4px;font-size:16px;font-weight:600;text-decoration:none;color:var(--ink-2)}
.section-link .icon{width:18px;height:18px}
@media (max-width:767px){.section{padding:48px 0}.section-head{margin-bottom:24px}}

.hero{background:radial-gradient(1200px 480px at 90% -10%,rgba(217,119,6,.35),transparent 60%),linear-gradient(135deg,#0f2742 0%,#15365a 60%,#0f2742 100%);color:#fff;padding:56px 0 64px}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:48px;align-items:center}
.hero-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:14px;letter-spacing:.04em;color:#ffd9d4;margin:0 0 12px}
.hero h1{color:#fff;margin:0 0 12px}
.hero .lead{color:rgba(255,255,255,.88);margin:0 0 24px}
@media (max-width:1023px){.hero-grid{grid-template-columns:minmax(0,1fr);gap:32px}.hero{padding:40px 0 48px}}

.search-card{background:#fff;border-radius:var(--r-md);padding:16px;box-shadow:var(--sh-lg);color:var(--text)}
.search-form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}
.search-field label{display:block;font-size:14px;font-weight:600;color:var(--ink);margin:0 0 4px}
.search-field input{width:100%;min-height:52px;padding:0 16px;border:1px solid #9aa7b4;border-radius:var(--r-sm);font:inherit;font-size:17px;color:var(--text);background:#fff}
.search-field input:focus{border-color:var(--focus)}
.search-form .btn{min-height:52px}
.search-tags{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none}
.search-tags a{display:inline-block;padding:4px 12px;border-radius:var(--r-pill);background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.35);color:#fff;font-size:15px;text-decoration:none;line-height:1.6}
.search-tags a:hover{background:rgba(255,255,255,.24);color:#fff}
.search-tags-label{font-size:14px;color:rgba(255,255,255,.75);margin:16px 0 0}
@media (max-width:767px){.search-form{grid-template-columns:1fr}.search-form .btn{width:100%}}

.promo{position:relative;border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-lg);background:#fff;color:var(--text)}
/* 三张卡片叠在同一格里：没轮到的只是隐藏、照样占位，轮播框按最高那张定高，切换时不跳 */
.promo-track{position:relative;display:grid;min-height:320px}
.promo-slide{grid-area:1/1;display:flex;visibility:hidden;flex-direction:column;justify-content:space-between;gap:16px;min-height:320px;padding:32px 32px 72px}
.promo-slide.is-active{visibility:visible}
.promo-slide .promo-kicker{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--red-deep);margin:0}
.promo-slide h2{font-size:24px;margin:8px 0 8px}
.promo-slide p{margin:0;color:var(--muted)}
.promo-slide .btn{align-self:flex-start}
.promo-art{display:flex;width:56px;height:56px;border-radius:var(--r-md);background:var(--red-soft);align-items:center;justify-content:center;color:var(--red-deep);margin-bottom:12px}
.promo-art .icon{width:32px;height:32px}
.promo-b{background:linear-gradient(160deg,#fff 55%,#eef3f8)}
.promo-c{background:linear-gradient(160deg,#fff 55%,#fdf1ef)}
.promo-controls{position:absolute;left:32px;right:24px;bottom:20px;display:flex;align-items:center;gap:8px}
.promo-dot{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;cursor:pointer;padding:0}
.promo-dot span{display:block;width:10px;height:10px;border-radius:50%;background:#b8c2cc}
.promo-dot[aria-current="true"] span{background:var(--red);width:24px;border-radius:var(--r-pill)}
.promo-pause{margin-left:auto;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--ink);cursor:pointer}
.promo-pause .icon{width:16px;height:16px}
.promo-pause .i-play-wrap{display:none}
.promo.is-paused .promo-pause .i-pause-wrap{display:none}
.promo.is-paused .promo-pause .i-play-wrap{display:inline-flex}
@media (max-width:767px){.promo-slide{padding:24px 24px 72px;min-height:280px}.promo-track{min-height:280px}.promo-controls{left:24px}}

.cat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;list-style:none;margin:0;padding:0}
.cat-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;height:100%;padding:20px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;text-decoration:none;color:var(--text);transition:border-color .15s,box-shadow .15s,transform .15s}
.cat-card:hover{border-color:#b7c3cf;box-shadow:var(--sh-md);transform:translateY(-2px);color:var(--text)}
.cat-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--r-md);background:var(--red-soft);color:var(--red-deep)}
.cat-name{font-size:18px;font-weight:600;color:var(--ink);line-height:1.35}
.cat-count{font-size:14px;color:var(--muted);line-height:1.4}
@media (max-width:767px){.cat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.cat-card{padding:16px}}

.city-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;list-style:none;margin:0;padding:0}
.city-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--text);height:100%}
.city-card:hover{border-color:#b7c3cf;box-shadow:var(--sh-sm);color:var(--text)}
.city-name{display:flex;flex-direction:column;line-height:1.35}
.city-name strong{font-size:18px;color:var(--ink)}
.city-name span{font-size:14px;color:var(--muted)}
.city-count{font-size:14px;color:var(--muted);white-space:nowrap}
@media (max-width:1023px){.city-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:767px){.city-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.city-card{flex-direction:column;align-items:flex-start;gap:4px;padding:12px 16px}}

.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;list-style:none;margin:0;padding:0;counter-reset:step}
.step{padding:24px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);counter-increment:step}
.step::before{content:counter(step,decimal-leading-zero);display:block;font-size:14px;font-weight:700;color:var(--red-deep);letter-spacing:.08em;margin-bottom:8px}
.step h3{margin-bottom:8px}
.step p{margin:0}
@media (max-width:1023px){.steps{grid-template-columns:1fr}}

.biz-band{border-radius:var(--r-md);padding:40px;background:linear-gradient(120deg,var(--ink) 0%,#1d4470 100%);color:#fff;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}
.biz-band h2{color:#fff;margin-bottom:8px}
.biz-band p{margin:0;color:rgba(255,255,255,.86)}
.biz-band-actions{display:flex;gap:12px;flex-wrap:wrap}
@media (max-width:767px){.biz-band{grid-template-columns:1fr;padding:28px 24px}}

.faq{max-width:880px}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;padding:20px 0;font-size:20px;font-weight:600;color:var(--ink);line-height:1.5}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:28px;line-height:1;color:var(--red-deep);flex:0 0 auto}
.faq details[open] summary::after{content:"−"}
.faq .faq-a{padding:0 0 20px}
.faq .faq-a p{margin:0}

.page-head{padding:32px 0 24px;border-bottom:1px solid var(--line);background:var(--soft)}
.page-head h1{margin:8px 0 8px}
/* 详情页顶部的栏目名：样子和 H1 一样，但不是 H1（每页只有一个 H1，业主 2026-09-27） */
.page-head .page-title{color:var(--ink);line-height:1.2;font-weight:700;font-size:clamp(34px,4vw,48px);margin:8px 0 8px}
/* 不限宽（业主：文字不要自己断行，跟着窗口自然排） */
.page-head .lead{margin:0}
.crumb ol{display:flex;flex-wrap:wrap;gap:4px 8px;margin:0;padding:0;list-style:none;font-size:14px;color:var(--muted)}
.crumb li+li::before{content:"/";margin-right:8px;color:#9aa7b4}
.crumb a{color:var(--ink-2)}
/* 手机上不显示面包屑（业主 2026-10-04：省一行）。只是不显示：这行字和链接还在网页代码里，面包屑的结构化数据也照常输出，搜索引擎照样读得到 */
@media (max-width:767px){.crumb{display:none}}

.layout-2{display:grid;grid-template-columns:260px minmax(0,1fr);gap:32px;align-items:start}
@media (max-width:1023px){.layout-2{grid-template-columns:1fr}}
.filters{position:sticky;top:calc(var(--header-h) + 16px);border:1px solid var(--line);border-radius:var(--r-md);padding:20px;background:#fff}
.filters h2{font-size:20px;margin:0 0 12px}
.filters fieldset{border:0;margin:0 0 16px;padding:0}
.filters legend{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:4px}
.filters select{width:100%;min-height:44px;font:inherit;font-size:16px;border:1px solid #9aa7b4;border-radius:var(--r-sm);padding:0 8px;background:#fff}
.filters .check{display:flex;align-items:center;gap:8px;font-size:16px}
.filters .check input{width:20px;height:20px}
@media (max-width:1023px){.filters{position:static}}

/* 搜索页上借来的广告位 / 推荐位下面那行：写明原本属于哪一页（业主 2026-09-25） */
.slot-src{margin:6px 0 16px;font-size:13px;color:var(--muted);text-align:right}
/* 搜索页（业主 2026-09-30 改版）：筛选横铺在结果上面；小格插在结果中间 */
.search-top-ads{margin-top:16px}
/* 搜索页（业主 2026-09-30 再改）：「找到 N 个」在上面那排翻页按钮左边；结果区上边距收小；推荐框「同步显示于」下面不留空行 */
.result-bar{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px 16px;margin:24px 0 16px}
.result-bar .pager{margin:0}
.result-count{flex:none;margin:0;font-size:16px;color:var(--muted);white-space:nowrap}
.result-count b{color:var(--red-deep);font-size:20px}
.section.search-results{padding-top:16px}
.search-feat .slot-src{margin-bottom:0}
.filters-bar{position:static;display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;padding:12px 16px;margin-bottom:16px}
.filters-bar label{font-size:15px;font-weight:700;color:var(--ink)}
.filters-bar select{width:auto;min-width:240px;max-width:100%;flex:0 1 320px}
.filters-bar .btn{min-height:44px}
.biz-list > .search-ad-li{list-style:none;grid-column:1 / -1;padding:0;border:0;background:none}
.search-ad-li .ad-row{margin:4px 0}
.slot-src a{color:inherit;text-decoration:underline}
.result-meta{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:16px;color:var(--muted);font-size:18px}
.biz-list{display:grid;gap:16px;list-style:none;margin:0;padding:0}
.biz-card{position:relative;display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:16px;align-items:start;padding:20px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;transition:border-color .15s,box-shadow .15s}
.biz-card:hover{border-color:#b7c3cf;box-shadow:var(--sh-md)}
.biz-avatar{width:56px;height:56px;border-radius:var(--r-md);background:var(--soft);color:var(--ink-2);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;border:1px solid var(--line)}
.biz-title{margin:0;font-size:24px;line-height:1.3}
.biz-title a{color:var(--ink);text-decoration:none}
.biz-title a::after{content:"";position:absolute;inset:0;border-radius:var(--r-md)}
.biz-alt{margin:0;font-size:18px;color:var(--muted);line-height:1.5}
.biz-meta{display:flex;flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;font-size:18px;color:var(--muted);line-height:1.6}
.biz-meta span{display:inline-flex;align-items:center;gap:4px}
.biz-meta .icon{width:16px;height:16px}
/* 会说中文（业主 2026-10-01）：店名下面那行里用主色标出来，英文搜索进来的人一眼看到 */
.biz-meta .biz-speaks{color:var(--red-deep);font-weight:600}
.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:var(--r-pill);font-size:14px;line-height:1.6;background:var(--soft);color:var(--ink-2);border:1px solid var(--line)}
.tag-ok{background:var(--ok-soft);color:var(--ok);border-color:#b9dcc7}
.tag .icon{width:14px;height:14px}
.biz-actions{position:relative;z-index:1;display:flex;flex-direction:column;gap:8px}
.biz-lookup-form + .form-save{margin-top:18px}
@media (max-width:767px){.biz-card{grid-template-columns:44px minmax(0,1fr);padding:16px}.biz-avatar{width:44px;height:44px;font-size:20px}.biz-actions{grid-column:1 / -1;flex-direction:row}.biz-actions .btn{flex:1}}

/* 翻页（业主 2026-09-20 定的版式）：上一页 | 1 | 输入框/总页数 | 末页 | 下一页 */
/* 翻页条永远只占一行（业主 2026-10-03），不管屏幕多宽；手机上按钮、输入框、间距都缩小（见下面的手机规则） */
.pager{display:flex;justify-content:center;align-items:center;gap:8px;margin:32px 0 0;flex-wrap:nowrap}
.pager-top{margin:0 0 16px}
.pager a,.pager>span{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--line);text-decoration:none;font-size:16px;color:var(--ink)}
.pager [aria-current]{background:var(--ink);color:#fff;border-color:var(--ink)}
.pager .is-off{color:var(--muted);border-color:var(--line);background:#f6f7f9;cursor:default}
.pager-jump{display:inline-flex;align-items:center;gap:6px;margin:0}
.pager-jump input[type=number]{width:72px;min-height:44px;padding:0 8px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit;font-size:16px;color:var(--ink);text-align:center;background:#fff}
.pager-jump input[type=number]:focus{outline:2px solid var(--red);outline-offset:1px}
.pager-of{color:var(--muted);font-size:15px;white-space:nowrap}
.pager a,.pager>span{white-space:nowrap}
@media (max-width:767px){
  .pager{gap:4px;margin:8px 0 0}
  .pager-top{margin:0 0 6px}
  .pager a,.pager>span{min-width:0;min-height:36px;padding:0 6px;font-size:clamp(11px,3.4vw,13px)}
  .pager-jump{gap:3px}
  /* 输入框字号留 16px：小于 16px 的话 iPhone 点进去会自动放大整页。上下小箭头去掉，省宽度 */
  .pager-jump input[type=number]{width:50px;min-height:36px;padding:0 2px;-moz-appearance:textfield;appearance:textfield}
  .pager-jump input[type=number]::-webkit-outer-spin-button,.pager-jump input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
  .pager-of{font-size:13px}
}
@media (max-width:340px){.pager{gap:3px}.pager a,.pager>span{padding:0 3px}.pager-jump input[type=number]{width:42px}}

/* 换国家站的提示条（业主 2026-09-20）：默认隐藏，JS 读到访客在别的国家才显示 */
.geo-tip{background:#fff7ed;border-bottom:1px solid #fed7aa}
.geo-tip-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}
.geo-tip-row p{margin:0;flex:1 1 auto;color:var(--ink);font-size:15px}
.geo-tip-close{margin-left:auto;width:36px;height:36px;border:0;background:transparent;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;border-radius:var(--r-sm)}
.geo-tip-close:hover{background:rgba(0,0,0,.06);color:var(--ink)}
.empty{padding:40px;border:1px dashed #b7c3cf;border-radius:var(--r-md);text-align:center;background:#fff}
.empty p{margin:0 0 16px}

.chip-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.chip-list a{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--r-pill);border:1px solid var(--line);background:#fff;font-size:16px;text-decoration:none;color:var(--ink-2);line-height:1.5}
.chip-list a:hover{border-color:#9aa7b4}
.chip-list .count{color:var(--muted);font-size:14px}
.chip-list a.chip-all{color:var(--red-deep);border-color:var(--red-deep);font-weight:600}
/* 资讯页顶上那一串：分类按钮 + 靠右的「只看 [州 / 省] 不看联邦」。两组拆开排进同一串，筛选组接在分类后面的空位上、整体靠右（业主 2026-10-03） */
.news-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 8px;padding-bottom:10px;border-bottom:2px solid var(--red)}
.news-bar > .chip-list{display:contents}
.news-scope{display:inline-flex;align-items:center;gap:8px;margin-left:auto;white-space:nowrap}
.news-scope label{font-size:16px;color:var(--ink-2)}
.news-scope select{font:inherit;font-size:16px;min-height:38px;padding:4px 10px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;color:var(--ink-2);max-width:170px;text-overflow:ellipsis}
@media (max-width:640px){
  .news-bar{gap:4px;padding-bottom:6px;margin-bottom:4px}
  .news-bar .chip-list a{padding:3px 8px;font-size:13px}
  .news-scope{gap:4px}
  .news-scope label{font-size:13px}
  .news-scope select{font-size:13px;min-height:27px;padding:2px 2px 2px 7px;max-width:96px}
}
@media (max-width:374px){.news-scope label{display:none}}

.prose{max-width:760px}
.prose h2{margin-top:40px}
.prose ul,.prose ol{padding-left:24px;margin:0 0 16px}

.site-footer{margin-top:0;background:var(--ink);color:rgba(255,255,255,.86)}
/* 页脚两行（业主 2026-09-19：密集排版下页脚不铺太高）：品牌 + 一句话 + 邮箱，右边和顶部一样的导航 */
/* 右边这排导航跟左边第二行（那句介绍）对齐，不跟第一行品牌行对齐（业主 2026-09-20） */
.footer-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px 40px;flex-wrap:wrap;padding-top:22px;padding-bottom:18px}
.footer-row .footer-brand{margin-bottom:4px}
.footer-row .footer-about p{font-size:15px;line-height:1.6;margin:0}
.footer-row .footer-about p.footer-brand{font-size:19px}
.footer-row .footer-about a{color:#fff}
.footer-row .footer-about{display:flex;align-items:flex-end;flex-wrap:wrap;gap:6px 24px}
/* logo 右边两行字（业主 2026-10-03）：上面「华人身边事，尽在唐人里」，下面那句口号。下面那句的字底要跟 logo 里「全球华商互联平台」的字底对齐：
   两块都贴底，口号行高 1.6、字下面空 4.5px，logo 小字行高 1.25、字下面空不到 2px，所以 logo 往上垫 3px */
.footer-row .footer-about .footer-logo{margin-bottom:3px}
.footer-row .footer-about p.footer-motto{font-size:16px;font-weight:700;color:inherit}   /* 跟下面那句口号同一个浅色（业主 2026-10-04：橙色怎么调都太显眼，「算了，换成浅色字吧」；之前依次是亮黄、主色橙、深橙） */
.footer-row .footer-about .footer-brand{margin-bottom:0}
/* 行高必须跟左边那段介绍（.footer-row .footer-about p）一致，都是 1.6：
   两边字号同为 15px，但行高不同的话，底部对齐之后文字基线会差 1px 左右，
   看着就是没对齐（业主 2026-09-20 发现） */
.footer-nav{display:flex;flex-wrap:wrap;gap:6px 22px;line-height:1.6}
.footer-nav a{color:rgba(255,255,255,.9);text-decoration:none;font-size:15px}
.footer-nav a:hover{color:#fff;text-decoration:underline}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px;padding-top:48px;padding-bottom:40px}
.footer-brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;color:#fff;margin-bottom:12px}
.footer-brand .brand-mark{width:36px;height:36px;font-size:20px}
/* 页脚不做撑宽对齐，™ 走正常文字流就行；必须把上面那条绝对定位复位掉，
   否则页脚没有定位基准，™ 会飘到整页的角落去（2026-09-20 踩过） */
.footer-brand .brand-tm{position:static;vertical-align:top;margin-left:1px}
.footer-col a{color:rgba(255,255,255,.9)}
.footer-col a:hover{color:#fff}
.footer-col>a{display:block;padding:4px 0;text-decoration:none;font-size:16px}
.footer-head{font-size:16px;color:#fff;margin:0 0 8px;letter-spacing:.04em}
.footer-about p{font-size:18px;line-height:1.7}
.footer-country{font-size:16px;margin:8px 0 0}
.footer-bottom{border-top:1px solid rgba(255,255,255,.14);padding:20px 0 24px;font-size:14px;color:rgba(255,255,255,.74)}
.footer-legal-row{display:flex;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;align-items:center}
.footer-legal-row p{margin:0}
.footer-legal{display:flex;gap:16px;flex-wrap:wrap}
.footer-legal a{color:rgba(255,255,255,.86);text-decoration:none}
/* 最底下一行：版权（左）· 建站署名（中）· 法务链接（右）；放不下时三样居中叠成三行 */
.footer-credit{margin:0;color:rgba(255,255,255,.72)}
@media (max-width:1100px){.footer-legal-row{flex-direction:column;text-align:center}.footer-legal{justify-content:center}}
.credit-tel{margin-left:6px}
.credit-brand,.credit-tel,.credit-site{color:inherit;text-decoration:none}
.credit-site{color:#d9ccb4}
.credit-brand:hover,.credit-tel:hover,.credit-site:hover{color:#fff}
.credit-dot{color:rgba(255,255,255,.3)}
@media (max-width:1023px){.footer-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.footer-grid{grid-template-columns:1fr}}

.rh-toasts{position:fixed;top:calc(var(--header-h) + 12px);left:50%;transform:translateX(-50%);z-index:1200;display:flex;flex-direction:column;gap:8px;width:min(560px,calc(100vw - 32px));pointer-events:none}
.rh-toast{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-md);box-shadow:var(--sh-lg);font-size:16px;line-height:1.55;animation:rh-toast-in .25s ease-out both,rh-toast-out .35s ease-in var(--rh-life,3s) forwards}
.rh-toast-ok{background:#e9f7ef;color:#12532f;border:1px solid #9fd1b2}
.rh-toast-bad{background:#fdecea;color:#8a1c14;border:1px solid #f2b8b2;animation:rh-toast-in .25s ease-out both,rh-toast-out .35s ease-in 8s forwards}
.rh-toast--held{animation:rh-toast-in .25s ease-out both}
.rh-toast-icon{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff;background:currentColor}
.rh-toast-ok .rh-toast-icon{background:var(--ok)}
.rh-toast-bad .rh-toast-icon{background:var(--bad)}
.rh-toast-text{flex:1}
.rh-toast-x{flex:0 0 auto;border:0;background:transparent;font-size:22px;line-height:1;color:inherit;cursor:pointer;padding:0 4px;min-width:32px;min-height:32px}
@keyframes rh-toast-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes rh-toast-out{to{opacity:0;transform:translateY(-8px);visibility:hidden}}
.alert{padding:16px 20px;border-radius:var(--r-md);margin:0 0 20px;font-size:18px}
.alert-error{background:var(--bad-soft);color:#8a1c14;border:1px solid #f2b8b2}
.alert-info{background:#eef4fb;color:#173a60;border:1px solid #c5d8ee}
.rh-flash{animation:rh-flash .6s ease-in-out 2}
@keyframes rh-flash{50%{box-shadow:0 0 0 4px rgba(179,38,30,.35)}}
.rh-confirm{border:0;border-radius:var(--r-md);padding:24px;max-width:min(480px,calc(100vw - 32px));box-shadow:var(--sh-lg)}
.rh-confirm::backdrop{background:rgba(15,39,66,.45)}
.rh-confirm-msg{font-size:18px;margin:0 0 20px}
.rh-confirm-act{display:flex;justify-content:flex-end;gap:12px}

@media (prefers-reduced-motion:reduce){
  .cat-card,.biz-card{transition:none}
  .cat-card:hover{transform:none}
  .rh-toast,.rh-toast-bad,.rh-toast--held{animation-duration:.01s}
}

.hero-site{padding:64px 0 72px}
/* 资讯文章正文（业主 2026-09-27） */
.news-body{font-size:18px;line-height:1.85}
.news-body h2,.news-body h3{margin:28px 0 10px;font-size:21px}
.news-body a{color:var(--red-deep)}
/* 专访三档对照表（业主 2026-09-27：表格要有线条、要对齐） */
.story-tiers-wrap{overflow-x:auto}
.story-tiers{width:100%;min-width:620px;border-collapse:collapse;table-layout:fixed;font-size:16px;line-height:1.5}
.story-tiers th,.story-tiers td{border:1px solid var(--line);padding:10px 12px;text-align:center;vertical-align:middle}
.story-tiers tr:first-child th{background:var(--soft);font-size:17px}
.story-tiers td{text-align:left}   /* 内容格左对齐（业主 2026-09-27） */
.story-tiers th[scope=row]{width:22%;background:var(--soft);text-align:left;font-weight:700}
.story-tiers tr:first-child th:first-child{width:22%}
.hero-slogan{margin:-8px 0 28px;font-size:17px;line-height:1.8;color:var(--muted)}
.hero-slogan b{display:inline-block;margin-bottom:2px;font-size:20px;color:var(--red-deep)}
/* 总站首页顶部改浅色、国家按钮改橙色（业主 2026-09-26，原来是深蓝底 + 白按钮） */
.hero.hero-site{background:var(--paper);color:var(--text);border-bottom:1px solid var(--line)}
.hero-site h1{color:var(--ink)}
.hero-site .lead{color:var(--muted)}
.hero-site .hero-eyebrow{color:var(--red-deep)}
.hero-site .country-card{background:var(--red);color:#fff;box-shadow:var(--sh-sm, 0 2px 6px rgba(15,39,66,.12))}
.hero-site .country-card:hover{background:var(--red-deep)}
.hero-site .country-card strong,.hero-site .country-card span,.hero-site .country-card .icon{color:#fff}
/* 按钮改小，跟普通按钮一样高（业主 2026-09-26：原来太大），宽度按字数 */
.hero-site .country-list{display:grid;grid-template-columns:repeat(5,max-content);gap:10px}   /* 每排五个（业主 2026-09-26） */
/* 按洲分行（业主 2026-09-28）：洲名加框放在行首，跟城市浮层的州名一个样子 */
.hero-site .cont-row{display:flex;align-items:flex-start;gap:14px;margin-top:16px}
.hero-site .cont-row .country-list{margin:0}
.hero-site .cont-name{flex:0 0 auto;min-width:5.5em;text-align:center;margin-top:11px;font-size:14px;font-weight:700;color:var(--ink-2);background:var(--soft);border:1px solid var(--line);border-radius:var(--r-sm);padding:3px 10px;text-decoration:none}
.hero-site .cont-name:hover{color:var(--red-deep);border-color:var(--red);background:#fff}
@media (max-width:560px){.hero-site .cont-row{flex-direction:column;gap:8px}.hero-site .cont-name{margin-top:0}.hero-site .cont-row .country-list{width:100%}}
@media (max-width:900px){.hero-site .country-list{grid-template-columns:repeat(3,max-content)}}
@media (max-width:560px){.hero-site .country-list{grid-template-columns:repeat(2,1fr)}}
.hero-site .country-card{min-width:0;min-height:48px;padding:0 16px;gap:8px;border-radius:var(--r-sm)}
.hero-site .country-card strong{font-size:17px}
.hero-site .country-card span{font-size:13px;opacity:.9}
.hero-site .country-card .icon{margin-left:4px;width:16px;height:16px}
.country-list{display:flex;flex-wrap:wrap;gap:16px;list-style:none;margin:24px 0 0;padding:0}
.country-card{display:flex;align-items:center;gap:16px;min-width:280px;padding:20px 24px;border-radius:var(--r-md);background:#fff;color:var(--text);text-decoration:none;box-shadow:var(--sh-lg)}
.country-card strong{font-size:24px;color:var(--ink)}
.country-card span{color:var(--muted);font-size:14px}
.country-card .icon{margin-left:auto;color:var(--red-deep)}
.country-more{margin:16px 0 0;color:rgba(255,255,255,.8)}
.biz-hero{display:grid;grid-template-columns:96px minmax(0,1fr);gap:24px;align-items:start;margin-top:16px}
.biz-avatar-lg{width:96px;height:96px;font-size:40px;background:#fff}
.biz-avatar{overflow:hidden;background-clip:padding-box}
.biz-avatar img{width:100%;height:100%;object-fit:cover;background:#fff}
.logo-manage{display:flex;align-items:center;gap:16px;margin:0 0 12px}
.logo-manage img{width:96px;height:96px;object-fit:cover;border:1px solid var(--line);border-radius:var(--r-md);background:#fff}
.biz-hero h1{margin:0}
.biz-status{margin:8px 0 0}
.biz-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}
.biz-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:40px;align-items:start}
.biz-main h2{font-size:24px;margin:0 0 16px}
.biz-main h2+dl,.biz-main p+h2,.biz-main dl+h2{margin-top:0}
.biz-main dl+h2{margin-top:32px}
.info-list{margin:0 0 24px;border-top:1px solid var(--line)}
.info-list>div{display:grid;grid-template-columns:7em minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
html[lang^="en"] .info-list>div{grid-template-columns:9em minmax(0,1fr)}
.info-list dt{font-weight:600;color:var(--ink)}
.info-list dd{margin:0}
.source-note{margin-top:32px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted)}
.source-note a{display:inline-flex;align-items:center;gap:4px;margin-left:8px}
.icon-inline{width:16px;height:16px}
.claim-card{position:sticky;top:calc(var(--header-h) + 16px);padding:24px;border-radius:var(--r-md);border:2px solid var(--red);background:var(--red-soft)}
.claim-card h2{font-size:24px;margin:0 0 8px}
.claim-views{font-weight:600;color:var(--red-deep)}
.claim-bar{display:none}
@media (max-width:1023px){.claim-bar{display:block;margin-top:16px;padding:10px 14px;border:1px solid var(--red);border-radius:var(--r-md);background:var(--red-soft);color:var(--red-deep);font-weight:600;text-decoration:none}}
@media (max-width:1023px){.biz-layout{grid-template-columns:1fr}.claim-card{position:static}}
@media (max-width:767px){.biz-hero{grid-template-columns:64px minmax(0,1fr);gap:16px}.biz-avatar-lg{width:64px;height:64px;font-size:28px}.info-list>div{grid-template-columns:6.5em minmax(0,1fr);gap:10px}html[lang^="en"] .info-list>div{grid-template-columns:7.5em minmax(0,1fr)}.biz-cta .btn{flex:1 1 auto}}

.auth-wrap{max-width:560px;margin:0 auto}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:32px;box-shadow:var(--sh-sm)}
.panel h2{font-size:24px;margin:0 0 16px}
.panel+.panel{margin-top:24px}
.note-bar{margin:0 0 24px;padding:12px 16px;border-left:4px solid var(--red);background:var(--red-soft);font-size:16px;line-height:1.7;border-radius:0 var(--r-sm) var(--r-sm) 0}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column}
.field.full{grid-column:1 / -1}
/* 提交大按钮紧跟在输入框后面时留一行空（登录、找回密码、设新密码；照点评助手的 20px）。保存按钮自己有 32px，不动 */
.form-grid + .btn-block:not(.form-save),.field + .btn-block:not(.form-save){margin-top:20px}
.field label{font-size:14px;font-weight:600;color:var(--ink);margin:0 0 4px}
.field input,.field select,.field textarea{width:100%;min-height:48px;padding:10px 14px;border:1px solid #9aa7b4;border-radius:var(--r-sm);font:inherit;font-size:16px;background:#fff;color:var(--text)}
.field textarea{min-height:120px;line-height:1.7}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--focus)}
.field .hint{font-size:14px;color:var(--muted);margin-top:4px;line-height:1.5}
.field .hint.ok{color:var(--ok)}
.field .hint.bad{color:var(--bad)}
.req{font-size:14px;font-weight:400;color:var(--muted)}
.hint-inline{font-size:14px;font-weight:400;color:var(--muted)}
/* 「不公开街道地址」一行小字紧贴地址框下面（业主 2026-09-29） */
.field.addr-hide{margin-top:-10px}
.field .check.check-sm{font-size:14px;color:var(--muted);padding:0}
.field .check.check-sm input{width:18px;height:18px}
/* 门店查询表单上的收录数字（业主 2026-09-29：国家和数字橙色加粗） */
.lookup-stat{margin:20px 0 12px;font-size:16px;color:var(--text)}
.lookup-stat b{color:var(--red-deep);font-weight:700}
.code-row{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}
.code-row input{flex:1 1 160px;min-width:0;letter-spacing:6px;font-weight:700}
.code-row .btn{flex:0 0 auto;white-space:nowrap}
.phone-row{display:flex;gap:8px;align-items:stretch}
.phone-row select{flex:0 0 auto;width:auto;max-width:48%}
.phone-row input{flex:1 1 140px;min-width:0}
.terms-check{display:flex;align-items:flex-start;gap:10px;margin:20px 0 20px;font-size:16px;line-height:1.6;cursor:pointer}
.terms-check input{width:20px;height:20px;margin-top:4px;flex:0 0 auto}
.auth-switch{text-align:center;margin:20px 0 0;color:var(--muted);font-size:16px}
.muted{color:var(--muted)}
.narrow{max-width:640px;margin-left:auto;margin-right:auto}
.mr-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px;border-bottom:1px solid var(--line)}
.mr-tab{padding:12px 16px;text-decoration:none;color:var(--text);font-size:16px;border-bottom:3px solid transparent;margin-bottom:-1px}
.mr-tab.on{color:var(--ink);font-weight:700;border-bottom-color:var(--red)}
/* 手机上用户中心的分栏排成一行、上下空白压掉（业主 2026-10-03：空间浪费太严重） */
@media (max-width:767px){
  .section.section-dash{padding-top:4px}
  .mr-tabs{flex-wrap:nowrap;gap:0;justify-content:space-between;margin-bottom:10px}
  .mr-tab{padding:7px 3px;font-size:15px;white-space:nowrap}
  .mr-tab .mr-badge{min-width:16px;margin-left:2px;padding:0 4px;font-size:11px;line-height:16px}
}
@media (max-width:374px){.mr-tab{font-size:14px;padding:7px 2px}}
@media (max-width:767px){.form-grid{grid-template-columns:1fr}.panel{padding:24px 20px}}

.path-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.path-card{display:flex;flex-direction:column;gap:12px;padding:24px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;box-shadow:var(--sh-sm)}
.path-card h2{font-size:24px;margin:0}
.path-card p{margin:0;color:var(--muted)}
.path-card .search-form{grid-template-columns:1fr;gap:8px}
.path-card .btn{align-self:flex-start;margin-top:auto}
@media (max-width:1023px){.path-cards{grid-template-columns:1fr}}
.pill{display:inline-block;margin-left:8px;padding:2px 10px;border-radius:var(--r-pill);background:var(--ok-soft);color:var(--ok);font-size:14px;font-weight:600;vertical-align:middle}
.inline-form{margin:0 0 16px}
.code-form{margin-top:8px;padding-top:16px;border-top:1px solid var(--line)}
fieldset.field{border:0;margin:0 0 16px;padding:0}
fieldset.field legend{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:8px;padding:0}
.check{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:18px;cursor:pointer}
.check input{width:20px;height:20px;flex:0 0 auto}
/* 表单里的勾选项一行排几个；.field input / .field label 的输入框样式不能套到勾选框上 */
fieldset.field{flex-direction:row;flex-wrap:wrap;column-gap:28px}
.field .check{margin:0;padding:4px 0;font-size:16px;font-weight:400;color:var(--text)}
.field .check input{width:20px;height:20px;min-height:0;padding:0}
/* 营业时间：七天一天一组，宽屏一行三四组，手机一行一组 */
/* 门店编辑表单分隔线（业主 2026-09-29：太乱）：大段标题上面实线，「顾客最关心的」里各块之间浅虚线 */
.lf-sec{border-top:2px solid var(--line,#ddd);padding-top:28px;margin-top:40px}
.lf-block{border-top:1px dashed var(--line,#ddd);padding-top:20px;margin-top:8px}
.hours-grid{column-gap:32px;row-gap:10px}
.hours-day{display:flex;align-items:center;gap:8px;flex:0 0 calc(50% - 16px)}   /* 一行两天（业主 2026-09-29），手机一行一天 */
@media (max-width:760px){.hours-day{flex:1 1 100%}}
.hours-same{min-height:44px;margin-left:4px}
.hours-name{width:36px;font-size:16px;color:var(--text)}
.field .hours-day input{width:76px;min-height:44px;padding:8px 10px;text-align:center;font-variant-numeric:tabular-nums}
.hours-dash{color:var(--muted)}
.hours-grid .hint{flex-basis:100%}
/* 长表单分几段，每段标题和上一段拉开 */
.panel > h2:not(:first-of-type){margin-top:40px}
.form-save{margin-top:32px}
.area-pick .hint{flex-basis:100%}
/* 国家、州下拉 + 城市那几行同一行（2026-09-29） */
/* 三列网格：国家、州、城市；区的勾选框在所属城市下面占满整行（业主 2026-09-29） */
.area-line{flex:1 1 100%;display:grid;grid-template-columns:160px 160px minmax(0,1fr);gap:8px;align-items:start}
.area-cols,.area-line .area-cities{display:contents}
/* 每个下拉固定宽度（业主 2026-09-29：原来撑满一行，每多一列所有下拉都变短，看着难受）；排不下换行，手机上占满一行 */
.area-cols select{width:100%;min-width:0;min-height:44px}
.area-line .area-row{grid-column:3}
.area-line .area-checks{grid-column:1 / -1}
.area-line .area-more{grid-column:3;justify-self:start}
@media (max-width:520px){.area-line{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.area-line .area-row,.area-line .area-more{grid-column:1 / -1}}
.area-add{align-self:flex-start;min-height:44px}
/* 城市下面的区：勾选框，可以多选（2026-09-29） */
.area-checks{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:6px 16px;padding:10px 12px;border:1px solid var(--line,#ccc);border-radius:var(--r-sm,8px);background:#fff}
.area-checks .check{margin:0}
/* 城市一行一个（业主 2026-09-29：跟选副分类一样可以加几个，第二个起能删；每个城市右边是区的勾选框） */
.area-cities{flex:1 1 320px;display:flex;flex-direction:column;gap:8px;min-width:0}
.area-cities:empty{display:none}
.area-loading .area-cols select{opacity:.6;cursor:progress}   /* 正在取下一级 */
.area-row{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-start}
.area-row select{flex:0 0 220px;width:220px;max-width:100%;min-height:44px}
.area-row .area-checks{flex:1 1 280px}
.area-row .area-row-del,.area-row .area-clear{flex:0 0 auto;min-height:44px}
.area-row .area-clear[hidden]{display:none}
.area-more{align-self:flex-start}
.area-more[hidden]{display:none}
@media (max-width:520px){.area-row select{flex:1 1 100%;width:100%}}
.area-chips{display:flex;flex-wrap:wrap;gap:8px;flex:1 1 100%;list-style:none;margin:8px 0 0;padding:0}
.area-chips li{display:inline-flex;align-items:center;gap:6px;padding:6px 8px 6px 12px;border:1px solid var(--line,#ccc);border-radius:999px;background:var(--bg-soft,#f5f5f5);font-size:16px}
.area-del{border:0;background:none;font-size:20px;line-height:1;min-width:32px;min-height:32px;cursor:pointer;color:var(--muted)}
/* 勾选框那一排的 fieldset 是横排的；里面套的两栏输入框（社交媒体）要占满整行，和上面的电话、网站一样宽 */
fieldset.field > .form-grid,fieldset.field > .chat-rows{flex:1 1 100%}

/* 选分类：三个连动下拉，宽屏一行排开，手机一个一行 */
.cat-cascade{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.cat-cascade select[hidden]{display:none}
.cat-extras{flex-direction:column;min-width:0}
.cat-field,.cat-extra{min-width:0}
.cat-cascade select,.cat-field select,.cat-extra select{max-width:100%;min-width:0}
.cat-extras .hint{margin:0 0 10px}
.cat-extra{width:100%;margin-bottom:10px}
.cat-extra[hidden]{display:none}
.cat-extras .btn{align-self:flex-start}
@media (max-width:767px){.cat-cascade{grid-template-columns:minmax(0,1fr)}}

.blank{color:var(--muted)}
.chat-rows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 24px}
.chat-pair{display:flex;align-items:flex-end;gap:8px;min-width:0}
.chat-pair select{flex:0 0 auto;width:auto;max-width:48%;min-height:44px;padding:0 8px;border:1px solid #9aa7b4;border-radius:var(--r-sm);font:inherit;font-size:16px;background:#fff}
.chat-pair .line-input{flex:1 1 auto;min-width:0;min-height:44px;border:0;border-bottom:2px solid #9aa7b4;border-radius:0;padding:8px 4px;font:inherit;font-size:16px;background:transparent}
.chat-pair .line-input:focus{border-bottom-color:var(--focus)}
.container.form-wide{max-width:1152px}
.inline-links{display:flex;flex-wrap:wrap;gap:4px 16px}
@media (max-width:1023px){.chat-rows{grid-template-columns:1fr}}
.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;list-style:none;margin:0 0 24px;padding:0}
.photo-grid img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-md);border:1px solid var(--line);background:var(--soft)}
.photo-grid a[data-zoom]{display:block;cursor:zoom-in}
.zoom-box{display:none;position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.92);align-items:center;justify-content:center;touch-action:pan-y}
.zoom-box.on{display:flex}
.zoom-open,.zoom-open body{overflow:hidden}
.zoom-img{max-width:100vw;max-height:88vh;object-fit:contain;display:block}
.zoom-btn{position:absolute;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:34px;line-height:1;width:52px;height:52px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.zoom-btn:hover{background:rgba(255,255,255,.28)}
.zoom-close{top:14px;right:14px}
.zoom-prev{left:12px;top:50%;transform:translateY(-50%)}
.zoom-next{right:12px;top:50%;transform:translateY(-50%)}
.zoom-btn[hidden]{display:none}
.zoom-count{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:#fff;font-size:15px}
@media (max-width:767px){.zoom-prev,.zoom-next{width:44px;height:44px;font-size:28px}}
@media (max-width:767px){.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}
.photo-manage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;list-style:none;margin:0 0 16px;padding:0}
.photo-manage li{position:relative}
.photo-manage img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-sm);border:1px solid var(--line)}
.photo-manage .check{justify-content:center;font-size:14px;padding:4px 0}
@media (max-width:767px){.photo-manage{grid-template-columns:repeat(2,minmax(0,1fr))}}
.mr-badge{display:inline-block;min-width:22px;margin-left:6px;padding:0 6px;border-radius:var(--r-pill);background:var(--red);color:#fff;font-size:14px;line-height:22px;text-align:center}
.own-list{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.own-card{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center;padding:20px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff}
.own-card .biz-title{margin:0 0 4px}
/* 商家中心的卡片不要整卡可点：名录列表里那层透明遮罩会盖住「编辑资料」按钮 */
.own-card .biz-title a::after{content:none}
.own-actions{display:flex;gap:8px;flex-wrap:wrap}
.msg-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.msg-item{padding:16px 20px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff}
.msg-title{margin:0 0 4px;font-weight:600;color:var(--ink)}
.msg-sub{margin:0;color:var(--muted)}
.msg-time{margin:4px 0 0;font-size:14px;color:var(--muted)}
.msg-shell{display:grid;grid-template-columns:minmax(220px,320px) minmax(0,1fr);gap:16px;align-items:start}
.msg-pick{display:block;max-height:620px;overflow:auto;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff}
.msg-card{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:4px;min-height:54px;padding:10px 12px 10px 14px;border-left:3px solid transparent;border-bottom:1px solid var(--line);background:#fff;color:inherit;text-decoration:none}
.msg-pick li:last-child .msg-card{border-bottom:0}
.msg-card .msg-title{min-width:0;margin:0;font-weight:400;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-card .msg-time{margin:0;font-size:12px;line-height:1.35;white-space:nowrap;color:var(--muted)}
.msg-card:hover,.msg-card:focus-visible{background:#f8fafc}
.msg-card.is-on{border-left-color:var(--red);background:#fff7f6}
.msg-card.msg-unread .msg-title::before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:var(--red);vertical-align:middle}
.msg-reader{min-height:220px;padding:20px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff}
.msg-reader h2{margin:0 0 12px;font-size:20px;line-height:1.45}
/* 《唐人里欢迎您》：六件事一条一行，按钮跟在句子后面（业主 2026-09-25） */
.welcome-msg ol{margin:0 0 12px;padding-left:22px}
.welcome-msg li{margin:0 0 12px;line-height:1.7}
.welcome-msg li .btn{margin-left:6px;vertical-align:baseline}
@media (max-width:767px){.msg-shell{grid-template-columns:1fr}.msg-reader{min-height:0}}

/* ===== 密集版：首页、找商家、频道页、找客户、找合作（业主 2026-09-19，照桌面设计稿） ===== */
.page-dense{background:#eef1f5}
.dense{padding:16px 0 8px}
.m-box{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:16px;margin-bottom:14px}
.m-box > .search-form{margin-bottom:14px}
.m-top{display:grid;grid-template-columns:310px minmax(0,1fr);gap:20px;align-items:start}   /* 靠上对齐：搜索框贴上边（业主 2026-09-30） */
.m-top h1{font-size:26px;margin:0 0 4px;color:var(--ink);text-wrap:balance}
/* 这行写的是本地收录了哪些商家，是网站最值钱的东西；改名叫唐人里之后
   站名不再自我解释，这句话责任变重。先试过灰改黑+不加粗，业主看了觉得
   更弱（字变细把颜色的提升抵消了），2026-09-20 改成红色加粗 */
.m-top h1 span{display:block;margin-top:6px;font-size:16px;font-weight:700;color:var(--red-deep)}
/* 左栏：大标题留在最上面，口号、两行说明、收录数字这一组贴到底部，最后一行跟右边最后一条动态同一高度（业主 2026-09-30）。
   手机上是上下排，左栏只有内容那么高，这几条不起作用 */
.m-top>div:first-child{display:flex;flex-direction:column;align-self:stretch}
.m-top>div:first-child>h1{flex:1 1 auto;display:flex;flex-direction:column}
.m-top>div:first-child>h1 span{margin-top:auto;padding-top:6px}
.m-lead{margin:0;color:var(--muted);font-size:15px;line-height:1.75}   /* 1.5 → 1.75：两行说明和下面收录那行间距匀一点（业主 2026-09-30） */
/* 商家数量是别人抄不走的硬实力，数字单独放大（业主 2026-09-20）；
   外面那行说明文字保持小字，靠对比把数字顶出来 */
.m-stat{margin:2px 0 0;font-size:14px;line-height:1.2;color:var(--muted)}   /* 大号数字会把这一行撑高，行高收紧（业主 2026-09-30） */
.m-stat b{color:var(--red-deep);font-size:21px}
/* 正文里要强调的活数字，跟 .m-stat b 一个配色，别处（比如找客户页）也能用 */
.num-strong{color:var(--red-deep);font-weight:700}
.m-tags{display:flex;flex-wrap:wrap;gap:0 14px;margin:8px 0 0;font-size:15px;line-height:30px}
/* 口号一行，在搜索条上方（业主 2026-10-03 改版）；手机上不显示 */
.m-slogan{margin:0 0 8px;font-size:15px;line-height:1.5;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 中文句号本身右边就带半个字的空，不再另加间距（业主 2026-10-03：空得太多）；英文句点后面要留一个空格的宽度 */
.m-slogan b{color:var(--red-deep)}
html[lang="en"] .m-slogan b{margin-right:6px}
@media (max-width:767px){.m-slogan{display:none}}
/* 主城页内容区块（最新资讯 / 招聘 / 房屋 / 合作 / 入驻 / 人物，业主 2026-10-03 改版）：两列、每列 6 行，先排满左列再排右列；
   每行左边标题（太长截成省略号）、右边小字（地点、日期）。手机上一列、只露前 6 行 */
.hb-two{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(6,auto);grid-auto-flow:column;column-gap:32px}
.hb-two li{display:flex;align-items:baseline;gap:12px;min-width:0;padding:11px 0;border-bottom:1px dotted var(--line);font-size:16px;line-height:1.5}
.hb-two li a{flex:1 1 auto;min-width:0;color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb-two li a:hover{color:var(--red-deep);text-decoration:underline}
.hb-two li > span{flex:0 0 auto;font-size:13px;color:var(--muted);white-space:nowrap}
@media (max-width:767px){.hb-two{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-flow:row}.hb-two li:nth-child(n+7){display:none}.hb-two li{padding:9px 0}}
.hb-two.hb-cats{grid-template-rows:repeat(8,auto)}
.seo-box{margin-bottom:28px}
.seo-box.m-box{margin-bottom:0}
.seo-h{font-size:20px;margin:0 0 10px}
.seo-box .seo-h{border-bottom:2px solid var(--red);padding-bottom:8px;margin-bottom:12px}
.seo-box .biz-list + .seo-h,.seo-box dl + .seo-h{margin-top:22px}
.seo-p{margin:0 0 14px;line-height:1.7;color:var(--text)}
.seo-faq{margin:0}
.seo-faq dt{font-weight:700;margin-top:12px}
.seo-faq dd{margin:4px 0 0;color:var(--muted);line-height:1.7}
.section.biz-faq{padding:0 0 28px;margin-top:-36px}
@media (max-width:767px){.section.biz-faq{padding:0 0 22px;margin-top:-26px}}
@media (max-width:767px){.hb-two.hb-cats{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(8,auto);grid-auto-flow:column;column-gap:14px}.hb-two.hb-cats li:nth-child(n+7){display:flex}.hb-two.hb-cats li{font-size:14px}.hb-two.hb-cats li > span{display:none}}
/* 手机：行业按钮收窄内边距，四个字排一行（业主 2026-09-30） */
@media (max-width:767px){.cat-btns a{padding:4px 2px;white-space:nowrap}}
.m-tags span{color:var(--muted)}
.m-tags a{color:var(--ink-2)}
.m-tags a[aria-current="page"]{color:var(--red-deep);font-weight:700;text-decoration:none}
/* 搜索条下面「最新招聘」一行（业主 2026-09-26）：跟「大家常搜」一个字号配色；标题长就截成省略号，
   保证一行排下，「查看全部」靠右。手机上只留第一条，两条挤一行各剩几个字看不出招什么 */
.m-jobs{display:flex;align-items:baseline;gap:0 6px;margin:8px 0 0;font-size:15px;white-space:nowrap;min-width:0}
.m-jobs span{color:var(--muted);flex:none}
.m-jobs i{font-style:normal;color:var(--muted);flex:none}
.m-jobs a{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;min-width:0}
.m-jobs a.m-jobs-all{flex:none;margin-left:auto;padding-left:10px;color:var(--red-deep)}
/* 「大家常搜：」「最新招聘：」两行的第一个链接对齐（业主 2026-09-28）：标签定宽，标签后面的空隙两行一样
   （大家常搜那行链接间距 14px，最新招聘那行 6px，差的 8px 补在标签右边；手机上是 8px 对 6px，补 2px） */
.pop-tags>span:first-child,.m-jobs>span:first-child{flex:none;min-width:76px}
html[lang^="en"] .pop-tags>span:first-child,html[lang^="en"] .m-jobs>span:first-child{min-width:96px}
.m-jobs>span:first-child{margin-right:8px}
@media (max-width:767px){.m-jobs>span:first-child{margin-right:2px}}
@media (max-width:767px){.m-jobs i,.m-jobs a:nth-of-type(2):not(.m-jobs-all){display:none}}
/* 大类按钮格电脑手机都不显示了（业主 2026-09-21：跟下面的16频道滚动格重复，还占版面）；
   PHP 还在输出这个框，只是整个隐藏——先留着，万一以后想要能直接改回来 */
/* 16 个行业按钮 2026-09-30 重新显示（业主：行业入口太深），放在顶部大框下面 */
/* 业主 2026-10-03：8 个一组（电脑一排 8 个，手机 4 × 2），隔几秒整组向左滑、换下一组。轮播用行业频道块那套脚本（data-rot）。
   两组之间留 8px 的缝，所以滑动距离是「一整格 + 8px」；脚本写的是 -100%，这里用 !important 盖过去 */
.cat-btns{overflow:hidden}
.cat-btns .chan-track{gap:8px}
.cat-btns .chan-track.is-moving{transform:translateX(calc(-100% - 8px)) !important}
.cat-page{flex:0 0 100%;min-width:0;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px}
/* 州省 / 城市 / 区域那一行跟行业按钮同一个框，排在下面（业主 2026-10-03） */
/* 地区按钮的名字用橙色（业主 2026-10-03：城市名要比行业按钮显眼） */
.chip-wrap .big-chips a{color:var(--red-deep)}
.cat-btns a{display:flex;align-items:center;justify-content:center;text-align:center;min-height:46px;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--soft);color:var(--ink);font-size:16px;font-weight:600;line-height:1.2;text-decoration:none}   /* 行业按钮黑字、下面一行地区按钮橙字（业主 2026-10-03 当天先试过反过来，嫌行业太显眼、城市名不显眼，对调了） */
.cat-btns a:hover{background:var(--red);border-color:var(--red);color:#fff}
/* 广告位 */
/* 广告位一律按规格比例定高（业主 2026-10-03）：通栏 1150:90、半栏 570:90、小格 280:90，比例写在每个位子自己的 style 里（见 hbAd()），
   所以这里不能有最低高度（有了浏览器会反过来把宽度撑大）；一排里各自按比例，不互相拉高 */
.ad-row{display:grid;gap:10px;margin-bottom:10px;align-items:start}
/* 广告行只写了下边距，前面接的是频道块、分页按钮、「没找到」提示这类没有下边距的元素时会贴在一起（业主 2026-09-30，全站用浏览器量过）。
   统一：广告行前面接别的内容一律留 14px；连着的两排广告之间照旧 10px */
* + .ad-row{margin-top:14px}
.ad-row:not(:empty) + .ad-row{margin-top:0}
.ad-row:empty{display:none}   /* 一排小格全被隐藏规则藏掉时只剩空壳：不占位置，也不算「连着的广告行」 */
.ad-row-1{grid-template-columns:minmax(0,1fr)}
.ad-row-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ad-row-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ad{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:0;border-radius:var(--r-sm);text-decoration:none;text-align:center;overflow:hidden}
.ad-empty{border:2px dashed #c9d3de;background:repeating-linear-gradient(45deg,#fafbfd,#fafbfd 10px,#f3f6f9 10px,#f3f6f9 20px);color:var(--muted);padding:8px}
.ad-empty:hover{border-color:var(--red)}
.ad-main{font-size:18px;font-weight:700;color:var(--ink-2)}
.ad-sub{font-size:13px}
.ad-live{background:#fff;border:1px solid var(--line)}
.ad-live{min-height:0}
.ad-live img{display:block;width:100%;height:100%;object-fit:fill}   /* 拉伸铺满、绝不裁剪（业主 2026-09-30：contain 在手机上通栏左右、半栏上下留白；cover 会切掉字） */
/* 卖出后：外层是 div，图片自己是链接；右下角「$x/月，去竞价」（业主 2026-09-25） */
.ad-live .ad-link{display:block;width:100%;height:100%}
/* 通栏的手机图（业主 2026-10-03）：<picture> 在手机上换成手机图（规格同半栏 570 × 90），框也换成这个比例（--ar-m 写在位子自己的 style 里，
   所以要 !important 才盖得过那里的 aspect-ratio）。通栏招租牌在手机上也按这个比例 */
.ad-live picture{display:block;width:100%;height:100%}
@media (max-width:767px){.ad-has-m{aspect-ratio:var(--ar-m) !important}}
.ad-bid{position:absolute;right:6px;bottom:4px;z-index:2;font-size:12px;line-height:1.5;font-weight:600;color:var(--red-deep);background:rgba(255,255,255,.55);border-radius:4px;padding:0 6px;text-decoration:none;white-space:nowrap}
.ad-bid:hover{background:#fff;color:var(--red-deep);text-decoration:underline}
/* 竞价标签在广告位、推荐位上从右往左循环滑过（业主 2026-09-28：固定在右下角有时挡住广告上的字；同日嫌快，速度减半）。
   框本身 overflow:hidden，滑出去的部分被裁掉；鼠标移上去停住方便点；设了「减少动画」的访客照旧固定在右下角 */
.ad .ad-bid,.feat-img .ad-bid{right:auto;left:100%;animation:ad-bid-run 28s linear infinite}
.feat-img .ad-bid{animation-duration:18s}
.ad:hover .ad-bid,.feat-img:hover .ad-bid,.ad-bid:focus-visible{animation-play-state:paused}
/* 已投放广告「翻转」（业主 2026-09-28，先后试了心跳两下、慢慢呼吸，定这个）：图片像翻牌子一样绕水平轴翻一下，
   翻过来还是正面（转到 90° 侧着看不见时跳到 -90°，再转回来，字不会颠倒）；每 5 秒上下翻一次、每次 1.2 秒（同日从 0.8 秒放慢；左右翻试过，同日全部取消）；框、白光、竞价标签不动。
   相邻的广告错开半轮；鼠标停在上面、按了右下角暂停（html.ad-still）时停住 */
.ad-live,.ad-live .ad-link{perspective:1600px}
.ad-live img{animation:ad-flip-x 5s linear infinite;transform-origin:50% 50%;backface-visibility:hidden}
.ad-row .ad-live:nth-child(2n) img{animation-delay:-2.5s}
.ad-live:hover img,.ad-still .ad-live img{animation-play-state:paused}
/* 推荐位（已卖出、放了商家照片的）只左右翻（业主 2026-09-28：左右翻只用在推荐商家这种地方，推荐位不上下翻）：
   5 秒一次、每次 1.2 秒；同一排四格依次翻，不一起动；鼠标停在上面、按了右下角暂停时停住。空着的招租牌不翻 */
.feat-sold .feat-img,.feat-sold .feat-img-link{perspective:1000px}
.feat-sold .feat-img img{animation:ad-flip-y 5s linear infinite;transform-origin:50% 50%;backface-visibility:hidden}
.feat-sold:nth-child(4n+2) .feat-img img{animation-delay:-1.25s}
.feat-sold:nth-child(4n+3) .feat-img img{animation-delay:-2.5s}
.feat-sold:nth-child(4n+4) .feat-img img{animation-delay:-3.75s}
.feat-sold .feat-img:hover img,.ad-still .feat-sold .feat-img img{animation-play-state:paused}
@keyframes ad-flip-y{0%,76%{transform:rotateY(0)}88%{transform:rotateY(90deg)}88.01%{transform:rotateY(-90deg)}100%{transform:rotateY(0)}}
@keyframes ad-flip-x{0%,76%{transform:rotateX(0)}88%{transform:rotateX(90deg)}88.01%{transform:rotateX(-90deg)}100%{transform:rotateX(0)}}
@keyframes ad-bid-run{from{left:100%;transform:translateX(0)}to{left:0;transform:translateX(-100%)}}
@media (prefers-reduced-motion:reduce){.ad .ad-bid,.feat-img .ad-bid{animation:none;left:auto;right:6px}}
.feat-sold .feat-img-link{display:block;width:100%;height:100%}
.feat-sold .feat-name{color:inherit;text-decoration:none}
.feat-sold{display:flex;flex-direction:column;gap:2px;min-width:0}
/* 自动隐藏之后整行都空了的广告行，连空白一起收掉 */
.ad-row:empty{display:none}
.ad-label{position:absolute;right:6px;top:6px;font-size:12px;background:rgba(15,39,66,.72);color:#fff;border-radius:4px;padding:0 6px}
.ad-tall{min-height:250px}
.ad-house{min-height:90px;flex-direction:row;gap:18px;justify-content:flex-start;background:linear-gradient(100deg,var(--ink),var(--ink-2) 60%,var(--red-deep));color:#fff;padding:14px 24px;text-align:left}
.ad-house-art{width:54px;height:54px;border-radius:12px;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.ad-house-art .icon{width:30px;height:30px}
.ad-house-text{display:flex;flex-direction:column;gap:4px}
.ad-house-text b{font-size:20px}
.ad-house-text span{font-size:14px;opacity:.88}
.ad-house-btn{margin-left:auto;background:var(--red);border-radius:var(--r-sm);padding:10px 20px;font-weight:700;flex:0 0 auto}
.ad-house:hover{color:#fff}
/* 三栏、标题行、小列表 */
/* minmax(0,…)：列宽只按比例分，不被里面的内容撑宽。原来首页、州页、城市页的「推荐商家」四格各宽 199 / 182 / 180，
   同一种推荐位在不同页面尺寸不一样（业主 2026-09-25 要规格真实） */
.m-three{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.2fr) minmax(0,.8fr);gap:14px;margin-bottom:14px}
.m-three .m-box{margin:0}
.box-head{display:flex;align-items:baseline;gap:10px;border-bottom:2px solid var(--red);padding-bottom:6px;margin-bottom:8px}
.box-head h2,.box-head h3{font-size:18px;margin:0}
.box-head h3 a{color:var(--ink);text-decoration:none}
.box-head > a{margin-left:auto;font-size:14px;color:var(--muted);white-space:nowrap}
.mini-list{list-style:none;margin:0;padding:0}
.mini-list li,.chan-list li,.l2-card li{display:flex;flex-direction:column;padding:6px 0;border-bottom:1px dotted var(--line);font-size:15px;min-width:0}
.mini-list a,.chan-list a,.l2-card li a{color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-list a:hover,.chan-list a:hover,.l2-card li a:hover{color:var(--red-deep);text-decoration:underline}
.mini-list li span,.chan-list li span,.l2-card li span{font-size:13px;color:var(--muted)}
.mini-cities li,.mini-coop li{flex-direction:row;justify-content:space-between;align-items:baseline;gap:8px}
.mini-coop time{font-size:13px;color:var(--muted);flex:0 0 auto}
.nl-cat{color:var(--red-deep);margin-right:4px}
/* 推荐位 */
.feats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* 推荐商家四个座位：一整行、一排四个 260×260 大图（2026-09-30 从 260×195 改），两头对齐（内框 1116 宽正好放下，业主 2026-09-25）。
   窄屏一排放不下四个时自动换行；手机上一排两个，图片按 1:1 等比缩小。 */
.feats-4{grid-template-columns:repeat(auto-fill,260px);justify-content:space-between;row-gap:16px}
@media (max-width:1023px){.feats-4{grid-template-columns:repeat(3,minmax(0,1fr))}.feats-4>:nth-child(n+4){display:none}}
@media (max-width:640px){.feats-4{grid-template-columns:repeat(2,minmax(0,1fr))}.feats-4>:nth-child(n+3){display:none}}
/* 推荐商家四格整排向左滑着换（业主 2026-10-03：跟四分之一小格一样），脚本把四格包进 .ad-track（见 site.js 末尾）。
   一屏露几个：电脑 4 个、平板 3 个、手机 2 个（--show）；格子之间的缝 --g 在电脑上算成「四个 260 正好两端对齐」，跟不滑的时候一样。
   上面两条把手机、平板上多出来的先藏掉，是给脚本还没跑起来的那一瞬间用的，免得先排成两排再跳成一排 */
.feats-4.ad-rot{display:block;overflow:hidden;--show:4;--g:max(10px,calc((100% - 1040px) / 3))}
.feats-4 .ad-track{gap:var(--g)}
.feats-4 .ad-track>*{flex:0 0 calc((100% - (var(--show) - 1) * var(--g)) / var(--show));min-width:0}
@media (max-width:1023px){.feats-4.ad-rot{--show:3;--g:10px}}
@media (max-width:640px){.feats-4.ad-rot{--show:2}}
/* 推荐商家拿出去之后，下面剩两栏 */
.m-three.m-two{grid-template-columns:repeat(2,minmax(0,1fr))}
.m-three.m-two > .m-box:only-child{grid-column:1/-1}
/* 两栏这一组在窄屏上（业主 2026-10-03）：平板还是左右并排，手机上下排、每个框都占满整行。
   上面 .m-three.m-two 比后面窄屏里的 .m-three 优先级高，原来手机上没变成一栏，第一个框只剩半宽、第二个框占整行 */
@media (max-width:1023px){.m-three.m-two .m-box:last-child{grid-column:auto}}
@media (max-width:767px){.m-three.m-two{grid-template-columns:minmax(0,1fr)}}
.feat,.feat-big{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--text);min-width:0}
.feat b,.feat-big b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feat > span:not(.feat-img),.feat-big > span:not(.feat-img){font-size:13px;color:var(--muted)}
.feat-img{position:relative;display:flex;align-items:center;justify-content:center;height:92px;border-radius:var(--r-sm);background:linear-gradient(135deg,#e9eef4,#d9e2ec);color:#9aa7b4;overflow:hidden}
/* 推荐位大图 260 × 260，任何宽度都保持正方形（业主 2026-10-03）：格子窄了跟着缩成小正方形；格子比 260 宽（手机上频道块里占满整行）就停在 260、居中。
   原来写死高 260，格子一窄就成了竖长条，方图被拉变形 */
.feat-big .feat-img{height:auto;aspect-ratio:1/1;width:100%;max-width:260px;align-self:center}
.feat-adimg .feat-img-link{display:flex;align-items:center;justify-content:center;text-decoration:none;color:inherit}
.feat-text{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px;text-align:center;color:var(--text)}
.feat-text b{font-size:18px;color:var(--ink);white-space:normal}
.feat-text span{font-size:14px;color:var(--muted)}
.feat-img img{width:100%;height:100%;object-fit:fill}   /* 推荐位图片也拉伸铺满、不裁剪（业主 2026-09-30） */
.feat-adimg .feat-img{background:#fff;border:1px solid var(--line)}
.feat-img .icon{width:34px;height:34px}
.feat-img em{position:absolute;left:6px;top:6px;font-style:normal;font-size:12px;background:var(--red);color:#fff;border-radius:4px;padding:1px 6px}
.feat-initial{font-size:40px;font-weight:700;color:var(--ink-2)}
.feat:hover b,.feat-big:hover b{color:var(--red-deep)}
/* 频道块 */
.chan{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;margin-bottom:14px}
.chan-head{display:flex;align-items:center;gap:14px;border-bottom:2px solid var(--red);padding-bottom:8px;margin-bottom:12px}
.chan-head h2{display:flex;align-items:center;gap:8px;font-size:20px;margin:0;white-space:nowrap}
.chan-sub{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:14px;flex:1;min-width:0;max-height:24px;overflow:hidden}
.chan-sub a{color:var(--muted);text-decoration:none}
.chan-sub a:hover{color:var(--red-deep)}
.chan-all{font-size:14px;white-space:nowrap;margin-left:auto}
/* 左右两个大图推荐位一样宽（原来右边 280、左边 260，招租牌都写 260，业主 2026-09-25） */
.chan-body{display:grid;grid-template-columns:260px minmax(0,1fr) minmax(0,1fr) 260px;gap:16px}
/* 没有推荐位的页面（不是主城的城市、社区）只有两列列表 */
.chan-body.chan-nofeat{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
/* 行业页「同行圈」（业主 2026-09-25）：左招聘求职、右合作信息 */
.peer-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.peer-cols h3{font-size:16px;margin:0 0 8px;display:flex;justify-content:space-between;align-items:baseline}
.peer-cols h3 a{font-size:14px;font-weight:400;color:var(--muted)}
.peer-list{list-style:none;margin:0;padding:0}
.peer-list li{padding:6px 0;border-bottom:1px dotted var(--line);display:flex;flex-direction:column}
.peer-list li span{font-size:13px;color:var(--muted)}
@media (max-width:767px){.peer-cols{grid-template-columns:minmax(0,1fr)}}
/* 搜索结果顶上的推荐位（这一级这个大类的左右两个大图推荐位，业主 2026-09-25） */
/* 固定 260 宽，跟频道块里的大图推荐位一样大（原来拉伸到 405 宽，跟规格对不上，业主 2026-09-25） */
.search-feat-row{display:grid;grid-template-columns:repeat(2,260px);gap:16px}
@media (max-width:767px){.search-feat-row{grid-template-columns:minmax(0,1fr)}}
.chan-list h3{font-size:15px;margin:0 0 6px;color:var(--ink-2)}
.chan-list ul{list-style:none;margin:0;padding:0}
.mc-icon{display:inline-flex;width:30px;height:30px;border-radius:8px;background:var(--red-soft);color:var(--red-deep);align-items:center;justify-content:center;flex:0 0 auto}
.mc-icon .icon{width:18px;height:18px}
/* 找商家：16 个大类格子 */
.mc-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.mc-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 12px;min-width:0}
.mc-head{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:17px}
.mc-head a{display:inline-flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none}
.mc-head a:hover b{color:var(--red-deep)}
.mc-n{margin-left:auto;font-size:13px;font-weight:400;color:var(--muted)}
.mc-links{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:14.5px;line-height:1.7;margin:0}
.mc-links a{color:var(--text);text-decoration:none}
.mc-links a:hover{color:var(--red-deep);text-decoration:underline}
.mc-links .mc-more{color:var(--muted)}
/* 行业目录每个大类底下那行「推荐位 2 个 · $8/月起」（业主 2026-09-25） */
.mc-feat{margin:4px 0 0;font-size:13px}
/* 联系我们「发送」按钮上方空一行（业主 2026-09-25） */
.contact-send{margin-top:24px}
.mc-feat a{color:var(--red-deep);font-weight:600;text-decoration:none}
.mc-feat a:hover{color:var(--red-deep);text-decoration:underline}
/* 分块列商家 */
.l2-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:14px}
.l2-grid.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.l2-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;min-width:0}
.l2-card ul{list-style:none;margin:0;padding:0}
.l2-btns{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.l2-btns a{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--soft);color:var(--ink);text-decoration:none;font-size:15px;font-weight:600}
.l2-btns a span{font-weight:400;color:var(--muted);font-size:13px}
.l2-btns a:hover{background:var(--red);border-color:var(--red);color:#fff}
.l2-btns a:hover span{color:#fff}
.city-chips{display:flex;flex-wrap:wrap;gap:8px 20px;list-style:none;margin:0;padding:0;font-size:15px}
.city-chips li{display:flex;gap:4px;align-items:baseline}
.city-chips a{color:var(--ink-2)}
.city-chips span{color:var(--muted);font-size:13px}
.all-link{display:flex;justify-content:center;margin:4px 0 16px}
.m-cta{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 18px;margin-bottom:14px}
.m-cta h2{font-size:18px;margin:0}
.m-cta p{margin:2px 0 0;color:var(--muted);font-size:15px}
.m-cta .btn{margin-left:auto}
/* 找客户 */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.card{position:relative;border:1px solid var(--line);border-radius:var(--r-md);padding:18px;display:flex;flex-direction:column;gap:8px}
.card h3{display:flex;align-items:center;gap:10px;font-size:19px;margin:0}
.card-title-text{min-width:0}
.card p{margin:0;font-size:15.5px;line-height:1.7}
.card .btn{align-self:flex-start}
/* 印章（业主 2026-10-01：找客户页每张服务卡片盖一个圆形印章角标，区分「唐人里服务」和「合作方服务」；
   必须整个圆都收在卡片边框以内，不能有任何一点超出边框；印章要够大，挡住下面文字没关系；圆圈里没写字的
   地方必须透明，不能有实心底色盖住下面的字——改成直接用一张带透明背景的 PNG 图章图片（assets/img/stamp-*.png，
   由 gen_stamp.py 生成，中英文各一套，见 _hb-pages-coop.php），图片本身已经是做旧的手盖印章效果、圆圈以外全透明；
   pointer-events:none 让图章底下的按钮照样能点；业主 10-01 又要求印章挪到右下角，照样不能出框） */
.card-stamp{position:absolute;bottom:8px;right:8px;z-index:1;width:104px;height:104px;pointer-events:none}
.card .btn:first-of-type{margin-top:auto}
.price{font-size:14px;font-weight:700}
.price.free{color:var(--ok)}
.price.paid{color:var(--red-deep)}
.table-wrap{overflow-x:auto}
table.slots{width:100%;border-collapse:collapse;font-size:15px}
.slots th,.slots td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.slots th{background:var(--soft);color:var(--ink)}
.slots td:last-child{white-space:nowrap}
.notice{font-size:14px;color:var(--muted);margin:10px 0 0}
.contact-band{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;background:linear-gradient(120deg,var(--ink),#1d4470);color:#fff;border-radius:var(--r-md);padding:24px 26px;margin-bottom:14px}
.contact-band h2{color:#fff;font-size:22px;margin:0 0 6px}
.contact-band p{margin:0;color:rgba(255,255,255,.88)}
.contact-band .ways{display:flex;flex-direction:column;gap:8px;font-size:17px}
.contact-band .ways a{color:#fff;font-weight:700}
.faq-mini details{border-bottom:1px solid var(--line);padding:10px 0}
.faq-mini summary{font-weight:700;cursor:pointer;font-size:16px;color:var(--ink)}
.faq-mini p{margin:8px 0 0;font-size:15px}
/* 找合作 */
.types{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;list-style:none;margin:0;padding:0}
.type{display:block;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;text-decoration:none;color:var(--text);height:100%}
.type b{display:block;font-size:17px;margin-bottom:4px;color:var(--ink)}
.type span{font-size:14.5px;color:var(--muted)}
.type:hover{border-color:var(--red)}
.howto{margin:0;padding-left:22px;font-size:16px;line-height:1.9}
.howto-actions{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 0}
.posts{list-style:none;margin:0;padding:0}
.posts li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;padding:9px 0;border-bottom:1px dotted var(--line);font-size:15.5px;align-items:baseline}
.posts a{color:var(--text)}
.ptype{color:var(--red-deep);font-size:14px;white-space:nowrap}
.ptype-head{margin:8px 0 0;color:var(--red-deep);font-weight:700}
.pmeta{color:var(--muted);font-size:13px;white-space:nowrap}
.coop-body{font-size:17px;line-height:1.8;margin:0 0 18px}
.own-actions form{display:inline}
@media (max-width:1199px){.chan-body{grid-template-columns:220px minmax(0,1fr) minmax(0,1fr)}.chan-side{display:none}}
@media (max-width:1023px){
  .m-top{grid-template-columns:minmax(0,1fr)}
  .cat-page{grid-template-columns:repeat(4,minmax(0,1fr))}
  .m-three{grid-template-columns:1fr 1fr}
  .m-three .m-box:last-child{grid-column:1/-1}
  .mc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .chan-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .chan-body > .feat-big{grid-column:1/-1}
  .ad-row-4{grid-template-columns:1fr 1fr}   /* 小格按比例缩到一排四个时招租牌的字放不下，平板上一排两个 */
  .l2-grid,.l2-grid.g4,.cards,.types{grid-template-columns:1fr 1fr}
}
@media (max-width:767px){
  /* 手机上上下的留白收紧（业主 2026-10-03：手机版面有限，空白太高是浪费；当天收了两轮，第二轮在第一轮基础上再减一半）。只收上下，左右不动。
     框和框之间 14 → 3，框里上下 12 → 5，页眉到第一个框 12 → 3，顶部大框里收录数到搜索框 20 → 4，广告行上下 14 / 10 → 3，
     搜索框两行之间 8 → 5，行业按钮两排之间 8 → 5 */
  .dense{padding-top:3px}
  .m-box,.chan{padding:5px 12px;margin-bottom:3px}
  .m-top{gap:4px}
  .m-top h1{margin-bottom:0;line-height:1.2}
  .m-three{gap:3px;margin-bottom:3px}
  .ad-row{margin-bottom:3px;gap:3px}
  * + .ad-row{margin-top:3px}
  .ad-row:not(:empty) + .ad-row{margin-top:0}
  .box-head{padding-bottom:3px;margin-bottom:2px}
  .hb-search{gap:5px}
  .cat-page{gap:5px}
  .hb-two li{padding:7px 0}
  /* 招聘、找客户这类页面顶部灰底的标题区（面包屑 + 大标题 + 一句说明）在手机上也压矮：上下留白 32 / 24 → 8 / 8，
     大标题 34px → 24px，说明 20px → 15px */
  .page-head{padding:8px 0 8px}
  .page-head h1,.page-head .page-title{font-size:24px;line-height:1.25;margin:2px 0 2px}
  .page-head .lead{font-size:15px;line-height:1.5}
  .m-top h1{font-size:26px}
  .m-top h1 span{font-size:15px}
  .cat-btns a{font-size:15px;min-height:44px}
  /* 半栏、小格：一排只露一张、占满整行，其余的由脚本轮流滑出来；脚本没跑起来就只露第一张（业主 2026-10-03） */
  .ad-row-2,.ad-row-4{grid-template-columns:minmax(0,1fr)}
  .ad-row-2>.ad:nth-child(n+2),.ad-row-4>.ad:nth-child(n+2){display:none}
  .ad-house{min-height:70px}
  /* 半栏招租牌只有五十多像素高，左下角的编号会压到第二行字，挪到左上角 */
  .ad-row-2 .ad-empty .slot-id{top:4px;bottom:auto}
  .ad-live .ad-bid{font-size:10px;line-height:1.35;padding:0 4px;bottom:2px}
  .ad-main{font-size:15px}
  .ad-house{padding:12px;gap:10px}
  .ad-house-art{display:none}
  .ad-house-text b{font-size:16px}
  .ad-house-btn{padding:8px 12px;font-size:14px}
  .m-three,.mc-grid,.l2-grid,.l2-grid.g4,.cards,.chan-body,.chan-body.chan-nofeat{grid-template-columns:minmax(0,1fr)}
  .chan-sub{display:none}
  .types{gap:8px}
  .type{padding:10px 12px}
  .contact-band{grid-template-columns:1fr;padding:20px}
  .slots th:nth-child(3),.slots td:nth-child(3){display:none}
  .posts li{grid-template-columns:minmax(0,1fr)}
  .m-cta{flex-direction:column;align-items:flex-start}
  .m-cta .btn{margin-left:0}
}
/* 顶部「国家」「城市」下拉 */
.nav-dd{position:relative;display:inline-flex}
.main-nav .nav-city{display:inline-flex;align-items:center;gap:6px}
.main-nav .nav-city .caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;margin-top:2px}
.dd-panel{position:absolute;top:100%;left:-12px;margin-top:10px;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-md);z-index:1100;min-width:180px;padding:10px 14px;display:flex;flex-direction:column}
.dd-panel[hidden]{display:none}
/* 按钮和面板中间那点空隙也算在面板里，鼠标从按钮移下来不会先关掉再打开 */
.dd-panel::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.main-nav .dd-panel a{padding:5px 0;border:0;font-size:15px;font-weight:400;color:var(--text)}
.main-nav .dd-panel a:hover{color:var(--red-deep)}
.main-nav .dd-panel a.dd-cur{color:var(--red-deep);font-weight:700}
.main-nav .dd-panel a.dd-all{margin-top:6px;padding-top:8px;border-top:1px solid var(--line);color:var(--muted);font-size:14px}
/* 国家下拉：一个洲一行，洲名加框放行首，跟城市浮层一个样子（业主 2026-09-28） */
#dd-country{width:620px;max-height:70vh;overflow:auto}
.dd-cities{width:620px;max-height:60vh;overflow:auto}
/* 一个州一行：州名（浅底色、蓝字、不可点）后面直接接这个州的城市，排不下再折行 */
.dd-state{display:flex;flex-wrap:wrap;align-items:center;gap:2px 14px;padding:7px 0;border-bottom:1px dotted var(--line)}
.dd-state:last-of-type{border-bottom:0}
.dd-state.is-cur{background:var(--red-soft);margin:0 -14px;padding:7px 14px}
/* 州名只是个标签，不可点：屏掉鼠标事件，鼠标移上去没任何反应（不出文本光标、选不中、不变色） */
.main-nav .dd-panel a.dd-st-name{flex:0 0 auto;font-size:13px;font-weight:700;color:var(--ink-2);background:var(--soft);border:1px solid var(--line);border-radius:var(--r-sm);padding:2px 8px;text-decoration:none}
.main-nav .dd-panel a.dd-st-name:hover{color:var(--red-deep);border-color:var(--red);background:#fff}
.dd-state.is-cur .dd-st-name{background:#fff}
/* 浮层里的子城、孙城（跟在父城后面）字号小一点，一眼看出谁挂在谁下面 */
.main-nav .dd-panel a.dd-sub{font-size:14px;color:var(--muted)}
/* 选分类（业主 2026-09-19）：一排四格 —— 主分类 | 副分类 | 更细的类型（占两格，打勾多选）；后加的副分类对齐在第二格 */
/* 主分类、副分类两格短一点（业主 2026-09-29：四个字而已），细类那格占剩下的 */
.catp-head,.catp-row,.catp-more{display:grid;grid-template-columns:170px 250px minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:start}
.catp-c2 > select{max-width:180px}
.catp-head{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:6px}
.catp-head em{font-style:normal;font-weight:400;color:var(--muted)}
.catp-head .catp-h3{grid-column:3/span 2}
.catp-rows{display:flex;flex-direction:column;gap:10px}
.catp-c3{grid-column:3/span 2;display:flex;flex-wrap:wrap;gap:0 16px;align-items:center;min-height:48px}
.field .catp-c3 .check{font-size:15px;padding:2px 0}
.catp-more{margin:10px 0 0}
.catp-more[hidden]{display:none}
.catp-more .btn{grid-column:2;justify-self:start}
/* 副分类下拉右边的【删除】（2026-09-29） */
.catp-c2:has(.catp-del){display:flex;gap:8px;align-items:center}
.catp-c2 .catp-del{flex:0 0 auto;min-height:44px}
.catp-c2:has(.catp-del) select{flex:1 1 auto;min-width:0}
/* 选分类上面的搜索框（2026-09-27） */
.catp-search{position:relative;margin-bottom:10px}.catp-search[hidden]{display:none}.catp-search input{width:100%}.catp-res{position:absolute;left:0;right:0;top:100%;z-index:30;background:#fff;border:1px solid var(--line,#e5e7eb);border-radius:10px;margin:4px 0 0;padding:4px;list-style:none;box-shadow:0 8px 22px rgba(15,23,42,.12);max-height:320px;overflow:auto}.catp-res[hidden]{display:none}.catp-res button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:6px;font:inherit;cursor:pointer;color:inherit}.catp-res button:hover,.catp-res button.on{background:rgba(0,0,0,.05)}.catp-res .catp-none{padding:8px 10px;color:var(--muted,#64748b)}
.catp .hint{margin-top:8px}
@media (max-width:767px){
  .catp-head{display:none}
  .catp-row,.catp-more{grid-template-columns:minmax(0,1fr)}
  .catp-c1:empty{display:none}
  .catp-c3{grid-column:auto;min-height:0}
  .catp-row + .catp-row{padding-top:10px;border-top:1px dashed var(--line)}
  .catp-more .btn{grid-column:auto}
  .catp-c2 > select{max-width:none}
}
/* 搜索框：关键词 + 地方下拉（最多两个，见 hbSearchForm）+ 【找商家】。下拉那一格按下拉个数给宽度 */
.hb-search{display:grid;grid-template-columns:minmax(180px,1fr) minmax(320px,1.4fr) auto;gap:8px;align-items:center}
.hb-search.hb-search-1{grid-template-columns:minmax(180px,1fr) minmax(170px,.6fr) auto}
.hb-search.hb-search-0{grid-template-columns:minmax(180px,1fr) auto}
/* 关键词框、下拉、【找商家】三样写死同一个高度（--hs-h），业主 2026-10-03：真手机上下拉被压扁、按钮偏高。
   手机浏览器（尤其 iPhone）用自己的样子画下拉框，不理会 min-height；按钮在窄格子里又会折成两行。
   所以下拉不用浏览器的样子（appearance:none，小箭头自己画），按钮不许折行，三样都用 height */
.hb-search{--hs-h:46px}
.hb-search input[type=search]{height:var(--hs-h);box-sizing:border-box;border:1px solid #9aa7b4;border-radius:var(--r-sm);padding:0 14px;font:inherit;font-size:16px;background:#fff;width:100%;-webkit-appearance:none;appearance:none}
.hb-search input[type=search]:focus{border-color:var(--focus)}
.hb-where{display:flex;gap:8px;min-width:0}
.hb-where select{flex:1 1 0;min-width:0;height:var(--hs-h);box-sizing:border-box;border:1px solid #9aa7b4;border-radius:var(--r-sm);padding:0 26px 0 10px;font:inherit;font-size:16px;line-height:1.2;color:var(--ink);
  -webkit-appearance:none;appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1.5 1.5 6 6l4.5-4.5' fill='none' stroke='%23334155' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 9px center/11px 8px;text-overflow:ellipsis}
.hb-search .btn{height:var(--hs-h);min-height:0;box-sizing:border-box;white-space:nowrap}
/* 手机（业主 2026-10-03）：关键词占一整行；下面一行是下拉和【找商家】，按钮在右边，三样只占一行 */
@media (max-width:767px){
  .hb-search,.hb-search.hb-search-1{grid-template-columns:minmax(0,1fr) auto}
  .hb-search input[type=search]{grid-column:1 / -1}
  .hb-where{gap:6px}
  .hb-search{--hs-h:44px}
  .hb-where select{padding:0 20px 0 6px;font-size:15px;background-position:right 6px center}
  .hb-search .btn{padding-left:12px;padding-right:12px}
  .hb-search-1 .btn .icon,.hb-search-2 .btn .icon{display:none}   /* 一行里挤三样，按钮上的放大镜让给下拉的宽度 */
  .hb-search.hb-search-0 .btn{grid-column:1 / -1}
}
/* 州省 / 城市 / 区域按钮（业主 2026-10-03）：国家、州省、城市三种主城统一成一行按钮，脚本带着慢慢往左滚，也可以用手左右划；
   右边【显示全部】点了排成多行、全部露出来，再点【收起】回到一行。脚本为了首尾接上会把按钮复制一份（chip-clone），展开时藏掉 */
.chip-wrap{display:flex;align-items:flex-start;gap:12px;position:relative}
.chip-wrap > ul{flex:1;min-width:0;margin:0;padding:0;list-style:none;display:flex;flex-wrap:nowrap;gap:10px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.chip-wrap > ul::-webkit-scrollbar{display:none}
.chip-wrap > ul > li{flex:none}
.chip-wrap.is-open > ul{flex-wrap:wrap;overflow:visible;padding-right:54px}
.chip-wrap.is-open .chip-clone{display:none}
/* 小字加小箭头（业主 2026-10-03）。颜色跟地区名字一样用橙色：当天先改成过灰色（那时行业按钮是橙字、怕撞色），后来行业按钮改回黑字、地区名字改成橙字，这里跟着地区名字走。
   箭头跟着 aria-expanded 变：收着朝下、展开朝上 */
/* 【展开】【收起】半透明浮在这一行的右端，不另占一格宽度（业主 2026-10-03，跟广告位右下角「去竞价」同一个做法）；地区名从它底下滚过去 */
.chip-more{position:absolute;right:0;top:0;z-index:2;border:0;background:linear-gradient(to right,rgba(255,255,255,0),rgba(255,255,255,.88) 16px);color:var(--red-deep);font:inherit;font-size:14px;font-weight:400;cursor:pointer;line-height:52px;padding:0 2px 0 20px;text-decoration:none;white-space:nowrap}
.chip-more::after{content:" ▾"}
.chip-more[aria-expanded="true"]::after{content:" ▴"}
.chip-more:hover{text-decoration:underline}
.big-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.big-chips a{display:inline-flex;align-items:baseline;gap:6px;min-height:52px;padding:12px 20px;white-space:nowrap;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;color:var(--ink);text-decoration:none;font-size:17px;font-weight:600}
.big-chips a span{font-size:13px;font-weight:400;color:var(--muted)}
.big-chips a:hover{border-color:var(--red);color:var(--red-deep)}
/* 格子宽度不定死，各自按内容撑开（「加州」窄、「华盛顿州」宽），一排能塞几个就塞几个，
   剩下的零头再平分给这一排，右边不留空档（业主 2026-09-21 两次要求）。
   flex-basis 用 auto = 以内容宽度为准；flex-grow 1 = 分掉零头。
   高度写死一行的高度，容器 max-height 取同一个值 —— 不然下一排会从底下露出一条边
   （业主发现「格子最下面那根线看不到了」就是被容器裁掉的）。 */
.city-cards{display:flex;flex-wrap:wrap;gap:12px;list-style:none;margin:0;padding:0}
.city-cards > li{flex:1 1 auto;min-width:0;display:flex;height:var(--city-card-h)}
.city-card2{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:3px;border:1px solid var(--line);border-radius:var(--r-md);padding:10px 14px;text-decoration:none;color:var(--text);background:#fff;overflow:hidden}
.city-card2:hover{border-color:var(--red)}
.city-card2 b{font-size:19px;line-height:1.3;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.city-card2 > span{font-size:13px;line-height:1.4;color:var(--muted);white-space:nowrap}
.city-card2 em{font-style:normal;font-size:14px;line-height:1.4;color:var(--red-deep);white-space:nowrap}
@media (max-width:767px){
  .chip-wrap{gap:8px}
  .chip-wrap > ul{gap:8px}
  .big-chips a{min-height:44px;padding:9px 14px;font-size:16px}
  .chip-more{line-height:44px}
  .city-card2{min-width:0;flex:1 1 100%}
}
/* ===== 手机页眉三个按钮（业主 2026-10-03）=====
   手机上 logo 和右边按钮之间放 国家、城市、商家 三个按钮（就是电脑顶部导航里的那三项，别的项在手机上不显示，底部栏和菜单里有）。
   国家、城市点开还是原来的下拉面板，手机上面板贴着页眉、左右撑满。英文页不显示（英文 logo 更宽、三个词更长，放不下）。
   原来中间没这么宽（360 宽的手机只有 79px），所以手机上把页眉收紧了：logo 小一号、间距小一点、菜单按钮窄一点；
   350px 以下的手机菜单按钮只留三条杠（读屏照样念「菜单」）。字号、间距跟着屏幕宽度缩（vw），小三角 385px 以上才显示 */
.nav-lbl-m{display:none}
@media (max-width:767px){
  html:not([lang="en"]) .site-header .header-row{gap:6px}
  html:not([lang="en"]) .site-header .brand{gap:6px}
  html:not([lang="en"]) .site-header .brand-mark{width:36px;height:36px;font-size:20px}
  html:not([lang="en"]) .site-header .brand-name{font-size:17px}
  /* logo 下面那行「全球华商互联平台」在手机上也要显示（业主 2026-10-03：不能少字，可以缩小）：字号跟着屏幕宽度缩，
     「唐人里」三个字跟着它的宽度拉开，跟电脑上一个样子 */
  html:not([lang="en"]) .site-header .brand-sub{font-size:clamp(8px,2.3vw,11px)}
  html:not([lang="en"]) .site-header .header-tools{gap:2px;margin-left:0}
  html:not([lang="en"]) .site-header .lang-switch{padding:8px 4px}
  html:not([lang="en"]) .site-header .nav-toggle{gap:5px;padding:0 8px;font-size:15px}
  html:not([lang="en"]) .main-nav{display:flex;flex:1 1 0;min-width:0;justify-content:center;margin-left:8px;gap:clamp(6px,2.4vw,14px)}
  html:not([lang="en"]) .main-nav > a:not([data-nav="categories"]){display:none}
  html:not([lang="en"]) .main-nav a{font-size:clamp(13px,3.9vw,16px)}
  html:not([lang="en"]) .main-nav .nav-country,html:not([lang="en"]) .main-nav .nav-city{gap:3px;font-weight:400;color:var(--text)}
  .main-nav .nav-lbl{display:none}
  .main-nav .nav-lbl-m{display:inline}
  .main-nav .caret{display:none}
  /* 下拉面板：贴着页眉、左右撑满，高度不超过页眉和底部栏之间 */
  .main-nav .nav-dd{position:static}
  .main-nav .dd-panel,.main-nav #dd-country,.main-nav .dd-cities{position:fixed;left:8px;right:8px;top:calc(var(--header-h) + 4px);margin-top:0;width:auto;min-width:0;
    max-height:calc(100vh - var(--header-h) - 84px);overflow:auto}
}
@media (max-width:767px) and (min-width:385px){.main-nav .caret{display:block}}
@media (max-width:350px){
  html:not([lang="en"]) .nav-toggle-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  html:not([lang="en"]) .site-header .nav-toggle{padding:0 12px}
}
/* 行业频道块轮播：一组 4 个大类轮流显示，鼠标停上去暂停 */
.chan-rot{position:relative;overflow:hidden;overflow:clip}
.chan-track{display:flex;align-items:stretch}
.chan-track.is-moving{transition:transform .55s cubic-bezier(.4,0,.2,1)}
/* 轮播框按最高的那一块定高，内容少的大类（休闲娱乐只有两个商家）白框下面会空出一截（业主 2026-09-25 截图）：
   每一块白框都撑满，空的地方留在框里面 */
.chan-slide{flex:0 0 100%;min-width:0;display:flex;flex-direction:column}
/* 白框自己的下边距在轮播框里面不会跟外面的合并，加上下面小格那一排的上边距，小格上面空了 28px、下面只有 10px
   （业主 2026-10-03 截图：四分之一格上面像多了一个空行）。下边距挪到轮播框上；紧跟着的小格一排上下都是 10px */
.chan-slide > .chan{flex:1 1 auto;margin-bottom:0}
.chan-rot{margin-bottom:14px}
.chan-rot + .ad-row{margin-top:-4px}
@media (prefers-reduced-motion:reduce){.chan-track.is-moving{transition:none}}

/* ---- 商家中心「广告」分栏 + 广告预览（2026-09-21） ---- */
.ad-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.ad-card{border:1px solid var(--line);border-radius:var(--r-md);padding:16px;background:#fff}
/* 用户中心「我的广告位」每个格子用橙色外框，格子之间分得清（业主 2026-09-27） */
.ad-cards .ad-card{border:2px solid var(--red)}
/* 投放中的格子：浅橙底 + 右上角「投放中」标签（业主 2026-09-27） */
.ad-cards .ad-card.is-live{position:relative;background:var(--red-soft);border-color:var(--red-deep)}
.ad-cards .ad-card.is-contest{position:relative}
/* 竞价中的圆形印章：斜着盖在格子右上方，半透明，不挡字（业主 2026-09-27） */
/* 放大一倍（业主 2026-09-28：太小了） */
.ad-card-stamp{position:absolute;top:44px;right:14px;width:156px;height:156px;border:6px double #c2410c;border-radius:50%;color:#c2410c;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:24px;font-weight:700;line-height:1.25;transform:rotate(-16deg);opacity:.82;pointer-events:none;background:rgba(255,255,255,.35)}
.ad-card-stamp b{font-size:30px;letter-spacing:2px}
.ad-card-bid-title{margin:14px 0 6px;font-size:16px;color:var(--red-deep)}
/* 广告格子里不同内容之间划虚线（业主 2026-09-28）：中文版图 / 英文版图 / 跳转网址 / 预览按钮 / 广告竞价 / 购买 / 从列表里去掉 */
.ad-cards .ad-card-form>.field+.field,.ad-cards .ad-card-form>.ad-card-btns,.ad-cards .ad-card-bid-title,.ad-cards .ad-card-form+.ad-card-buy,.ad-cards .ad-card-drop{border-top:1px dashed rgba(180,83,9,.35);padding-top:12px;margin-top:12px}
.ad-bid-line{margin:4px 0;font-size:15px}
/* 广告图片：上传框缩小，右边是「从已传过的图里选」下拉框（业主 2026-09-28）；窄了就各占一行 */
.img-pick{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.img-pick input[type=file]{flex:1 1 150px;min-width:0;max-width:100%}
.img-pick select{flex:1 1 150px;min-width:0;max-width:100%}
/* 竞价中的格子：每隔几秒轻轻抖一下，和没竞价的分开（业主 2026-09-27）；开了「减少动态效果」的不抖 */
/* 底色换成深一档的橙、边框深橙，有警告的意思（业主 2026-09-27：先试微红不好看，改深橙）；放在 is-live 后面，自己在投又有人抢时也显示这个颜色 */
.ad-cards .ad-card.is-contest{background:#fde0c2;border-color:#c2410c;animation:hb-contest-shake 3.2s ease-in-out infinite;box-shadow:0 0 0 3px rgba(194,65,12,.25)}
.ad-cards .ad-card.is-contest .ad-card-stamp{border-color:#c2410c;color:#c2410c}
@keyframes hb-contest-shake{0%,82%,100%{transform:translateX(0)}85%{transform:translateX(-4px) rotate(-.4deg)}88%{transform:translateX(4px) rotate(.4deg)}91%{transform:translateX(-3px)}94%{transform:translateX(3px)}97%{transform:translateX(-1px)}}
@media (prefers-reduced-motion:reduce){.ad-cards .ad-card.is-contest{animation:none}}
.ad-card-live{position:absolute;top:12px;right:12px;background:var(--red-deep);color:#fff;font-size:13px;font-weight:700;line-height:1;padding:6px 10px;border-radius:999px}
.ad-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:10px}
.ad-card-head h3{margin:0;font-size:16px}
.ad-card-kind{font-size:12px;color:var(--muted);background:var(--soft);border-radius:var(--r-sm);padding:2px 8px;white-space:nowrap}
.ad-card-meta{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 12px;padding:10px 0;border-top:1px dotted var(--line);border-bottom:1px dotted var(--line)}
.ad-card-meta div{display:flex;gap:6px;align-items:baseline}
.ad-card-meta dt{font-size:13px;color:var(--muted);margin:0}
.ad-card-meta dd{margin:0;font-size:14px}
.ad-card-price{color:var(--red-deep);font-weight:700;font-size:16px}
.ad-free{color:#137333;font-weight:700}
.ad-busy{color:var(--muted)}
.ad-card-thumb{display:block;margin-top:8px;max-width:100%;border:1px solid var(--line);border-radius:var(--r-sm)}
.ad-card-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.ad-card-buy{margin-top:12px;padding-top:12px;border-top:1px dotted var(--line)}
.ad-card-drop{margin-top:10px;text-align:right}
.ad-card .linkish{background:none;border:0;padding:0;color:var(--muted);font:inherit;font-size:13px;cursor:pointer;text-decoration:underline}
.ad-card .linkish:hover{color:var(--red-deep)}

/* 预览示意图跟真实页面一样宽、各格真实尺寸（业主 2026-09-30：不要缩放，要看到等比效果）：不加外框内边距，宽度 = 页面内容区 */
.ad-prev-page{margin:0}
.ad-prev-bar,.ad-prev-body,.ad-prev-chan-main,.ad-prev-chan-side{background:#eceff3;border-radius:var(--r-sm);color:var(--muted);font-size:13px;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px;margin-bottom:8px;min-height:40px}
.ad-prev-body{min-height:64px}
.ad-prev-chan{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:8px;margin-bottom:8px;align-items:stretch}
.ad-prev-chan-main{min-height:120px;margin:0}
.ad-prev-chan-side{margin:0}
/* 频道块三格：左推荐位 ｜ 中间列表 ｜ 右推荐位（业主 2026-09-27） */
.ad-prev-chan3{grid-template-columns:260px minmax(0,1fr) 260px;gap:16px}   /* 跟 .chan-body 一样：左右推荐位 260 */
.ad-prev-row{display:grid;gap:10px;margin-bottom:10px}   /* 跟 .ad-row 一样 10px */
.ad-prev-row.is-feat4{grid-template-columns:repeat(auto-fill,260px);justify-content:space-between;row-gap:16px}   /* 跟 .feats-4 一样 */
.ad-prev-row.is-feat2{grid-template-columns:repeat(2,260px);gap:16px}   /* 跟搜索页 .search-feat-row 一样 */
@media (max-width:640px){.ad-prev-row.is-feat4{grid-template-columns:repeat(2,minmax(0,1fr))}.ad-prev-row.is-feat2{grid-template-columns:minmax(0,1fr)}}
.ad-prev-row.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ad-prev-row.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ad-prev-slot{border:1px dashed var(--line);border-radius:var(--r-sm);background:repeating-linear-gradient(45deg,#f6f7f9,#f6f7f9 6px,#eef0f3 6px,#eef0f3 12px);display:flex;align-items:center;justify-content:center;overflow:hidden}
.ad-prev-slot span{font-size:12px;color:var(--muted)}
.ad-prev-slot.is-mine{border:2px solid var(--red);background:#fff;box-shadow:0 0 0 3px rgba(200,16,46,.12)}
.ad-prev-slot img{width:100%;height:100%;object-fit:fill;display:block;background:#fff}   /* 预览跟前台一样拉伸铺满 */
.ad-prev-back{margin-top:20px;text-align:center}
/* 红框里跟前台一样动（业主 2026-09-30）：套前台的 .ad-live / .feat-sold，撑满红框 */
.ad-prev-slot .ad-prev-live{width:100%;height:100%;min-height:0;border:0;border-radius:0;margin:0}
.ad-prev-slot .ad-prev-live .feat-img{height:100%;max-width:none;aspect-ratio:auto;border:0;border-radius:0}
/* 搜索页示意图里「推荐 · 行业」那个框：推荐位左边并排两个，跟真实页面一样 */
.ad-prev-box{border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;padding:8px;margin-bottom:8px}
.ad-prev-box-head{font-size:12px;color:var(--muted);margin-bottom:6px}
.ad-prev-box .ad-prev-row{margin-bottom:0}
@media (max-width:720px){
  .ad-prev-chan{grid-template-columns:minmax(0,1fr)}
  .ad-prev-row.is-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* 预览示意图里「就是这一块」的高亮（推荐位没有固定像素尺寸，整块标红） */
.ad-prev-body.is-mine,.ad-prev-chan-main.is-mine{border:2px solid var(--red);background:#fff;color:var(--ink);font-weight:700;box-shadow:0 0 0 3px rgba(200,16,46,.12)}
.ad-prev-feat{margin-bottom:20px}
.ad-prev-feat-box{display:grid;grid-template-columns:minmax(0,260px);gap:12px;margin-top:8px}
.ad-card-head{display:block}
.ad-card-no{margin:2px 0 0;font-size:13px;color:var(--muted)}

/* 推荐位招租牌：跟广告位招租牌一个样式，字写在正中间（业主 2026-09-21） */
.feat-empty .feat-img{flex-direction:column;justify-content:center;align-items:center;gap:4px;
  border:2px dashed #c9d3de;border-radius:var(--r-sm);
  background:repeating-linear-gradient(45deg,#fafbfd,#fafbfd 10px,#f3f6f9 10px,#f3f6f9 20px);
  color:var(--muted);padding:8px 8px 20px;text-align:center}
.feat-empty:hover .feat-img{border-color:var(--red)}
.feat-empty .ad-main{font-size:16px}
.feat-big.feat-empty .ad-main{font-size:18px}
.feat-empty .ad-sub{line-height:1.4}
/* 四格小卡片只有 92px 高：编号在框内右下角，底部要多留一行，字也小一点，不然编号压在文字上（业主 2026-09-21） */
.feat.feat-empty .feat-img{padding:4px 6px 15px;gap:2px}
.feat.feat-empty .ad-main{font-size:14px;line-height:1.25}
.feat.feat-empty .ad-sub{font-size:12px;line-height:1.25}
/* 空位要跟旁边真的推荐位一样高：虚线框吃掉多出来的高度，下面三行是样例文字，
   位置和真卡片的店名 / 行业·城市 / 电话完全对应（业主 2026-09-21） */
.feat-empty{height:100%}
.feat-empty .feat-img{flex:1 1 auto;height:auto;min-height:92px}
/* 大图招租牌固定 195 高（业主 2026-09-25：170 时旁边列表 4 条比它高 25 像素，下面空一截；实测列表 273、推荐位 248），跟卖出去之后的真推荐位一样（原来跟着旁边列表的长短伸缩，
   同一页上有的大类高、有的矮，业主 2026-09-25 截图） */
.feat-big.feat-empty .feat-img{flex:0 0 auto;height:auto;min-height:0}
.feat-ph{font-size:13px;color:#b3bcc7}
b.feat-ph{font-size:15px;color:#9aa7b4;font-weight:700}

/* 招租牌右下角那串 10 位编号（业主 2026-09-21）：点一下整串选中并复制。
   只在空位上显示，卖出去的位子不放，免得盖住人家的广告。 */
/* 编号放左下角（业主 2026-09-25）；右下角留给卖出后的「$x/月，去竞价」 */
.slot-id{position:absolute;left:6px;bottom:4px;font-size:11px;line-height:1;color:#aab4c0;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.5px;
  user-select:all;-webkit-user-select:all;cursor:text;padding:2px 4px;border-radius:3px}
.slot-id:hover{color:var(--red-deep);background:#fff}
.slot-id.is-copied{color:#fff;background:var(--red)}
.feat-empty{position:relative}

/* 广告位动起来（业主 2026-09-21）。样式配合 site.js 末尾那一段：
   多个广告位的一行由脚本包进 .ad-track，整条轨道向左平移一格；单个广告位一道高光扫过；
   手机排成两排时整行淡出再淡入。不开 JavaScript 就是原来的静止版式。 */
.ad-row.ad-rot{display:block;overflow:hidden}
.ad-track{display:flex;gap:10px}
.ad-track>.ad{flex:0 0 calc((100% - (var(--n) - 1) * 10px) / var(--n))}
/* 手机上半栏、小格一排只露一张、占满整行，几张轮流向左滑着换（业主 2026-10-03）；脚本在窄屏上加 ad-one */
.ad-one .ad-track>.ad{flex:0 0 100%}
.ad-track.is-moving{transition:transform .8s cubic-bezier(.4,0,.2,1)}
.ad-rot .ad:focus-visible{outline-offset:-3px}
.ad-fade{transition:opacity .28s ease}
.ad-fade.is-fading{opacity:0}
/* 高光线（业主 2026-09-21）：一道从垂直方向向右倾斜 30 度的直线光条从左划到右，划过时闪两下，整块牌子同时微闪。
   原来画的是闪电，业主担心有人联想到「天打雷劈」、寓意不好，改成直线，颜色不变。
   直线是内嵌 SVG（用 clip-path 会把外发光一起裁掉）；招租牌底色很浅，靠外发光才看得清，图片广告用同一套。
   颜色：白色内芯 + 蓝色 1px 外框（先画蓝色粗线再叠白色细线，任何拉伸下外框都是 1px）。
   倾斜角度：改 ::after 里 skewX(-30deg) 的 30；负号 = 上端偏右。
   换颜色：改 --bolt-img 里的 stroke（蓝色外框 %231f7bff、白色内芯 %23ffffff）、--bolt-glow（外发光）、--flash（整块微闪）。 */
@keyframes ad-bolt{0%{left:-25%;opacity:0}6%{opacity:1}22%{opacity:.15}30%{opacity:1}62%{opacity:1}70%{opacity:.35}76%{opacity:1}100%{left:108%;opacity:0}}
@keyframes ad-flash{0%,100%{opacity:0}10%{opacity:1}24%{opacity:0}34%{opacity:.85}50%{opacity:0}}
.ad,.feat-img{--bolt-img:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2012%20100'%20preserveAspectRatio='none'%3E%3Cg%20fill='none'%20stroke-linecap='butt'%3E%3Cpath%20d='M6%2C0%20L6%2C100'%20stroke='%231f7bff'%20stroke-width='7'%20vector-effect='non-scaling-stroke'/%3E%3Cpath%20d='M6%2C0%20L6%2C100'%20stroke='%23ffffff'%20stroke-width='5'%20vector-effect='non-scaling-stroke'/%3E%3C/g%3E%3C/svg%3E");--bolt-glow:rgba(31,123,255,.95);--flash:rgba(90,170,255,.18)}
.ad.is-shine::before,.feat-img.is-shine::before{content:"";position:absolute;inset:0;pointer-events:none;background:var(--flash);animation:ad-flash .95s linear both}
.ad.is-shine::after,.feat-img.is-shine::after{content:"";position:absolute;top:-4%;bottom:-4%;left:-25%;width:12px;pointer-events:none;background:var(--bolt-img) center/100% 100% no-repeat;transform:skewX(-30deg);filter:drop-shadow(0 0 3px var(--bolt-glow)) drop-shadow(0 0 8px var(--bolt-glow));animation:ad-bolt .95s ease-in-out both}
.ad-live.is-shine{--flash:rgba(255,255,255,.3)}
/* 右下角暂停/继续广告滚动的小按钮；手机上要让开底部导航（64px 高） */
.ad-pause{position:fixed;right:16px;bottom:16px;z-index:900;width:34px;height:34px;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;background:rgba(255,255,255,.92);color:var(--ink-2);box-shadow:0 2px 8px rgba(15,39,66,.14);cursor:pointer;opacity:.72}
.ad-pause:hover,.ad-pause:focus-visible{opacity:1}
.ad-pause svg{fill:currentColor}
@media (max-width:767px){.ad-pause{bottom:76px;right:12px}}
/* 商家资料页：电话右边的小提示（业主 2026-09-21）；窄屏放不下会自己换到下一行 */
.phone-note{margin-left:10px;color:var(--muted)}
/* 账号页（照点评助手 site.css 的 .close-acct / .close-num / .btn-danger）：
   注销是全站唯一一个点下去不能撤销的操作，视觉上必须和「改个名字」不一样。
   提示里的数字用蓝字：红底的一段话里，人最该看清的是「我放弃的到底是多少」。 */
.btn-danger{background:#b91c1c;color:#fff;border-color:#b91c1c}
.btn-danger:hover{background:#991b1b;border-color:#991b1b;color:#fff}
.close-acct{margin-top:22px;padding:16px 18px;border:1px solid var(--line);border-left:4px solid #b91c1c;border-radius:10px;background:#fff7f7}
.close-acct h3{margin:0 0 10px;font-size:1.05rem;color:#b91c1c}
.close-acct p{margin:0 0 10px;line-height:1.7}
.close-num{color:#1d4ed8;font-weight:800;font-variant-numeric:tabular-nums}
.inline-edit{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;padding:12px 0;border-bottom:1px solid var(--line)}
/* 账号页（业主 2026-10-04 改成照点评助手账号页的排法）：不要分隔线，字段名靠左、颜色淡一点，字都不加粗（值、用户名、按钮都是，业主同日要求），
   【更换】【修改】紧跟在值后面，一行一项、行距收紧；「如有解决不了的问题」那句在按钮行上面。
   原来是两列对齐带分隔线（2026-09-21、09-24 定的），在手机上又高又散 */
.info-list.acct-info{display:block;margin-bottom:0;border-top:none}
.panel .info-list.acct-info>div{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;min-height:0;padding:6px 0;border-bottom:none}
.acct-info dt{text-align:left;font-weight:400;color:var(--muted)}
.acct-info dd{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;overflow-wrap:anywhere;font-weight:400;color:var(--ink)}
.acct-info dd strong,.acct-info .btn,.acct-actions .btn{font-weight:400}
.acct-info dt label{margin:0;font:inherit;color:inherit}
.acct-info #acName{width:240px;max-width:100%}
.acct-help{margin:8px 0 0}
.btn-row.acct-actions{padding:12px 0 0;border-bottom:none}
.inline-edit label{margin:0}
.inline-edit input{flex:1;min-width:180px}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
/* 小列表（最新入驻 / 最近更新 / 服务全美的商家）的一格是一个隐形格子（业主 2026-09-21）：
   四周不画框，但整块都是链接，点店名、点下面那行「分类 · 城市」、点空白处都能跳转。
   格子上下的留白算在链接里（padding 在 a 上），所以点格子里任何地方都有效。 */
.mini-list li.hit,.chan-list li.hit,.l2-card li.hit{display:block;padding:0}
li.hit>a{display:flex;flex-direction:column;padding:6px 8px;margin:0 -8px;border-radius:var(--r-sm);color:var(--text);text-decoration:none;min-width:0;white-space:normal;overflow:visible;outline:1px dashed var(--line);outline-offset:-2px}
li.hit>a b{font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
li.hit>a span{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
li.hit>a:hover,li.hit>a:focus-visible{text-decoration:none;outline:2px dashed var(--red);outline-offset:-2px}
li.hit>a:hover b{color:var(--red-deep)}
/* 我的帖子：每条帖子下面的三个数字（曝光 / 查看 / 沟通） */
.post-list .biz-meta{gap:4px 16px}
.post-stats{display:flex;flex-wrap:wrap;gap:6px 18px;margin:8px 0 0;font-size:14px;color:var(--muted)}
.post-stats b{color:var(--ink);font-variant-numeric:tabular-nums}
.post-new{margin:12px 0 4px}
/* 我的帖子：发帖按钮一行一个 + 介绍，下面橙色分隔线（跟「我的广告位和推荐位」标题下那条一样，业主 2026-09-30） */
.post-new-list p{display:flex;align-items:center;gap:14px;margin:0 0 10px}
.post-new-list .btn{flex:0 0 auto;min-width:112px;justify-content:center;text-align:center}
.post-new-list span{color:var(--text);font-size:15px}
.post-new-line{border:0;border-top:2px solid var(--red);margin:14px 0 12px}


/* 招聘求职、房产租售（业主 2026-09-21）：发布表单版式照华人168——每步一条浅色标题栏，字段是「左边标签、右边输入」，
   按钮组式单选 / 多选，金额 + 电议，数字加减，右边跟着滚动的分步导航；配色和圆角用本站自己的。 */
.pf-main{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:0 24px 24px;box-shadow:var(--sh-sm)}
.pf-type-row{display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:14px 20px;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-sm)}
.pf-type-label{font-weight:600;color:var(--ink);flex:0 0 auto}
.pf-type-options{display:flex;flex-wrap:wrap;gap:8px 18px;flex:1 1 auto}
.pf-type-choice{display:inline-flex;align-items:center;gap:7px;min-height:34px;cursor:pointer;color:var(--ink);font-size:15px;line-height:1.4}
.pf-type-choice input{width:16px;height:16px;margin:0;accent-color:var(--red)}
.pf-type-choice span{display:inline-block}
.pf-type-choice input:checked + span{font-weight:700;color:var(--red-deep)}
.pf-type-choice:focus-within span{outline:3px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}
.pf-step{padding-bottom:8px}
.pf-bar{display:flex;align-items:center;gap:10px;margin:0 -24px 20px;padding:12px 24px;background:#eaf1f8;border-bottom:1px solid var(--line);font-size:20px;line-height:1.3}
.pf-step:first-child .pf-bar{border-radius:var(--r-md) var(--r-md) 0 0}
.pf-bar span{color:var(--ink);font-weight:700;font-size:19px}
.pf-fold{margin-left:auto;border:1px solid #b7c3cf;background:#fff;border-radius:var(--r-sm);padding:5px 10px;color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
.pf-step.is-folded [data-fold-body]{display:none}
.pf-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 16px;align-items:start;margin:0 0 18px}
.pf-l{padding-top:9px;text-align:right;color:var(--ink);font-size:16px;font-weight:600;line-height:1.4}
.pf-l .req{color:var(--red-deep);font-style:normal;margin-right:4px}
.pf-c{min-width:0;position:relative}
.pf-in{width:100%;min-height:44px;padding:8px 12px;border:1px solid #b7c3cf;border-radius:var(--r-sm);background:#fff;font:inherit;font-size:16px;color:var(--text)}
.pf-in:focus{border-color:var(--focus)}
.pf-area{min-height:150px;resize:vertical;line-height:1.6}
.pf-editor{border:1px solid #b7c3cf;border-radius:var(--r-sm);background:#fff;overflow:hidden}
.pf-edbar{display:flex;flex-wrap:wrap;gap:6px;padding:8px;background:var(--soft);border-bottom:1px solid var(--line)}
.pf-edbar button{min-height:34px;border:1px solid #b7c3cf;border-radius:var(--r-sm);background:#fff;color:var(--ink);font:inherit;font-size:14px;cursor:pointer;padding:4px 10px}
.pf-edbar button:hover{border-color:var(--ink-2)}
/* 发帖编辑框（业主 2026-09-29）：高度固定、超出出滚动条（打开和插图后脚本滚到最下面），不再被内容无限拉高 */
.pf-edbody{min-height:190px;max-height:420px;overflow-y:auto;padding:12px;line-height:1.65;outline:none;background:#f7f9fb}
.pf-edbody:empty::before{content:attr(data-placeholder);color:var(--muted)}
/* 编辑框里的图只是缩略图（帖子页面照常大图）：最大 280 见方；跟文字同一行、底部对齐，
   在图片右边点哪里光标都在图片右下角，回车接着写字（原来 display:block 占满一行，光标跑到图片右上方） */
.pf-edbody img{display:inline-block;vertical-align:bottom;width:auto;height:auto;max-width:min(100%,280px);max-height:280px;margin:6px 0;border-radius:6px}
.coop-body img{display:block;width:auto;max-width:min(100%,680px);height:auto;margin:12px 0;border-radius:6px}
.pf-edbody p{margin:0 0 10px}
.coop-body p{margin:0 0 12px}
.pf-count{display:block;text-align:right;margin-top:2px;font-size:13px;color:var(--muted)}
.pf-count b{font-weight:400}
.pf-notice{margin:6px 0 0;padding:8px 12px;background:var(--warn-soft);border-radius:var(--r-sm);color:var(--warn);font-size:14px;line-height:1.55}
.pf-hint{display:block;margin:6px 0 0;font-size:13px;color:var(--muted)}
/* 跟 .pf-row 的右列（标签 150px + 间距 16px）对齐，业主 2026-09-21 要求跟「这段时间里」提示文字对齐 */
.pf-legal{margin:8px 0 0;padding-left:166px;font-size:13px;color:var(--muted)}
.pf-sub-rows{margin-top:0}
.pf-num{width:120px}
.pf-date{width:auto;min-width:180px}
.pf-dateparts{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--ink)}
.pf-dateparts .pf-in{width:76px;text-align:center}
.pf-dateparts .pf-in:first-child{width:92px}
.pf-time{width:130px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{position:relative;display:inline-block;cursor:pointer}
.chip input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.chip span{display:inline-block;padding:7px 16px;border:1px solid #b7c3cf;border-radius:var(--r-sm);background:#fff;font-size:15px;line-height:1.4;color:var(--ink-2);transition:background .12s,border-color .12s}
.chip:hover span{border-color:var(--ink-2)}
.chip input:checked + span{background:var(--ink-2);border-color:var(--ink-2);color:#fff}
.chip input:focus-visible + span{outline:3px solid var(--focus);outline-offset:2px}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tile{position:relative;cursor:pointer}
.tile input{position:absolute;opacity:0;width:1px;height:1px}
.tile span{display:block;padding:12px 8px;text-align:center;border:1px solid #b7c3cf;border-radius:var(--r-sm);background:var(--soft);font-size:15px;color:var(--ink-2)}
.tile input:checked + span{border-color:var(--red);background:var(--red-soft);color:var(--red-deep);font-weight:600}
.tile input:focus-visible + span{outline:3px solid var(--focus);outline-offset:2px}
.pf-money{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* $ 在输入框内部左边，跟数字之间一条竖虚线（业主 2026-09-21，原来是框外面单独一个符号） */
.pf-amtwrap{display:flex;align-items:stretch;min-height:44px;border:1px solid #b7c3cf;border-radius:var(--r-sm);background:#fff}
.pf-amtwrap:focus-within{border-color:var(--focus)}
.pf-cur{display:flex;align-items:center;padding:0 10px;font-size:17px;color:var(--ink);border-right:1px dashed var(--line)}
.pf-amt{width:110px;border:0;background:transparent;padding:0 10px;font:inherit;font-size:16px;color:var(--text)}
.pf-amt:focus{outline:none}
.pf-unit{width:auto;min-width:96px}
.pf-per{color:var(--muted);font-size:15px}
.pf-money.is-nego .pf-amtwrap{background:var(--soft)}
.pf-money.is-nego .pf-cur,.pf-money.is-nego .pf-amt{color:var(--muted)}
.stepper{display:inline-flex;align-items:center;border:1px solid #b7c3cf;border-radius:var(--r-sm);overflow:hidden}
.stepper .pf-in{width:76px;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);border-radius:0;text-align:center;-moz-appearance:textfield}
.stepper .pf-in::-webkit-outer-spin-button,.stepper .pf-in::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.step-btn{width:44px;height:44px;border:0;background:var(--soft);font-size:22px;line-height:1;color:var(--ink);cursor:pointer}
.step-btn:hover{background:#e3eaf1}
/* 发帖表单的地区：国家、州省、城市三个下拉永远排在同一行（业主 2026-10-03）。原来按一行四个排（以前有第四个「区域」下拉，09-25 去掉了），
   手机上又按一行两个排，第三个会掉到下一行 */
.pf-region{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.quiet{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.pf-photos input[type=file]{width:100%;padding:10px;border:1px dashed #8fa3b6;border-radius:var(--r-sm);background:var(--soft);font-size:15px}
.pf-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.pf-thumbs img{width:84px;height:64px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.pf-thumbs img:first-child{outline:2px solid var(--red);outline-offset:1px}
.rooms{display:grid;gap:16px}
.room{padding:16px;border:1px solid var(--line);border-radius:var(--r-md);background:#fbfcfe}
.room-head{display:flex;justify-content:space-between;align-items:center;margin:0 0 12px;color:var(--ink);font-size:17px}
.room .pf-row{margin-bottom:12px}
.room .pf-l{text-align:left;padding-top:0;font-size:15px}
.linklike{border:0;background:none;padding:4px 0;color:var(--red-deep);font:inherit;font-size:14px;text-decoration:underline;cursor:pointer}
.room-add{justify-self:start}
.pf .form-save{margin:20px 0 0;text-align:right}

/* 列表：整块可点，悬停显示红色虚线框（跟广告位一个效果） */
.pl-filter{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.pl-filter .pf-in{width:auto;min-width:150px;flex:0 1 200px}
.pl-filter .pl-search{flex:1 1 260px;min-width:240px}
/* 招聘、房屋页筛选条，手机窄屏改两行两列（业主 2026-10-01）：第一行搜索框+职位/类型，第二行州省+城市，
   不要再像桌面那样一项一行堆四行。表单里固定就是这 4 个控件、顺序固定，grid 两列自动一行放两个刚好对上。 */
@media (max-width:640px){
    .pl-filter{display:grid;grid-template-columns:1fr 1fr}
    .pl-filter .pf-in,.pl-filter .pl-search{width:100%;min-width:0;flex:none}
}
.pl-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px}
.pl-item{border-bottom:1px solid var(--line)}
.pl-link{display:flex;gap:14px;align-items:flex-start;padding:12px 8px;color:inherit;text-decoration:none;border:1px solid transparent}
.pl-link:hover,.pl-link:focus-visible{outline:1px dashed var(--red);outline-offset:-1px;color:inherit}
.pl-thumb{width:120px;height:90px;object-fit:cover;border-radius:6px;flex:0 0 auto}
.pl-body{display:grid;gap:2px;min-width:0}
.pl-title{font-size:18px;line-height:1.4;color:var(--ink)}
.pl-pin{font-size:13px;vertical-align:2px}
.pl-pin-bracket{color:var(--red-deep);font-weight:700;white-space:nowrap}
.pl-sum{color:var(--red-deep);font-size:15px}
.pl-meta{color:var(--muted);font-size:14px}
/* 资讯列表一行一篇、不带摘要（业主 2026-10-04 晚，照论坛帖子列表的排法；社区的帖子列表以后也用这一套）：
   电脑上标题在左、日期在右；手机上标题最多两行，日期在下面一行小字 */
.nl-row{display:flex !important;align-items:baseline;justify-content:space-between;gap:4px 20px}
.nl-title{flex:1 1 auto;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-width:0}
.nl-when{flex:0 0 auto;color:var(--muted);font-size:14px;white-space:nowrap}
/* 社区（论坛，业主 2026-10-04）。版面照业主给的参考：顶上一排版块、右边「发帖」，下面一行「版主」，再下面一行一帖、不带摘要；
   电脑上右边三栏是回复、阅读、最新回复，手机上这三样收成标题下面的小字。都用最普通的写法（不靠行数截断、浮动） */
.ft-bar{display:flex;align-items:flex-start;gap:10px}
.ft-boards{flex:1 1 auto;margin:0;display:flex;flex-wrap:wrap;gap:4px 16px}
.ft-boards a{font-size:17px;font-weight:600;color:var(--red-deep);text-decoration:none;line-height:1.7}
.ft-boards a:hover{text-decoration:underline}
.ft-boards a.on{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
.ft-new{flex:0 0 auto}
.ft-mod{margin:4px 0 8px;padding-bottom:8px;border-bottom:2px solid var(--red);font-size:14px;color:var(--muted)}
.ft-mod b{color:var(--ink);font-weight:600}
.ft-head,.ft-link{display:grid;grid-template-columns:minmax(0,1fr) 70px 70px 170px;gap:0 12px;align-items:center}
.ft-head{padding:6px 8px;font-size:14px;color:var(--muted);border-bottom:1px solid var(--line)}
.ft-head span:nth-child(2),.ft-head span:nth-child(3),.ft-n{text-align:center}
.ft-list{list-style:none;margin:0;padding:0}
.ft-item{border-bottom:1px solid var(--line)}
.ft-link{padding:10px 8px;color:inherit;text-decoration:none}
.ft-link:hover{background:var(--soft)}
.ft-main{min-width:0;display:block}
.ft-title{display:block;font-size:17px;line-height:1.45;color:var(--ink);overflow-wrap:anywhere}
.ft-board,.ft-pin{display:inline-block;margin-right:8px;padding:0 7px;border:1px solid var(--line);border-radius:var(--r-pill);font-size:13px;font-weight:400;line-height:20px;color:var(--muted);vertical-align:2px}
.ft-pin{border-color:var(--red-deep);color:var(--red-deep)}
.ft-meta{display:block;font-size:13px;line-height:1.6;color:var(--muted)}
.ft-m{display:none}
.ft-n{font-size:15px;color:var(--ink-2)}
.ft-last{font-size:13px;line-height:1.5;color:var(--muted)}
.fr-title{margin:6px 0 10px;font-size:22px;line-height:1.4}
.fr{display:grid;grid-template-columns:190px minmax(0,1fr);gap:0 18px;padding:14px 0;border-top:1px solid var(--line)}
.fc{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.fc-av{flex:0 0 auto;width:48px;height:48px;border-radius:50%;object-fit:cover;background:var(--red-soft)}
.fc-av-t{display:inline-flex;align-items:center;justify-content:center;font-size:22px;font-weight:600;color:var(--red-deep)}
.fc-t{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:13px;line-height:1.55;color:var(--muted)}
.fc-name{font-size:15px;color:var(--ink)}
.fc-store{color:var(--red-deep);font-weight:600;font-size:14px}
.fc-bio{overflow-wrap:anywhere}
.fr-main{min-width:0}
.fr-when{margin:0 0 6px;font-size:13px;color:var(--muted)}
.fr-tag{margin-right:8px;color:var(--red-deep)}
.fr-body{font-size:16px;line-height:1.8;overflow-wrap:anywhere}
.fr-form{padding-top:12px;border-top:1px solid var(--line)}
.fr-form textarea,.fr-new textarea,.fr-new input[type="text"]{display:block;width:100%;box-sizing:border-box;border:1px solid #9aa7b4;border-radius:var(--r-sm);padding:10px 12px;font:inherit;font-size:16px;background:#fff}
.fr-new label{display:block;margin:0 0 4px;font-size:15px;color:var(--ink-2)}
.fr-send{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin:10px 0 0}
.fr-send .muted{font-size:13px}
.acct-bio{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;padding:6px 0}
.acct-bio label{margin:0;color:var(--muted)}
.acct-bio input{flex:1 1 220px;min-width:0;max-width:420px;min-height:38px;padding:4px 10px;border:1px solid #9aa7b4;border-radius:var(--r-sm);font:inherit;font-size:16px}
.acct-bio .btn{font-weight:400}
@media (max-width:767px){
  .ft-boards{gap:2px 12px}
  .ft-boards a{font-size:15px}
  .ft-head{display:none}
  .ft-link{display:block;padding:8px 4px}
  .ft-n,.ft-last{display:none}
  .ft-m{display:block}
  .ft-title{font-size:16px}
  .fr-title{font-size:19px}
  .fr{display:block;padding:10px 0}
  .fc{flex-direction:row;align-items:center;gap:10px;margin-bottom:8px}
  .fc-av{width:40px;height:40px}
  .fc-av-t{font-size:18px}
}
/* 便民（业主 2026-10-04）。商家一行一家：店名（下面一行小字是城市）在左，电话在右，点电话直接拨号；便民首页是一格一项 */
.life-item{display:flex;align-items:center;gap:10px}
.life-item > .pl-link{flex:1 1 auto;min-width:0}
.life-tel{flex:0 0 auto;padding:6px 12px;border:1px solid var(--red-deep);border-radius:var(--r-pill);color:var(--red-deep);font-size:15px;white-space:nowrap;text-decoration:none}
.life-tel:hover{background:var(--red-soft)}
.life-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.life-grid a{display:block;height:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:inherit;background:#fff}
.life-grid a:hover{border-color:var(--red-deep)}
.life-grid b{display:block;font-size:17px;color:var(--ink)}
.life-grid span{display:block;margin-top:4px;font-size:14px;line-height:1.5;color:var(--muted)}
@media (max-width:767px){.life-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.life-grid a{padding:10px}.life-grid span{display:none}.life-tel{padding:5px 9px;font-size:14px}}
@media (max-width:767px){.nl-row{flex-direction:column;align-items:stretch}.nl-when{font-size:13px}}
.box-head .post-new{margin-left:auto;display:inline-flex;gap:8px}
/* 手机上招聘 / 房屋 / 找合作列表顶上「最新信息」那一行太高（业主 2026-10-03）：【免费发布】按钮所在的小块带着 12px 上边距，
   按钮又有 40px 高，把这一行撑到五十多像素；筛选条上下各 14px。手机上按钮改小、边距去掉，筛选条上下收到 5px */
@media (max-width:767px){
  .box-head{align-items:center}
  .box-head .post-new{margin:0 0 0 auto}
  .box-head .post-new .btn{min-height:30px;padding:0 10px;font-size:14px}
  .pl-filter{margin:5px 0;gap:5px}
}

/* 详情 */
.pd-photos{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.detail-back{display:flex;justify-content:flex-end;margin:-2px 0 10px}
.post-detail-head{margin:0 0 16px;padding-bottom:0}
.post-detail-head h1{margin:0;font-size:30px;line-height:1.28;letter-spacing:0;color:var(--ink)}
.pd-photos img{width:200px;height:150px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.room-card{margin:0 0 16px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-md)}
.room-card h2{font-size:20px;margin:0 0 6px}
.pd-contact{margin:20px 0 0;padding:16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--soft)}
.pd-contact h2{font-size:20px;margin:0 0 8px}
.pd-contact ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.pd-safety{line-height:1.8}
.post-complaint-open{margin-left:4px;font-weight:600}
.hb-dialog{width:min(560px,calc(100vw - 32px));padding:0;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-lg);background:#fff;color:var(--text)}
.hb-dialog::backdrop{background:rgba(15,39,66,.38)}
.post-complaint-form{padding:22px}
.post-complaint-form h2{margin:0 0 8px;font-size:22px}
.post-cat-links{display:flex;flex-wrap:wrap;gap:8px 14px;margin-right:auto;font-size:18px;line-height:1.35}
.post-cat-links a{color:var(--red-deep);text-decoration:underline;text-underline-offset:3px;font-weight:400}
.post-form-head{margin-bottom:14px}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
@media (max-width:767px){.post-detail-head h1{font-size:24px;line-height:1.35}}

@media (max-width:860px){
  .pf-main{padding:0 14px 18px}
  .pf-type-row{align-items:flex-start;flex-direction:column}
  .pf-type-options{width:100%;gap:8px 14px}
  .pf-bar{margin:0 -14px 16px;padding:10px 14px}
  .pf-row{grid-template-columns:minmax(0,1fr);gap:4px}
  .pf-l{text-align:left;padding-top:0}
  .pf-legal{padding-left:0}
  .pf-region{gap:5px}
  .pf-region .pf-in{padding:8px 4px;font-size:15px}
  .tiles{grid-template-columns:minmax(0,1fr)}
  .pl-thumb{width:96px;height:72px}
  .pd-photos img{width:calc(50% - 4px);height:auto;aspect-ratio:4/3}
}

/* 积分充值（业主 2026-09-22，抄点评助手商家中心同一块，配色换成本站的 --red） */
.credit-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px;--credit-h:48px}
.credit-bar{flex:0 0 auto;min-height:var(--credit-h);box-sizing:border-box;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:var(--red-soft);border:1px solid var(--line);border-radius:12px;padding:0 20px}
/* 余额框只包住数字那么宽（业主 2026-09-24：「哪怕充 10000 才多长」），手机上也不撑满整行，
   【充值】按钮紧挨在右边同一行。原来 min-width:230px、手机 width:100%，按钮被挤到下一行。 */
.mr-box > .credit-row{margin-bottom:18px}
/* 用户中心上下两块（我的广告位 / 我的订单）之间留出空，原来虚线框和下一个标题贴在一起 */
.mr-box + .mr-box{margin-top:32px}
/* 用户中心「我的订单」（业主 2026-09-24）：原来这张表一条样式都没有，手机上五列挤成一个字一行。
   电脑上是普通表格；手机上一单一张卡片，广告位名称当标题，其余每项一行，付款按钮占满一行。 */
.mr-table{width:100%;border-collapse:collapse;font-size:15px}
.mr-table th,.mr-table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.mr-table th{font-size:14px;font-weight:600;color:var(--muted);white-space:nowrap}
.mr-table td[data-label]{white-space:nowrap}
.mr-table .mt-act{text-align:right}
.mr-table .mt-act .btn{min-height:40px;padding:0 16px;font-size:15px}
@media (max-width:640px){
  .mr-table thead{display:none}
  .mr-table,.mr-table tbody,.mr-table tr,.mr-table td{display:block;width:100%}
  .mr-table tr{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 12px;background:#fff}
  .mr-table td{border:0;padding:4px 0}
  .mr-table .mt-name{font-weight:700;color:var(--ink);padding-bottom:8px}
  .mr-table td[data-label]{display:flex;justify-content:space-between;gap:12px}
  .mr-table td[data-label]::before{content:attr(data-label);color:var(--muted)}
  .mr-table .mt-act{text-align:left;padding-top:10px}
  .mr-table .mt-act:empty{display:none}
  .mr-table .mt-act .btn{width:100%}
}
.credit-num{display:flex;align-items:baseline;gap:10px}
/* 余额旁边的【充值】按钮和余额框吃同一个 --credit-h，两边一样高、竖向居中（抄点评助手） */
.credit-topup{flex:0 0 auto;margin:0;min-height:var(--credit-h);padding-top:0;padding-bottom:0}
.credit-label{font-size:.9rem;color:var(--ink-2);font-weight:700}
.credit-num strong{font-size:1.6rem;color:var(--red-deep);line-height:1}
/* 冻结中的积分（业主 2026-09-25）：跟余额放在同一个框里，中间一道竖线，数字用深灰，不跟余额抢眼 */
.credit-num.is-held{padding-left:14px;border-left:1px solid var(--line)}
.credit-num.is-held strong{color:var(--ink-2)}
.credit-note{color:var(--muted);font-size:.84rem;line-height:1.7;margin:0 0 18px}
.credit-panel .credit-bar{margin-bottom:12px}
.credit-panel .credit-note{margin-bottom:0}
/* 中文界面在本页付款的那一块（业主 2026-09-24，抄点评助手 site.css 同名一段，--ink-3 换成本站的 --muted）。
   钱包按钮在上、卡号框在下。Apple Pay 按钮用苹果自己的样式画 —— 苹果对这个按钮的样子有规定。 */
.sqpay{margin:16px 0 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fff;max-width:520px}
.sqpay-h{margin:0 0 12px;font-weight:700}
.sqpay-wallets{display:flex;flex-direction:column;gap:10px}
.sqpay-wallets:empty{display:none}
.sq-apple{display:block;width:100%;height:48px;cursor:pointer;border-radius:8px;-webkit-appearance:-apple-pay-button;-apple-pay-button-type:plain;-apple-pay-button-style:black}
.sqpay-or{margin:14px 0 8px;text-align:center;color:var(--muted);font-size:.88rem}
#sqCard{min-height:90px}
.sqpay .tier-go{width:100%;margin-top:6px}
.sqpay-msg{margin:10px 0 0;font-size:.9rem;min-height:1.2em}
.sqpay-msg.bad{color:#b91c1c;font-weight:600}

.note-bar{margin:14px 0 0;padding-left:12px;border-left:3px solid var(--warn);font-size:.9rem;line-height:1.7}
.pay-badge{margin:18px 0 0}
.pay-badge img{width:100%;max-width:738px;height:auto;margin-left:auto;margin-right:auto}

.tier-list{display:flex;flex-direction:column;gap:8px;margin:14px 0}
.tier-row{display:flex;align-items:center;gap:12px;padding:12px 14px;
    border:1px solid var(--line);border-radius:12px;background:#fff;
    cursor:pointer;transition:border-color .15s,box-shadow .15s}
.tier-row:hover{border-color:var(--red)}
.tier-row input{flex:none;width:20px;height:20px;margin:0;accent-color:var(--red)}
.tier-amt{font-size:22px;font-weight:800;color:var(--red-deep);min-width:74px}
.tier-cr{font-size:14px;color:var(--muted)}
.tier-row.on,.tier-row:has(input:checked){border-color:var(--red);box-shadow:0 0 0 2px rgba(217,119,6,.18)}
.tier-go{width:100%;justify-content:center;margin-top:6px}
.tier-go:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}

.pay-wallet{display:inline-flex;align-items:center;gap:4px;padding:0 6px;border:1px solid var(--line);border-radius:5px;background:#fff;font-weight:700;color:#111;white-space:nowrap;line-height:1.6;vertical-align:baseline}
.pay-wallet img{width:14px;height:14px;display:block}

/* 智能在线客服（业主 2026-09-25）：右下角按钮 + 对话框。广告动画暂停按钮挪到它上面，不挡着 */
/* 照片在上、按钮在下，一竖列中线对齐（业主 2026-09-25）；整组离右边 44px，照片不压着右边的广告暂停按钮 */
.chat{position:fixed;right:44px;bottom:16px;z-index:950;display:flex;flex-direction:column;align-items:center;gap:6px}
.chat-open{display:flex;align-items:center;gap:8px;height:48px;padding:0 18px;border:0;border-radius:24px;background:var(--red);color:#fff;font-size:16px;font-weight:700;box-shadow:0 6px 20px rgba(15,39,66,.25);cursor:pointer}
.chat-open .icon{width:22px;height:22px}
.chat-avatar{display:block;flex:0 0 auto;border-radius:50%;object-fit:cover;background:#fff;border:2px solid #fff}
.chat-face{display:block;width:96px;height:96px;border-radius:16px;border:3px solid #fff;object-fit:cover;background:#fff;box-shadow:0 6px 18px rgba(15,39,66,.25);cursor:pointer}
.chat.is-open .chat-face{display:none}
.chat-title{display:flex;align-items:center;gap:8px}
.chat-head .chat-avatar{width:32px;height:32px}
.chat.is-open .chat-open{display:none}
.chat-panel{position:absolute;right:-28px;bottom:0;width:380px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 110px);display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 40px rgba(15,39,66,.28);overflow:hidden}
.chat-panel[hidden]{display:none}
.chat-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--red);color:#fff;font-size:16px}
.chat-close{border:0;background:transparent;color:#fff;font-size:26px;line-height:1;cursor:pointer;padding:0 4px}
.chat-log{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;background:#f6f8fb}
.chat-msg{max-width:88%;padding:8px 12px;border-radius:12px;font-size:15px;line-height:1.6;word-wrap:break-word}
.chat-msg.bot{align-self:flex-start;background:#fff;border:1px solid var(--line)}
.chat-msg.me{align-self:flex-end;background:var(--red);color:#fff;white-space:pre-wrap}
.chat-msg.wait{color:var(--muted)}
.chat-msg .chat-link{color:var(--red-deep);font-weight:600}
.chat-handoff{display:inline-flex;margin-top:8px}
.chat-who,.chat-quick{display:flex;flex-wrap:wrap;gap:6px}
.chat-who[hidden],.chat-quick[hidden]{display:none}
.chat-who button,.chat-quick button{border:1px solid var(--red);background:#fff;color:var(--red-deep);border-radius:16px;padding:5px 12px;font-size:14px;cursor:pointer;text-align:left}
.chat-who button:hover,.chat-quick button:hover{background:var(--red-soft)}
.chat-quick .chat-topic{font-weight:600}
.chat-quick .chat-back{border-color:var(--line);color:var(--muted)}
.chat-form{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line)}
.chat-form textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;font-size:15px}
.chat-form .btn{align-self:stretch}
.chat-note{margin:0;padding:6px 12px 10px;font-size:12px;color:var(--muted);line-height:1.5}
.ad-pause{bottom:76px}
@media (max-width:767px){
  /* 手机上在线客服收成贴右边缘的一条竖条，「在线客服」四个字竖排，放在屏幕中间偏下（业主 2026-10-04：原来头像加横按钮太挡地方）。
     头像不显示；广告动效的暂停小按钮手机上也不显示（系统设了「减少动态效果」照样不动）。点竖条照旧打开对话框。电脑上不变 */
  .chat{right:0;top:58%;bottom:auto;gap:0}
  .chat-open{-webkit-writing-mode:vertical-rl;writing-mode:vertical-rl;height:auto;width:26px;padding:10px 0;gap:0;justify-content:center;border-radius:10px 0 0 10px;font-size:14px;font-weight:600;letter-spacing:3px;line-height:26px;box-shadow:-2px 3px 10px rgba(15,39,66,.2)}
  .chat-open .icon{display:none}
  .chat-face{display:none}
  .chat-panel{position:fixed;right:8px;left:8px;bottom:72px;width:auto;max-width:none;height:auto;top:72px;max-height:none}
  .ad-pause{display:none}
}

/* 频道块空推荐位换成多一列列表（业主 2026-09-25 二改）：两边都换 = 四列等宽；只换一边 = 那一边三列列表 + 另一边推荐位。
   窄屏把多出来的那一列（.chan-extra）藏起来，回到原来的列数 */
.chan-body.chan-4list{grid-template-columns:repeat(4,minmax(0,1fr))}
.chan-body.chan-leftlist{grid-template-columns:repeat(3,minmax(0,1fr)) 260px}
.chan-body.chan-rightlist{grid-template-columns:260px repeat(3,minmax(0,1fr))}
@media (max-width:1199px){
  .chan-extra{display:none}
  .chan-body.chan-4list,.chan-body.chan-leftlist{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .chan-body.chan-rightlist{grid-template-columns:220px minmax(0,1fr) minmax(0,1fr)}
}
@media (max-width:1023px){.chan-body.chan-rightlist{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:767px){.chan-body.chan-4list,.chan-body.chan-leftlist,.chan-body.chan-rightlist{grid-template-columns:minmax(0,1fr)}}
.footer-logo{margin-bottom:8px}
.footer-logo .brand-name{color:#fff}
.footer-logo .brand-sub{display:block;color:rgba(255,255,255,.75)}

/* 招聘列表里的 Careerjet 特招：标题一行右边「点击申请」；占位格转圈 */
.cj-item .cj-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
.cj-item .cj-apply{flex:0 0 auto;color:var(--red-deep);font-weight:700;font-size:14px;white-space:nowrap}
.cj-item .cj-desc{display:block;white-space:normal;line-height:1.6}
.cj-slot{display:flex;align-items:flex-start;justify-content:center;gap:10px;padding:24px 8px;border-bottom:1px solid var(--line)}
.cj-spin{width:20px;height:20px;border:3px solid var(--line);border-top-color:var(--red);border-radius:50%;animation:cj-spin .8s linear infinite}
@keyframes cj-spin{to{transform:rotate(360deg)}}

/* 招聘列表：薪资红字粗体打头，简介黑字普通（业主 2026-09-26，照华人168） */
.pl-sum.job-sum{color:var(--ink);font-weight:400}
.pl-sum.job-sum .pl-pay{color:var(--red-deep);font-weight:700;margin-right:10px}

/* 招聘列表：灰字行左边地区、右边日期（右对齐） */
.pl-meta.pl-meta-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.pl-meta-row .pl-date{flex:0 0 auto;white-space:nowrap}
.pl-link > .pl-body{flex:1 1 0;grid-template-columns:minmax(0,1fr)}

/* 老板专区的卡片标题：层级是 h2，样子和首页卡片的 h3 一样（业主 2026-09-26 改版） */
h2.h3{font-size:24px;line-height:1.25;margin:0 0 12px}

/* 首页「最新动态」（业主 2026-09-26）：一行一条，超过 5 条在框里慢慢往上滚，鼠标放上去停 */
.feed-win{position:relative;overflow:hidden;height:calc(3 * 38px)}   /* 只露 3 行（业主 2026-09-27） */
.feed-win:not(.feed-roll){height:auto}
.feed-list{list-style:none;margin:0;padding:0}
.feed-list li{display:flex;align-items:center;gap:10px;height:38px;border-bottom:1px dashed var(--line);font-size:15px;white-space:nowrap;overflow:hidden}
.feed-list a{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.feed-tag{flex:0 0 auto;font-size:12px;line-height:1;padding:4px 7px;border-radius:4px;background:var(--red-soft, #fde8e6);color:var(--red-deep)}
.feed-place,.feed-ago{flex:0 0 auto;font-size:13px;color:var(--muted)}
.feed-roll .feed-list{animation:feed-up calc(var(--feed-n) * 3s) linear infinite}
.feed-roll:hover .feed-list,.feed-roll:focus-within .feed-list{animation-play-state:paused}
@keyframes feed-up{from{transform:translateY(0)}to{transform:translateY(-100%)}}
@media (prefers-reduced-motion:reduce){.feed-roll{overflow-y:auto}.feed-roll .feed-list{animation:none}.feed-roll .feed-list[aria-hidden]{display:none}}
@media (max-width:767px){.feed-place{display:none}.feed-list li{font-size:14px;gap:8px}}
