/* ============================================================
   cbge 四分类发现页 · 统一样式（fourcat.css）
   token 逐值出处 = build/lifecycle-packet-fourcat.md §8
   作用域: body.fc4-page 键控，零全局选择器泄漏（豁免站点家具另列）
   ============================================================ */

/* ---------- token ---------- */
body.fc4-page {
  --fc4-canvas: #F0EEE9;          /* Pantone 2026 Cloud Dancer */
  --fc4-surface: #FAF9F6;
  --fc4-surface-2: #FFFFFF;
  --fc4-surface-dark: #1B2027;    /* 游戏页 hero 局部深色 */
  --fc4-ink: #1F2429;
  --fc4-ink-muted: #4C555E;
  --fc4-ink-subtle: #75808A;
  --fc4-ink-tertiary: #A0A8B0;
  --fc4-line: #E4E0D8;
  --fc4-sp-0: 0px;  --fc4-sp-1: 4px;  --fc4-sp-2: 8px;  --fc4-sp-3: 12px;
  --fc4-sp-4: 16px; --fc4-sp-5: 24px; --fc4-sp-6: 32px; --fc4-sp-7: 40px;
  --fc4-sp-8: 48px; --fc4-sp-9: 64px;
  --fc4-sec-gap: 96px;
  --fc4-max: 1280px;
  --fc4-r-sm: 8px; --fc4-r-md: 12px; --fc4-r-lg: 16px; --fc4-r-pill: 999px;
  --fc4-sh-1: 0 1px 2px rgba(20,24,28,.06), 0 2px 4px rgba(20,24,28,.05);
  --fc4-sh-2: 0 4px 12px rgba(20,24,28,.08);
  --fc4-sh-3: 0 8px 24px rgba(20,24,28,.10);
  --fc4-t-fast: 120ms; --fc4-t-base: 220ms; --fc4-t-slow: 380ms; --fc4-t-enter: 560ms;
  --fc4-ease: cubic-bezier(0.16, 1, 0.3, 1);
  --fc4-stagger: 50ms;
  /* 四页 accent（低饱和中间调组） */
  --fc4-accent: #3D5A80;
  --fc4-accent-ink: #2C4360;
  --fc4-tint: rgba(90,120,160,.14);
  /* 柔彩组共用池 */
  --fc4-soft-1: #E8EEF4; --fc4-soft-2: #EDE8F4; --fc4-soft-3: #E8F4EC; --fc4-soft-4: #F4EFE4;
  --fc4-soft-5: #F4E8EA; --fc4-soft-6: #E4F0F2; --fc4-soft-7: #F0F0E4; --fc4-soft-8: #ECEAF4;
  /* 游戏深色区专属（从 hero 组件提取，规则体零裸 hex） */
  --fc4-g-ink-1: #F4F7FA; --fc4-g-ink-2: #D7E2EE; --fc4-g-ink-3: #C3CDD8; --fc4-g-ink-4: #B8C9DC;
  --fc4-g-chip: rgba(184,201,220,.16); --fc4-g-chip-2: rgba(184,201,220,.14);
  --fc4-g-dot: rgba(237,241,245,.30); --fc4-g-navbg: rgba(27,32,39,.45); --fc4-g-navbg-h: rgba(27,32,39,.75);
  --fc4-g-navline: rgba(237,241,245,.25); --fc4-g-btn-bg: #EDF1F5; --fc4-g-btn-ink: #1B2027; --fc4-g-shot: #232933;
  --fc4-hover-bg: #F3F1EC; --fc4-skel-a: #ECE9E2; --fc4-skel-b: #F6F4EF; --fc4-warn: #8A4B3A;
  --fc4-on-accent: #FFFFFF; --fc4-soft-5-ink: #7E423E; --fc4-soft-1-ink: #2C4360; --fc4-g-on-dark: #EDF1F5;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}
body.fc4-page.fc4-pc-games    { --fc4-accent:#3D5A80; --fc4-accent-ink:#2C4360; --fc4-tint:rgba(90,120,160,.14); }
body.fc4-page.fc4-pc-soft     { --fc4-accent:#2D6A6E; --fc4-accent-ink:#20504F; --fc4-tint:rgba(60,130,135,.13); }
body.fc4-page.fc4-mobile-apps { --fc4-accent:#A65D57; --fc4-accent-ink:#7E423E; --fc4-tint:rgba(190,115,105,.13); }
body.fc4-page.fc4-mac-soft    { --fc4-accent:#5E5A78; --fc4-accent-ink:#45415C; --fc4-tint:rgba(120,114,155,.13); }

/* ---------- 页面画布（body 级全宽，由 template_include 模板保证无 article 壳） ---------- */
body.fc4-page { background: var(--fc4-canvas); color: var(--fc4-ink); margin: 0; }
body.fc4-page .fc4-root { min-height: 60vh; overflow-x: clip; }
.fc4-wrap { max-width: var(--fc4-max); margin: 0 auto; padding: 0 var(--fc4-sp-5); }
@media (min-width: 1600px) { .fc4-wrap { padding: 0 var(--fc4-sp-9); } }

/* ---------- 通用文字 ---------- */
.fc4-root h1, .fc4-root h2, .fc4-root h3, .fc4-root h4 { margin: 0; font-weight: 700; line-height: 1.3; }
.fc4-root p { margin: 0; line-height: 1.65; }
.fc4-kicker { font-size: 13px; letter-spacing: .12em; color: var(--fc4-accent-ink); font-weight: 600; }
.fc4-h2 { font-size: 24px; color: var(--fc4-ink); }
.fc4-sub { font-size: 15px; color: var(--fc4-ink-subtle); }

/* ---------- 顶导航锚点条 ---------- */
.fc4-topnav { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 50; background: rgba(240,238,233,.92);
  backdrop-filter: blur(10px); border-bottom: 1px solid var(--fc4-line); }
.fc4-topnav-in { max-width: var(--fc4-max); margin: 0 auto; padding: var(--fc4-sp-2) var(--fc4-sp-5);
  display: flex; gap: var(--fc4-sp-2); align-items: center; overflow-x: auto; scrollbar-width: none; }
.fc4-topnav-in::-webkit-scrollbar { display: none; }
.fc4-topnav a { flex: none; display: inline-flex; align-items: center; min-height: 44px; font-size: 14px; color: var(--fc4-ink-muted); text-decoration: none;
  padding: var(--fc4-sp-1) var(--fc4-sp-3); border-radius: var(--fc4-r-pill); transition: color var(--fc4-t-fast) var(--fc4-ease), background-color var(--fc4-t-fast) var(--fc4-ease); }
.fc4-topnav a:hover { color: var(--fc4-accent-ink); background: var(--fc4-tint); }
.fc4-topnav a.is-cur { color: var(--fc4-accent-ink); background: var(--fc4-tint); font-weight: 600; }

/* ---------- hero 区 ---------- */
.fc4-hero { position: relative; }
/* 游戏: 深色沉浸全出血（r=0 全出血禁圆角，判据 ②） */
.fc4-hero--games { background: var(--fc4-surface-dark); color: var(--fc4-g-on-dark); overflow: hidden; }
.fc4-hero--games .fc4-hero-bg { position: absolute; inset: -8% -4%; background-size: cover; background-position: center;
  filter: blur(26px) saturate(.72) brightness(.5); transform: scale(1.1);
  animation: fc4Drift 14s linear infinite alternate; will-change: transform; }
.fc4-hero--games .fc4-hero-veil { position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(27,32,39,.35), rgba(27,32,39,.88)); }
.fc4-hero--games .fc4-wrap { position: relative; padding-top: var(--fc4-sp-8); padding-bottom: var(--fc4-sp-8); }
.fc4-hero--games .fc4-kicker { color: var(--fc4-g-ink-4); }
.fc4-hero--games .fc4-h2 { color: var(--fc4-g-ink-1); font-size: 32px; }
.fc4-hero--games .fc4-sub { color: var(--fc4-g-ink-3); max-width: 640px; }
/* 游戏 hero 舞台：左信息右大图 */
.fc4-hero-stage { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: var(--fc4-sp-6); align-items: center; }
.fc4-hero-shot { position: relative; border-radius: var(--fc4-r-lg); overflow: hidden; box-shadow: var(--fc4-sh-3); aspect-ratio: 16/9;
  background: linear-gradient(100deg, var(--fc4-skel-a) 40%, var(--fc4-skel-b) 50%, var(--fc4-skel-a) 60%) var(--fc4-g-shot);
  background-size: 200% 100%, auto; animation: fc4Shimmer 1.4s linear infinite; }
.fc4-hero-shot img { position: relative; }
.fc4-hero-shot.fc4-loaded { animation: none; background: var(--fc4-g-shot); }
.fc4-hero-shot img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--fc4-t-slow) var(--fc4-ease); }
.fc4-hero-stage:hover .fc4-hero-shot img { transform: scale(1.03); }
.fc4-hero-meta { display: flex; flex-wrap: wrap; gap: var(--fc4-sp-2); margin: var(--fc4-sp-3) 0; }
.fc4-hero-dots { display: flex; gap: var(--fc4-sp-2); margin-top: var(--fc4-sp-5); justify-content: center; }
.fc4-hero-dots button { position: relative; width: 44px; height: 44px; border: 0; cursor: pointer;
  background: transparent; padding: 0; }
.fc4-hero-dots button::after { content: ""; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 24px; height: 6px; border-radius: var(--fc4-r-pill); background: var(--fc4-g-dot);
  transition: background-color var(--fc4-t-base) var(--fc4-ease), width var(--fc4-t-base) var(--fc4-ease); }
.fc4-hero-dots button.is-cur::after { background: var(--fc4-g-btn-bg); width: 40px; }
.fc4-hero-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 44px; height: 44px; padding: 0;
  border-radius: var(--fc4-r-pill); border: 1px solid var(--fc4-g-navline); background: var(--fc4-g-navbg);
  color: var(--fc4-g-on-dark); cursor: pointer; display: grid; place-items: center; transition: background-color var(--fc4-t-fast) var(--fc4-ease); }
.fc4-hero-nav:hover { background: var(--fc4-g-navbg-h); }
.fc4-hero-nav--prev { left: var(--fc4-sp-4); } .fc4-hero-nav--next { right: var(--fc4-sp-4); }
@media (min-width: 1024px) { .fc4-hero-nav { display: none; } } /* 桌面 dots+自动轮播足够，箭头压字（视觉判读 2026-10-07） */

/* 游戏页 hero 亮色 CTA（深色区上的主按钮） */
.fc4-btn-light { display: inline-flex; align-items: center; gap: var(--fc4-sp-2); margin-top: var(--fc4-sp-5);
  padding: var(--fc4-sp-3) var(--fc4-sp-6); border-radius: var(--fc4-r-pill); border: 0;
  background: var(--fc4-g-btn-bg); color: var(--fc4-g-btn-ink); font-weight: 600; font-size: 15px;
  text-decoration: none; min-height: 44px;
  transition: transform var(--fc4-t-fast) var(--fc4-ease), filter var(--fc4-t-fast) var(--fc4-ease); }
.fc4-btn-light:hover { filter: brightness(1.05); }
.fc4-btn-light:active { transform: scale(.97); }

/* 软件/应用/Mac: 浅色引导 hero */
.fc4-hero--soft, .fc4-hero--apps, .fc4-hero--mac { background:
  radial-gradient(farthest-corner at 12% 0%, var(--fc4-tint), transparent 55%), var(--fc4-canvas); }
.fc4-hero--soft .fc4-wrap, .fc4-hero--apps .fc4-wrap, .fc4-hero--mac .fc4-wrap { padding-top: var(--fc4-sp-8); padding-bottom: var(--fc4-sp-7); }
.fc4-hero-split { display: grid; grid-template-columns: minmax(0,6fr) minmax(0,6fr); gap: var(--fc4-sp-7); align-items: center; }
.fc4-stat-row { display: flex; gap: var(--fc4-sp-5); margin-top: var(--fc4-sp-4); flex-wrap: wrap; }
.fc4-stat { display: flex; flex-direction: column; gap: 4px; }
.fc4-stat b { font-size: 24px; color: var(--fc4-accent-ink); }
.fc4-stat span { font-size: 13px; color: var(--fc4-ink-subtle); }
/* 本周更新 mini 榜 */
.fc4-weekly { background: var(--fc4-surface-2); border: 1px solid var(--fc4-line); border-radius: var(--fc4-r-lg);
  box-shadow: var(--fc4-sh-1); padding: var(--fc4-sp-4); }
.fc4-weekly h3 { font-size: 15px; margin-bottom: var(--fc4-sp-3); color: var(--fc4-ink); }
.fc4-weekly ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.fc4-weekly li + li { border-top: 1px solid var(--fc4-line); }
.fc4-weekly a { display: flex; align-items: baseline; gap: var(--fc4-sp-2); padding: var(--fc4-sp-1) 0; min-height: 44px;
  text-decoration: none; color: var(--fc4-ink); font-size: 14px; transition: color var(--fc4-t-fast) var(--fc4-ease); }
.fc4-weekly .fc4-wt { flex: 1; min-width: 0; }
.fc4-weekly a:hover { color: var(--fc4-accent-ink); }
.fc4-weekly .fc4-vb { flex: none; }
.fc4-weekly .fc4-wdate { margin-left: auto; flex: none; font-size: 12px; color: var(--fc4-ink-tertiary); }

/* ---------- 徽章 ---------- */
.fc4-vb { display: inline-flex; align-items: baseline; gap: var(--fc4-sp-1); padding: 2px var(--fc4-sp-2);
  border-radius: var(--fc4-r-pill); background: var(--fc4-tint); color: var(--fc4-accent-ink);
  font-size: 12px; font-weight: 600; line-height: 1.6; }
.fc4-vb i { font-style: normal; font-size: 10px; font-weight: 500; opacity: .78; }
.fc4-eb { display: inline-flex; padding: 2px var(--fc4-sp-2); border-radius: var(--fc4-r-pill);
  background: var(--fc4-soft-5); color: var(--fc4-soft-5-ink); font-size: 12px; font-weight: 600; }
.fc4-cb { display: inline-flex; padding: 2px var(--fc4-sp-2); border-radius: var(--fc4-r-pill);
  background: var(--fc4-soft-1); color: var(--fc4-soft-1-ink); font-size: 12px; }
.fc4-sz { font-size: 12px; color: var(--fc4-ink-subtle); }
.fc4-hero--games .fc4-vb { background: var(--fc4-g-chip); color: var(--fc4-g-ink-2); }
.fc4-hero--games .fc4-cb { background: var(--fc4-g-chip-2); color: var(--fc4-g-ink-3); }

/* ---------- 分区 ---------- */
.fc4-sec { margin-top: var(--fc4-sec-gap); scroll-margin-top: 72px; }
.fc4-sec-head { display: flex; align-items: baseline; gap: var(--fc4-sp-3); margin-bottom: var(--fc4-sp-5); }
.fc4-sec-head .fc4-num { font-size: 13px; color: var(--fc4-accent-ink); font-weight: 600; letter-spacing: .08em;
  box-shadow: inset 0 -2px 0 var(--fc4-accent); } /* 装饰性底线由 shadow 承担，不加非规则间距 */
.fc4-stat b, .fc4-chip-n, .fc4-cdate, .fc4-row-date, .fc4-wdate, .fc4-sz { font-variant-numeric: tabular-nums; }
.fc4-sec-head .fc4-more { margin-left: auto; font-size: 14px; color: var(--fc4-accent-ink); text-decoration: none;
  padding: 12px 0; margin-top: -12px; margin-bottom: -12px;
  transition: opacity var(--fc4-t-fast) var(--fc4-ease); }
.fc4-sec-head .fc4-more:hover { opacity: .75; }

/* ---------- chip 条 ---------- */
.fc4-chips { display: flex; flex-wrap: wrap; gap: var(--fc4-sp-2); }
.fc4-chip { border: 1px solid var(--fc4-line); background: var(--fc4-surface-2); color: var(--fc4-ink-muted);
  border-radius: var(--fc4-r-pill); padding: var(--fc4-sp-1) var(--fc4-sp-4); font-size: 14px; cursor: pointer;
  display: inline-flex; align-items: center; min-height: 44px;
  transition: background-color var(--fc4-t-base) var(--fc4-ease), color var(--fc4-t-base) var(--fc4-ease),
              border-color var(--fc4-t-base) var(--fc4-ease), transform var(--fc4-t-fast) var(--fc4-ease); }
.fc4-chip:hover { border-color: var(--fc4-accent); color: var(--fc4-accent-ink); }
.fc4-chip:active { transform: scale(.97); }
.fc4-chip.is-cur { background: var(--fc4-accent); border-color: var(--fc4-accent); color: var(--fc4-on-accent); font-weight: 600; }
.fc4-chip .fc4-chip-n { font-size: 12px; opacity: .72; margin-left: var(--fc4-sp-1); }

/* ---------- 横滑货架 ---------- */
.fc4-rail { position: relative; }
.fc4-rail-row { display: grid; grid-auto-flow: column; grid-auto-columns: clamp(200px, 22vw, 264px); gap: var(--fc4-sp-3);
  overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; padding: var(--fc4-sp-1) var(--fc4-sp-1) var(--fc4-sp-3);
  scrollbar-width: none; }
.fc4-rail-row::-webkit-scrollbar { display: none; }
.fc4-rail-row > * { scroll-snap-align: start; }
.fc4-rail-btn { position: absolute; top: 38%; width: 44px; height: 44px; border-radius: var(--fc4-r-pill);
  border: 1px solid var(--fc4-line); background: var(--fc4-surface-2); box-shadow: var(--fc4-sh-2); cursor: pointer;
  display: grid; place-items: center; color: var(--fc4-ink-muted); z-index: 4;
  transition: opacity var(--fc4-t-base) var(--fc4-ease), background-color var(--fc4-t-fast) var(--fc4-ease); }
.fc4-rail-btn:hover { background: var(--fc4-surface); color: var(--fc4-accent-ink); }
.fc4-rail-btn--prev { left: -14px; } .fc4-rail-btn--next { right: -14px; }
.fc4-rail-btn[disabled] { opacity: 0; pointer-events: none; }
@media (max-width: 900px) { .fc4-rail-btn { display: none; } }
@media (min-width: 901px) {
  .fc4-rail-row { -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 32px, #000 calc(100% - 32px), transparent 100%);
                  mask-image: linear-gradient(90deg, transparent 0, #000 32px, #000 calc(100% - 32px), transparent 100%); }
}

/* ---------- 卡片（游戏/Mac/应用 网格与横滑通用） ---------- */
.fc4-card { position: relative; display: flex; flex-direction: column; background: var(--fc4-surface-2);
  border: 1px solid var(--fc4-line); border-radius: var(--fc4-r-lg); overflow: hidden; text-decoration: none;
  color: var(--fc4-ink); transition: transform var(--fc4-t-base) var(--fc4-ease), box-shadow var(--fc4-t-base) var(--fc4-ease),
  border-color var(--fc4-t-base) var(--fc4-ease), background-color var(--fc4-t-base) var(--fc4-ease); }
.fc4-card:hover, .fc4-card:focus-visible { transform: translateY(-3px); box-shadow: var(--fc4-sh-2);
  border-color: var(--fc4-accent); /* 回退：不支持 color-mix 时向 accent 收敛 */
  border-color: color-mix(in srgb, var(--fc4-accent) 32%, var(--fc4-line));
  background-color: var(--fc4-surface-2); }
.fc4-card:active { transform: translateY(-1px) scale(.985); transition-duration: var(--fc4-t-fast); }
.fc4-card .fc4-cv { position: relative; aspect-ratio: 16/9; background: var(--fc4-soft-1); overflow: hidden; }
.fc4-card--sq .fc4-cv { aspect-ratio: 1/1; }
.fc4-card--43 .fc4-cv { aspect-ratio: 4/3; }
.fc4-card .fc4-cv img { width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform var(--fc4-t-slow) var(--fc4-ease); }
.fc4-card:hover .fc4-cv img { transform: scale(1.045); }
.fc4-card .fc4-cbody { padding: var(--fc4-sp-4); display: flex; flex-direction: column; gap: var(--fc4-sp-2); flex: 1; }
.fc4-card h3 { font-size: 15px; line-height: 1.45; font-weight: 600; color: var(--fc4-ink);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.fc4-card .fc4-cmeta { display: flex; flex-wrap: wrap; gap: var(--fc4-sp-2); align-items: center; margin-top: auto; }
.fc4-card .fc4-cdate { font-size: 12px; color: var(--fc4-ink-tertiary); margin-left: auto; }

/* Kimi#1: 行列表 hover 稳定形态——不位移不投影，只染底（与 weekly 分隔线语言一致） */
.fc4-grid--rows .fc4-row:hover, .fc4-grid--rows .fc4-row:focus-visible { transform: none; box-shadow: none; }

/* 无图卡（软件行/缺图条目）：纯文字紧凑行，无图框（禁色块汉字占位） */
.fc4-row { display: flex; align-items: center; gap: var(--fc4-sp-4); padding: var(--fc4-sp-4);
  background: var(--fc4-surface-2); border: 1px solid var(--fc4-line); border-radius: var(--fc4-r-md);
  text-decoration: none; color: var(--fc4-ink); min-height: 44px;
  transition: transform var(--fc4-t-base) var(--fc4-ease), box-shadow var(--fc4-t-base) var(--fc4-ease),
  background-color var(--fc4-t-base) var(--fc4-ease); }
.fc4-row:hover, .fc4-row:focus-visible { transform: translateY(-2px); box-shadow: var(--fc4-sh-1);
  background-color: var(--fc4-hover-bg); }
.fc4-row:active { transform: none; scale: .99; }
.fc4-row-ic { flex: none; width: 48px; height: 48px; border-radius: var(--fc4-r-sm); object-fit: cover; background: var(--fc4-soft-1); }
.fc4-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.fc4-row-t { display: flex; align-items: center; gap: var(--fc4-sp-2); min-width: 0; }
.fc4-row-t b { font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fc4-row-ex { font-size: 13px; color: var(--fc4-ink-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fc4-row-side { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: var(--fc4-sp-1); }
.fc4-row-date { font-size: 12px; color: var(--fc4-ink-tertiary); }

/* 摘要展开（应用/软件行）：预渲染内容 + max-height/opacity 过渡（不动 width/height 布局属性） */
.fc4-row-more { max-height: 0; opacity: 0; overflow: hidden; transition: max-height var(--fc4-t-slow) var(--fc4-ease),
  opacity var(--fc4-t-slow) var(--fc4-ease); }
.fc4-row.is-open .fc4-row-more { max-height: 140px; opacity: 1; }
.fc4-row-caret { flex: none; width: 44px; height: 44px; display: grid; place-items: center; border: 0; background: none;
  color: var(--fc4-ink-tertiary); cursor: pointer; border-radius: var(--fc4-r-pill);
  transition: transform var(--fc4-t-base) var(--fc4-ease), color var(--fc4-t-fast) var(--fc4-ease); }
.fc4-row-caret:hover { color: var(--fc4-accent-ink); }
.fc4-row.is-open .fc4-row-caret svg { transform: rotate(180deg); }

/* ---------- 用途宫格（手机软件） ---------- */
.fc4-catsgrid { display: grid; grid-template-columns: repeat(6, 1fr); gap: var(--fc4-sp-3); }
.fc4-catcard { display: flex; flex-direction: column; align-items: center; gap: var(--fc4-sp-2); padding: var(--fc4-sp-4) var(--fc4-sp-2);
  background: var(--fc4-surface-2); border: 1px solid var(--fc4-line); border-radius: var(--fc4-r-lg); text-decoration: none;
  color: var(--fc4-ink); text-align: center; transition: transform var(--fc4-t-base) var(--fc4-ease),
  box-shadow var(--fc4-t-base) var(--fc4-ease), background-color var(--fc4-t-base) var(--fc4-ease); }
.fc4-catcard:hover, .fc4-catcard:focus-visible { transform: translateY(-3px); box-shadow: var(--fc4-sh-1);
  background-color: var(--fc4-hover-bg); }
.fc4-catcard img { width: 56px; height: 56px; border-radius: var(--fc4-r-md); object-fit: cover; background: var(--fc4-soft-2); }
.fc4-catcard b { font-size: 14px; font-weight: 600; }
.fc4-catcard span { font-size: 12px; color: var(--fc4-ink-subtle); }

/* Mac hero 图标精选卡（Mac 封面=应用图标方形，禁 16:9 巨卡拉伸；图标自然尺寸+信息列） */
.fc4-machero { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--fc4-sp-6); align-items: start; }
.fc4-macfeat { display: flex; gap: var(--fc4-sp-5); align-items: flex-start; padding: var(--fc4-sp-5);
  background: var(--fc4-surface-2); border: 1px solid var(--fc4-line); border-radius: var(--fc4-r-lg); box-shadow: var(--fc4-sh-1);
  text-decoration: none; color: var(--fc4-ink);
  transition: transform var(--fc4-t-base) var(--fc4-ease), box-shadow var(--fc4-t-base) var(--fc4-ease), background-color var(--fc4-t-base) var(--fc4-ease); }
.fc4-macfeat:hover, .fc4-macfeat:focus-visible { transform: translateY(-3px); box-shadow: var(--fc4-sh-2); background-color: var(--fc4-hover-bg); }
.fc4-macfeat img { flex: none; width: 104px; height: 104px; border-radius: var(--fc4-r-md); object-fit: cover; background: var(--fc4-soft-1); }
.fc4-macfeat h3 { font-size: 20px; margin-bottom: var(--fc4-sp-2); }
.fc4-macfeat .fc4-macfeat-ex { font-size: 14px; color: var(--fc4-ink-subtle); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.fc4-macfeat .fc4-cmeta { margin-top: var(--fc4-sp-3); }
.fc4-macside { display: flex; flex-direction: column; gap: var(--fc4-sp-2); }
@media (max-width: 1024px) { .fc4-machero { grid-template-columns: 1fr; } }

/* Mac 子分类货架导航卡 */
.fc4-shelfnav { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--fc4-sp-3); }
.fc4-shelfcard { position: relative; display: flex; align-items: center; gap: var(--fc4-sp-4); padding: var(--fc4-sp-5);
  background: var(--fc4-surface-2); border: 1px solid var(--fc4-line); border-radius: var(--fc4-r-lg); text-decoration: none;
  color: var(--fc4-ink); overflow: hidden; transition: transform var(--fc4-t-base) var(--fc4-ease),
  box-shadow var(--fc4-t-base) var(--fc4-ease), background-color var(--fc4-t-base) var(--fc4-ease); }
.fc4-shelfcard:hover, .fc4-shelfcard:focus-visible { transform: translateY(-3px); box-shadow: var(--fc4-sh-2);
  background-color: var(--fc4-hover-bg); }
.fc4-shelfcard-thumb { display: flex; flex: none; }
.fc4-shelfcard-thumb img { width: 44px; height: 44px; border-radius: var(--fc4-r-sm); object-fit: cover;
  border: 2px solid var(--fc4-surface-2); margin-left: -10px; background: var(--fc4-soft-1); }
.fc4-shelfcard-thumb img:first-child { margin-left: 0; }
.fc4-shelfcard b { font-size: 16px; display: block; }
.fc4-shelfcard span { font-size: 13px; color: var(--fc4-ink-subtle); }

/* ---------- 网格 + 分页 ---------- */
.fc4-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--fc4-sp-3) var(--fc4-sp-3); }
.fc4-grid--rows { grid-template-columns: 1fr; gap: var(--fc4-sp-2); }
.fc4-pager { display: flex; gap: var(--fc4-sp-2); justify-content: center; align-items: center; margin-top: var(--fc4-sp-6); flex-wrap: wrap; }
.fc4-pg { min-width: 44px; height: 44px; padding: 0 var(--fc4-sp-3); border-radius: var(--fc4-r-sm); border: 1px solid var(--fc4-line);
  background: var(--fc4-surface-2); color: var(--fc4-ink-muted); font-size: 14px; cursor: pointer;
  transition: background-color var(--fc4-t-fast) var(--fc4-ease), color var(--fc4-t-fast) var(--fc4-ease),
  border-color var(--fc4-t-fast) var(--fc4-ease); }
.fc4-pg:hover:not([disabled]) { border-color: var(--fc4-accent); color: var(--fc4-accent-ink); }
.fc4-pg.is-cur { background: var(--fc4-accent); border-color: var(--fc4-accent); color: var(--fc4-on-accent); font-weight: 600; }
.fc4-pg[disabled] { opacity: .45; cursor: default; }

/* ---------- 状态：骨架 / 空 / 失败 ---------- */
.fc4-skel { border-radius: var(--fc4-r-lg); background: linear-gradient(100deg, var(--fc4-skel-a) 40%, var(--fc4-skel-b) 50%, var(--fc4-skel-a) 60%);
  background-size: 200% 100%; animation: fc4Shimmer 1.4s linear infinite; }
@keyframes fc4Shimmer { from { background-position: 120% 0; } to { background-position: -80% 0; } }
.fc4-state { text-align: center; padding: var(--fc4-sp-8) var(--fc4-sp-4); color: var(--fc4-ink-subtle); }
.fc4-state b { display: block; font-size: 16px; color: var(--fc4-ink-muted); margin-bottom: var(--fc4-sp-2); }
.fc4-state button { margin-top: var(--fc4-sp-4); min-height: 44px; padding: 0 var(--fc4-sp-5); border-radius: var(--fc4-r-pill);
  border: 0; background: var(--fc4-accent); color: var(--fc4-on-accent); font-size: 14px; font-weight: 600; cursor: pointer;
  transition: transform var(--fc4-t-fast) var(--fc4-ease), filter var(--fc4-t-fast) var(--fc4-ease); }
.fc4-state button:hover { filter: brightness(1.06); }
.fc4-state button:active { transform: scale(.97); }
.fc4-root [hidden] { display: none !important; }

/* ---------- 页脚 ---------- */
.fc4-foot { margin-top: var(--fc4-sec-gap); border-top: 1px solid var(--fc4-line); }
.fc4-foot-in { max-width: var(--fc4-max); margin: 0 auto; padding: var(--fc4-sp-6) var(--fc4-sp-5);
  display: flex; flex-wrap: wrap; gap: var(--fc4-sp-3) var(--fc4-sp-5); align-items: baseline;
  font-size: 13px; color: var(--fc4-ink-subtle); }
.fc4-foot b { color: var(--fc4-ink-muted); font-weight: 600; }
.fc4-foot .fc4-stale { color: var(--fc4-warn); font-weight: 600; }

/* ---------- 入场动效（JS 就绪后才隐藏；无 JS/失败内容可见） ---------- */
.fc4-js .fc4-anim { opacity: 0; transform: translateY(14px); }
.fc4-js .fc4-anim.fc4-in { opacity: 1; transform: none;
  transition: opacity var(--fc4-t-enter) var(--fc4-ease), transform var(--fc4-t-enter) var(--fc4-ease);
  transition-delay: min(calc(var(--fc4-i, 0) * var(--fc4-stagger)), 550ms); }
@keyframes fc4Drift { from { transform: scale(1.1) translate3d(-1.6%, -1%, 0); }
                      to { transform: scale(1.16) translate3d(1.6%, 1%, 0); } }

/* ---------- reduced-motion：关位移/漂移/stagger，保留颜色瞬变与全部状态 ---------- */
@media (prefers-reduced-motion: reduce) {
  .fc4-js .fc4-anim { opacity: 1; transform: none; transition: none; }
  .fc4-hero--games .fc4-hero-bg { animation: none; }
  .fc4-skel { animation: none; background: var(--fc4-skel-a); }
  .fc4-card:hover, .fc4-row:hover, .fc4-catcard:hover, .fc4-shelfcard:hover { transform: none; }
  .fc4-card:hover .fc4-cv img { transform: none; }
  .fc4-card:hover, .fc4-row:hover, .fc4-row:focus-visible { background-color: var(--fc4-skel-a); }
  .fc4-row.is-open .fc4-row-more { transition: opacity var(--fc4-t-fast) linear; }
}

/* ---------- 响应式 ---------- */
@media (max-width: 1200px) { .fc4-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1024px) {
  .fc4-hero-stage, .fc4-hero-split { grid-template-columns: 1fr; gap: var(--fc4-sp-5); }
  .fc4-catsgrid { grid-template-columns: repeat(4, 1fr); }
  .fc4-shelfnav { grid-template-columns: repeat(2, 1fr); }
  .fc4-sec { margin-top: var(--fc4-sp-8); }
}
@media (max-width: 768px) {
  .fc4-grid { grid-template-columns: repeat(2, 1fr); }
  .fc4-catsgrid { grid-template-columns: repeat(3, 1fr); }
  .fc4-hero--games .fc4-h2 { font-size: 26px; }
  .fc4-h2 { font-size: 20px; }
  .fc4-rail-row { grid-auto-columns: min(64vw, 220px); }
  .fc4-row-side { display: none; }
  .fc4-wrap { padding: 0 var(--fc4-sp-4); }
}
@media (max-width: 480px) {
  .fc4-grid { grid-template-columns: 1fr 1fr; gap: var(--fc4-sp-2); }
  .fc4-card .fc4-cbody { padding: var(--fc4-sp-3); }
  .fc4-catsgrid { grid-template-columns: repeat(2, 1fr); }
  .fc4-shelfnav { grid-template-columns: 1fr; }
  .fc4-hero--games .fc4-wrap { padding-top: var(--fc4-sp-6); padding-bottom: var(--fc4-sp-6); }
}

/* ---------- 站点家具避让（键控 body.fc4-page，其他页零命中） ---------- */
body.fc4-page .site-mini-header, body.fc4-page #custom-local-popup, body.fc4-page #zpPet,
body.fc4-page .float-right.round.position-bottom.scrolling-hide { /* 保持站点默认行为，不新增样式 */ }
