/* ═══════════════════════════════════════════════════════════
   Aqua SwDD v14 · 软件页分类胶囊的悬停下拉
   交互（站长口径）：鼠标悬停「建模／平面设计」→ 胶囊正下方弹出该分类
   已有软件的清单（名称＋版本）；点清单里的软件，下方页面只显示这一款；
   「全部」胶囊点一下回到完整分类视图。触屏没有悬停：点分类胶囊＝筛选
   该分类并弹下拉，效果一致。桌面端悬停即可预览，点胶囊本体仍是分类筛选。
   ═══════════════════════════════════════════════════════════ */

/* 悬停展开：display 直接切换——不做透明度/可见性/位移过渡，任何层叠环境下都不会失灵；
   桌面端 .chip-dd:hover 由 CSS 驱动，触屏/键盘/JS 三路都只写 .open 类与内联 display */
.chip-dd { position: relative; display: inline-flex; }
.chip-dd .chip-menu {
  position: absolute;
  top: calc(100% + 10px);
  left: 0;
  width: max-content;
  min-width: 250px;
  max-width: min(80vw, 460px);
  z-index: 60;
  padding: 8px;
  border-radius: 16px;
  background: linear-gradient(165deg, rgba(255, 255, 255, .96), rgba(236, 243, 252, .92));
  border: 1px solid rgba(129, 166, 224, .38);
  box-shadow: 0 18px 42px rgba(13, 31, 60, .18);
  display: none;
  pointer-events: none;
}
.chip-dd:hover .chip-menu,
.chip-dd.open .chip-menu,
.chip-dd:focus-within .chip-menu {
  display: block;
  pointer-events: auto;
}

