/*
Theme Name: 论坛型资源站主题
Theme URI:
Description: 配合「论坛型资源站核心」插件使用。作品 / 教程 / 资源 / 讨论四区前台模板，含首页聚合、前后对比滑块、资源筛选与单页。
Version: 1.10.4
Requires PHP: 7.4
Text Domain: forum-theme
*/

/* ── 变量与重置 ───────────────────────────────── */
:root{
  --ink:#1f2328;
  --ink-2:#3a4046;
  --muted:#6b7280;
  --line:#e2e5e8;
  --line-2:#eef0f2;
  --bg:#f7f8f8;
  --card:#ffffff;
  --accent:#4b6350;
  --accent-2:#e8ede9;
  --price:#a3552e;
  --radius:10px;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 4px 12px rgba(16,24,40,.05);
  /* 栏宽：.wrap / 顶栏 / 首页大版共用一套，改这一处全站跟着变 */
  --wrap:1600px;
  --pad:clamp(20px,2vw,40px);
  --content:calc(var(--wrap) - 2 * var(--pad));
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.7 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--ink);text-decoration:none}
a:hover{color:var(--accent)}
h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.4}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0;list-style:none}
button{font:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(1px,1px,1px,1px);white-space:nowrap;
}

/* ── 顶栏 ─────────────────────────────────────── */
.ft-header{
  background:var(--card);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50;
}
.ft-header-in{
  max-width:var(--wrap);margin:0 auto;padding:0 var(--pad);
  height:64px;display:flex;align-items:center;gap:22px;
}
.ft-logo{font-size:17px;font-weight:700;letter-spacing:.5px;white-space:nowrap}
.ft-logo span{color:var(--accent)}

