/* Opt-in visual finish for the core public journeys.
   Keep experience.css accessibility-only and preserve page-owned layouts. */
.visual-polish {
  --surface: #fff; --surface-soft: #f7f9fc;
  --radius-control: 10px; --radius-panel: 18px;
  --shadow: 0 1px 3px rgba(16,44,80,.025), 0 6px 22px rgba(16,44,80,.045);
  --shadow-raised: 0 3px 8px rgba(16,44,80,.04), 0 12px 28px rgba(16,44,80,.08);
  font-size: 1rem; line-height: 1.65;
}
.visual-polish ::selection { background: #cfe5fb; color: #102c50; }
.visual-polish button, .visual-polish a { -webkit-tap-highlight-color: #1767b51f; }
/* Tap targets, listed one control at a time on purpose.
   A blanket `button { min-height: 44px }` also hits the buttons that already
   carry their own width/height: it stretched the 图文精选 carousel dots
   (6x6) and arrows (30x30), the bookmark star, the modal close, the search
   clear and the shop favourite/map buttons into 44px-tall slivers, and it
   pushed the chip buttons out of line with the <a> chips sitting next to
   them. Only full-size action buttons belong here. */
.visual-polish :where(.btn, .search-btn, .pg-lnk, .hd-btn, .ai-search-btn,
  .side-search-btn, .sub-btn, .mob-cat-btn, .btn-submit, .btn-next,
  .btn-ghost, .btn-modal-submit, .apply-btn, .nr-clear-btn, .ref-copy-btn,
  .empty-act) { min-height: 44px; }
.visual-polish .input, .visual-polish .textarea, .visual-polish .select { font-size: 1rem; }
.visual-polish .label, .visual-polish .hint { font-size: .875rem; }
/* .chip is used on both <button> and <a> in the same pill rows. The UA font
   shorthand resets line-height on buttons only, so the two rows on /shops
   sat 3px apart; match the line-height the anchors inherit. */
.visual-polish button.chip { line-height: 1.65; }
.visual-polish .site-nav { --navy: #102c50; }
.site-nav { background: rgba(16,44,80,.97); border-bottom: 1px solid #ffffff1f; box-shadow: 0 4px 18px rgba(16,44,80,.1); }
.site-nav-inner { height: auto; min-height: 64px; gap: 8px; }
.site-nav-links a { min-height: 44px; font-size: .875rem; border-radius: 8px; }
.site-nav .site-nav-links a { color: #dce8f4; font-weight: 500; }
.site-nav .site-nav-links a:hover { background: #ffffff14; color: #fff; }
.site-nav .site-nav-links a.active { background: #fff; color: var(--navy); font-weight: 700; box-shadow: 0 2px 5px #0000000d; }
.site-nav .lang-btn { border: 1px solid #ffffff38; border-radius: var(--radius-control); background: #ffffff0a; font-size: .875rem; }
.site-nav .nav-more > summary { border-radius: var(--radius-control); border-color: #ffffff38; font-size: .875rem; }
.site-nav-logo { letter-spacing: -.025em; }
.site-nav-logo img { border-radius: 8px; }
.site-nav-right { max-width: 100%; }
.site-nav-right > a { min-height: 44px; display: inline-flex; align-items: center; font-size: .875rem; }
.site-nav-right > a[href='/user/profile'] { max-width: 160px; overflow: hidden; text-overflow: ellipsis; }
.site-nav .lang-btn, .nav-more > summary { min-height: 44px; }
/* 发布按钮保持和手机端同一组橙黄渐变（.mob-pub-btn / .mob-nav a.pub-btn 用的
   就是这两个色值），圆角也回到 site-nav.css 的 20px 胶囊。
   这里原本改成了白底：在深色顶栏上是干净，但它是全站唯一的转化入口，
   白底让它和旁边的「登录 / 注册」分不出主次，桌面和手机也对不上。 */
.site-nav .btn-pub-nav { background: linear-gradient(135deg,#f57c00,#ff9800) !important; color: #fff !important; border: 1px solid transparent; box-shadow: 0 2px 10px rgba(245,124,0,.35); }
.site-nav .btn-pub-nav:hover { background: linear-gradient(135deg,#ef6c00,#fb8c00) !important; box-shadow: 0 3px 14px rgba(245,124,0,.45); }
.site-nav :focus-visible { outline-color: #b8dcff; }
.nav-more-menu { min-width: 190px; padding: 8px; border-color: var(--bd); border-radius: 14px; box-shadow: var(--shadow-raised); }
.nav-more-menu a { min-height: 44px; }
/* Shared control rhythm: filled actions, quiet secondary choices, clear focus. */
.input, .textarea, .select, .search-input {
  border-radius: var(--radius-control); border-color: #cedae7;
  background-color: var(--surface); color: var(--tx);
  transition: border-color .16s, box-shadow .16s;
}
.input:focus, .textarea:focus, .select:focus {
  border-color: var(--p); box-shadow: 0 0 0 3px #1767b51a;
}
.btn, .hd-btn, .plan-buy { border-radius: var(--radius-control); }
.btn.primary, .plan-buy { box-shadow: 0 2px 4px #104e8b12; }
.flash { border: 1px solid transparent; border-radius: 12px; padding: 14px 16px; font-size: .875rem; line-height: 1.7; }
.flash.info { border-color: #ccdef0; background: #eff6fd; }
.flash.ok { border-color: #bddfc9; background: #eff9f2; color: #23633b; }
.flash.err { border-color: #ebc7cc; background: #fff3f4; color: #9e303f; }
.breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: .8125rem; line-height: 1.8; }
.pager .pg-lnk { border: 1px solid var(--bd); border-radius: var(--radius-control); background: #fff; font-size: .875rem; }
.pager .pg-lnk:hover { border-color: var(--p); background: var(--pl); }
.pager .pg-lnk.active { background: var(--p); color: #fff; border-color: var(--p); }

/* Classified results and detail reading share the same information hierarchy. */
.listing-page .cat-header { padding: 20px 24px; border: 1px solid var(--bd); border-left: 4px solid var(--p); box-shadow: var(--shadow); }
.listing-page .fcard { border: 1px solid var(--bd); border-radius: 14px; box-shadow: none; }
.listing-page .filter-bar { box-shadow: none; }
.listing-page .filter-label { font-size: .875rem; padding-top: 9px; }
.listing-page .filter-btn { display: inline-flex; align-items: center; min-height: 40px; padding: 7px 12px; font-size: .875rem; border-radius: var(--radius-control); }
.listing-page .filter-btn.active { background: var(--pl); border-color: #accbea; color: var(--pd); font-weight: 700; }
.listing-page .post-row { padding: 20px; gap: 16px; border-bottom-color: #e9eef4; }
.listing-page .post-thumb { width: 96px; height: 88px; border-radius: 12px; background: #edf2f7; border-color: #e4ebf3; }
.listing-page .post-title { font-size: 1rem; font-weight: 650; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.6; }
.listing-page .post-meta { margin-top: 6px; color: var(--mu); }
.listing-page .post-price { font-size: 1.125rem; font-weight: 750; color: #a83c36; font-variant-numeric: tabular-nums; line-height: 1.5; }
.listing-page .post-price.negotiable { color: var(--mu); font-size: .875rem; }
.listing-page .post-time { color: var(--mu); margin-top: 5px; }
.listing-detail-page .detail-card { padding: 30px; border: 1px solid var(--bd); border-radius: var(--radius-panel); box-shadow: var(--shadow); }
.listing-detail-page .detail-title { font-size: clamp(1.4rem,2.5vw,1.9rem); line-height: 1.5; font-weight: 750; letter-spacing: -.02em; margin: 16px 0 20px; overflow-wrap: anywhere; }
.listing-detail-page .detail-content { font-size: 1rem; line-height: 1.95; overflow-wrap: anywhere; }
.listing-detail-page .contact-box { background: #f0f6fc; border: 1px solid #cddfed; border-radius: 14px; padding: 20px; color: var(--pd); font-size: .9375rem; }
.listing-detail-page .contact-box a, .listing-detail-page .contact-box button { min-height: 44px; border-radius: var(--radius-control); }

/* Service directories: images, names and actions align without a heavy frame. */
.shops-page .shop-card, .pros-page .grid > .card { border: 1px solid var(--bd); border-radius: var(--radius-panel); box-shadow: var(--shadow); transition: border-color .18s, box-shadow .18s; }
.shops-page .card-info { padding: 18px; }
.shops-page .card-name-link, .pros-page .card-name { font-size: 1.0625rem; line-height: 1.5; font-weight: 750; }
.shops-page .card-img-area { background: #edf2f7; border-radius: 17px 17px 0 0; overflow: hidden; }
.shops-page .cat-badge, .pros-page .cat-badge, .pros-page .card-cat { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 6px; background: var(--pl); color: var(--pd); font-size: .75rem; line-height: 1.65; }
.pros-page .card-headline { font-size: .875rem; line-height: 1.75; margin-top: 12px; }
.pros-page .card-meta { border-top-style: solid; border-color: #e9eef4; }
.pros-page .card-actions a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; border-radius: var(--radius-control); font-size: .875rem; }

/* Purchase and publishing remain quiet, readable working surfaces. */
.membership-page .plan-tabs { padding: 6px; background: #eaf0f7; border: 1px solid var(--bd); border-radius: 16px; gap: 6px; }
.membership-page .plan-tab { border-color: transparent; background: transparent; border-radius: 11px; min-height: 72px; }
.membership-page .plan-tab.on { background: #fff; border-color: #ccdcec; box-shadow: 0 2px 8px #102c500a; }
.membership-page .plan-tab.on .plan-tab-t { color: var(--pd); }
.membership-page .plan-tab.on .plan-tab-s { color: var(--mu); opacity: 1; }
.membership-page .plan-tab.on::after { color: var(--pd); }
.membership-page .plan-card { border-radius: var(--radius-panel); padding: 26px; }
.membership-page .plan-card.is-popular { border-color: #7faed8; box-shadow: 0 0 0 3px #1767b509, var(--shadow); }
.membership-page .plan-price { font-size: 2.125rem; font-weight: 750; font-variant-numeric: tabular-nums; letter-spacing: -.035em; }
.membership-page .plan-tag, .membership-page .plan-perks li { font-size: .875rem; line-height: 1.75; }
.membership-page .plan-flag { padding: 4px 14px; font-size: .75rem; font-weight: 600; letter-spacing: .02em; }
.publish-page .form-card { border: 1px solid var(--bd); border-radius: 20px; box-shadow: var(--shadow); }
.publish-page .section-card { border: 1px solid var(--bd); border-radius: 14px; box-shadow: none; }
.publish-page .btn-submit, .publish-page .btn-next { border-radius: var(--radius-control); background: var(--p); box-shadow: 0 3px 8px #104e8b14; }
.publish-page .btn-ghost { border-radius: var(--radius-control); }
@media (hover: hover) and (pointer: fine) {
  .shops-page .shop-card:hover, .pros-page .grid > .card:hover { border-color: #b6cde3; box-shadow: var(--shadow-raised); transform: none; }
}

/* Homepage: keep the existing hero image and composition, refine its details. */
.home-page .hero-btns a { border-radius: 12px; box-shadow: 0 3px 10px #102c5010; }
.home-page .hero-eyebrow span { box-shadow: 0 2px 8px #102c5008; }
.home-page .search-row { border: 1px solid #c6d9ec; box-shadow: 0 4px 16px #102c5012; }
.home-page .search-row:focus-within { outline: 3px solid #b6d8f9; outline-offset: 3px; }
.home-page .search-row input { font-size: 1rem; min-width: 0; }
.home-page .search-btn { border-radius: 10px; }
.home-page .sf-pill { min-height: 44px; border-radius: 10px; box-shadow: none; font-size: .875rem; }
.home-page .cat-card, .home-page .section-box, .home-page .lt-card { border-radius: var(--radius-panel); box-shadow: var(--shadow); }
.home-page .sec-hd { font-size: 1.125rem; line-height: 1.6; padding-bottom: 14px; }
.home-page .card-hd h2 { font-size: 1.0625rem; }
.home-page .sub-tags { max-height: none; gap: 6px; padding-bottom: 12px; }
.home-page .sub-tags a { font-size: .8125rem; border-radius: 7px; }
.home-page .p-item { padding-top: 11px; padding-bottom: 11px; font-size: .875rem; }
.home-page .lt-card-title { font-size: 1rem; line-height: 1.55; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.home-page .stats-strip { background: #f7fafe; border: 1px solid #d4e2f0; box-shadow: none; }
.home-page .stat-num { font-variant-numeric: tabular-nums; }
.home-page .stat-label { font-size: .875rem; }
.home-page .mob-cat-card { border: 1px solid #e0e8f1; box-shadow: var(--shadow); }
.home-page .mob-cat-btn { border-radius: 9px; box-shadow: none; }
@media (min-width: 900px) and (max-width: 1180px) {
  .site-nav-inner { flex-wrap: wrap; padding-top: 8px; padding-bottom: 8px; }
  .site-nav-links { order: 4; flex-basis: 100%; margin: 0; }
  .site-nav-logo { margin-right: auto; }
  .nav-more { margin-right: 0; }
}
@media (max-width: 599px) {
  .listing-page .post-row { padding: 16px 12px; gap: 10px; align-items: flex-start; }
  .listing-page .post-thumb { width: 68px; height: 76px; border-radius: 10px; }
  .listing-page .post-price { font-size: .9375rem; white-space: normal; overflow-wrap: anywhere; }
  .listing-page .post-right { max-width: 29%; }
  .listing-page .cat-header { padding: 18px; }
  .listing-detail-page .detail-card { padding: 20px 16px; border-radius: 14px; }
  .listing-detail-page .contact-box { padding: 16px; }
  .membership-page .plan-tabs { gap: 4px; }
  .membership-page .plan-tab { padding: 12px 6px; }
  .membership-page .plan-tab-t { font-size: .9375rem; line-height: 1.5; }
  .membership-page .plan-tab-s { font-size: .8125rem; line-height: 1.5; }
  .membership-page .plan-card { padding: 22px; }
  .publish-page .form-card { border-radius: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .visual-polish *, .visual-polish *::before, .visual-polish *::after { transition: none !important; }
}