.chip-dd .dd-item { white-space: nowrap;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  width: 100%;
  padding: 10px 12px;
  border: 0;
  border-radius: 11px;
  cursor: pointer;
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink, #0d1f3c);
  background: transparent;
  text-align: left;
  transition: background .2s var(--e-expo, ease), color .2s var(--e-expo, ease);
}
.chip-dd .dd-item:hover { background: rgba(47, 108, 246, .10); color: var(--azure, #2f6cf6); }
.chip-dd .dd-item.active {
  background: rgba(47, 108, 246, .13);
  color: var(--azure-deep, #1a49c4);
}
.chip-dd .dd-item.active::after { content: '✓'; font-weight: 900; }
.chip-dd .dd-ver {
  font-size: 11px;
  font-weight: 700;
  color: var(--ink-faint, #7f97b8);
  font-variant-numeric: tabular-nums;
}
.chip-dd .dd-empty {
  display: block;
  padding: 10px 12px;
  font-size: 12.5px;
  color: var(--ink-faint, #7f97b8);
}
.chip-dd .dd-reset {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 8px 12px;
  border: 0;
  border-top: 1px solid rgba(129, 166, 224, .25);
  border-radius: 0 0 11px 11px;
  background: transparent;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  color: var(--azure, #2f6cf6);
  text-align: left;
}
.chip-dd .dd-reset:hover { background: rgba(47, 108, 246, .08); }

/* 分类胶囊行允许换行且不裁剪下拉；.glass 的 backdrop-filter 会自建层叠上下文，
   菜单的 z-index 出不了条，必须把整条筛选条抬到带子（DOM 靠后）之上 */
.filter-bar { overflow: visible !important; position: relative; z-index: 40; }
.yr-bar { overflow: visible !important; position: relative; z-index: 40; }
/* 胶囊行一行排开；放不下时悬停滚滚轮左右滑，滚动条藏起来 */
.filter-bar .cat-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.filter-bar .cat-chips::-webkit-scrollbar { display: none; }

/* 单软件视图：只显示这一款的卡片，宽度收窄居中 */
.sw-band--one .sw-grid {
  display: grid;
  grid-template-columns: minmax(0, 520px);
  justify-content: center;
}

/* 管理员登录时带子里出现「＋ 上传新软件」入口：与卡片并排占住空位，
   非管理员没有这个元素，网格保持单列居中 */
.sw-band--one .sw-grid--add {
  grid-template-columns: minmax(0, 520px) minmax(240px, 320px);
  align-items: stretch;
}
.sw-band--one .sw-grid--add .add-tile { min-height: 220px; }

/* ── 软件卡改成正方形（≥901px；窄屏保持自然高度避免内容溢出）── */
@media (min-width: 901px) {
  .sw-band--one .sw-grid { grid-template-columns: minmax(0, 380px); }
  .sw-band--one .sw-card {
    flex-direction: column;
    align-items: stretch;
    width: 100%;
    aspect-ratio: 1 / 1;
    padding: 20px;
    gap: 12px;
  }
  /* 竖排后说明多给两行，别在方卡里憋着 */
  .sw-band--one .sw-desc { -webkit-line-clamp: 4; margin-top: 9px; }
  /* 底行恢复「标签一行、去处一行」的上下节奏（覆盖通栏时代的摊平规则） */
  .sw-band--one .sw-foot {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    margin-top: auto;
    padding-top: 14px;
    border-top: 1px solid rgba(255, 255, 255, .72);
    min-width: 0;
  }
  .sw-band--one .sw-act { margin-left: 0; }
  /* 管理员上传位：跟方卡并排，高度随方卡自动拉齐 */
  .sw-band--one .sw-grid--add { grid-template-columns: minmax(0, 380px) minmax(220px, 300px); }
  .sw-band--one .sw-grid--add .add-tile { min-height: 0; }
}

/* ── v7 · 胶囊条与选中胶囊的投影减淡：去掉底部那条发硬的黑影 ── */
/* v11 终版（消带实验证实）：那条例外的底部灰带就是条的外投影（哪怕 .06 也可见）
   加 saturate(1.85) 毛玻璃的合成观感。彻底去掉外投影与毛玻璃，
   底色改全不透明的浅白，只留顶部内高光。 */
/* v12 定稿（像素量化实验）：灰带真身是 bg-aurora 的深蓝色斑（固定百分比定位，
   长期停在条下方）与页面渐变，非条的投影。条自身已无投影，
   这里下发一圈白色大扩散光晕把暗带抬平（实测谷底 201→235，与两侧齐平）。 */
.filter-bar {
  background: linear-gradient(160deg, #ffffff 0%, #f6faff 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 24px 48px 24px rgba(255, 255, 255, .78);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.filter-bar::after { opacity: .3; }
/* 光晕属于定位元素 filter-bar（z-index:40），会罩住后面静态流的计数行文字——把文字抬到光晕之上 */
.shell > .sw-lede { position: relative; z-index: 41; }
.cat-chip[aria-pressed="true"] {
  box-shadow: 0 1px 5px rgba(26, 73, 196, .1), inset 0 1px 0 rgba(255, 255, 255, .45);
}
.cat-chip:hover { box-shadow: 0 6px 16px rgba(26, 73, 196, .1), inset 0 1px 0 #fff; }

/* ── v7 · Adobe 聚合按钮与下拉（display 直切；条已 z-index:40，下拉随之浮在带子之上）──
   v9 关键修复：cat-chips 为滚轮横滚设了 overflow-x:auto，会把向下伸出的下拉菜单整块裁掉
   （渲染着但不可见、不可点）。菜单打开期间放开裁剪，关上即恢复横滚。 ── */
.filter-bar .cat-chips:has(.sw-adobe.open),
.filter-bar .cat-chips:has(.sw-adobe:hover) { overflow: visible; }
.sw-adobe { position: relative; display: inline-flex; padding-bottom: 12px; margin-bottom: -12px; }
.sw-adobe-btn { display: inline-flex; align-items: center; gap: 7px; }
.sw-adobe-btn[data-adobe-on] {
  color: #fff;
  background: linear-gradient(140deg, var(--sky), var(--azure) 58%, var(--azure-deep));
  border-color: rgba(255, 255, 255, .96);
}
.sw-adobe-caret { font-size: 10px; opacity: .75; }
.sw-dd-menu {
  display: none;
  position: absolute; top: 100%; left: 0; z-index: 80;
  min-width: 220px; padding: 8px;
  border-radius: 16px;
  background: linear-gradient(165deg, rgba(255, 255, 255, .97), rgba(236, 243, 252, .94));
  border: 1px solid rgba(129, 166, 224, .38);
  box-shadow: 0 18px 42px rgba(13, 31, 60, .18);
}
.sw-adobe:hover .sw-dd-menu,
.sw-adobe.open .sw-dd-menu { display: block; }
.sw-dd-item {
  display: block; width: 100%;
  padding: 10px 14px; border: 0; border-radius: 11px;
  cursor: pointer; font: inherit; font-size: 13.5px; font-weight: 700;
  color: var(--ink, #0d1f3c); background: transparent; text-align: left;
  white-space: nowrap;
}
.sw-dd-item:hover { background: rgba(47, 108, 246, .1); color: var(--azure, #2f6cf6); }
.sw-dd-item[aria-pressed="true"] { background: rgba(47, 108, 246, .13); color: var(--azure-deep, #1a49c4); }
.sw-dd-item[aria-pressed="true"]::after { content: ' ✓'; font-weight: 900; }