.ft-nav{display:flex;gap:10px;font-size:14px}
.ft-nav a{
  display:inline-block;padding:7px 16px;border-radius:999px;
  background:#f4f5f6;color:var(--ink-2);
  font-weight:600;border:1px solid var(--line);transition:all .15s;
}
.ft-nav a:hover{color:var(--accent);border-color:var(--accent);background:#fff}
/* 当前项只认 is-active：不要再写 :first-child，那会让「作品」永远加粗 */
.ft-nav a.is-active,
.ft-nav .is-active > a{color:#fff;background:var(--accent);border-color:var(--accent);font-weight:700}

.ft-head-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.ft-search{
  display:flex;align-items:center;gap:6px;
  border:1px solid var(--line);border-radius:18px;padding:0 12px;height:34px;
  background:#fafbfb;
}
.ft-search input{
  border:0;background:transparent;outline:0;width:150px;font-size:13px;color:var(--ink);
}
.ft-search button{border:0;background:transparent;cursor:pointer;color:var(--muted);font-size:13px;padding:0}

.ft-btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:34px;padding:0 15px;border-radius:7px;
  border:1px solid var(--line);background:#fff;cursor:pointer;
  font-size:13.5px;color:var(--ink);transition:background .15s,border-color .15s;
  white-space:nowrap;flex:none;
}
.ft-btn:hover{border-color:#c9cfd5}
.ft-btn.solid{background:var(--accent);border-color:var(--accent);color:#fff}
.ft-btn.solid:hover{background:#3f5444}
.ft-btn.lg{height:42px;padding:0 22px;font-size:15px;border-radius:8px}
.ft-btn.block{display:flex;width:100%}

.ft-menu-toggle{display:none;border:1px solid var(--line);background:#fff;border-radius:7px;width:36px;height:34px;align-items:center;justify-content:center;cursor:pointer}

/* ── 主区 ─────────────────────────────────────── */
.ft-main{padding:24px 0 56px}

.ft-section-head{
  display:flex;align-items:baseline;gap:10px;margin:34px 0 14px;
}
.ft-section-head h2{font-size:17px}
.ft-section-head .sub{font-size:13px;color:var(--muted)}
.ft-section-head .more{margin-left:auto;font-size:13px;color:var(--accent)}

/* ── 主视觉：轮播大版（首页）────────────────────── */
/*
 * 3–5 页，每页一张大图 + 左下角一个大标题和一个「查看作品」。
 * 宽度跟 .wrap 的内容栏对齐（共用 --content），不再通栏顶到屏幕两头，
 * 免得上面一块比下面版块宽出一大截、看着像两张皮。
 * 高度保持 68vh：开场要有分量，不是把下面的内容推走的原因。
 */
.ft-hero2{
  position:relative;
  width:calc(100% - 2 * var(--pad));max-width:var(--content);margin:0 auto;
  height:clamp(460px,68vh,660px);
  border-radius:12px;
  background:#0f1614;color:#fff;
  overflow:hidden;isolation:isolate;
}

.ft-hero2-stage{position:absolute;inset:0}

.ft-hero2-slide{
  position:absolute;inset:0;
  opacity:0;visibility:hidden;
  transition:opacity .9s ease,visibility .9s;
}
.ft-hero2-slide.is-active{opacity:1;visibility:visible;z-index:1}

.ft-hero2-img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block;
  transform:scale(1.06);transition:transform 8s linear;
}
.ft-hero2-slide.is-active .ft-hero2-img{transform:scale(1)}
.ft-hero2-img.is-blank{background:linear-gradient(135deg,#20302a,#0f1614 58%,#2b3a32)}

.ft-hero2-shade{
  position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(to top,rgba(8,13,11,.94) 0%,rgba(8,13,11,.6) 30%,rgba(8,13,11,.1) 66%,rgba(8,13,11,0) 100%),
    linear-gradient(100deg,rgba(8,13,11,.72) 0%,rgba(8,13,11,.2) 50%,rgba(8,13,11,0) 76%);
}

.ft-hero2-inner{
  position:absolute;inset:0;z-index:2;
  display:flex;align-items:flex-end;
  padding:0 clamp(18px,3.4vw,44px) clamp(76px,9.5vh,104px);
  /* 文案层不拦截点击：整片大图是入口，点空白处也要进帖子 */
  pointer-events:none;
}
/* 只有标题本身可点（它自己也是链接） */
.ft-hero2-inner a{pointer-events:auto}

/* 整片大图入口层：盖在图片和压暗层上，标题之下（标题 z-index 更高不受影响） */
.ft-hero2-link{position:absolute;inset:0;z-index:1}
.ft-hero2-link:focus-visible{outline:2px solid #fff;outline-offset:-4px}
.ft-hero2-copy{max-width:820px}

.ft-hero2-title{
  margin:0;color:#fff;
  font-size:clamp(24px,2.9vw,38px);line-height:1.24;letter-spacing:-.015em;
  text-wrap:balance;
}
.ft-hero2-title a{color:inherit;text-decoration:none}
.ft-hero2-title a:hover{color:#fff;opacity:.85}

.ft-hero2-acts{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.ft-hero2-btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:42px;padding:0 24px;border-radius:999px;
  background:#fff;color:#14201a;font-size:13.5px;font-weight:600;
  text-decoration:none;transition:transform .2s,box-shadow .2s,background .2s;
}
.ft-hero2-btn:hover{
  color:#14201a;background:#fff;transform:translateY(-1px);
  box-shadow:0 10px 24px rgba(0,0,0,.3);
}
.ft-hero2-btn.ghost{
  background:rgba(255,255,255,.1);color:#fff;
  border:1px solid rgba(255,255,255,.42);
  font-weight:500;backdrop-filter:blur(8px);
}
.ft-hero2-btn.ghost:hover{background:rgba(255,255,255,.22);color:#fff;box-shadow:none}

.ft-hero2-slide.is-active .ft-hero2-title,
.ft-hero2-slide.is-active .ft-hero2-acts{
  animation:ftHeroIn .7s both;
}
.ft-hero2-slide.is-active .ft-hero2-acts{animation-delay:.08s}

@keyframes ftHeroIn{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:translateY(0)}
}

/* 底部控制条：左「当前 / 总数」，中间小圆点，右边缩略图；不放大箭头 */
.ft-hero2-ctl{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;
  padding:0 clamp(18px,3.4vw,44px) clamp(16px,2.6vh,24px);
  pointer-events:none;
}
.ft-hero2-ctl > *{pointer-events:auto}

/* 左侧数字删掉后子元素少一个：显式钉住各列，圆点永远居中、缩略图永远贴右 */
.ft-hero2-ctl .ft-hero2-dots{grid-column:2;justify-self:center}
.ft-hero2-ctl .ft-hero2-thumbs{grid-column:3;justify-self:end}

.ft-hero2-num{
  justify-self:start;
  font-size:12px;letter-spacing:.06em;color:rgba(255,255,255,.55);
  font-variant-numeric:tabular-nums;
}
.ft-hero2-num b{font-size:13px;color:#fff;font-weight:600}
.ft-hero2-num i{font-style:normal;margin-left:3px}

.ft-hero2-dots{display:flex;align-items:center;gap:10px;justify-self:center}
.ft-hero2-dots button{
  position:relative;width:7px;height:7px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.34);transition:background .25s,transform .25s;
}
/* 视觉 7px，点击热区向外扩 8px，手指也点得到 */
.ft-hero2-dots button::after{content:"";position:absolute;inset:-8px;border-radius:50%}
.ft-hero2-dots button:hover{background:rgba(255,255,255,.66)}
.ft-hero2-dots button.is-active{background:#fff;transform:scale(1.28)}

.ft-hero2-thumbs{display:flex;gap:8px;justify-self:end}
.ft-hero2-thumb{
  width:64px;height:44px;padding:0;border-radius:6px;overflow:hidden;cursor:pointer;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.24);
  opacity:.5;transition:opacity .25s,border-color .25s,transform .25s;
}
.ft-hero2-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ft-hero2-thumb:hover{opacity:.82}
.ft-hero2-thumb.is-active{
  opacity:1;border-color:#fff;transform:translateY(-2px);
  box-shadow:0 6px 18px rgba(0,0,0,.35);
}

/* 前后对比滑块（作品单页仍在用） */

/* 容器比例跟原图走（--cmp-ar 由模板按原图宽高算），
   max-width 用视口高度反推，保证长图不会被撑到一屏之外 */
.cmp{
  position:relative;width:100%;
  max-width:calc(78vh * var(--cmp-ar,1.5));
  aspect-ratio:var(--cmp-ar,1.5);
  max-height:78vh;
  margin-inline:auto;
  overflow:hidden;user-select:none;
}
.cmp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* 单图退化：按图片原始比例自然铺开，不裁、不留空 */
.cmp-single{aspect-ratio:auto;max-width:none;max-height:none}
.cmp-single img{position:static;width:100%;height:auto;object-fit:contain;display:block}
.cmp-after{clip-path:inset(0 0 0 50%)}
.cmp-divider{
  position:absolute;top:0;bottom:0;left:50%;width:2px;
  background:var(--accent);transform:translateX(-1px);pointer-events:none;
}
.cmp-handle{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:36px;height:36px;border-radius:50%;background:var(--accent);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:14px;
  pointer-events:none;box-shadow:0 2px 8px rgba(0,0,0,.2);
}
.cmp-range{
  position:absolute;inset:0;width:100%;height:100%;margin:0;
  opacity:0;cursor:ew-resize;z-index:3;
  /* 横向手势给滑块，纵向仍然滚页面，不然手机上划过作品页就滚不动 */
  touch-action:pan-y;
}
.cmp-label{
  position:absolute;bottom:12px;font-size:12px;color:#fff;
  background:rgba(0,0,0,.45);padding:2px 8px;border-radius:4px;z-index:2;
}
.cmp-label.l{left:12px}
.cmp-label.r{right:12px}

/* ── 资源卡 ───────────────────────────────────── */
.ft-grid{display:grid;gap:14px}
.ft-grid.c4{grid-template-columns:repeat(4,1fr)}
.ft-grid.c3{grid-template-columns:repeat(3,1fr)}

.ft-card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;transition:border-color .15s,transform .15s;position:relative;
}
.ft-card:hover{border-color:#cfd6d1;transform:translateY(-2px)}
.ft-card-thumb{
  aspect-ratio:16/10;background:#eef0f1;overflow:hidden;display:block;
}
.ft-card-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.ft-card:hover .ft-card-thumb img{transform:scale(1.03)}
.ft-card-body{padding:12px 13px 14px}
.ft-card-title{
  font-size:14px;line-height:1.55;height:44px;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  transition:color .15s ease,filter .15s ease;
}
.ft-card:hover .ft-card-title{color:var(--accent);filter:brightness(1.1)}
.ft-card-meta{
  display:flex;align-items:center;gap:8px;margin-top:10px;
  font-size:12px;color:var(--muted);
}
.ft-price{margin-left:auto;color:var(--price);font-weight:600;font-size:13px}
.ft-free{margin-left:auto;color:var(--accent);font-weight:600;font-size:13px}
.ft-badge{
  position:absolute;left:10px;top:10px;z-index:2;
  font-size:11px;padding:2px 7px;border-radius:4px;
  background:rgba(255,255,255,.92);color:var(--ink-2);
}
.ft-badge.vip{background:var(--accent);color:#fff}

/* ── 精选大板块（作品 / 教程 / 资源各一块）─────── */
.ft-feature{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:20px 20px 22px;margin-top:18px;box-shadow:var(--shadow);
}
.ft-feature-head{display:flex;align-items:baseline;gap:10px;margin-bottom:16px}
.ft-feature-head h2{font-size:19px;letter-spacing:.2px}
.ft-feature-head .sub{font-size:12.5px;color:var(--muted)}
.ft-feature-head .more{margin-left:auto;font-size:13px;color:var(--accent);white-space:nowrap}
.ft-feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}

.f-card{position:relative;display:flex;flex-direction:column;color:var(--ink)}
.f-thumb{
  position:relative;display:block;aspect-ratio:16/10;max-height:280px;border-radius:9px;overflow:hidden;
  background:linear-gradient(135deg,#eef1ee,#e2e7e3);
}
.f-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .35s}
/* 图集卡片自己在切图，这里的悬停放大只给单图卡片，否则 transform 会盖掉切换动效 */
.f-card:hover .f-thumb:not(.ft-media) img{transform:scale(1.04)}
.f-pin{
  position:absolute;right:9px;top:9px;z-index:5;
  font-size:11px;line-height:1.6;padding:1px 8px;border-radius:999px;
  background:var(--accent);color:#fff;letter-spacing:.3px;
}
.f-tag{
  position:absolute;left:9px;top:9px;z-index:5;
  font-size:11px;line-height:1.6;padding:1px 8px;border-radius:5px;
  background:rgba(255,255,255,.93);color:var(--ink-2);
}
.f-body{display:block;padding:11px 2px 0}
.f-t{
  font-size:15.5px;font-weight:600;line-height:1.5;min-height:46px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  transition:color .15s ease,filter .15s ease;
}
.f-card:hover .f-t{color:var(--accent);filter:brightness(1.1)}
.f-x{
  display:block;margin-top:3px;font-size:12.5px;color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.f-m{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:12px;color:var(--muted)}
.f-meta{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.f-extra{margin-left:auto;flex:none;font-size:12.5px;font-weight:600;color:var(--price)}
.f-extra.is-free{color:var(--accent)}
.f-extra.is-vip{font-size:11.5px;font-weight:600;line-height:1.7;padding:1px 8px;border-radius:4px;background:var(--accent-2);color:var(--accent)}

/* 归档页里精选区下方的「全部 xx」分隔行 */
.ft-subhead{display:flex;align-items:baseline;gap:10px;margin:24px 0 12px}
.ft-subhead h2{font-size:15px;color:var(--ink-2)}
.ft-subhead .sub{font-size:12px;color:var(--muted)}

/* ── 作品区 ───────────────────────────────────── */

/* 作品项：瀑布流与首页网格共用同一套外观 */
.m-item{
  border-radius:var(--radius);overflow:hidden;background:var(--card);
  border:1px solid var(--line);display:block;position:relative;
}
.m-item img{width:100%;height:auto;display:block}
/* 封面外框：aspect-ratio 由模板按附件宽高写成 inline，图片没下载完/加载失败
   也有正确高度，否则瀑布流量到的高度是错的，卡片会叠在一起 */
.m-frame{display:block;width:100%;overflow:hidden;background:var(--line-2,#eef1ec)}
.m-frame img{width:100%;height:100%;object-fit:cover}
/*
 * 作者页的作品卡放在 .ft-grid（普通等高网格）里，不是瀑布流。
 * 那里必须压回 4:3 裁切，保持跟改动前一致 —— 否则竖图会把整行撑高、
 * 横图底下留一片空白（就是列表页当初塌陷的同一个毛病）。
 * 比例是模板写成 inline style 的，只能靠 !important 覆盖；
 * 作品区的 .masonry / .ft-works 不在 .ft-grid 内，不受这条影响。
 */
.ft-grid .m-item .m-frame{aspect-ratio:4/3 !important}

/*
 * 作品列表（归档 / 分类 / 存档 / 首页「最新作品」）：真瀑布流。
 * 封面不再裁成固定 4:3，按原图比例显示，竖构图就长得高、横构图就扁。
 * 列数只写在 --m-cols 里（响应式只改变量），由 assets/masonry.js 读出来，
 * 按「最短列优先」把卡片定位过去 —— 这样既有参差的高度，横向顺序也还是
 * 从左到右；纯 CSS 的 column-count 做不到（它按列填充，顺序会变成 1/5/9）。
 * 脚本没跑起来时退回等宽网格：图片照样完整显示，只是行内会留白。
 */
.masonry,.ft-works{
  --m-cols:3;--m-gap:14px;
  position:relative;display:grid;
  grid-template-columns:repeat(var(--m-cols),1fr);gap:var(--m-gap);
}
/* 脚本没跑起来时按网格排列：卡片按自身高度对齐，不要被拉伸到整行高 */
.masonry>.m-item,.ft-works>.m-item{align-self:start}
.masonry.m-ready,.ft-works.m-ready{display:block}
.masonry.m-ready>.m-item,.ft-works.m-ready>.m-item{
  position:absolute;top:0;left:0;will-change:transform;
}
/* 没传封面的作品：占位块顶住高度，否则卡片只剩标题，一行被压成白条 */
.m-item .m-noimg{
  display:flex;align-items:center;justify-content:center;
  width:100%;aspect-ratio:4/3;
  background:linear-gradient(135deg,#eef1ec,#e2e7e0);
  color:var(--muted);font-size:12px;letter-spacing:.08em;
}

/* 宽屏：栏宽到 1300 以上后，四列比「三列撑到 500 宽」更像列表页 */
@media (min-width:1360px){
  .ft-grid.c3{grid-template-columns:repeat(4,1fr)}
  .masonry,.ft-works{--m-cols:4}
}
.m-cap{
  padding:9px 11px;font-size:12.5px;color:var(--ink-2);line-height:1.5;
  display:flex;flex-direction:column;gap:1px;
}
/* 标题单行省略、器材单行省略：窄卡片下不换行，同排高度才一致 */
/* 字号/字重对齐精选卡片标题（.f-t：15.5px / 600），作品区与精选区视觉统一 */
.m-cap .m-t{font-size:15.5px;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);transition:color .15s ease,filter .15s ease}
/* 悬停：标题提亮成主题色。filter 让深绿字在缩略图旁更"跳"，比单纯换色更明显 */
.m-item:hover .m-cap .m-t{color:var(--accent);filter:brightness(1.1)}
.m-cap em{
  font-style:normal;color:var(--muted);font-size:11.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* ── 卡片多图（作品卡 / 精选卡）──────────────────
 *
 * 一篇作品的所有图片叠在同一个框里（.ft-media），切换只改哪个 .is-on。
 * 外框的 aspect-ratio 由首图决定、图片一律 object-fit:cover，所以切到
 * 竖构图那张时卡片高度也不会变，瀑布流不会重排。
 *
 * 动效按卡片循环分配（data-fx：slide / fade / zoom / flip）；
 * --dir 由 gallery-slider.js 在切换时写成 +1 / -1，控制滑入方向。
 */
.ft-media{position:relative;display:block;overflow:hidden}
.ft-media .ft-media-img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;z-index:1;backface-visibility:hidden;
  transition:opacity .38s ease,transform .46s cubic-bezier(.22,.68,.24,1);
}
.ft-media-img.is-on{opacity:1;z-index:2}

.ft-media[data-fx="slide"] .ft-media-img{transform:translateX(calc(var(--dir,1) * 24%))}
.ft-media[data-fx="slide"] .ft-media-img.is-on{transform:none}

.ft-media[data-fx="fade"] .ft-media-img{transform:none}

.ft-media[data-fx="zoom"] .ft-media-img{transform:scale(1.12)}
.ft-media[data-fx="zoom"] .ft-media-img.is-on{transform:scale(1)}

.ft-media[data-fx="flip"] .ft-media-img{transform:perspective(760px) rotateY(calc(var(--dir,1) * 62deg))}
.ft-media[data-fx="flip"] .ft-media-img.is-on{transform:perspective(760px) rotateY(0)}

/* 左右箭头：平时藏起来，鼠标进卡片 / 键盘聚焦 / 触屏设备才出现 */
.ft-media-nav{
  position:absolute;top:50%;transform:translateY(-50%);
  width:26px;height:26px;border-radius:50%;z-index:6;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.9);color:#1f2326;cursor:pointer;
  box-shadow:0 1px 4px rgba(0,0,0,.2);
  opacity:0;pointer-events:none;user-select:none;
  transition:opacity .18s ease,background .18s ease;
}
.ft-media-nav svg{
  width:14px;height:14px;display:block;
  fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;
}
.ft-media-prev{left:8px}
.ft-media-next{right:8px}
.m-item:hover .ft-media-nav,.f-card:hover .ft-media-nav,.ft-media:focus-within .ft-media-nav{opacity:.95;pointer-events:auto}
.ft-media-nav:hover{background:#fff}
.ft-media-nav:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* 触屏没有 hover，箭头必须常显，否则翻不了图 */
@media (hover:none){
  .ft-media-nav{opacity:.94;pointer-events:auto;width:28px;height:28px}
}

/* 第几张：右下角小药丸，不挡图也不抢标题 */
.ft-media-count{
  position:absolute;right:8px;bottom:8px;z-index:6;
  display:flex;align-items:center;gap:1px;
  font-size:11px;line-height:1;padding:4px 7px;border-radius:999px;
  background:rgba(20,24,22,.55);color:#fff;letter-spacing:.3px;
  pointer-events:none;
}
.ft-media-count b{font-weight:600}

/*
 * 整块可点：链接做成覆盖整卡的透明层（.m-hit / .f-hit），
 * 箭头和计数压在它上面，所以点箭头不会跳走。
 */
.m-hit,.f-hit{position:absolute;inset:0;z-index:3;border-radius:inherit}
.m-hit:focus-visible,.f-hit:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ── 三栏 ─────────────────────────────────────── */
.ft-cols{display:grid;grid-template-columns:1fr 1fr 300px;gap:14px}
.ft-panel{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 16px 8px;
}
.ft-panel > h3{font-size:14px;margin-bottom:6px}
.ft-row{
  display:flex;gap:10px;align-items:flex-start;
  padding:10px 0;border-bottom:1px dashed var(--line-2);font-size:13px;
}
.ft-row:last-child{border-bottom:0}
.ft-row .t{flex:1;line-height:1.55}
.ft-row .t em{display:block;font-style:normal;color:var(--muted);font-size:11.5px;margin-top:2px}
.ft-row .n{
  width:18px;flex:none;text-align:center;color:var(--muted);font-size:11.5px;padding-top:2px;
}
.ft-row .sq{
  width:44px;height:44px;border-radius:6px;overflow:hidden;flex:none;background:#eef0f1;
}
.ft-row .sq img{width:100%;height:100%;object-fit:cover}

.ft-stats{display:flex;gap:12px;padding:2px 0 14px;border-bottom:1px dashed var(--line-2);margin-bottom:12px}
.ft-stats div{flex:1}
.ft-stats b{display:block;font-size:18px;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.ft-stats span{font-size:11.5px;color:var(--muted)}
.ft-notice{font-size:12.5px;line-height:1.9;color:var(--ink-2);padding-bottom:12px}
.ft-notice li{padding-left:12px;position:relative}
.ft-notice li::before{content:"";position:absolute;left:0;top:.75em;width:3px;height:3px;border-radius:50%;background:var(--accent)}

/* ── 筛选条 ───────────────────────────────────── */
.ft-filter{
  display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  padding:12px 0 18px;border-bottom:1px solid var(--line);margin-bottom:20px;
}
.ft-chip{
  height:32px;padding:0 13px;border-radius:16px;border:1px solid var(--line);
  background:#fff;display:inline-flex;align-items:center;font-size:13px;color:var(--ink-2);
}
.ft-chip:hover{border-color:#c9cfd5;color:var(--accent)}
.ft-chip.is-active{background:var(--accent);border-color:var(--accent);color:#fff}
.ft-filter .right{margin-left:auto;display:flex;gap:8px;align-items:center;font-size:12.5px;color:var(--muted)}

/* ── 单页 ─────────────────────────────────────── */
/*
 * 组图舞台。
 *
 * 所有图片绝对定位叠在同一个框里，切换只换哪个 .is-on，所以不会有
 * 一排图同时挤在页面上、也不会切换时把下面的内容顶来顶去。
 *
 * 高度两段式：CSS 先用首图比例占位（没 JS 也能看），脚本接管后按每张图的
 * 真实比例算出像素高度并加过渡 —— 竖图切横图时是「框慢慢变矮」，不是硬跳。
 * 图片一律 object-fit:contain，宁可两边留黑也不裁掉画面（详情页不是卡片缩略图）。
 */
.ft-cmp-wrap{margin-bottom:20px}
.ft-cmp-head{
  display:flex;align-items:baseline;gap:9px;margin-bottom:9px;font-size:12.5px;color:var(--muted);
}
.ft-cmp-head span{font-size:14px;font-weight:600;color:var(--ink)}
.ft-cmp-head em{font-style:normal}
.ft-cmp-wrap #compare{border-radius:8px;overflow:hidden}

.ft-stage{
  position:relative;background:#15191a;border-radius:10px;overflow:hidden;
  margin:0 0 10px;border:1px solid #101314;
}
/*
 * 横滑只交给我们自己处理：不加 pan-y 的话，手指在图上左右拖会同时
 * 把整个页面推向一边（窄屏尤其明显，页面被拖着走 40px）。
 */
.ft-stage-track{touch-action:pan-y}
/*
 * 背景衬底：拿当前这张图自己放大模糊铺满，竖图两边的黑边就不是「空着」，
 * 而是画面颜色的延续。同一张图已在缓存里，不会多一次下载。
 */
.ft-stage-bg{
  position:absolute;inset:-24px;z-index:0;
  background-position:center;background-size:cover;
  filter:blur(28px) saturate(1.06);opacity:.5;transform:scale(1.06);
  transition:background-image .3s ease;pointer-events:none;
}
/*
 * 轨道高度完全由图片自己的比例决定：宽度铺满容器，高度 = 宽 / 原图比例。
 * 这里不设 max-height —— 一旦设了，竖图会被压矮并靠 contain 缩进去，
 * 左右留边，看起来就像「图没撑满」。
 */
.ft-stage-track{
  position:relative;z-index:1;width:100%;
  aspect-ratio:var(--stage-ar,1.5);
  transition:height .4s cubic-bezier(.22,.68,.24,1);
  cursor:zoom-in;
}
.ft-stage-slide{
  position:absolute;inset:0;margin:0;opacity:0;pointer-events:none;
  transition:opacity .3s ease;
}
.ft-stage-slide.is-on{opacity:1;pointer-events:auto}
.ft-stage-slide img{
  width:100%;height:100%;object-fit:contain;display:block;
  -webkit-user-drag:none;user-select:none;
}
/* 换图时给当前这张一点位移，静止时归零 —— 纯淡入在深色框里太"闷" */
.ft-stage-slide.is-on img{animation:ft-stage-in .34s ease both}
@keyframes ft-stage-in{from{opacity:.2;transform:scale(1.012)}to{opacity:1;transform:none}}

.ft-stage-nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:4;
  width:40px;height:40px;border:0;border-radius:50%;padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.86);color:#1b1f22;
  box-shadow:0 2px 10px rgba(0,0,0,.28);
  opacity:.55;transition:opacity .18s ease,background .18s ease,transform .18s ease;
}
.ft-stage-nav svg{
  width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.1;
  stroke-linecap:round;stroke-linejoin:round;
}
.ft-stage-nav.prev{left:14px}
.ft-stage-nav.next{right:14px}
.ft-stage:hover .ft-stage-nav,.ft-stage-nav:focus-visible{opacity:1}
.ft-stage-nav:hover{background:#fff;transform:translateY(-50%) scale(1.06)}
.ft-stage-nav:disabled{opacity:.2;cursor:default}

.ft-stage-bar{
  position:absolute;left:0;right:0;bottom:0;z-index:4;
  display:flex;align-items:center;gap:10px;padding:10px 14px;
  background:linear-gradient(to top,rgba(10,13,14,.62),rgba(10,13,14,0));
  pointer-events:none;
}
.ft-stage-count{
  font-size:12px;color:#fff;letter-spacing:.4px;font-variant-numeric:tabular-nums;
  background:rgba(0,0,0,.42);border-radius:999px;padding:3px 10px;
}
.ft-stage-count b{font-weight:600}

/* 缩略图条：一张作品几个图就有几个方块，横向可滚，当前那张描边 */
.ft-strip{
  display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px;margin-bottom:16px;
  scrollbar-width:thin;
}
.ft-strip::-webkit-scrollbar{height:5px}
.ft-strip::-webkit-scrollbar-thumb{background:#cfd6d1;border-radius:3px}
.ft-strip-item{
  flex:none;width:88px;height:60px;padding:0;border:2px solid transparent;border-radius:6px;
  overflow:hidden;background:#eef1ef;cursor:pointer;line-height:0;opacity:.62;
  transition:opacity .15s,border-color .15s,transform .15s;
}
.ft-strip-item img{width:100%;height:100%;object-fit:cover;display:block}
.ft-strip-item:hover{opacity:1}
.ft-strip-item.is-on{opacity:1;border-color:var(--accent);box-shadow:0 0 0 3px rgba(75,99,80,.12)}
.ft-strip-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

@media (max-width:640px){
  .ft-stage-nav{width:34px;height:34px}
  .ft-stage-nav.prev{left:8px}
  .ft-stage-nav.next{right:8px}
  .ft-strip-item{width:68px;height:48px}
}

/* 灯箱：点大图在原页面里看原图，不跳走 */
.ft-lbx{
  position:fixed;inset:0;z-index:200;background:rgba(8,10,11,.94);
  display:flex;align-items:center;justify-content:center;padding:3vh 4vw;
  opacity:0;pointer-events:none;transition:opacity .2s ease;
}
.ft-lbx.is-open{opacity:1;pointer-events:auto}
.ft-lbx img{
  max-width:100%;max-height:94vh;width:auto;height:auto;object-fit:contain;
  border-radius:4px;box-shadow:0 20px 60px rgba(0,0,0,.5);
}
.ft-lbx-close{
  position:absolute;top:18px;right:22px;width:38px;height:38px;border:0;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:22px;line-height:1;cursor:pointer;
}
.ft-lbx-close:hover{background:rgba(255,255,255,.26)}
.ft-lbx-nav{
  position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;
  border:0;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;
  font-size:20px;line-height:1;cursor:pointer;
}
.ft-lbx-nav:hover{background:rgba(255,255,255,.28)}
.ft-lbx-nav.prev{left:18px}
.ft-lbx-nav.next{right:18px}
.ft-lbx-num{
  position:absolute;bottom:20px;left:50%;transform:translateX(-50%);
  font-size:12.5px;color:rgba(255,255,255,.8);letter-spacing:.6px;font-variant-numeric:tabular-nums;
}

/* 题材 / 风格 / 器材：详情页也把标签露出来，能直接点进归档 */
.ft-termrow{display:flex;flex-wrap:wrap;gap:6px 18px;margin:-8px 0 18px}
.ft-termgrp{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.ft-termgrp em{font-style:normal;font-size:11.5px;color:var(--muted)}
.ft-term{
  font-size:12px;line-height:1.6;color:var(--ink-2);background:#f3f6f3;
  border:1px solid #e4eae5;border-radius:999px;padding:2px 10px;
}
.ft-term:hover{background:var(--accent);border-color:var(--accent);color:#fff}
.ft-crit{color:var(--accent)}

.ft-single{display:grid;grid-template-columns:1fr 320px;gap:26px;align-items:start}
/*
 * grid 子项默认 min-width:auto，里面只要有「一排缩略图」这种不肯压缩的内容，
 * 整栏就会被撑到比轨道还宽，窄屏直接横向溢出。归零后交给内部滚动条处理。
 */
.ft-single>*{min-width:0}
.ft-article{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:26px 28px 30px;
}
.ft-breadcrumb{font-size:12.5px;color:var(--muted);margin-bottom:14px}
.ft-breadcrumb a{color:var(--muted)}
.ft-breadcrumb span{margin:0 6px;color:#c3c9cf}

.ft-title{font-size:24px;line-height:1.45;margin-bottom:14px;letter-spacing:-.2px}
.ft-subline{font-size:12.5px;color:var(--muted);display:flex;gap:14px;flex-wrap:wrap;margin-bottom:20px}

.ft-spec{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-2);
  border:1px solid var(--line-2);border-radius:8px;overflow:hidden;margin:0 0 22px;
}
.ft-spec div{background:#fafbfb;padding:11px 13px}
.ft-spec dt{font-size:11.5px;color:var(--muted);margin-bottom:3px}
.ft-spec dd{margin:0;font-size:13.5px;font-weight:500}

.ft-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:22px}
.ft-gallery a{border-radius:6px;overflow:hidden;display:block;aspect-ratio:4/3;background:#eef0f1}
.ft-gallery img{width:100%;height:100%;object-fit:cover}

.ft-content{font-size:15px;line-height:1.85;color:var(--ink-2)}
.ft-content h2{font-size:19px;margin:28px 0 12px}
.ft-content h3{font-size:16px;margin:24px 0 10px}
.ft-content img{border-radius:8px;margin:14px 0}
.ft-content a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.ft-content blockquote{
  margin:18px 0;padding:12px 16px;border-left:3px solid var(--accent-2);
  background:#fafbf9;color:var(--muted);border-radius:0 6px 6px 0;
}
.ft-content table{width:100%;border-collapse:collapse;font-size:13.5px;margin:16px 0}
.ft-content th,.ft-content td{border:1px solid var(--line);padding:8px 10px;text-align:left}
.ft-content th{background:#f7f8f8}

.ft-related{margin-top:30px;padding-top:20px;border-top:1px solid var(--line-2)}
.ft-related h3{font-size:14px;margin-bottom:10px}
.ft-related li{font-size:13.5px;padding:7px 0;border-bottom:1px dashed var(--line-2)}
.ft-related li:last-child{border-bottom:0}

/* 侧栏 */
.ft-side{position:sticky;top:84px;display:flex;flex-direction:column;gap:14px}
.ft-panel-box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.ft-panel-box h3{font-size:13.5px;margin-bottom:12px}
.ft-author{display:flex;gap:10px;align-items:center}
.ft-author img{border-radius:50%}
/* 统一头像：底色首字母圆牌垫底，图片加载成功盖住它，失败 onerror 隐藏 */
.ft-ava{position:relative;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;background:var(--accent);color:#fff;font-size:15px;font-weight:600;line-height:1}
.ft-ava .i{position:relative;z-index:0}
.ft-ava img{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;margin:0;border-radius:50%}
.ft-author .nm{font-size:13.5px;font-weight:600}
.ft-author .rl{font-size:11.5px;color:var(--muted)}
.ft-panel-box .kv{display:flex;justify-content:space-between;font-size:12.5px;padding:7px 0;border-bottom:1px dashed var(--line-2)}
.ft-panel-box .kv:last-child{border-bottom:0}
.ft-panel-box .kv span{color:var(--muted)}

/* 短代码样式补充（插件已内联，这里做主题级覆盖） */
.fs-lock,.fs-pan{border-radius:8px}
.fs-lock p:last-child{margin-bottom:0}

/* ── 分页 ─────────────────────────────────────── */
.ft-pager{display:flex;gap:6px;justify-content:center;margin:32px 0 0;flex-wrap:wrap}
.ft-pager .page-numbers{
  min-width:34px;height:34px;padding:0 10px;border-radius:7px;
  border:1px solid var(--line);background:#fff;display:inline-flex;
  align-items:center;justify-content:center;font-size:13px;color:var(--ink-2);
}
.ft-pager .page-numbers.current{background:var(--accent);border-color:var(--accent);color:#fff}
.ft-pager .page-numbers.dots{border:0;background:transparent}

/* ── 评论（小红书式布局）──────────────────────── */
.ft-comments{margin-top:26px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px 26px}
.cmt-title{font-size:14px;font-weight:500;color:var(--ink-2);margin-bottom:18px}
.cmt-list,.cmt-list ul{list-style:none;margin:0;padding:0}
.cmt-list > li{padding:16px 0;border-bottom:1px solid var(--line-2)}
.cmt-list > li:last-child{border-bottom:0}
.cmt-in{display:flex;gap:12px;align-items:flex-start}
.cmt-ava{flex:none;line-height:0}
/* ft-ava 是首字母垫底+图片覆盖的统一结构，字体行高不能被外层 line-height:0 吃掉 */
.cmt-ava .ft-ava{line-height:1}
.cmt-ava img{border-radius:50%;display:block}
.cmt-main{flex:1;min-width:0}
.cmt-head{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink)}
.cmt-badge{
  font-size:10.5px;font-weight:500;color:#d48806;background:#fdf2d0;
  border-radius:4px;padding:1px 5px;flex:none;
}
.cmt-text{font-size:13.5px;color:var(--ink-2);line-height:1.65;margin-top:3px;word-wrap:break-word}
.cmt-text p{margin:0}
.cmt-foot{display:flex;align-items:center;gap:16px;margin-top:7px;font-size:12px;color:var(--muted)}
.cmt-time{flex:none}
.cmt-foot .comment-reply-link{color:var(--muted);font-size:12px}
.cmt-foot .comment-reply-link:hover{color:var(--ink)}
/* 点赞按钮 */
.cmt-like{
  display:inline-flex;align-items:center;gap:4px;border:0;background:none;
  font-size:12px;color:var(--muted);cursor:pointer;padding:0;line-height:1;
}
.cmt-like:hover{color:var(--ink)}
.cmt-like.is-liked{color:#e5484d}
.cmt-like.is-liked svg{fill:#e5484d;stroke:#e5484d}
/* 子回复：缩进 + 小头像 + 竖线 */
.cmt-list .children{margin:10px 0 0 15px;padding-left:12px;border-left:2px solid var(--line-2)}
.cmt-list .children li{padding:10px 0}
.cmt-list .children .cmt-ava img{border-radius:50%}
.cmt-list .children .cmt-head{font-size:12.5px}
.cmt-list .children .cmt-text{font-size:13px}
.cmt-closed{font-size:12.5px;color:var(--muted)}
.cmt-note{font-size:12px;color:var(--muted);margin:0 0 8px}
.cmt-login-hint{margin-top:18px;padding:18px 20px;background:var(--soft);border:1px dashed var(--line);border-radius:10px;text-align:center}
.cmt-login-hint p{margin:0 0 12px;font-size:13.5px;color:var(--muted)}
.cmt-login-hint .ft-btn{display:inline-block}
@media (max-width:640px){
  .ft-comments{padding:16px 16px}
  .cmt-list .children{margin-left:6px;padding-left:10px}
}
.comment-respond{margin-top:16px}
.comment-respond{margin-top:16px}
.comment-form textarea{
  width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;
  font:inherit;font-size:13.5px;min-height:90px;resize:vertical;
}
.comment-form input[type=text],.comment-form input[type=email],.comment-form input[type=url]{
  width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 12px;font:inherit;font-size:13.5px;
}

/* ── 页脚 ─────────────────────────────────────── */
.ft-footer{background:var(--card);border-top:1px solid var(--line);padding:26px 0 30px;margin-top:20px}
.ft-footer-in{display:flex;gap:18px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.ft-footer-links{display:flex;gap:16px;flex-wrap:wrap}
.ft-footer-links a{color:var(--muted)}
.ft-footer .beian{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.ft-footer .beian span{border:1px solid var(--line);border-radius:4px;padding:2px 8px}
.ft-footer .beian a{color:var(--muted);text-decoration:none}
.ft-footer .beian a:hover{color:var(--ink);text-decoration:underline}

/* ── 空状态 ───────────────────────────────────── */
.ft-empty{
  text-align:center;padding:60px 20px;background:var(--card);
  border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);font-size:13.5px;
}
/* 收尾提示：内容全在精选里时用，不需要那么大的空框 */
.ft-empty.is-end{padding:20px;background:transparent;border:0;font-size:12.5px}

/* ── 导航当前项（WordPress 菜单输出）──────────── */
.ft-nav .current-menu-item > a,
.ft-nav .current_page_item > a,
.ft-nav .current-menu-ancestor > a{
  color:var(--accent);border-bottom-color:var(--accent);font-weight:600;
}

/* ── 列表行作为链接时 ─────────────────────────── */
a.ft-row{color:inherit;text-decoration:none}
a.ft-row:hover{background:#fafbf9;border-radius:6px;color:var(--ink)}
a.ft-row:hover .t{color:var(--accent);filter:brightness(1.1)}
.ft-row .t{display:block;transition:color .15s ease,filter .15s ease}

/* ── 评论表单细节 ─────────────────────────────── */
.comment-form label{display:block;font-size:12.5px;color:var(--muted);margin:10px 0 4px}
.comment-form .form-submit{margin-top:12px}
.comment-form .ft-btn{border:0}


/* ── 响应式 ───────────────────────────────────── */
@media (max-width:1024px){
  .ft-single{grid-template-columns:1fr}
  .ft-side{position:static}
  .ft-grid.c4{grid-template-columns:repeat(3,1fr)}
  .ft-cols{grid-template-columns:1fr 1fr}
  .ft-cols .ft-panel:last-child{grid-column:1 / -1}
}
@media (max-width:780px){
  /*
   * 窄屏顶栏：Logo / 会员按钮 / 菜单按钮 三样挤在一行，390 宽时会多出十几像素，
   * 整页跟着可以左右晃 —— 照片页看着就像「两边没对齐」。这里统一压一档。
   */
  .ft-header-in{gap:10px;padding:0 14px}
  .ft-logo{font-size:16px;min-width:0;overflow:hidden;text-overflow:ellipsis}
  .ft-head-right{gap:8px;min-width:0}
  .ft-head-right>.ft-btn{height:32px;padding:0 12px;font-size:13px;white-space:nowrap}
  .ft-menu-toggle{flex:none}
  .ft-nav,.ft-search{display:none}
  .ft-menu-toggle{display:flex}
  .ft-header.is-open .ft-nav{
    display:flex;position:absolute;left:0;right:0;top:64px;
    flex-direction:column;gap:2px;background:#fff;border-bottom:1px solid var(--line);padding:6px 20px 12px;
  }
  .ft-header.is-open .ft-nav a{display:block;border-radius:10px;background:none;border:0;padding:11px 6px}
  .ft-header.is-open .ft-nav a{padding:11px 0;border-bottom:1px solid var(--line-2)}
  .cmp{max-height:62vh}
  .ft-grid.c4,.ft-grid.c3{grid-template-columns:repeat(2,1fr)}
  .ft-feature{padding:16px 14px 18px}
  .ft-feature-head h2{font-size:17px}
  .ft-feature-grid{grid-template-columns:1fr 1fr;gap:14px}
  .ft-feature-grid .f-card:first-child{grid-column:1 / -1}
  .ft-feature-grid .f-card:first-child .f-thumb{aspect-ratio:16/9}
  /* 只有两张时首卡不跨列，否则右边空掉半行 */
  .ft-feature.is-few .ft-feature-grid .f-card:first-child{grid-column:auto}
  .ft-feature.is-few .ft-feature-grid .f-card:first-child .f-thumb{aspect-ratio:16/10}
  .ft-cols{grid-template-columns:1fr}
  .masonry,.ft-works{--m-cols:2}
  .ft-spec{grid-template-columns:repeat(2,1fr)}
  .ft-gallery{grid-template-columns:repeat(2,1fr)}
  .ft-article{padding:20px 18px 24px}
  .ft-title{font-size:19px}
}
@media (max-width:460px){
  .ft-grid.c4,.ft-grid.c3{grid-template-columns:1fr}
  .ft-feature-grid{grid-template-columns:1fr}
  .ft-feature-grid .f-card:first-child{grid-column:auto}
  .ft-feature-head{flex-wrap:wrap;row-gap:4px}
  .ft-feature-head .more{margin-left:0;width:100%}
  .ft-footer .beian{margin-left:0;width:100%}
}

/* ── 会员页 ───────────────────────────────────── */
.ft-vip-head{text-align:center;padding:34px 0 24px}
.ft-vip-head .ft-title{font-size:27px;margin-bottom:8px}
.ft-vip-sub{color:var(--muted);font-size:13.5px;line-height:1.75;max-width:560px;margin:0 auto}
.ft-vip-state{
  margin-top:14px;display:inline-block;padding:7px 15px;border-radius:999px;
  background:var(--accent-2);color:var(--ink-2);font-size:12.5px;
}
.ft-vip-state.is-vip{background:#e7f1e9;color:#2f6b3d;font-weight:600}
.ft-vip-state a{color:var(--accent);text-decoration:underline}

.ft-plans{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:stretch;margin:6px 0 28px}
.ft-plan{
  position:relative;background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:24px 20px 20px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;
}
.ft-plan.is-featured{
  border-color:var(--accent);
  box-shadow:0 2px 4px rgba(75,99,80,.10),0 10px 26px rgba(75,99,80,.10);
}
.ft-plan-flag{
  position:absolute;top:-11px;left:50%;transform:translateX(-50%);
  background:var(--accent);color:#fff;font-size:11.5px;padding:3px 12px;
  border-radius:999px;white-space:nowrap;
}
.ft-plan-name{font-size:15px;margin-bottom:10px;color:var(--ink)}
.ft-plan-price{display:flex;align-items:baseline;gap:2px;color:var(--ink)}
.ft-plan-price .cur{font-size:16px;font-weight:600}
.ft-plan-price .num{font-size:32px;font-weight:700;letter-spacing:-.5px;line-height:1}
.ft-plan-price .per{font-size:12.5px;color:var(--muted);margin-left:4px}
.ft-plan-note{font-size:12px;color:var(--muted);margin:9px 0 16px;min-height:18px}
.ft-plan-perks{
  list-style:none;padding:16px 0 0;margin:0 0 18px;
  border-top:1px solid var(--line-2);
  flex:1; /* 权益条数不同也能让按钮落在同一水平线 */
}
.ft-plan-perks li{
  font-size:12.5px;color:var(--ink-2);padding:5px 0 5px 18px;
  position:relative;line-height:1.55;
}
.ft-plan-perks li::before{
  content:"✓";position:absolute;left:0;top:5px;
  color:var(--accent);font-size:12px;font-weight:700;
}
.ft-plan-btn{
  display:block;text-align:center;padding:11px;border-radius:7px;
  background:var(--accent);color:#fff;font-size:13.5px;font-weight:600;
  text-decoration:none;border:0;transition:filter .15s;
}
.ft-plan-btn:hover{filter:brightness(1.08);color:#fff}
.ft-plan-btn.is-off,.ft-plan-btn.is-current{
  background:#eef0f2;color:var(--muted);cursor:not-allowed;font-weight:500;
}
.ft-plan-btn.is-off:hover{filter:none}
/* 已开通但可续费/升级：弱化主色，仍可点 */
.ft-plan-btn.is-renew{
  background:transparent;color:var(--accent);
  border:1px solid var(--accent);
}
.ft-plan-btn.is-renew:hover{background:var(--accent);color:#fff;filter:none}

.ft-vip-warn{
  background:#fffaf0;border:1px solid #f0e3c4;border-radius:var(--radius);
  padding:14px 16px;font-size:12.5px;line-height:1.75;color:#7a5c15;margin-bottom:28px;
}
.ft-vip-warn strong{display:block;margin-bottom:3px;color:#5d4410}

.ft-h2{font-size:17px;margin-bottom:14px;color:var(--ink)}
.ft-vip-compare{margin-bottom:30px}
.ft-table{
  width:100%;border-collapse:collapse;background:var(--card);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  font-size:12.8px;
}
.ft-table th,.ft-table td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line-2)}
.ft-table thead th{
  background:#fafbfb;font-weight:600;font-size:12.5px;color:var(--ink-2);
}
.ft-table tbody tr:last-child td{border-bottom:0}
.ft-table .hl{background:#f4f8f5;color:#2f6b3d}
.ft-table .yes{color:#2f6b3d;font-weight:600}
.ft-table .no{color:#b9bec5}

.ft-vip-faq details{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:0 16px;margin-bottom:10px;
}
.ft-vip-faq summary{
  cursor:pointer;padding:13px 0;font-size:13px;color:var(--ink);font-weight:500;
  list-style:none;
}
.ft-vip-faq summary::-webkit-details-marker{display:none}
.ft-vip-faq summary::after{content:"+";float:right;color:var(--muted);font-weight:400}
.ft-vip-faq details[open] summary::after{content:"−"}
.ft-vip-faq details[open] summary{border-bottom:1px solid var(--line-2)}
.ft-vip-faq p{
  font-size:12.8px;color:var(--ink-2);line-height:1.8;padding:12px 0 15px;margin:0;
}

@media (max-width:900px){
  .ft-plans{grid-template-columns:1fr;gap:14px}
  .ft-plan.is-featured{order:-1}
  .ft-vip-head{padding:24px 0 18px}
  .ft-vip-head .ft-title{font-size:22px}
  .ft-table{font-size:12px}
  .ft-table th,.ft-table td{padding:9px 10px}
}

/* ── 独立页面 / 正文排版 ─────────────────────── */
.ft-page{
  background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:26px 30px 30px;max-width:860px;margin:0 auto;
}
.ft-page.is-wide{max-width:none;padding:22px}
.ft-page-head{border-bottom:1px solid var(--line-2);padding-bottom:14px;margin-bottom:20px}
.ft-page-head h1{font-size:23px;line-height:1.4;margin:0 0 6px}
.ft-page-head .sub{font-size:12.5px;color:var(--muted)}
.ft-page-cover{margin:0 0 20px;border-radius:8px;overflow:hidden}
.ft-page-cover img{width:100%;height:auto;display:block}
.ft-page-nav{
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-top:1px solid var(--line-2);margin-top:26px;padding-top:16px;font-size:13px;
}
.ft-page-nav a{color:var(--ink-2);max-width:48%;line-height:1.5}
.ft-page-nav a:hover{color:var(--accent)}

.ft-prose{font-size:14.5px;line-height:1.9;color:var(--ink-2)}
.ft-prose > *:first-child{margin-top:0}
.ft-prose h2{font-size:18px;margin:30px 0 12px;color:var(--ink);line-height:1.45}
.ft-prose h3{font-size:15.5px;margin:24px 0 10px;color:var(--ink)}
.ft-prose p{margin:0 0 14px}
.ft-prose a{color:var(--accent);border-bottom:1px solid var(--accent-2)}
.ft-prose a:hover{border-bottom-color:var(--accent)}
/* 全局 ul,ol 被 reset 成 list-style:none，正文里必须显式恢复，否则有序列表的序号全丢 */
.ft-prose ul,.ft-prose ol{margin:0 0 16px;padding-left:24px;list-style-position:outside}
.ft-prose ul{list-style-type:disc}
.ft-prose ul ul{list-style-type:circle;margin:6px 0 6px}
.ft-prose ol{list-style-type:decimal}
.ft-prose ol ol{list-style-type:lower-alpha;margin:6px 0 6px}
.ft-prose li{margin-bottom:7px;padding-left:2px}
.ft-prose li::marker{color:var(--accent);font-weight:600}
/* 页面正文首段做导语：稍大稍深，和下面的小标题拉开层次 */
.ft-prose > p:first-of-type{font-size:15.5px;color:var(--ink);line-height:1.95}
.ft-prose img{max-width:100%;height:auto;border-radius:8px;display:block;margin:16px auto}
.ft-prose blockquote{
  margin:18px 0;padding:12px 18px;border-left:3px solid var(--accent);
  background:#f6f8f6;color:var(--ink-2);border-radius:0 6px 6px 0;
}
.ft-prose blockquote p:last-child{margin-bottom:0}
.ft-prose code{
  background:#f2f4f3;border:1px solid var(--line-2);border-radius:4px;
  padding:1px 5px;font-size:12.8px;
}
.ft-prose pre{
  background:#22282a;color:#e6e9e6;padding:14px 16px;border-radius:8px;
  overflow:auto;font-size:12.5px;line-height:1.7;margin:0 0 16px;
}
.ft-prose pre code{background:transparent;border:0;padding:0;color:inherit}
.ft-prose table{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:13px}
.ft-prose th,.ft-prose td{border:1px solid var(--line);padding:9px 12px;text-align:left}
.ft-prose th{background:#f6f8f6;font-weight:600;color:var(--ink)}
.ft-prose hr{border:0;border-top:1px solid var(--line);margin:26px 0}

/* ── WooCommerce 基础对齐（不覆盖组件，只修排版） ── */
.ft-page .woocommerce{font-size:14px;color:var(--ink-2)}
.ft-page .woocommerce h2,.ft-page .woocommerce h3{color:var(--ink)}
.ft-page .woocommerce table.shop_table{
  border:1px solid var(--line);border-radius:8px;border-collapse:separate;
  border-spacing:0;overflow:hidden;margin-bottom:18px;width:100%;
}
.ft-page .woocommerce table.shop_table th{background:#f6f8f6;font-size:13px}
.ft-page .woocommerce table.shop_table th,
.ft-page .woocommerce table.shop_table td{padding:11px 13px;border-color:var(--line-2)}
.ft-page .woocommerce .button,
.ft-page .woocommerce button.button,
.ft-page .woocommerce input.button,
.ft-page .woocommerce #place_order{
  background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:7px;
  padding:10px 20px;font-size:14px;font-weight:600;line-height:1.4;cursor:pointer;
}
.ft-page .woocommerce .button:hover,
.ft-page .woocommerce button.button:hover,
.ft-page .woocommerce #place_order:hover{background:#3f5444;color:#fff}
.ft-page .woocommerce .button.alt{background:#2f6b3d;border-color:#2f6b3d}
.ft-page .woocommerce form .form-row input.input-text,
.ft-page .woocommerce form .form-row textarea,
.ft-page .woocommerce .select2-container .select2-selection{
  border:1px solid var(--line);border-radius:6px;padding:9px 11px;font-size:14px;background:#fff;
}
.ft-page .woocommerce form .form-row label{font-size:13px;color:var(--ink-2)}
.ft-page .woocommerce .woocommerce-message,
.ft-page .woocommerce .woocommerce-info,
.ft-page .woocommerce .woocommerce-error{
  border-radius:7px;border-top:0;padding:12px 16px 12px 44px;font-size:13px;
}
.ft-page .woocommerce .woocommerce-message{background:#eef5ef;border:1px solid #cfe4d4;color:#2f6b3d}
.ft-page .woocommerce .woocommerce-info{background:#f2f5f8;border:1px solid #dbe3ea;color:#3a4a5a}
.ft-page .woocommerce .woocommerce-error{background:#fdf0ef;border:1px solid #f3cfcc;color:#a3392f}
.ft-page .woocommerce .price{color:var(--accent);font-weight:600}
.ft-page .woocommerce .wc-block-components-button{
  background:var(--accent);border-radius:7px;font-size:14px;
}
.ft-page .woocommerce .wc-block-cart,
.ft-page .woocommerce .wc-block-checkout{font-size:14px}

@media (max-width:760px){
  .ft-page{padding:20px 16px 24px}
  .ft-page.is-wide{padding:14px}
  .ft-page-head h1{font-size:19px}
  .ft-prose{font-size:14px}
}

/* ── 顶栏积分与会员态 ────────────────────────── */
.ft-head-pts{
  font-size:12.5px;color:var(--ink-2);background:#f2f5f2;border:1px solid var(--line-2);
  border-radius:20px;padding:5px 11px;white-space:nowrap;
}
.ft-head-pts:hover{color:var(--accent);border-color:#cfd9d1}
.ft-btn.is-vip{
  background:#f6f2e8;border-color:#e6dcc4;color:#7a5f22;font-weight:600;
}
.ft-btn.is-vip:hover{background:#f1ebdb;border-color:#dccfae}

/* ── 教程页（单页与归档）───────────────────── */
.tut-head{padding:0 0 16px;border-bottom:1px solid var(--line-2);margin-bottom:20px}
.tut-head h1{font-size:24px;line-height:1.42;margin:0 0 10px}
.tut-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.tut-meta span{background:#f2f5f2;border:1px solid var(--line-2);border-radius:16px;padding:3px 10px}
.tut-meta span.diff-beginner{background:#eef5ef;border-color:#cfe4d4;color:#2f6b3d}
.tut-meta span.diff-intermediate{background:#f4f2e8;border-color:#e6dfc4;color:#7a5f22}
.tut-meta span.diff-commercial{background:#f6eeee;border-color:#e6d0d0;color:#8c3a3a}
.tut-steps{margin:0 0 24px;counter-reset:step}
.tut-step{
  display:flex;gap:14px;padding:16px 0;border-bottom:1px dashed var(--line-2);counter-increment:step;
}
.tut-step:last-child{border-bottom:0}
.tut-step::before{
  content:counter(step);flex:none;width:26px;height:26px;border-radius:50%;
  background:var(--accent);color:#fff;font-size:13px;font-weight:600;
  display:flex;align-items:center;justify-content:center;margin-top:2px;
}
.tut-step-body{flex:1;min-width:0}
.tut-step-body h3{font-size:15px;margin:0 0 6px;color:var(--ink)}
.tut-step-body p{font-size:13.5px;line-height:1.85;color:var(--ink-2);margin:0 0 8px}
.tut-step-body img{max-width:100%;height:auto;border-radius:8px;display:block;margin:10px 0}
.tut-gate{
  background:#fbf9f3;border:1px solid #e8dfc6;border-radius:10px;padding:22px 24px;text-align:center;
  margin:6px 0 22px;
}
.tut-gate h3{font-size:16px;margin:0 0 8px;color:#7a5f22}
.tut-gate p{font-size:13px;color:#6b6250;line-height:1.75;margin:0 auto 14px;max-width:520px}
.tut-gate .ft-btn.solid{background:var(--accent);border-color:var(--accent);color:#fff;display:inline-flex}
.tut-gate .fs-lock-note{font-size:12px;color:#8b8370;margin-top:10px}
.tut-toc{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 18px;margin-bottom:18px}
.tut-toc b{display:block;font-size:13px;margin-bottom:8px}
.tut-toc ol{margin:0;padding-left:18px;font-size:13px;color:var(--ink-2);line-height:1.9}

/* ── 顶栏账号下拉菜单 ─────────────────────────── */
.ft-user{position:relative;display:flex}

/* 头像现在是 <a>：用 .ft-user 提高特异性，压住全局 a:hover 的变色 */
.ft-user .ft-user-btn{
  display:inline-flex;align-items:center;gap:7px;
  padding:4px 9px 4px 4px;border:1px solid var(--line);border-radius:999px;
  background:var(--card);color:var(--ink);cursor:pointer;text-decoration:none;
  font-size:13.5px;line-height:1.4;transition:background .15s,border-color .15s;
}
.ft-user .ft-user-btn:hover,
.ft-user .ft-user-btn:focus{color:var(--ink)}
.ft-user .ft-user-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ft-user .ft-user-btn:hover,
.ft-user.is-open .ft-user-btn{background:#f5f7f5;border-color:#cfd9d1}
.ft-user-ava{
  flex:none;width:26px;height:26px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--accent);color:#fff;font-size:12.5px;font-weight:600;letter-spacing:0;
}
.ft-user-btn.is-vip .ft-user-ava{background:linear-gradient(135deg,#c9a94b,#a8871f)}
.ft-user-name{max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ft-user-tag{
  flex:none;font-size:10.5px;line-height:1.5;padding:0 5px;border-radius:4px;
  background:#f6f2e8;border:1px solid #e6dcc4;color:#7a5f22;font-weight:600;
}
.ft-user-caret{flex:none;color:var(--muted);transition:transform .18s}
.ft-user:hover .ft-user-caret,.ft-user.is-open .ft-user-caret{transform:rotate(180deg)}
.ft-user.is-muted .ft-user-caret{transform:none}

.ft-user-menu{
  position:absolute;top:100%;right:0;z-index:60;width:238px;margin-top:8px;
  background:var(--card);border:1px solid var(--line);border-radius:11px;
  box-shadow:0 2px 4px rgba(16,24,40,.04),0 12px 32px rgba(16,24,40,.11);
  padding:0;overflow:hidden;
  opacity:0;visibility:hidden;transform:translateY(-6px);pointer-events:none;
  transition:opacity .16s ease,transform .16s ease,visibility .16s;
}
/* 按钮与菜单之间的空隙也要能接住鼠标，否则一移开就收起 */
.ft-user-menu::before{content:"";position:absolute;left:0;right:0;top:-14px;height:14px}

.ft-user:hover .ft-user-menu,
.ft-user.is-open .ft-user-menu{
  opacity:1;visibility:visible;transform:none;pointer-events:auto;
}

/* 按 Esc 后压制住 :hover，指针不动就保持关着；重新进入会自动解除 */
.ft-user.is-muted .ft-user-menu{
  opacity:0;visibility:hidden;transform:translateY(-6px);pointer-events:none;
}

.ft-user-card{
  padding:13px 15px 12px;background:#f7f9f7;border-bottom:1px solid var(--line-2);
  display:flex;flex-direction:column;gap:2px;
}
.ft-user-card b{font-size:13.5px;line-height:1.5;word-break:break-all}
.ft-user-mail{font-size:11.5px;color:var(--muted);word-break:break-all}
.ft-user-state{font-size:11.5px;color:var(--muted);margin-top:3px}
.ft-user-state.is-vip{color:#7a5f22;font-weight:600}

.ft-user-list{padding:5px}
.ft-user-list a{
  display:flex;align-items:center;gap:9px;
  padding:8px 10px;border-radius:6px;font-size:13.5px;color:var(--ink-2);line-height:1.5;
}
.ft-user-list a:hover{background:#f4f6f4;color:var(--accent)}
.ft-user-list .ico{
  flex:none;width:16px;text-align:center;font-size:12px;color:var(--muted);
}
.ft-user-list a:hover .ico{color:var(--accent)}

.ft-user-foot{border-top:1px solid var(--line-2);padding:5px}
.ft-user-quit{
  display:block;padding:8px 10px;border-radius:6px;font-size:13.5px;
  color:#a3392f;text-align:center;
}
.ft-user-quit:hover{background:#fdf0ef;color:#8f2f26}

@media (max-width:780px){
  .ft-user-name{display:none}
  .ft-user .ft-user-btn{padding:4px 8px 4px 4px;gap:5px}
  .ft-user-menu{width:222px}
  .ft-user-tag{display:none}
}

/* 窄屏：登录用户的「开通/续费会员」入口收进账号下拉，避免顶栏挤爆 */
@media (max-width:780px){
  .logged-in .ft-head-right > .ft-btn.solid{display:none}
  .ft-head-right{gap:8px}
  .ft-head-pts{padding:4px 9px;font-size:12px}
}
@media (max-width:420px){
  .ft-head-pts{display:none}
}

.ft-user-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:3px;flex-wrap:wrap}
.ft-user-meta .ft-user-state{margin-top:0}
.ft-user-pts{
  font-size:11.5px;color:var(--ink-2);background:#eef2ee;border:1px solid var(--line-2);
  border-radius:10px;padding:1px 7px;white-space:nowrap;
}

/* ── 站内搜索框（页面内大号版）────────────────── */
.ft-searchbar{display:flex;gap:8px;max-width:460px}
.ft-searchbar input{
  flex:1;min-width:0;height:42px;border:1px solid var(--line);border-radius:8px;
  padding:0 14px;font:inherit;font-size:13.5px;background:#fff;color:var(--ink);
}
.ft-searchbar input:focus{
  outline:0;border-color:var(--accent);box-shadow:0 0 0 3px rgba(75,99,80,.1);
}
.ft-searchbar .ft-btn{height:42px;padding:0 20px;font-size:14px}

/* ── 搜索页：无结果 / 空关键词 ─────────────────── */
.ft-searchbox{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:38px 26px;text-align:center;
}
.ft-searchbox p{font-size:13.5px;color:var(--muted);line-height:1.8;margin:0 0 6px}
.ft-searchbox p.big{font-size:16px;color:var(--ink);font-weight:600;margin-bottom:8px}
.ft-searchbox .ft-searchbar{margin:18px auto 0}
.ft-searchbox-links{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}

/* ── 404 ──────────────────────────────────────── */
.ft-404{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:52px 26px 46px;text-align:center;margin-bottom:8px;
}
.ft-404 .code{
  font-size:64px;line-height:1;font-weight:700;color:#bccdc1;
  letter-spacing:2px;margin-bottom:14px;
}
.ft-404 h1{font-size:22px;margin-bottom:10px}
.ft-404 p{font-size:13.5px;color:var(--muted);line-height:1.8;max-width:520px;margin:0 auto}
.ft-404 .ft-searchbar{margin:22px auto 0}
.ft-404-links{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}

/* ── 混合类型卡（搜索 / 404）───────────────────── */
.ft-kicker{
  flex:none;font-size:11.5px;font-weight:600;color:var(--accent);
  background:var(--accent-2);border-radius:4px;padding:1px 7px;
}
.ft-card--any .ft-card-meta{gap:7px;flex-wrap:wrap}

/* 无封面的占位：底色 + 类型名居中（作品/教程/资源缺图时用） */
.ft-card-ph{
  display:flex;align-items:center;justify-content:center;width:100%;height:100%;
  background:linear-gradient(135deg,#eef1ee,#e3e8e4);
  color:#9aa79d;font-size:13px;letter-spacing:2px;
}

/* 文章 / 页面通常没有封面，去掉灰块做成纯文字卡 */
.ft-card--flat{display:flex;align-items:center;background:#fafbf9;overflow:hidden}
.ft-card--flat .ft-card-body{width:100%;padding:22px 18px;position:relative;z-index:1}
.ft-card--flat .ft-card-title{height:auto;min-height:0;font-size:15px}
.ft-card--flat .ft-card-meta{margin-top:12px}
/* 右下角一行淡字，把空出来的地方填上，别让人以为图片没加载出来 */
.ft-card--flat::after{
  content:attr(data-type);
  position:absolute;right:12px;bottom:-6px;
  font-size:52px;font-weight:700;letter-spacing:2px;
  color:#eff2f0;pointer-events:none;z-index:0;
}
.ft-card--flat:hover::after{color:#e9eeea}

/* ── 归档页描述 ────────────────────────────────── */
.ft-arch-desc{
  font-size:13.5px;color:var(--muted);line-height:1.8;
  margin:-4px 0 16px;max-width:680px;
}

/* 仅供屏幕阅读器的文字（表单 label 用） */
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap;border:0;
}

@media (max-width:460px){
  .ft-404{padding:38px 18px 34px}
  .ft-404 .code{font-size:48px}
  .ft-404 h1{font-size:19px}
  .ft-searchbox{padding:28px 18px}
  .ft-searchbar{flex-wrap:wrap}
  .ft-searchbar .ft-btn{width:100%}
  /* 四个入口排成 2×2，别剩一个孤零零占一行 */
  .ft-404-links .ft-btn,.ft-searchbox-links .ft-btn{flex:1 1 calc(50% - 4px)}
}

/* ── 作品附件（作者投稿时上传的原片 / 打包文件）────── */
.ft-attach{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin:22px 0 4px;padding:14px 16px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
}
.ft-attach-ico{
  flex:none;width:44px;height:44px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  background:var(--accent-2);color:var(--accent);
  font-size:11px;font-weight:700;letter-spacing:.4px;
}
.ft-attach-main{flex:1 1 200px;min-width:0}
.ft-attach-name{
  font-size:13.5px;font-weight:600;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ft-attach-meta{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}

@media (max-width:460px){
  .ft-attach{padding:12px 14px;gap:10px}
  .ft-attach .ft-btn{flex:1 1 100%}
}
.ft-attach-lock{
  flex:none;font-size:12.5px;color:var(--muted);
  border:1px dashed var(--line);border-radius:6px;padding:8px 14px;
}

/* ── 首页轮播响应式 ───────────────────────────── */
@media (max-width:1024px){
  .ft-hero2-thumb{width:56px;height:38px}
}
@media (max-width:780px){
  /* 窄屏：缩略图整排去掉省空间，只留计数 + 圆点 + 手势 */
  .ft-hero2{height:clamp(380px,54vh,500px);border-radius:10px}
  .ft-hero2-thumbs{display:none}
  .ft-hero2-inner{padding-bottom:62px}
  .ft-hero2-ctl{padding-bottom:16px}
}
@media (max-width:560px){
  .ft-hero2{height:clamp(300px,48vh,360px)}
  .ft-hero2-title{font-size:22px}
  .ft-hero2-acts{margin-top:14px}
  .ft-hero2-acts .ft-hero2-btn{height:38px;padding:0 18px;font-size:13px}
  .ft-hero2-dots{gap:8px}
}

/* ── 论坛页（讨论汇总）────────────────────────── */
.ft-forum-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:16px;flex-wrap:wrap;margin:10px 0 20px;
}
.ft-forum-title{font-size:24px;letter-spacing:-.01em}
.ft-forum-sub{margin:7px 0 0;max-width:660px;font-size:13px;line-height:1.75;color:var(--muted)}

.ft-topics{display:flex;flex-direction:column;gap:6px;margin-top:16px}
.ft-topic{
  display:flex;align-items:center;gap:14px;padding:14px 16px;
  background:var(--card);border:1px solid var(--line);border-radius:9px;
  transition:border-color .18s,box-shadow .18s;
}
.ft-topic:hover{border-color:#ccd4d0;box-shadow:var(--shadow)}
.ft-topic-ico{
  flex:none;width:38px;height:38px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:600;
  background:var(--accent-2);color:var(--accent);
}
.ft-topic-main{flex:1 1 auto;min-width:0}
.ft-topic-t{
  display:block;font-size:14.5px;font-weight:600;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ft-topic-t:hover{color:var(--accent)}
.ft-topic-x{
  margin:4px 0 0;font-size:12.5px;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ft-topic-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px;font-size:11.5px;color:#98a1a8}
.ft-topic-c{
  flex:none;min-width:48px;text-align:center;
  font-size:11.5px;color:var(--muted);
}
.ft-topic-c b{
  display:block;font-size:16px;line-height:1.3;color:var(--ink-2);
  font-variant-numeric:tabular-nums;
}
.ft-topic-c.is-hot b{color:var(--price)}

@media (max-width:560px){
  .ft-forum-head{align-items:flex-start}
  .ft-topic{padding:12px;gap:10px}
  .ft-topic-ico{width:32px;height:32px;font-size:12px}
  .ft-topic-x{display:none}
  .ft-topic-meta{gap:9px}
}

/* 焦点可见（轮播可用键盘左右切换）*/
.ft-hero2:focus-visible{outline:2px solid #fff;outline-offset:-4px}

/* 系统开了「减少动态效果」：不缩放、不淡入 */
@media (prefers-reduced-motion: reduce){
  .ft-hero2-img{transition:none;transform:none}
  .ft-hero2-slide.is-active .ft-hero2-title,
  .ft-hero2-slide.is-active .ft-hero2-acts{animation:none}
  .ft-hero2-slide{transition:none}
}

/* ── 顶栏通知铃铛 ─────────────────────────────── */
.ft-bell{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;color:var(--ink-2);flex:0 0 auto;
  transition:background .18s,color .18s;
}
.ft-bell:hover{background:var(--accent-2);color:var(--accent)}
.ft-bell.has-new{color:var(--accent)}
.ft-bell-n{
  position:absolute;top:0;right:-1px;min-width:16px;height:16px;padding:0 4px;
  display:flex;align-items:center;justify-content:center;
  background:#c0392b;color:#fff;font-size:10.5px;line-height:1;
  border-radius:999px;font-variant-numeric:tabular-nums;
  box-shadow:0 0 0 2px var(--card);
}

/* ── 会员中心：通知卡片 ───────────────────────── */
.fs-nt-head{
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;margin-bottom:2px;
}
.fs-nt-head h3{font-size:15px;display:flex;align-items:center;gap:8px}
.fs-nt-badge{
  font-size:11.5px;font-weight:500;padding:2px 8px;border-radius:999px;
  background:var(--accent-2);color:var(--accent);
}
.fs-nt-all{font-size:12.5px;color:var(--muted);border-bottom:1px dotted var(--line)}
.fs-nt-all:hover{color:var(--accent);border-color:currentColor}

.fs-nt-list{margin:8px 0 0}
.fs-nt-item a{
  display:flex;gap:10px;align-items:flex-start;
  padding:12px 2px;border-radius:6px;transition:background .15s;
}
.fs-nt-item + .fs-nt-item a{border-top:1px solid var(--line-2)}
.fs-nt-item a:hover{background:#fafbfa}
.fs-nt-dot{
  flex:0 0 6px;width:6px;height:6px;border-radius:50%;
  background:var(--line);margin-top:8px;
}
.fs-nt-item.is-new .fs-nt-dot{background:var(--accent)}
.fs-nt-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.fs-nt-title{font-size:14px;color:var(--ink);line-height:1.5}
.fs-nt-item.is-new .fs-nt-title{font-weight:600}
.fs-nt-text{
  font-size:13px;color:var(--muted);line-height:1.65;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.fs-nt-meta{font-size:12px;color:#9aa4ad}
.fs-nt-more{margin:10px 0 0;font-size:13px}
.fs-nt-more a{color:var(--accent)}

/* ── 会员中心：邮件提醒开关 ───────────────────── */
/* form 不生成盒子，里面的卡片直接参与 .fs-acc-grid 的网格 */
.fs-nt-pref-form{display:contents}
.fs-nt-pref h3{font-size:15px;margin-bottom:4px}
.fs-nt-pref .fs-acc-muted{margin:0 0 8px}
/* 6 个开关排成 3 列 × 2 排，一行一行堆太占高度 */
.fs-nt-pref-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 18px;margin:0 0 6px}
.fs-nt-pref-row{
  display:flex;align-items:center;gap:9px;min-width:0;
  padding:9px 0;font-size:13.5px;color:var(--ink-2);cursor:pointer;
  border-top:1px solid var(--line-2);
}
.fs-nt-pref-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fs-nt-pref-row input{
  width:15px;height:15px;margin:0;
  accent-color:var(--accent);cursor:pointer;
}
.fs-nt-pref p{margin:14px 0 0}

/* 窄屏退列：3 列太挤就 2 列（手机上也保持 2 列，否则又变回 6 排很占高度） */
@media (max-width:760px){
  .fs-nt-pref-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}
}

@media (max-width:560px){
  .fs-nt-item a{padding:11px 0}
  .fs-nt-title{font-size:13.5px}
  .fs-nt-text{-webkit-line-clamp:3}
  .ft-bell{width:30px;height:30px}
}

/* ── 作者个人主页（author.php）────────────────── */
.ft-up{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:26px 28px;margin:22px 0 8px}
.ft-up-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.ft-up-id h1{font-size:22px;margin:0 0 6px}
.ft-up-meta{margin:0;font-size:12.5px;color:var(--muted)}
.ft-up-web{margin-left:auto;flex:none;font-size:13px;color:var(--accent);border:1px solid var(--accent);border-radius:7px;padding:6px 14px;white-space:nowrap}
.ft-up-web:hover{background:var(--accent-2)}
.ft-up-bio{margin:16px 0 0;font-size:14px;line-height:1.8;color:var(--ink-2)}
.ft-up-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.ft-up-tag{font-size:12.5px;color:var(--accent);background:var(--accent-2);border-radius:999px;padding:4px 14px;font-weight:600}
.ft-up-gear{margin:14px 0 0;font-size:13px;color:var(--ink-2)}
.ft-up-gear span{display:inline-block;margin-right:10px;font-size:12px;color:var(--muted);background:#f4f5f6;border-radius:5px;padding:2px 8px}
.ft-up-empty{text-align:center;padding:40px 20px;color:var(--muted)}
.ft-up-empty .ft-btn{margin-top:6px}
