/* Skill 社区（docs/62 P1，附录 D）。
   外观从已批准的设计稿 docs/design/skill-community-mockup-2026-09-26.html 搬过来：
   卡片 :269-291、精选大卡 :293-309、「我的 skill」面板 :204-258、手机布局 :359-480。
   设计稿里的 .card .hero .chip 这些名字应用里早被占了，所以这里一律加 -v140 后缀。
   没搬的：全局 reset、:root、顶栏样式、假数字、图标备选页——颜色全走 v120 的令牌。
   分区标题用应用已有的 .bf-head-v130，分类按钮用 .skills-goals-v130。 */

/* ---------- 顶栏按钮：图标 A 火花星轨 ---------- */
/* v123 把任务按钮插在最前面，这里的 inject() 每 2 秒把社区按钮挪回它前面；order 是兜底 */
.top-actions #communityBtn{order:-1}
.top-round-v130.community-btn-v140{position:relative;border:1px solid var(--line2);background:var(--surface);color:var(--text)}
.top-round-v130.community-btn-v140:hover{border-color:#55524a;background:var(--surface2);color:#fff}
/* 设计稿 :42：按 20px 画、线宽收到 1.53，和旁边 18px 的任务图标看起来一样粗 */
.top-round-v130.community-btn-v140 svg{width:20px;height:20px;stroke-width:1.53}
.top-round-v130.community-btn-v140:focus-visible{box-shadow:var(--ring);outline:none}
/* 会动的按钮：7 秒一轮，图标圆钮 → 撑开成「Skill 社区」字样 → 收回圆钮，用来招呼人，一直循环（见下面「一直循环」）。
   和 v121 的 skillBreathe-v130 一样是纯 CSS 关键帧，不靠 JS 计时。
   - 只动两层的 opacity / transform，外加按钮的 min-width。按钮是右边那排的第一个，.top-actions 靠右排，
     所以它只往左长：任务、语言、头像都不挪，居中的模式切换也不动（放不下整句的宽度见下面的断点）。
   - 宽度动的是 min-width：圆钮自己的 width（v121 的 clamp 38–43px）不变，min-width 从 38px（clamp 的下限）
     撑到整句的宽度再收回，这样圆钮的尺寸不用在这里再抄一遍。
   - 不动的时候（减少动态效果、手机、放不下、社区页上）就是这里的基础样式：只有图标的圆钮。
     全局的 prefers-reduced-motion 开关（index.html、v117）直接 animation:none，所以基础样式本身必须是完整的圆钮。
   - 整句的宽度按 Inter 550、12.5px 量：「Skill 社区」53px、「Skill Community」97px，两边各留 14px，再加 1px 描边。
     两层叠在同一格里；文字层比圆钮宽时向两边溢出，那时它是透明的，而且 pointer-events:none，点不到旁边的按钮。 */
.top-round-v130.community-btn-v140{display:inline-grid;grid-template-columns:minmax(0,1fr);place-items:center;border-radius:999px;--cbtn-full-v140:82px;animation:cbtnWidth-v140 7s cubic-bezier(.4,0,.2,1) infinite}
html[lang=en] .top-round-v130.community-btn-v140{--cbtn-full-v140:126px}
.cbtn-icon-v140{grid-area:1/1;display:flex;pointer-events:none;animation:cbtnIcon-v140 7s cubic-bezier(.4,0,.2,1) infinite}
.cbtn-text-v140{grid-area:1/1;pointer-events:none;white-space:nowrap;font-size:12.5px;font-weight:550;line-height:1;letter-spacing:0;opacity:0;animation:cbtnText-v140 7s cubic-bezier(.4,0,.2,1) infinite}
/* 三段动画同一时刻起步、同样 7 秒，所以一直是对齐的。百分比：1% = 70ms。
   0–40% 圆钮；40–46% 往左撑开，41–46% 图标缩小转走，42–48% 字样滑进来（字样看得清时按钮已经比字宽）；
   48–88% 停在字样上；88–94% 字样淡出，89–94% 图标转回来，91–97% 收回圆钮。
   两次交接都让两层叠着交替，中间不会闪出一个空胶囊。100% 就是只有图标的圆钮（也就是基础样式），每一轮都从圆钮接到下一轮。 */
@keyframes cbtnWidth-v140{
  0%,40%{min-width:38px}
  46%,91%{min-width:var(--cbtn-full-v140)}
  97%,100%{min-width:38px}
}
@keyframes cbtnIcon-v140{
  0%,41%{opacity:1;transform:none}
  46%,89%{opacity:0;transform:scale(.6) rotate(-45deg)}
  94%,100%{opacity:1;transform:none}
}
@keyframes cbtnText-v140{
  0%,42%{opacity:0;transform:translateX(8px)}
  48%,88%{opacity:1;transform:none}
  94%,100%{opacity:0;transform:scale(.92)}
}
/* 一直循环（infinite）是产品负责人明确要的（说过两次：一直转，好吸引用户注意），别改成转几轮就停。
   代价是宽屏触屏（iPad 横屏这种，不走下面手机那段）没有悬停，停不下来——知道这一点才这样定的。
   真要改成有限的：上面三处 infinite 一起换成同一个轮数（比如 3，约 21 秒）就行，100% 那一帧就是圆钮，转完正好停在圆钮上；
   tests/community-ui.test.mjs 和 tests/e2e/community-verify.mjs 里的循环检查跟着改。
   暂停（WCAG 2.2.2）：鼠标停在上面、键盘聚焦时停在当前这一帧 */
.top-round-v130.community-btn-v140:is(:hover,:focus-visible),
.community-btn-v140:is(:hover,:focus-visible) :is(.cbtn-icon-v140,.cbtn-text-v140){animation-play-state:paused}
/* 放不下整句的地方只留圆钮、不动：英文在 900px 以下挤不下「Skill Community」，会把居中的模式切换顶歪。
   手机（≤760px）两种语言都只留图标，见下面手机那段。 */
@media (max-width:899px){
  html[lang=en] .top-round-v130.community-btn-v140,
  html[lang=en] .community-btn-v140 :is(.cbtn-icon-v140,.cbtn-text-v140){animation:none}
}
/* 当前页（设计稿 :43-44）：金色描边、浅金底、外发光，底部一道 18×2 的金线。
   金线在设计稿里是 bottom:-13px，对应 64px 高的顶栏；应用顶栏高 clamp(61–81px)，
   所以偏移由 JS 按顶栏和按钮的实际位置算好，写进 --community-bar-v140。
   在社区页上不再招呼人：动画停掉，就是带金线的圆钮。 */
.top-round-v130.community-btn-v140.community-on-v140{border-color:var(--gold);background:rgba(255,200,97,.16);color:var(--gold);box-shadow:0 0 0 3px rgba(255,200,97,.1),0 0 22px rgba(255,200,97,.22)}
.top-round-v130.community-btn-v140.community-on-v140::after{content:"";position:absolute;left:50%;bottom:calc(-1 * var(--community-bar-v140,13px));width:18px;height:2px;margin-left:-9px;border-radius:2px;background:var(--gold);box-shadow:0 0 8px var(--glow);pointer-events:none}
.top-round-v130.community-btn-v140.community-on-v140,
.community-on-v140 :is(.cbtn-icon-v140,.cbtn-text-v140){animation:none}
/* 手机上 .top-actions .top-link 整排隐藏（index.html 的 ≤760px 规则），社区按钮要留着。
   手机上地方不够，只留图标圆钮、不动（和任务、语言两个圆钮一样 40×40）。 */
@media (max-width:760px){
  .top-actions #communityBtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-height:40px;padding:0;animation:none}
  .top-actions #communityBtn .cbtn-icon-v140{animation:none}
  .top-actions #communityBtn .cbtn-text-v140{display:none}
}
/* 社区页不是任何一种创作模式：顶栏的「快速创作」「导演模式」都不能像是选中的（设计稿 :33-35 两个都是普通胶囊）。
   「导演模式」按钮平时自带金边金字（v121-simple.css:208），摘掉 .on 也还像选中的那个，这里压回普通按钮的样子；
   导演模式的整页金色氛围、背景视频和顶栏金线也收起来。body.community-open-v140 由 afterRender 挂上、离开时摘掉，
   v121 的 applyModeChrome 再把对的那个点亮。和编辑器的 body.se-open-v141 是同一套（v141-skill-editor.css:37-41）。 */
body.community-open-v140 .mode button.v121-director-btn{border-color:transparent;background:transparent;color:var(--muted);box-shadow:none}
body.community-open-v140 .mode button.v121-director-btn:hover{color:#d6d6dc;background:transparent}
body.community-open-v140.v121-director{background-image:radial-gradient(900px 480px at 50% -160px,#17171b 0,#0e0e11 45%,#0a0a0c 100%);background-size:100% 100%;animation:none}
body.community-open-v140.v121-director .topbar{border-bottom-color:var(--line)}
body.community-open-v140 .v121-director-bg{display:none}
/* 回到顶部（owner 2026-09-29 第 7 条）：样子全照创作页的 .back-to-top-v130（v121-simple.css）；
   社区页开着时用社区自己的这一个（v140-community.js 的 syncTop，不靠滚动事件），全站那个藏起来，免得叠成两个 */
body.community-open-v140 #backToTop{display:none!important}
.top-btn-v140[hidden]{display:none}

/* ---------- 页面容器 ---------- */
/* 和创作页一样宽（产品负责人 2026-09-28：社区页太窄，要和首页同一个内容比例）。
   原来锁 1248（含左右 24）：宽屏上创作页越铺越开，社区页还停在 1200，1920 上窄 120、2560 上窄 760。
   左右边距一字不差用创作页 .app.app-wide-v130 那一句（v121-simple.css:734）：手机 16，1232–1800 之间正文 1200，
   再宽两边各留 300（1920 上 1320、2560 上 1960）。进社区页时 JS 摘掉 app-wide-v130（回创作页 v121 自己加回去），
   所以这里自己写一遍、不靠那个类；tests/community-ui.test.mjs 核对它和 v121 那句一样，改一处要两处一起改。 */
.app.community-app-v140{max-width:none;padding:22px clamp(16px,calc((100vw - 1200px) / 2),300px) 72px}
/* 卡片放几列按这一栏自己的宽度算（见文件后面「列数」一节的 @container），不按窗口宽度 */
.community-v140{min-width:0;container:cwrap-v140/inline-size}
.community-v140 [hidden]{display:none!important}

/* ---------- 通用小件 ---------- */
.btn-v140{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:42px;padding:0 18px;border-radius:999px;border:1px solid transparent;font-weight:600;font-size:14px;white-space:nowrap;cursor:pointer;background:none;color:var(--text)}
.btn-v140 svg{width:15px;height:15px;flex:none}
.btn-v140:disabled{opacity:.55;cursor:default}
.btn-gold-v140{background:linear-gradient(180deg,#ffd27a,#f2b545);color:#1a1307;box-shadow:0 10px 26px rgba(255,200,97,.18),inset 0 1px 0 rgba(255,255,255,.35)}
.btn-gold-v140:hover{filter:brightness(1.04)}
.btn-line-v140{border-color:var(--line2);color:var(--text);background:rgba(20,20,20,.5)}
.btn-line-v140:hover{border-color:#55524a}
.btn-glass-v140{border-color:rgba(255,255,255,.18);background:rgba(10,10,12,.45);backdrop-filter:blur(10px);color:var(--text)}
.btn-gline-v140{border-color:rgba(255,200,97,.5);color:var(--gold2);background:rgba(255,200,97,.07)}
.btn-gline-v140:hover{border-color:var(--gold)}
.btn-sm-v140{height:30px;padding:0 12px;font-size:12.5px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:5px;font-weight:600;white-space:nowrap;cursor:pointer;background:none;color:var(--text);border:1px solid var(--line2)}
.btn-sm-v140 svg{width:12px;height:12px;flex:none}
.btn-sm-v140:hover{border-color:#55524a}
.btn-sm-v140:disabled{opacity:.5;cursor:default}
.gold-line-v140{border-color:rgba(255,200,97,.5);color:var(--gold2);background:rgba(255,200,97,.07)}
.link-v140{display:inline-flex;align-items:center;gap:4px;min-height:0;color:var(--muted);font-size:13px;white-space:nowrap;background:none;border:0;padding:0;cursor:pointer}
.link-v140:hover{color:var(--text)}
.link-v140 svg{width:12px;height:12px}
.chip-glass-v140{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:rgba(10,10,12,.55);border:1px solid rgba(255,255,255,.14);color:var(--text);backdrop-filter:blur(10px)}
.av-v140{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;font-style:normal;color:#f2eee4;flex:none}
.a1-v140{background:#5a4632}.a2-v140{background:#344a5e}.a3-v140{background:#4d3a5c}.a4-v140{background:#2f5247}.a5-v140{background:#5c3a3a}
.a6-v140{background:#3d4a2e}.a7-v140{background:#27465a}.a8-v140{background:#56502f}.a9-v140{background:#46395a}.a10-v140{background:#3a4f4f}
.who-v140{display:flex;align-items:center;gap:8px;min-width:0}
.nm-v140{font-size:12.5px;font-weight:500;color:#cfcabc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.state-v140{padding:34px 16px;text-align:center;color:var(--muted);font-size:13.5px;display:flex;flex-direction:column;align-items:center;gap:12px}
.state-v140 p{margin:0}
.note-v140{margin:0 0 12px;color:var(--muted);font-size:13px}
.err-v140{margin:8px 0 0;color:var(--red);font-size:12.5px;line-height:1.5}

/* ---------- 页头（设计稿 :79-104） ---------- */
.page-head-v140{padding:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 40px;align-items:end}
.back-v140{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px 0 9px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12.5px;margin-bottom:12px;background:rgba(20,20,20,.6);cursor:pointer}
.back-v140:hover{color:var(--text);border-color:var(--line2)}
.back-v140 svg{width:14px;height:14px}
/* 页标题只给读屏（看得见的是下面的开关） */
.vh-v140{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.ph-l-v140{min-width:0}
/* 两格的开关「Skill 社区 N ｜ 我的 skill M」（设计稿 design-owner4 改动 8 的 .pswitch）：选中的那格金色描边、带金色图标圈 */
.pswitch-v140{display:flex;width:fit-content;max-width:100%;margin-top:10px;padding:4px;border:1px solid var(--line2);border-radius:999px;background:#0f0f11;gap:2px}
.pswitch-v140 button{height:46px;min-height:0;min-width:0;padding:0 22px 0 8px;border:0;border-radius:999px;display:inline-flex;align-items:center;gap:10px;font-size:19px;font-weight:750;color:var(--muted);white-space:nowrap;background:transparent;cursor:pointer;transition:color .15s ease}
.pswitch-v140 button:not(.ps-on-v140):hover{color:var(--text)}
.pswitch-v140 button:focus-visible{outline:none;box-shadow:var(--ring)}
.ps-ic-v140{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line2);color:var(--muted);flex:none}
.ps-ic-v140 svg{width:18px;height:18px}
.ps-t-v140{overflow:hidden;text-overflow:ellipsis}
.pswitch-v140 b{font-size:13px;font-weight:700;color:var(--dim);font-variant-numeric:tabular-nums}
.pswitch-v140 button.ps-on-v140{background:linear-gradient(180deg,#2c2718,#1f1c12);color:var(--text);box-shadow:inset 0 0 0 1px rgba(255,200,97,.45),0 6px 20px rgba(0,0,0,.3);cursor:default}
.ps-on-v140 .ps-ic-v140{border-color:rgba(255,200,97,.55);color:var(--gold);background:rgba(255,200,97,.1)}
.pswitch-v140 .ps-on-v140 b{color:var(--gold2)}
.lede-v140{margin:14px 0 0;color:var(--muted);font-size:14.5px;text-wrap:pretty}
.pulse-v140{margin:10px 0 0;color:var(--dim);font-size:12.5px;min-height:19px}
.pulse-v140 b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}
/* 还没有公开的 skill 时的那句：设计稿 :86-89 的 .pulse / .live（绿点带一圈光晕） */
.pulse-v140:has(.live-v140){display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px}
.live-v140{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}
.live-v140>i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(74,222,128,.15)}
/* 右上角原来那两个跳转小按钮（我的 skill / 全部 skill）去掉了：开关已经管了。搜索这一行贴着左边一栏的底边 */
.ph-r-v140{width:600px;max-width:100%;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-end;gap:10px}
/* 「我的 skill」那一格：搜自己的 skill（340 宽，没有「搜索」按钮），「写一个 skill」是金色描边的 */
.cmine-v140 .ph-r-v140{width:auto}
.msearch-v140 .search-v140{flex:none;width:340px;max-width:100%;padding-right:16px}
.search-row-v140{display:flex;gap:10px;margin:0}
.search-v140{flex:1;min-width:0;display:flex;align-items:center;gap:10px;height:48px;padding:0 5px 0 16px;border:1px solid var(--line2);border-radius:999px;background:var(--surface);color:var(--dim)}
.search-v140:focus-within{border-color:rgba(255,200,97,.55)}
.search-v140 svg{width:15px;height:15px;flex:none}
.search-v140 input{flex:1;min-width:0;width:auto;height:100%;border:0;background:transparent;padding:0;color:var(--text);font-size:14px;outline:none;box-shadow:none;text-overflow:ellipsis}
.search-v140 input::placeholder{color:var(--dim)}
.search-v140 input::-webkit-search-cancel-button{filter:invert(.6)}
.go-v140{flex:none;height:38px;padding:0 16px;border-radius:999px;background:var(--surface3);border:1px solid var(--line2);color:var(--text);font-weight:600;font-size:13px;display:inline-flex;align-items:center;cursor:pointer}
.go-v140:hover{border-color:#55524a}
.search-v140{cursor:text}
/* 设计稿 :588：搜索框右边「写一个 skill」，星芒是金色的 */
.search-row-v140 .write-v140{height:48px}
.write-v140 svg,.spark-v140 svg{color:var(--gold)}

/* ---------- 分区（标题沿用 .bf-head-v130） ---------- */
.sec-v140{margin-top:44px;scroll-margin-top:96px;display:flex;flex-direction:column;gap:16px}
.sec-v140 .bf-head-v130 p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}
.sec-tail-v140{margin-left:auto}

/* ---------- 卡片（设计稿 :268-291） ---------- */
/* 几列由 --cols-v140 定（文件后面「列数」一节），和创作页 skill 区一样多 */
.grid-v140{display:grid;grid-template-columns:repeat(var(--cols-v140,4),minmax(0,1fr));gap:16px;transition:opacity .15s ease}
.grid-busy-v140{opacity:.55}
.card-v140{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden;display:flex;flex-direction:column;min-width:0;cursor:pointer;transition:border-color .15s ease}
.card-v140:hover{border-color:var(--line2)}
.card-v140:focus-visible{outline:none;box-shadow:var(--ring)}
.cover-v140{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--surface2)}
.cover-v140>img{width:100%;height:100%;object-fit:cover;display:block}
.cover-ph-v140{position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,200,97,.55);background:radial-gradient(90% 90% at 50% 20%,rgba(255,200,97,.09),transparent 60%),repeating-linear-gradient(135deg,#131313 0 10px,#171717 10px 20px)}
.cover-ph-v140 svg{width:42px;height:42px}
.badges-v140{position:absolute;top:10px;left:10px;right:74px;display:flex;gap:5px;flex-wrap:wrap;pointer-events:none}
.badge-tl-v140{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:999px;font-size:11px;font-weight:600;background:rgba(10,10,12,.62);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.12);white-space:nowrap;color:var(--text)}
.badge-tl-v140 svg{width:12px;height:12px}
.badge-off-v140{color:var(--gold2);border-color:rgba(247,231,181,.32)}
.badge-new-v140{color:var(--green);border-color:rgba(74,222,128,.3)}
.badge-pick-v140{color:var(--gold);border-color:rgba(255,200,97,.4)}
.kind-v140{position:absolute;left:10px;bottom:9px;font-size:11px;color:#e9e4d6;padding:2px 8px;border-radius:999px;background:rgba(10,10,12,.55);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);white-space:nowrap}
/* 看得见的「AI 生成」（《人工智能生成合成内容标识办法》），只加在真的封面/样片上 */
.ai-v140{position:absolute;right:8px;bottom:8px;font-size:10.5px;font-weight:600;letter-spacing:.02em;color:#f2eee4;padding:2px 7px;border-radius:6px;background:rgba(10,10,12,.62);border:1px solid rgba(255,255,255,.16);white-space:nowrap;pointer-events:none}
/* 举报直接画在卡片右上角，不收进「⋯」（第 3 节：没登录也要看得见） */
.report-v140{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:4px;height:24px;min-height:0;padding:0 8px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:rgba(10,10,12,.58);backdrop-filter:blur(8px);color:#d6d1c4;font-size:11px;font-weight:600;cursor:pointer}
.report-v140 svg{width:11px;height:11px}
.report-v140:hover{color:#fff;border-color:rgba(248,113,113,.55)}
.card-body-v140{padding:12px 14px 14px;display:flex;flex-direction:column;flex:1;min-width:0}
.card-body-v140 h4{margin:0;font-size:15px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-body-v140>p{margin:2px 0 0;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-body-v140 .who-v140{margin-top:11px}
.fork-v140{margin:7px 0 0;font-size:11.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fork-v140 a,.fork-v140 span{color:var(--muted)}
.fork-v140 a{text-decoration:underline;text-decoration-color:rgba(154,151,143,.4);text-underline-offset:2px}
.fork-v140 a:hover{color:var(--gold2)}
/* 用这个 · 加到我的 · 编辑（设计稿改动 4）：编辑按内容宽，另两个平分 */
.card-acts-v140{margin-top:auto;padding-top:12px;display:grid;grid-template-columns:1fr 1fr auto;gap:6px}
.card-acts-v140 button{height:32px;min-height:0;border-radius:999px;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;cursor:pointer;padding:0 8px}
.use-v140{background:var(--surface3);color:var(--text);border:1px solid var(--line2)}
.use-v140:hover{border-color:#55524a}
.add-v140{border:1px solid var(--line);color:var(--muted);background:transparent}
.add-v140:hover{color:var(--text)}
.add-v140 svg{width:13px;height:13px}
.add-v140:disabled{cursor:default;opacity:.7}
.add-on-v140{color:var(--gold2);border-color:rgba(255,200,97,.4)}
.ed-v140{border:1px solid rgba(255,200,97,.45);color:var(--gold2);background:rgba(255,200,97,.06)}
.card-acts-v140 .ed-v140{padding:0 11px}
.ed-v140:hover{border-color:var(--gold)}
.ed-v140 svg,.ed-feat-v140 svg{width:13px;height:13px;color:var(--gold)}
/* 卡片上时长后面的模型（Seedance 2.0 / 2.5） */
.kmodel-v140{white-space:nowrap}
.more-v140{display:flex;justify-content:center;margin-top:8px}
.more-v140:empty{display:none}

/* ---------- 号召卡（设计稿 :311-322，不带那行假数字） ---------- */
.cta-v140{grid-column:span 2;display:flex;align-items:center;padding:22px 24px;border:1px dashed var(--line2);border-radius:var(--r);background:radial-gradient(80% 120% at 0 50%,rgba(255,200,97,.07),transparent 60%),var(--bg2);min-width:0;container-type:inline-size}
/* 补满最后一行：JS（gridFit）按卡片数给 2–16 列各算好该占几格，写在网格的 style 上（--cta2-v140 … --cta16-v140），
   号召卡继承下来，文件后面「列数」一节按现在几列挑一个。空社区那张（cta-first）永远自己占一整行，见下一节。
   只有一张精选、别的卡一张都没有时，号召卡紧跟着大卡：站在大卡右边那一列、竖着占两行（大卡也是两行高）。
   两列时大卡占满一整行，号召卡在下面占两行也看不出来（那两行只有它自己） */
.feat-v140+.cta-v140{grid-row:span 2}
.cta-in-v140{display:flex;align-items:center;gap:22px;min-width:0;width:100%}
/* 窄的时候（占一张卡宽、或者在手机上）竖着排，照设计稿 :480-483 */
@container (max-width:440px){
  .cta-in-v140{flex-direction:column;align-items:flex-start;gap:14px}
  .cta-art-v140{width:56px!important;height:56px!important}
  .cta-art-v140 svg{width:30px!important;height:30px!important}
  .cta-acts-v140{width:100%}
  .cta-acts-v140 .btn-sm-v140{flex:1}
}
@container (max-width:260px){
  .cta-acts-v140{flex-direction:column}
  .cta-acts-v140 .btn-sm-v140{flex:none;width:100%}
  .cta-body-v140 p{font-size:12px}
}
.cta-art-v140{width:84px;height:84px;border-radius:50%;flex:none;display:grid;place-items:center;border:1px solid rgba(255,200,97,.35);background:rgba(255,200,97,.06);color:var(--gold)}
.cta-art-v140 svg{width:44px;height:44px}
.cta-body-v140{min-width:0}
.cta-v140 h4{margin:0;font-size:17px;font-weight:700}
.cta-v140 p{margin:5px 0 0;font-size:13px;color:var(--muted);line-height:1.6;text-wrap:pretty}
.cta-acts-v140{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}
.cta-acts-v140 .btn-sm-v140{height:34px;padding:0 14px}

/* ---------- 社区还空着：默认视图里一个公开的 skill 都没有 ---------- */
/* 不摆假的 skill 和数字，只用设计稿现成的东西拼出那一页的样子：
   号召卡撑满整行当主角（不管几列都是 1/-1），比平时大一号，金色虚线框借「再写一个 skill」那张卡（设计稿 :526）；
   设计稿 .cta-proof 那行假数字的位置，换成一句请第一批作者的话 */
.cta-first-v140{padding:34px 40px;border-color:rgba(255,200,97,.4);background:radial-gradient(60% 140% at 0 50%,rgba(255,200,97,.11),transparent 62%),radial-gradient(40% 90% at 100% 0,rgba(255,200,97,.05),transparent 70%),var(--bg2)}
.grid-first-v140>.cta-first-v140{grid-column:1/-1}
.cta-first-v140 .cta-in-v140{gap:30px}
.cta-first-v140 .cta-art-v140{width:104px;height:104px}
.cta-first-v140 .cta-art-v140 svg{width:54px;height:54px}
.cta-first-v140 h4{font-size:22px}
.cta-first-v140 p{font-size:14px;max-width:640px}
.cta-v140 .cta-proof-v140{margin-top:12px;display:flex;align-items:flex-start;gap:7px;font-size:12.5px;line-height:1.55;color:var(--gold2)}
.cta-proof-v140 svg{width:14px;height:14px;flex:none;margin-top:2px;color:var(--gold)}
.cta-first-v140 .cta-acts-v140{margin-top:18px}
.cta-first-v140 .cta-acts-v140 .btn-sm-v140{height:38px;padding:0 16px;font-size:13px}
/* 空卡位：卡片（设计稿 :269-291）的轮廓，没有字；压暗、往下淡出，读起来是「这里会有卡片」而不是「正在加载」。
   不能点、不能选、没有动画（减少动态效果时也就什么都不用关）。JS 写 16 个（最多 16 列），
   「列数」一节按现在几列藏掉多的，始终正好一行 */
.slot-v140{border:1px dashed var(--line2);border-radius:var(--r);background:var(--surface);overflow:hidden;display:flex;flex-direction:column;min-width:0;opacity:.55;pointer-events:none;user-select:none;-webkit-mask-image:linear-gradient(180deg,#000 35%,rgba(0,0,0,.18));mask-image:linear-gradient(180deg,#000 35%,rgba(0,0,0,.18))}
.slot-cv-v140{position:relative;aspect-ratio:16/10;background:var(--surface2)}
.slot-cv-v140 .cover-ph-v140 svg{opacity:.7}
.slot-bd-v140{padding:14px 14px 16px;display:flex;flex-direction:column;gap:9px}
.bar-v140{display:block;height:10px;width:58%;border-radius:999px;background:rgba(255,255,255,.08)}
.bar-s-v140{width:82%;height:8px;background:rgba(255,255,255,.05)}
.slot-who-v140{display:flex;align-items:center;gap:8px;margin-top:4px}
.slot-who-v140>i:first-child{width:22px;height:22px;border-radius:50%;flex:none;background:rgba(255,255,255,.07)}
.slot-who-v140 .bar-v140{width:36%;height:8px}
.slot-acts-v140{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.slot-acts-v140>i{height:32px;border-radius:999px;border:1px solid var(--line)}
/* 搜不到、分类下没有、没精选、加载失败、要先登录：一句话放进和号召卡同一套的虚线框深底面板（设计稿 :311），
   不再是一行飘在空白里的灰字。图标圈是号召卡那个圈的小一号 */
.empty-v140{padding:40px 20px;border:1px dashed var(--line2);border-radius:var(--r);background:radial-gradient(60% 120% at 50% 0,rgba(255,200,97,.05),transparent 65%),var(--bg2)}
.empty-v140 p{color:var(--muted);font-size:14px;line-height:1.6;text-wrap:pretty}
.empty-ic-v140{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(255,200,97,.3);background:rgba(255,200,97,.05);color:rgba(255,200,97,.75)}
.empty-ic-v140 svg{width:28px;height:28px}
.empty-v140 .btn-sm-v140{height:34px;padding:0 14px}

/* ---------- 本周精选大卡（设计稿 :293-309） ---------- */
.feat-v140{grid-column:span 2;grid-row:span 2;position:relative;border-radius:var(--r);overflow:hidden;border:1px solid rgba(255,200,97,.3);display:flex;flex-direction:column;justify-content:flex-end;isolation:isolate;min-width:0;min-height:420px;cursor:pointer;background:var(--surface)}
.feat-v140>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.feat-v140::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to top,rgba(8,8,10,.97) 0,rgba(8,8,10,.8) 34%,rgba(8,8,10,.08) 64%,rgba(8,8,10,.3) 100%)}
.feat-bare-v140{background:radial-gradient(90% 70% at 70% 10%,rgba(255,200,97,.16),transparent 60%),var(--bg2)}
.feat-v140:focus-visible{outline:none;box-shadow:var(--ring)}
.ftop-v140{position:absolute;top:16px;left:16px;right:16px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.ftop-r-v140{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ftop-r-v140 .report-v140{position:static}
.fbadge-v140{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:999px;background:rgba(255,200,97,.16);border:1px solid rgba(255,200,97,.45);color:var(--gold);font-size:12px;font-weight:650;backdrop-filter:blur(10px);white-space:nowrap}
.fbadge-v140 svg{width:14px;height:14px}
/* 大卡旁边摆不满时会加宽（见「列数」一节）：字不跟着拉成一长行。平时大卡不到 760，不受影响 */
.fbody-v140{padding:24px;max-width:760px}
.feat-v140 h3{margin:0;font-size:30px;line-height:1.15;font-weight:700}
.fp-v140{margin:6px 0 0;color:#d4cebf;font-size:14.5px}
.quote-v140{margin:14px 0 0;border-left:2px solid var(--gold);padding:2px 0 2px 12px;color:#e3ddcd;font-size:14px;line-height:1.6}
.quote-by-v140{display:block;color:var(--dim);font-size:12px}
.fmeta-v140{margin-top:16px;display:flex;align-items:center;gap:10px 22px;flex-wrap:wrap}
.fmeta-v140 .fork-v140{margin:0}
/* 设计稿 :847：精选大卡上作者头像大一号 */
.fmeta-v140 .av-v140{width:32px;height:32px;font-size:13px}
.fmeta-v140 .nm-v140{font-size:13.5px;font-weight:600;color:var(--text)}
.facts-v140{margin-top:18px;display:flex;gap:10px;flex-wrap:wrap}
.facts-v140 .btn-v140{height:40px}

/* ---------- 新鲜上架 ---------- */
/* 和下面「全部 skill」的网格同样几列，卡片一样宽 */
.rail-v140{display:grid;grid-template-columns:repeat(var(--cols-v140,4),minmax(0,1fr));gap:16px}

/* ---------- 全部 skill：筛选（分类沿用 .skills-goals-v130） ---------- */
.filters-v140{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.cats-v140{min-width:0}
.cats-v140 button{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;flex:none}
.cat-n-v140{font-style:normal;font-size:11.5px;color:var(--dim);font-variant-numeric:tabular-nums}
.skills-goals-v130 button.cat-on-v140{border-color:transparent;background:var(--gold);color:#17150f;font-weight:600}
.skills-goals-v130 button.cat-on-v140 .cat-n-v140{color:rgba(26,19,7,.62)}
.seg-v140{display:inline-flex;padding:3px;border:1px solid var(--line);border-radius:999px;background:#111113;flex:none}
.seg-v140 button{height:30px;min-height:0;padding:0 14px;border-radius:999px;border:0;background:transparent;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer}
.seg-v140 button.seg-on-v140{background:var(--surface3);color:var(--text);box-shadow:inset 0 0 0 1px var(--line2)}

/* ---------- 「我的 skill」那一格（设计稿 design-owner4 改动 8 的 8-myskill，和社区那一格一样宽） ---------- */
.mine-page-v140{margin-top:26px}
.mine-signin-v140{margin-top:0}
/* 顶上的面板：写了几个、几个已公开几个审核中、你写的都署你的名；右边四个数 */
.mine-head-v140{display:flex;justify-content:space-between;align-items:center;gap:16px 28px;flex-wrap:wrap;padding:16px 20px;border-radius:20px;border:1px solid rgba(255,200,97,.24);background:linear-gradient(180deg,rgba(255,200,97,.065),rgba(255,200,97,.012) 70%),var(--bg2);box-shadow:inset 0 1px 0 rgba(255,200,97,.08)}
.mine-who-v140{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}
.ph-v140{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(160deg,#e9c46a,#b8892c);color:#fff;font-weight:800;flex:none}
.mine-nm-v140{min-width:0}
.mine-nm-v140 b{font-size:15px;font-weight:650}
.mine-nm-v140 small{display:block;color:var(--dim);font-size:12.5px}
.own-badge-v140{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:999px;background:rgba(255,200,97,.12);border:1px solid rgba(255,200,97,.3);color:var(--gold2);font-size:12px;font-weight:600;white-space:nowrap}
.own-badge-v140 svg{width:13px;height:13px}
.mine-stats-v140{display:flex;align-items:center;gap:24px}
.ms-v140{display:flex;flex-direction:column}
.ms-v140 b{font-size:20px;font-weight:750;line-height:1.2;font-variant-numeric:tabular-nums}
.ms-v140 span{font-size:11.5px;color:var(--dim)}
.ms-sep-v140{width:1px;height:30px;background:rgba(255,255,255,.08)}
/* 筛选：全部 / 草稿 / 已保存 / 审核中 / 已公开 / 要处理（红的），右边排序 */
.mtabs-v140{display:flex;align-items:center;gap:8px;margin:22px 0 16px}
.mtab-list-v140{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.mtab-list-v140 button{height:34px;min-height:0;padding:0 14px;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap;background:rgba(20,20,20,.5);cursor:pointer;flex:none}
.mtab-list-v140 button:hover{color:var(--text)}
.mtab-list-v140 b{font-weight:700;color:var(--dim);font-variant-numeric:tabular-nums}
.mtab-list-v140 .mt-att-v140,.mtab-list-v140 .mt-att-v140 b{color:#f3a3a3}
.mtab-list-v140 .mt-att-v140{border-color:rgba(248,113,113,.4)}
.mtab-list-v140 .mt-on-v140{border-color:rgba(255,200,97,.55);color:var(--gold2);background:rgba(255,200,97,.08)}
.mtab-list-v140 .mt-on-v140 b{color:var(--gold2)}
.mtab-list-v140 .mt-on-v140.mt-att-v140{border-color:rgba(248,113,113,.7);color:#f3a3a3;background:rgba(248,113,113,.08)}
.mtab-list-v140 .mt-on-v140.mt-att-v140 b{color:#f3a3a3}
.msort-v140{margin-left:auto;position:relative;display:inline-flex;align-items:center;flex:none}
.msort-v140 select{appearance:none;-webkit-appearance:none;height:34px;min-height:0;width:auto;padding:0 30px 0 14px;border:1px solid var(--line);border-radius:999px;background:rgba(20,20,20,.5);color:var(--muted);font-size:12.5px;cursor:pointer}
.msort-v140 select:focus-visible{outline:none;box-shadow:var(--ring)}
.msort-v140 svg{position:absolute;right:11px;width:12px;height:12px;color:var(--muted);pointer-events:none}
/* 卡片网格和社区那一格同样几列（.grid-v140 的列数跟着这一栏的宽度） */
.mgrid-v140{align-items:stretch}
/* 一张卡：封面上左边状态、右边「⋯」；菜单挂在卡片上伸出封面，所以卡片本身不裁 */
.mc-v140{position:relative;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);display:flex;flex-direction:column;min-width:0}
.mc-open-v140{z-index:7}
.mc-cv-v140{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--surface2);border-radius:calc(var(--r) - 1px) calc(var(--r) - 1px) 0 0}
.mc-cv-v140>img{width:100%;height:100%;object-fit:cover;display:block}
.draft-cv-v140{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;background:repeating-linear-gradient(135deg,#131313 0 10px,#171717 10px 20px);color:var(--dim);font-size:12px}
.draft-cv-v140 svg{width:26px;height:26px;color:rgba(255,200,97,.45)}
.st-v140{position:absolute;top:8px;left:8px;display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:999px;background:rgba(10,10,12,.66);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.12);font-size:11px;font-weight:600;white-space:nowrap}
.st-v140 svg{width:11px;height:11px}
.dot-v140{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}
.st-public-v140{color:var(--green)}
.st-review-v140{color:var(--gold2)}
.st-private-v140{color:#d6d1c4}
.st-rejected-v140,.st-removed-v140{color:var(--red)}
.st-paused-v140{color:#f5b85f}
.st-draft-v140{color:var(--muted);border-style:dashed}
.cdots-v140{position:absolute;top:8px;right:8px;width:28px;height:28px;min-height:0;padding:0;border-radius:50%;background:rgba(10,10,12,.62);border:1px solid rgba(255,255,255,.14);display:grid;place-items:center;color:#ddd;cursor:pointer}
.cdots-v140 svg{width:15px;height:15px}
.cdots-v140:hover,.cdots-v140[aria-expanded=true]{border-color:rgba(255,200,97,.6);color:#fff}
.cdots-v140:focus-visible{outline:none;box-shadow:var(--ring)}
.mmenu-v140{position:absolute;top:40px;right:8px;z-index:6;width:168px;border:1px solid var(--line2);border-radius:12px;background:#18181a;box-shadow:0 14px 40px rgba(0,0,0,.55);padding:5px}
.mmenu-v140 button{display:flex;align-items:center;gap:8px;width:100%;height:34px;min-height:0;padding:0 10px;border:0;border-radius:8px;background:none;font-size:13px;color:var(--text);text-align:left;white-space:nowrap;cursor:pointer}
.mmenu-v140 button svg{width:14px;height:14px;color:var(--muted);flex:none}
.mmenu-v140 button:is(:hover,:focus-visible){background:var(--surface3);outline:none}
.mmenu-v140 .mi-red-v140,.mmenu-v140 .mi-red-v140 svg{color:#f3a3a3}
.mmenu-v140 hr{border:0;border-top:1px solid var(--line);margin:4px 2px}
.mc-bd-v140{padding:11px 13px 13px;display:flex;flex-direction:column;flex:1;min-width:0}
.mc-bd-v140 h4{margin:0;font-size:14.5px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-name-v140{max-width:100%;min-height:0;font:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:none;border:0;padding:0;color:var(--text);text-align:left;cursor:pointer}
.mc-name-v140:hover{color:var(--gold2)}
.mc-meta-v140{margin-top:3px;font-size:12px;color:var(--muted);line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-bd-v140 .fork-v140{margin:3px 0 0;font-size:12px}
.mc-why-v140{margin-top:5px;font-size:11.5px;color:#e0b3b3;line-height:1.45;word-break:break-word}
.tag-v140{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:999px;font-size:10.5px;font-weight:600;border:1px solid rgba(248,113,113,.4);color:#f3a3a3;white-space:nowrap}
.hint-v140{margin-top:5px;font-size:11.5px;color:var(--dim);display:flex;align-items:flex-start;gap:5px;line-height:1.45}
.hint-v140 svg{width:12px;height:12px;margin-top:1px;flex:none;color:var(--muted)}
.hint-ok-v140{color:#9fe0b4}
.hint-ok-v140 svg{color:var(--green)}
.hint-gold-v140{color:var(--gold2)}
.hint-gold-v140 svg{color:var(--gold)}
.steps-v140{margin-top:7px;display:flex;align-items:center;font-size:11px;color:var(--dim)}
.step-v140{display:flex;align-items:center;gap:4px;white-space:nowrap}
.step-v140 i{width:7px;height:7px;border-radius:50%;background:var(--line2)}
.step-done-v140 i{background:var(--muted)}
.step-now-v140{color:var(--gold2)}
.step-now-v140 i{background:var(--gold);box-shadow:0 0 0 3px rgba(255,200,97,.18)}
.step-ln-v140{flex:1;min-width:6px;height:1px;background:var(--line2);margin:0 5px}
/* 按钮：第一个永远是金色描边的「编辑」，第二个是这张卡的下一步；收藏的三个（用这个 · 取消收藏 · 编辑） */
.mc-act-v140{margin-top:auto;padding-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.mc-one-v140{grid-template-columns:1fr}
.mc-three-v140{grid-template-columns:1fr 1fr auto}
/* 英文的下一步长（Publish to community）：「Edit」按字宽，剩下的给第二个，别被省略掉（中文照设计稿两格平分） */
@media (width > 760px){html[lang=en] .mc-act-v140:not(.mc-one-v140):not(.mc-three-v140){grid-template-columns:auto minmax(0,1fr)}}
.mb-v140{height:32px;min-height:0;min-width:0;border-radius:999px;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;padding:0 10px;border:1px solid var(--line2);background:none;color:var(--text);cursor:pointer;overflow:hidden}
.mb-v140 span{overflow:hidden;text-overflow:ellipsis}
.mb-v140 svg{width:13px;height:13px;flex:none}
.mb-v140:hover:not(:disabled){border-color:#55524a}
.mb-ed-v140{border-color:rgba(255,200,97,.5);color:var(--gold2);background:rgba(255,200,97,.07)}
.mb-ed-v140 svg{color:var(--gold)}
.mb-ed-v140:hover:not(:disabled){border-color:var(--gold)}
.mb-pub-v140{border-color:rgba(255,200,97,.5);color:var(--gold2);background:rgba(255,200,97,.12)}
.mb-pub-v140:hover:not(:disabled){border-color:var(--gold)}
.mb-mut-v140{color:var(--muted);border-color:var(--line)}
.mb-v140:disabled{opacity:.45;cursor:default}
/* 再写一个 skill（桌面上第一格） */
.create-v140{border:1px dashed rgba(255,200,97,.45);border-radius:var(--r);background:radial-gradient(120% 70% at 50% 0,rgba(255,200,97,.13),transparent 62%),rgba(255,200,97,.02);padding:18px 16px;display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:center;gap:6px;min-width:0}
.plus-ring-v140{position:relative;width:48px;height:48px;border-radius:50%;border:1.5px dashed var(--gold);color:var(--gold);display:grid;place-items:center;margin-bottom:4px}
.plus-ring-v140 svg{width:22px;height:22px}
.plus-ring-v140 .sp-v140{position:absolute;top:-5px;right:-5px;width:15px;height:15px;color:var(--gold)}
.create-v140 b{font-size:15px;font-weight:650}
.create-v140 p{margin:0;font-size:12px;color:var(--muted);line-height:1.5}
.create-eg-v140{font-size:12px;color:var(--dim)}
.create-two-v140{display:grid;gap:8px;width:100%;margin-top:6px}
.create-two-v140 .mb-v140{height:36px;font-size:13px}
.subh-v140{margin:30px 0 12px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:10px}
.subh-v140 em{font-style:normal;font-weight:500;color:var(--dim);font-size:12.5px}
.mine-empty-v140{margin:0;color:var(--dim);font-size:12.5px}
/* 我的举报：skill、理由、日期、处理中 / 已处理 / 未发现违规 */
.reports-v140{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:16px;overflow:hidden}
.rep-v140{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:12px 16px;font-size:13px;background:var(--surface)}
.rep-v140+.rep-v140{border-top:1px solid var(--line)}
.rep-sub-v140{display:contents}
.rep-name-v140{color:var(--text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rep-why-v140{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rep-date-v140{color:var(--dim);font-size:12px;white-space:nowrap}
.rep-res-v140{justify-self:end;display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;border:1px solid var(--line2);color:var(--muted)}
.rep-actioned-v140{color:var(--green);border-color:rgba(74,222,128,.35)}
.rep-no_violation-v140{color:#d6d1c4}
.rep-open-v140{color:var(--gold2);border-color:rgba(255,200,97,.45)}
.mfoot-v140{margin:30px 0 0;padding:18px 0 0;text-align:center;color:var(--dim);font-size:12.5px;border-top:1px solid var(--line)}

/* ---------- 编辑别人的 skill：先复制一份（设计稿改动 4 的 D1；手机上是底部抽屉） ---------- */
.grab-v140{display:none}
.fsum-v140{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:8px;background:#0f0f10;min-width:0}
.fsum-cv-v140{position:relative;width:84px;aspect-ratio:16/10;border-radius:8px;overflow:hidden;flex:none;background:var(--surface2)}
.fsum-cv-v140>img{width:100%;height:100%;object-fit:cover;display:block}
.fsum-cv-v140 .cover-ph-v140 svg{width:22px;height:22px}
.fsum-t-v140{min-width:0}
.fsum-t-v140 b{display:block;font-size:13.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fsum-t-v140 small{font-size:11.5px;color:var(--dim)}
.flead-v140{margin:12px 0 0;font-size:13px;color:var(--muted);line-height:1.6}
.fli-v140{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--muted);line-height:1.6}
.fli-v140 b{color:var(--text)}
.fork-modal-v140 .modal-foot .gold{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.fork-modal-v140 .modal-foot .gold svg{width:14px;height:14px;flex:none}
.fork-modal-v140 .modal-head h2{font-size:17px}
.fork-modal-v140 .modal-foot button{min-height:36px;font-size:13px}
.fork-modal-v140 .modal-foot .ghost{border-color:transparent;background:none;color:var(--muted)}

/* ---------- 页脚说明 ---------- */
.foot-v140{margin:44px 0 0;padding-top:16px;border-top:1px solid var(--line);color:var(--dim);font-size:12.5px;display:flex;align-items:center;gap:7px}
.foot-v140 svg{width:13px;height:13px;flex:none}

/* ---------- 登录框里补的一行 ---------- */
.login-note-v140{margin:0 0 12px;padding:9px 12px;border-radius:10px;border:1px solid rgba(255,200,97,.35);background:rgba(255,200,97,.08);color:var(--gold2);font-size:13px;font-weight:600}

/* ---------- 详情（弹窗）：和创作页的 skill 详情同一个样子（owner 2026-09-30 第 1 条） ----------
   画面、压在画面上的名字和简介、两格说明、底栏的骨架都是 v121-simple.css 的 skill-detail-v132 那套（弹窗同时挂着它和 detail-modal-v140），
   这里只写社区多出来的：视频上「AI 生成」让开播放条、改编自那一行、举报和三个按钮、就地展开的举报表单 */
/* 视频的「AI 生成」：下缘是播放条，放到右上角、关闭键（上 14px、右 14px、34px 圆）左边，和左上角那一排标签同一排：
   上边对齐字块的上边距（桌面 22px、手机 16px，v121 .sd-hero-text-v132），那一排至少和它一样高（22px），名字从它下面开始；
   那一排右边再让出这块标签的宽度（英文「AI-generated」最宽，约 86px），标签多了就换行，钻不到它底下。
   名字最多两行、简介最多三行（手机两行）：字块长不到下面的播放条；整块字不接点击，播放、静音总点得到 */
.detail-modal-v140 .dai-up-v140{top:22px;right:56px;bottom:auto}
.detail-modal-v140 .dai-up-v140~.dtext-v140{pointer-events:none}
.detail-modal-v140 .dai-up-v140~.dtext-v140 .dtags-v140{min-height:22px;padding-right:78px}
.detail-modal-v140 .dtext-v140 h2,.detail-modal-v140 .dtext-v140 p{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.detail-modal-v140 .dtext-v140 h2{-webkit-line-clamp:2;line-clamp:2}
.detail-modal-v140 .dtext-v140 p{-webkit-line-clamp:3;line-clamp:3}
@media (max-width:760px){
  .detail-modal-v140 .dai-up-v140{top:16px}
  .detail-modal-v140 .dai-up-v140~.dtext-v140 .dtags-v140{padding-right:92px}
  .detail-modal-v140 .dtext-v140 p{-webkit-line-clamp:2;line-clamp:2}
}
/* 还没有样片和封面：星轨放在画面下半截，不和压在左上角的名字、简介叠在一起 */
.dph-v140{place-items:end center;padding-bottom:clamp(20px,9%,44px)}
.dph-v140 svg{width:46px;height:46px}
.dfork-v140 .fork-v140{margin:0;white-space:normal;font-size:12.5px}
.detail-modal-v140 .dfoot-v140{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.dacts-v140{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap;min-width:0}
.dbtn-v140{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}
.dbtn-v140 svg{width:15px;height:15px;flex:none}
.d-mine-v140{margin-right:auto;font-size:12.5px;color:var(--gold2)}
.d-report-v140{margin-right:auto;display:inline-flex;align-items:center;gap:5px;background:none;border:0;padding:4px 0;min-height:0;color:var(--muted);font-size:12.5px;cursor:pointer}
.d-report-v140:hover{color:#f3a3a3}
.d-report-v140:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
.d-report-v140 svg{width:12px;height:12px}
.d-inline-v140{border:1px solid var(--line2);border-radius:14px;padding:14px;background:var(--surface)}
.d-inline-v140 p{margin:0;font-size:13.5px;line-height:1.6}
.d-inline-v140 .form-acts-v140{margin-top:12px}
.d-done-v140{color:var(--green)}
.d-loading-v140{padding:28px 0;text-align:center;color:var(--muted)}
.d-error-v140{padding:40px 8px 28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px}
.d-error-v140 p{margin:0;font-size:14px;color:var(--text)}
/* 手机（600 以下弹窗是底部抽屉，v117 把底栏排成两格）：「用这个」铺满在最上面，编辑、加到我的并排，举报在最下面居中 */
@media (max-width:600px){
  .detail-modal-v140 .dfoot-v140{flex-direction:column;align-items:stretch;gap:8px}
  .dacts-v140{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
  .dacts-mine-v140{grid-template-columns:1fr}
  .dacts-v140 .duse-v140{grid-column:1/-1;order:-1;min-height:46px}
  .dfoot-v140 .d-report-v140,.dfoot-v140 .d-mine-v140{order:2;align-self:center;width:auto;margin:0}
  /* 举报表单展开时底栏先收起来：抽屉矮，那一排按钮会压住表单；表单自己有取消和提交 */
  .dreporting-v140 .dfoot-v140{display:none}
}

/* ---------- 举报表单 ---------- */
.report-form-v140{display:flex;flex-direction:column;gap:12px;margin:0}
.reasons-v140{border:0;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.reasons-v140 legend{padding:0;margin-bottom:8px;font-size:13px;color:var(--muted)}
.reason-v140{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--line2);border-radius:10px;font-size:13px;cursor:pointer;background:rgba(255,255,255,.015)}
.reason-v140:has(input:checked){border-color:rgba(255,200,97,.6);background:rgba(255,200,97,.08);color:var(--gold2)}
.reason-v140 input{width:auto;min-height:0;margin:0;padding:0;accent-color:var(--gold);flex:none}
.form-acts-v140{display:flex;justify-content:flex-end;gap:9px}

/* ---------- 列数：和创作页 skill 区一样多 ----------
   创作页的 skill 网格是 repeat(auto-fill,minmax(280px,1fr))、间距 14（v121-simple.css:652、:990），
   一栏宽 W 时放 floor((W+14)/294) 列：W 到 294N-14 就是 N 列（1200 宽 4 列，1320 还是 4 列，1960 是 6 列）。
   社区页的号召卡要补满最后一行、空社区要正好一行空卡位，都得知道现在几列，所以不用 auto-fill，
   照同一组分界把列数写死在 --cols-v140 上，号召卡挑对应的 --cta{N}-v140，空卡位藏掉第 N 个以后的。
   精选大卡挑 --feat{N}-v140：平时 2 列；卡片少、大卡旁边那两行摆不满时 JS 让它加宽（gridFit），不留洞。
   新鲜上架只摆满行：够两行（2N 个）摆两行，不够两行摆一行，一行都不够就有几个摆几个（:has 那条单独写，
   不认 :has 的浏览器只丢那一条）。
   量的是这一栏（.community-v140）自己的宽度，不是窗口：Windows 上有滚动条时窗口比这一栏宽十几像素，
   按窗口算会在分界附近比创作页多一列。间距还是设计稿的 16（卡片比创作页窄 2px 以内），列数一样。
   16 列封顶（一栏 4690px，5K 带鱼屏再往上）。手机上一栏不到 868，照设计稿两列（创作页手机上是一列大卡，这里不跟）。
   改了创作页的 280 / 14，这里的分界要一起改：tests/community-ui.test.mjs 从 v121 算一遍核对。 */
@container cwrap-v140 (width < 868px){.grid-v140,.rail-v140{--cols-v140:2}.feat-v140{grid-column:span var(--feat2-v140,2)}.cta-v140{grid-column:span var(--cta2-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+3){display:none}}
@container cwrap-v140 (868px <= width < 1162px){.grid-v140,.rail-v140{--cols-v140:3}.feat-v140{grid-column:span var(--feat3-v140,2)}.cta-v140{grid-column:span var(--cta3-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+4){display:none}.rail-v140>:nth-child(n+7){display:none}.rail-v140:not(:has(>:nth-child(6)))>:nth-child(n+4){display:none}}
@container cwrap-v140 (1162px <= width < 1456px){.grid-v140,.rail-v140{--cols-v140:4}.feat-v140{grid-column:span var(--feat4-v140,2)}.cta-v140{grid-column:span var(--cta4-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+5){display:none}.rail-v140>:nth-child(n+9){display:none}.rail-v140:not(:has(>:nth-child(8)))>:nth-child(n+5){display:none}}
@container cwrap-v140 (1456px <= width < 1750px){.grid-v140,.rail-v140{--cols-v140:5}.feat-v140{grid-column:span var(--feat5-v140,2)}.cta-v140{grid-column:span var(--cta5-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+6){display:none}.rail-v140>:nth-child(n+11){display:none}.rail-v140:not(:has(>:nth-child(10)))>:nth-child(n+6){display:none}}
@container cwrap-v140 (1750px <= width < 2044px){.grid-v140,.rail-v140{--cols-v140:6}.feat-v140{grid-column:span var(--feat6-v140,2)}.cta-v140{grid-column:span var(--cta6-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+7){display:none}.rail-v140>:nth-child(n+13){display:none}.rail-v140:not(:has(>:nth-child(12)))>:nth-child(n+7){display:none}}
@container cwrap-v140 (2044px <= width < 2338px){.grid-v140,.rail-v140{--cols-v140:7}.feat-v140{grid-column:span var(--feat7-v140,2)}.cta-v140{grid-column:span var(--cta7-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+8){display:none}.rail-v140>:nth-child(n+15){display:none}.rail-v140:not(:has(>:nth-child(14)))>:nth-child(n+8){display:none}}
@container cwrap-v140 (2338px <= width < 2632px){.grid-v140,.rail-v140{--cols-v140:8}.feat-v140{grid-column:span var(--feat8-v140,2)}.cta-v140{grid-column:span var(--cta8-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+9){display:none}.rail-v140>:nth-child(n+17){display:none}.rail-v140:not(:has(>:nth-child(16)))>:nth-child(n+9){display:none}}
@container cwrap-v140 (2632px <= width < 2926px){.grid-v140,.rail-v140{--cols-v140:9}.feat-v140{grid-column:span var(--feat9-v140,2)}.cta-v140{grid-column:span var(--cta9-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+10){display:none}.rail-v140>:nth-child(n+19){display:none}.rail-v140:not(:has(>:nth-child(18)))>:nth-child(n+10){display:none}}
@container cwrap-v140 (2926px <= width < 3220px){.grid-v140,.rail-v140{--cols-v140:10}.feat-v140{grid-column:span var(--feat10-v140,2)}.cta-v140{grid-column:span var(--cta10-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+11){display:none}.rail-v140>:nth-child(n+21){display:none}.rail-v140:not(:has(>:nth-child(20)))>:nth-child(n+11){display:none}}
@container cwrap-v140 (3220px <= width < 3514px){.grid-v140,.rail-v140{--cols-v140:11}.feat-v140{grid-column:span var(--feat11-v140,2)}.cta-v140{grid-column:span var(--cta11-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+12){display:none}.rail-v140>:nth-child(n+23){display:none}.rail-v140:not(:has(>:nth-child(22)))>:nth-child(n+12){display:none}}
@container cwrap-v140 (3514px <= width < 3808px){.grid-v140,.rail-v140{--cols-v140:12}.feat-v140{grid-column:span var(--feat12-v140,2)}.cta-v140{grid-column:span var(--cta12-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+13){display:none}.rail-v140>:nth-child(n+25){display:none}.rail-v140:not(:has(>:nth-child(24)))>:nth-child(n+13){display:none}}
@container cwrap-v140 (3808px <= width < 4102px){.grid-v140,.rail-v140{--cols-v140:13}.feat-v140{grid-column:span var(--feat13-v140,2)}.cta-v140{grid-column:span var(--cta13-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+14){display:none}.rail-v140>:nth-child(n+27){display:none}.rail-v140:not(:has(>:nth-child(26)))>:nth-child(n+14){display:none}}
@container cwrap-v140 (4102px <= width < 4396px){.grid-v140,.rail-v140{--cols-v140:14}.feat-v140{grid-column:span var(--feat14-v140,2)}.cta-v140{grid-column:span var(--cta14-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+15){display:none}.rail-v140>:nth-child(n+29){display:none}.rail-v140:not(:has(>:nth-child(28)))>:nth-child(n+15){display:none}}
@container cwrap-v140 (4396px <= width < 4690px){.grid-v140,.rail-v140{--cols-v140:15}.feat-v140{grid-column:span var(--feat15-v140,2)}.cta-v140{grid-column:span var(--cta15-v140,2)}.grid-first-v140>.slot-v140:nth-of-type(n+16){display:none}.rail-v140>:nth-child(n+31){display:none}.rail-v140:not(:has(>:nth-child(30)))>:nth-child(n+16){display:none}}
@container cwrap-v140 (width >= 4690px){.grid-v140,.rail-v140{--cols-v140:16}.feat-v140{grid-column:span var(--feat16-v140,2)}.cta-v140{grid-column:span var(--cta16-v140,2)}.rail-v140>:nth-child(n+33){display:none}.rail-v140:not(:has(>:nth-child(32)))>:nth-child(n+17){display:none}}
/* 两列那档的新鲜上架：手机上（≤760）是横着滑的一条，不按行藏（见后面响应式一节，最多 8 个），只管 761–900 之间的两列网格 */
@media (width > 760px){@container cwrap-v140 (width < 868px){.rail-v140>:nth-child(n+5){display:none}.rail-v140:not(:has(>:nth-child(4)))>:nth-child(n+3){display:none}}}
/* 不认 @container 的老浏览器（Chromium 105 以前）：退回原来按窗口宽度的 4 / 3 / 2 列，别在手机上挤成 4 列 */
@supports not (container-type:inline-size){
  .feat-v140{grid-column:span var(--feat4-v140,2)}
  .cta-v140{grid-column:span var(--cta4-v140,2)}
  .grid-first-v140>.slot-v140:nth-of-type(n+5){display:none}
  /* 新鲜上架照原来最多 8 个（它们多半也不认 :has） */
  .rail-v140>:nth-child(n+9){display:none}
  @media (max-width:1180px){
    .grid-v140,.rail-v140{--cols-v140:3}
    .feat-v140{grid-column:span var(--feat3-v140,2)}
    .cta-v140{grid-column:span var(--cta3-v140,2)}
    .grid-first-v140>.slot-v140:nth-of-type(n+4){display:none}
  }
  @media (max-width:980px){
    .grid-v140,.rail-v140{--cols-v140:2}
    .feat-v140{grid-column:span var(--feat2-v140,2)}
    .cta-v140{grid-column:span var(--cta2-v140,2)}
    .grid-first-v140>.slot-v140:nth-of-type(n+3){display:none}
  }
}

/* ---------- 响应式（设计稿 :359-480；手机两边 16，和设计稿、创作页一样） ---------- */
@media (max-width:1180px){
  .page-head-v140{grid-template-columns:minmax(0,1fr)}
  .ph-r-v140{width:100%}
  .msearch-v140 .search-v140{flex:1;width:auto}
}
/* 同一句话桌面上一种写法、手机上短一点的写法（设计稿 390 把好几处收短了）：两种都写上，按宽度藏一个 */
@media (width > 760px){.p-only-v140{display:none!important}}
@media (max-width:760px){
  .w-only-v140{display:none!important}
  /* 左右边距还是上面那句 clamp（手机上就是 16），这里只改上下 */
  .app.community-app-v140{padding-top:16px;padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  .page-head-v140{gap:16px}
  /* v117 在 ≤600px 给所有 button 加了 min-height:44px；这几颗小胶囊按设计稿收回来一点 */
  .back-v140{margin-bottom:0;min-height:34px}
  .go-v140,.btn-sm-v140{min-height:34px}
  /* 开关占满一行，两格一样宽，放在「回去创作」下面（设计稿 8-switch-community-390） */
  .pswitch-v140{display:flex;width:100%;margin-top:14px}
  .pswitch-v140 button{flex:1 1 0;justify-content:center;font-size:16px;height:44px;padding:0 10px 0 6px;gap:8px}
  .ps-ic-v140{width:28px;height:28px}
  .ps-ic-v140 svg{width:16px;height:16px}
  .lede-v140{margin-top:12px;font-size:14px}
  .search-v140{height:44px;padding-left:14px}
  .search-v140 input{font-size:16px}
  /* 设计稿 :393-394：手机上胶囊里的「搜索」收起来（键盘上的搜索键和停手 400ms 都会搜），右边留「写一个」 */
  .go-v140{display:none}
  .search-row-v140 .write-v140{height:44px;padding:0 14px;font-size:13.5px}
  /* 「我的 skill」那一格手机上没有搜索这一行，「写一个」在下面的面板里（设计稿 8-myskill-390） */
  .cmine-v140 .ph-r-v140{display:none}
  /* 横着滑的几条（新鲜上架、分类、我的 skill 的筛选）伸到屏幕两边：负边距 = 页面边距 16 */
  .rail-v140::-webkit-scrollbar,.cats-v140::-webkit-scrollbar,.mtab-list-v140::-webkit-scrollbar{display:none}

  .sec-v140{margin-top:34px;gap:12px}
  .sec-v140 .bf-head-v130{gap:6px 10px}
  .sec-v140 .bf-head-v130 p{order:4;flex-basis:100%;white-space:normal}

  .rail-v140{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:16px;margin:0 -16px;padding:0 16px 4px;gap:10px;scrollbar-width:none}
  .rail-v140>*{flex:0 0 62%;scroll-snap-align:start}
  .rail-v140>:nth-child(n+9){display:none}

  .filters-v140{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:12px}
  .filters-v140 .seg-v140{align-self:flex-start;order:-1}
  .cats-v140{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px;gap:6px}
  .grid-v140{gap:12px}
  .feat-v140{grid-row:auto;min-height:440px}
  .fbody-v140{padding:16px}
  .feat-v140 h3{font-size:24px}
  .fp-v140{font-size:13.5px}
  .quote-v140{font-size:13px}
  .fmeta-v140{gap:8px 18px;margin-top:12px}
  .facts-v140 .btn-v140{flex:1;padding:0 12px}
  .badges-v140{top:8px;left:8px}
  .kind-v140{left:8px;bottom:7px}
  /* 手机上的小卡片只写「视频 · 10 秒」，模型那一段收起来（设计稿 390） */
  .kind-v140 .kmodel-v140,.mc-meta-v140 .kmodel-v140{display:none}
  .card-body-v140{padding:10px 10px 12px}
  .card-body-v140 h4{font-size:14px}
  .card-body-v140>p{font-size:12px}
  .card-body-v140 .who-v140{margin-top:9px}
  /* 两列卡放不下三个按钮：「用这个」「加到我的」一排，「编辑」单独一排、矮一点（设计稿 4-edit-390） */
  .card-acts-v140{grid-template-columns:1fr 1fr;gap:6px;margin-top:auto;padding-top:10px}
  .card-acts-v140 button{height:36px;font-size:12.5px;padding:0 6px}
  .card-acts-v140 .ed-v140{grid-column:1/-1;height:30px;min-height:0}
  /* 只收小卡片上的加号（设计稿 :479），精选大卡上的「+ 加到我的」留着 */
  .card-acts-v140 .add-v140 svg{display:none}
  .cta-v140{padding:18px 16px}
  .cta-first-v140{padding:22px 18px}
  .cta-first-v140 h4{font-size:19px}
  .cta-first-v140 p{font-size:13px}
  .empty-v140{padding:30px 16px}
  .slot-bd-v140{padding:10px 10px 12px}
  .slot-acts-v140>i{height:36px}
  .search-v140 input::placeholder{font-size:13.5px}
  .reasons-v140{grid-template-columns:1fr}
  .foot-v140{align-items:flex-start}

  /* 「我的 skill」那一格（设计稿 8-myskill-390）：面板竖着排，「写一个」在右上；四个数平分一行；筛选一排左右滑；两列卡片 */
  .mine-page-v140{margin-top:14px}
  .mine-head-v140{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:12px;padding:12px 14px}
  .mine-who-v140{flex-wrap:nowrap}
  .ph-v140{width:38px;height:38px}
  .mwrite-v140{margin-left:auto;height:34px;padding:0 12px;font-size:13px;flex:none}
  .mine-stats-v140{justify-content:space-between;gap:0}
  .ms-v140 b{font-size:18px}
  .mtabs-v140{margin:16px 0 12px}
  .mtab-list-v140{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px}
  .msort-v140{display:none}
  .mgrid-v140{gap:10px}
  /* 「再写一个 skill」在手机上排到自己那几张的最后 */
  .mgrid-v140>.create-v140{order:1;padding:14px 10px}
  .create-v140 .plus-ring-v140{width:40px;height:40px}
  .create-v140 b{font-size:14px}
  .create-two-v140 .mb-v140{height:32px;font-size:12.5px;padding:0 10px}
  .mc-bd-v140{padding:10px}
  .mc-bd-v140 h4{font-size:14px}
  .draft-cv-v140{font-size:11px}
  .draft-cv-v140 svg{display:none}
  .mc-act-v140,.mc-one-v140{grid-template-columns:1fr}
  .mc-three-v140{grid-template-columns:1fr 1fr}
  .mc-three-v140 .mb-ed-v140{grid-column:1/-1;height:30px}
  .mb-v140{padding:0 6px}
  .subh-v140{margin:24px 0 12px}
  .rep-v140{grid-template-columns:minmax(0,1fr) auto;gap:4px 10px}
  .rep-name-v140{grid-column:1;grid-row:1}
  .rep-res-v140{grid-column:2;grid-row:1}
  .rep-sub-v140{display:block;grid-column:1/-1;grid-row:2;font-size:12px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .rep-sub-v140 .rep-why-v140{color:inherit}
  .rep-sub-v140 .rep-date-v140::before{content:" · "}
  .mfoot-v140{margin-top:20px}
  /* 复制确认框从底部弹出（全站的弹窗手机上本来就是底部抽屉）：顶上一根拖动条，按钮竖着排、金色的在上面 */
  .fork-modal-v140 .grab-v140{display:block;width:40px;height:4px;border-radius:4px;background:#3a3a3a;margin:10px auto 0}
  .fork-modal-v140 .modal-head{border-bottom:0;padding-bottom:4px;background:inherit;backdrop-filter:none}
  .fork-modal-v140 .modal-head .close{display:none}
  .fork-modal-v140 .modal-foot{grid-template-columns:1fr;border-top:0;gap:6px;background:inherit;backdrop-filter:none}
  .fork-modal-v140 .modal-foot .gold{order:-1;height:46px}
  .fork-modal-v140 .modal-foot .ghost{border:0;background:none;color:var(--muted)}
}
@media (max-width:380px){
  .report-v140 span{display:none}
}
@media (prefers-reduced-motion:reduce){
  .grid-v140,.card-v140{transition:none}
  /* 全局开关已经关掉了所有动画；这里再写一遍，顶栏按钮就停在基础样式（只有图标的圆钮）上 */
  .top-round-v130.community-btn-v140,.community-btn-v140 :is(.cbtn-icon-v140,.cbtn-text-v140){animation:none}
}
/* 长串不出框（所有者 2026-10-10，docs/67 第 3 节第 28 条）：本周精选那张大卡的名字、介绍、推荐语里有断不了行的长串时，
   以前伸到卡片外面、被卡片的圆角裁掉（看不到后半截）。现在在卡片里折行。平常的句子一个像素不变 */
.feat-v140 h3,.fp-v140,.quote-v140{overflow-wrap:anywhere}
/* 所有者 2026-10-15「竖的就竖着放」（docs/74 第 18 节；docs/67 第 3 节第 49 条）：社区卡片、「我的 skill」那一格、本周精选大卡的框不变。
   画面形状和框差不多的照旧铺满，差得多的整张放（web/media-fit.mjs 判，data-fit 那两条在 v121-simple.css 末尾）。本周精选大卡的框差不多是方的、
   手机上是竖的：大多数横的封面放进去要整张放，所以它还不知道画面多大时就整张放（#0c0d0b 底），和框差不多形状的那几张判出来铺满 */
.cover-v140>img,.mc-cv-v140>img{--media-fit:fill}
.feat-v140>img{--media-fit:whole;object-fit:contain;background:#0c0d0b}
