/* ============================================================
   飞行雪绒 · 星炬学院论坛 — 重设计覆盖样式
   说明：本文件在 forum.min.css / edge-compat.css 之后加载，
   仅覆盖本次重设计涉及的局部（左固定筛选栏 / 夜电台页脚 / 音乐播放器），
   不改变既有设计系统与其它模块。
   设计基线：沿用论坛原有 Midnight-Rose 调色板与玻璃拟态，
   仅把“页脚”恢复为大版本更新前的夜电台尾页样式，并把操作按钮收为左固定栏。
   ============================================================ */

/* ---------- 0. 局部变量（不污染全局 token） ---------- */
.stf-discuss-tools,
.sn-footer,
.music-module {
    --fr-glass: color-mix(in srgb, var(--color-white) 10%, transparent);
    --fr-glass-soft: color-mix(in srgb, var(--color-white) 5%, transparent);
    --fr-line: color-mix(in srgb, var(--color-white) 12%, transparent);
    --fr-rose: var(--color-rose, #F4729B);
    --fr-blue: var(--color-blue-light, #A8D8FF);
    --fr-gold: var(--color-gold-warm, #E8A23D);
    --fr-ink: var(--color-white, #F0F4FF);
    --fr-ink-soft: color-mix(in srgb, var(--color-snow, #C9D4E8) 78%, transparent);
    --fr-ink-dim: color-mix(in srgb, var(--color-snow, #C9D4E8) 52%, transparent);
}

/* ============================================================
   1. 讨论区布局：左固定筛选栏 + 主内容 + 右侧栏
   ============================================================ */
.stf-discuss-layout {
    /* 默认（<1201px）：单列，左栏置于顶部、非固定 */
    grid-template-columns: minmax(0, 1fr);
}

.stf-discuss-tools {
    position: static;
    align-self: auto;
    display: flex;
    flex-direction: column;
    gap: 14px;
    order: -1;
}

/* ≥1201px：三栏，左栏 sticky 跟随滚动 */
@media (min-width: 1201px) {
    .stf-discuss-layout {
        grid-template-columns: 224px minmax(0, 1fr) 280px;
    }
    .stf-discuss-tools {
        position: sticky;
        top: 88px;            /* 与右侧 .stf-discuss-aside 对齐 */
        align-self: start;
        order: 0;
    }
}

/* 左栏内的工具栏改为纵向堆叠 */
.stf-discuss-tools .stf-toolbar {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 14px;
    flex-wrap: nowrap;
    margin-top: 0;
}
.stf-discuss-tools .stf-filters {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
}
.stf-discuss-tools .stf-filter-btn {
    width: 100%;
    text-align: left;
    justify-content: flex-start;
    display: flex;
    align-items: center;
    gap: 8px;
}
.stf-discuss-tools .stf-filter-btn::before {
    content: "";
    width: 6px; height: 6px;
    border-radius: 50%;
    background: currentColor;
    opacity: .35;
    flex: none;
}
.stf-discuss-tools .stf-filter-btn.active::before {
    opacity: 1;
    background: var(--fr-blue);
    box-shadow: 0 0 8px color-mix(in srgb, var(--fr-blue) 70%, transparent);
}
.stf-discuss-tools .stf-search {
    width: 100%;
    min-width: 0;
}
.stf-discuss-tools .btn-ghost[data-action="open-submit"] {
    width: 100%;
    justify-content: center;
}

/* 左栏小标题（非冗余信息，帮助定位） */
.stf-discuss-tools .stf-tools-legend {
    font-size: 11px;
    letter-spacing: .14em;
    color: var(--fr-ink-dim);
    text-transform: uppercase;
    padding: 0 2px;
}

/* ============================================================
   2. 夜电台尾页（大版本更新前的 sn-footer 样式）
   ============================================================ */
.sn-footer {
    margin-top: clamp(3rem, 8vw, 6rem);
    border-top: 1px solid var(--fr-line);
    background:
        radial-gradient(120% 80% at 50% -20%, color-mix(in srgb, var(--fr-rose) 8%, transparent), transparent 60%),
        color-mix(in srgb, var(--color-white) 2%, transparent);
    color: var(--fr-ink-soft);
    font-size: 14px;
}

.sn-footer__spectrum {
    padding: 18px 0 14px;
    border-bottom: 1px solid var(--fr-line);
    background: linear-gradient(180deg, color-mix(in srgb, var(--fr-blue) 5%, transparent), transparent);
    overflow: hidden;
}

.sn-footer__eq {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 3px;
    height: 56px;
    padding: 0 16px;
}
.sn-footer__eq span {
    display: block;
    width: 3px;
    height: var(--eqh, 40%);
    border-radius: 2px 2px 0 0;
    background: linear-gradient(180deg, var(--fr-blue), color-mix(in srgb, var(--fr-rose) 80%, var(--fr-blue)));
    transform-origin: bottom;
    animation: fr-eq 1.1s ease-in-out infinite alternate;
    opacity: .85;
}
.sn-footer__eq span:nth-child(3n)   { animation-delay: .15s; }
.sn-footer__eq span:nth-child(3n+1) { animation-delay: .35s; }
.sn-footer__eq span:nth-child(2n)   { animation-delay: .55s; }

@keyframes fr-eq {
    from { transform: scaleY(.45); }
    to   { transform: scaleY(1); }
}

.sn-footer__freq-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 20px 0;
    flex-wrap: wrap;
}
.sn-footer__freq-label {
    font-family: "JetBrains Mono", ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: .08em;
    color: var(--fr-ink-soft);
}
.sn-footer__onair {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    letter-spacing: .12em;
    color: var(--fr-rose);
}
.sn-footer__dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--fr-rose);
    box-shadow: 0 0 0 0 color-mix(in srgb, var(--fr-rose) 60%, transparent);
    animation: fr-onair 1.8s ease-out infinite;
}
@keyframes fr-onair {
    0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--fr-rose) 55%, transparent); }
    70%  { box-shadow: 0 0 0 7px transparent; }
    100% { box-shadow: 0 0 0 0 transparent; }
}
.sn-footer__time {
    font-family: "JetBrains Mono", ui-monospace, monospace;
    font-size: 12px;
    color: var(--fr-ink-dim);
    font-variant-numeric: tabular-nums;
}

.sn-footer__credits {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
    gap: 28px;
    padding: 34px 20px 40px;
    max-width: 1100px;
    margin: 0 auto;
}
.sn-footer__brand {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--fr-ink);
    font-family: "Noto Serif SC", serif;
    font-weight: 700;
    font-size: 17px;
}
.sn-footer__brand svg { width: 26px; height: 26px; color: var(--fr-blue); }
.sn-footer__tag {
    margin: 12px 0 0;
    font-size: 13px;
    line-height: 1.7;
    color: var(--fr-ink-dim);
    max-width: 32ch;
}
.sn-footer__col-title {
    margin: 0 0 12px;
    font-size: 12px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--fr-ink-dim);
    font-weight: 600;
}
.sn-footer__col ul { list-style: none; margin: 0; padding: 0; }
.sn-footer__col li { margin: 0 0 9px; }
.sn-footer__col a {
    color: var(--fr-ink-soft);
    text-decoration: none;
    font-size: 13px;
    transition: color .2s, padding-left .2s;
}
.sn-footer__col a:hover { color: var(--fr-blue); padding-left: 4px; }

.sn-footer__col--meta p {
    margin: 0 0 8px;
    font-size: 12px;
    color: var(--fr-ink-dim);
    line-height: 1.6;
}
.sn-footer__copy {
    color: var(--fr-ink-soft) !important;
    font-family: "JetBrains Mono", ui-monospace, monospace;
    font-size: 11px !important;
    letter-spacing: .03em;
}
/* 邮戳小装饰（沿用 S9 偏移） */
.sn-footer__postmark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 12px;
    padding: 4px 10px;
    border: 1px dashed color-mix(in srgb, var(--fr-gold) 55%, transparent);
    border-radius: 6px;
    color: var(--fr-gold);
    font-family: "JetBrains Mono", ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: .12em;
    transform: rotate(-2deg);
}

@media (max-width: 760px) {
    .sn-footer__credits { grid-template-columns: 1fr 1fr; gap: 22px; }
}
@media (max-width: 460px) {
    .sn-footer__credits { grid-template-columns: 1fr; }
}

/* ============================================================
   3. 音乐播放器（移植主站夜电台播放器，使用论坛既有 token）
   ============================================================ */
#music { scroll-margin-top: 88px; }

.music-module.glass {
    border-radius: 22px;
    overflow: hidden;
}

.music-player {
    display: flex;
    flex-direction: column;
    padding: 24px;
    background: linear-gradient(135deg,
        color-mix(in srgb, var(--fr-rose) 7%, transparent) 0%,
        color-mix(in srgb, var(--fr-blue) 7%, transparent) 100%);
    border-bottom: 1px solid var(--fr-line);
}

.music-visualizer {
    width: 100%;
    height: 100px;
    margin-bottom: 18px;
    border-radius: 12px;
    overflow: hidden;
    background: color-mix(in srgb, #000 18%, transparent);
}
#viz-canvas { width: 100%; height: 100%; display: block; }

.tape-deck {
    display: flex;
    justify-content: center;
    gap: 18px;
    width: 60px;
    margin: 0 auto 16px;
}
.tape-reel {
    width: 22px; height: 22px;
    border-radius: 50%;
    border: 1.5px solid var(--fr-gold);
    position: relative;
    animation: fr-reel 4s linear infinite;
    animation-play-state: paused;
}
.tape-deck.playing .tape-reel { animation-play-state: running; }
.tape-reel::before {
    content: "";
    display: block;
    width: 6px; height: 6px;
    background: var(--fr-gold);
    border-radius: 50%;
    margin: 7px auto;
}
@keyframes fr-reel { to { transform: rotate(360deg); } }

.music-player-info { display: flex; flex-direction: column; gap: 16px; }

.music-now-playing { display: flex; align-items: center; gap: 16px; }
.music-disc {
    width: 56px; height: 56px;
    color: var(--fr-rose);
    flex: none;
}
.music-disc.playing svg { animation: fr-spin 4s linear infinite; }
@keyframes fr-spin { to { transform: rotate(360deg); } }
.music-track-info { flex: 1; min-width: 0; }
.music-track-name {
    font-size: 15px; font-weight: 600; color: var(--fr-ink);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.music-track-meta { font-size: 12px; color: var(--fr-ink-dim); margin-top: 3px; }

.music-controls { display: flex; align-items: center; justify-content: center; gap: 16px; }
.music-btn {
    width: 42px; height: 42px;
    border-radius: 50%;
    background: var(--fr-glass);
    border: 1px solid var(--fr-line);
    display: flex; align-items: center; justify-content: center;
    color: var(--fr-ink-soft);
    cursor: pointer;
    transition: transform .2s, color .2s, border-color .2s, box-shadow .2s, background .2s;
}
.music-btn:hover {
    background: var(--fr-glass);
    color: var(--fr-blue);
    border-color: color-mix(in srgb, var(--fr-blue) 35%, transparent);
    transform: scale(1.08);
}
.music-btn:active { transform: scale(.92); }
.music-btn-play {
    width: 54px; height: 54px;
    background: linear-gradient(135deg, var(--fr-rose) 0%, var(--fr-blue) 60%, var(--fr-blue) 100%);
    background-size: 200% 200%;
    color: #fff; border: none;
    box-shadow: 0 4px 16px color-mix(in srgb, var(--fr-rose) 32%, transparent);
}
.music-btn-play:hover { color: #fff; transform: scale(1.1); }
.music-btn-play .pause-icon { display: none; }
.music-btn-play.is-playing .play-icon { display: none; }
.music-btn-play.is-playing .pause-icon { display: block; }

.music-progress { display: flex; align-items: center; gap: 12px; }
.music-time {
    font-size: 12px; color: var(--fr-ink-dim);
    font-variant-numeric: tabular-nums; min-width: 36px; text-align: center;
}
.music-progress-bar {
    flex: 1; height: 4px;
    background: var(--fr-line);
    border-radius: 2px; overflow: hidden; cursor: pointer; position: relative;
}
.music-progress-fill {
    height: 100%; width: 0%;
    background: linear-gradient(90deg, var(--fr-rose), var(--fr-blue));
    border-radius: 2px;
    transition: width .25s linear;
}

.music-disclaimer {
    padding: 14px 24px;
    border-top: 1px solid var(--fr-line);
    background: color-mix(in srgb, var(--color-white) 2%, transparent);
}
.music-disclaimer p {
    margin: 0;
    font-size: 12px; color: var(--fr-ink-dim); line-height: 1.6;
}

/* ============================================================
   4. 降级：尊重 prefers-reduced-motion
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
    .sn-footer__eq span,
    .sn-footer__dot,
    .tape-reel,
    .music-disc.playing svg {
        animation: none !important;
    }
    .music-progress-fill { transition: none; }
    /* 咖啡进度环（scroll-timeline 驱动）：减弱动效下彻底撤除，
       否则 ring 会在阅读时持续重绘——这正是 reduced-motion 要避免的运动。 */
    .donate-fab-icon::after { animation: none !important; display: none !important; }
}

/* ============================================================
   5. 全站视觉统一（v11.6.1）：页脚 / 顶部导航 / 悬浮按钮
   说明：与主站 css/site-v2.css §12/§14 同视觉、同位置。
   本块使用字面量色值（论坛无 refined.css 令牌），
   与主站解析后的令牌值保持一致。
   ============================================================ */

/* ---------- 5.1 论坛页脚 · 星炬本色（刻意不复制主站 editorial 页脚） ----------
   两站页脚共享「雪绒频谱 EQ」家族签名，但调色 / 语气 / 内容各自独立。
   论坛用蓝金「信号色」+ 夜电台尾页语气，并以 .sn-footer__closing 收尾句
   替代四列站点地图（Anti-AI-slop 头号指纹 = 克隆式四列链接 + 同款 tag）。
   动效沿用论坛自身的 fr-eq / fr-onair（区别于主站 sn-eq-wave / sn-blink）。 */
.sn-footer {
  background: #0c0f1a !important;
  border-top: 1px solid rgba(109, 143, 214, 0.30) !important;
  color: rgba(238, 243, 251, 0.64);
}
.sn-footer__spectrum {
  padding: 0 !important;
  border-bottom: 1px solid rgba(109, 143, 214, 0.18) !important;
  background: none !important;
}
.sn-footer__eq {
  height: 38px !important;
  justify-content: center !important;
  align-items: flex-end !important;
  gap: 3px !important;
  padding: 0 16px 10px !important;
}
.sn-footer__eq span {
  flex: 0 0 2px !important;
  min-width: 2px !important;
  height: var(--eqh, 40%) !important;
  background: rgba(109, 143, 214, 0.55) !important;
  border-radius: 1px !important;
  box-shadow: none !important;
  filter: none !important;
  transform-origin: bottom;
  animation: fr-eq 1.1s ease-in-out infinite alternate;
  opacity: 0.7;
}
.sn-footer__eq span:nth-child(4n) { background: #E8C56A !important; opacity: 0.5; }
.sn-footer__freq-row {
  padding: 12px clamp(1.25rem, 5vw, 4rem) 14px !important;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 0.72rem !important;
  letter-spacing: 0.12em;
  color: rgba(238, 243, 251, 0.64) !important;
}
.sn-footer__freq-label { color: #A8C4F0 !important; font-weight: 500; }
.sn-footer__onair { color: #F9A8C9 !important; gap: 7px; letter-spacing: 0.14em; }
.sn-footer__dot {
  width: 6px !important;
  height: 6px !important;
  background: #F4729B !important;
  box-shadow: none !important;
  animation: fr-onair 1.8s ease-out infinite;
}
.sn-footer__time { color: rgba(238, 243, 251, 0.64) !important; font-variant-numeric: tabular-nums; }
.sn-footer__credits {
  max-width: 1180px !important;
  margin-inline: auto !important;
  padding: 2.2rem clamp(1.25rem, 5vw, 4rem) 0.5rem !important;
  grid-template-columns: 1.5fr 1fr 1fr 1.3fr !important;
  gap: clamp(1.6rem, 4vw, 3rem) !important;
}
/* 论坛专属收尾句：独占整行，作为页脚的「句号」而非站点地图 */
.sn-footer__closing {
  grid-column: 1 / -1;
  font-family: "Noto Serif SC", "Songti SC", Georgia, serif;
  font-size: clamp(1.35rem, 3.4vw, 2.05rem);
  line-height: 1.42;
  letter-spacing: 0.01em;
  color: #F0F4FF;
  margin: 0 0 1.4rem;
  max-width: 26ch;
}
.sn-footer__brand {
  font-family: "Noto Serif SC", "Songti SC", Georgia, serif;
  font-size: 1.15rem !important;
  font-weight: 600 !important;
  color: #F0F4FF !important;
  margin-bottom: 0 !important;
}
.sn-footer__brand svg { width: 22px !important; height: 22px !important; color: #A8C4F0 !important; }
.sn-footer__tag {
  margin-top: 0.9rem !important;
  max-width: 26ch;
  line-height: 1.85;
  color: rgba(238, 243, 251, 0.64) !important;
}
.sn-footer__col-title {
  font-family: "JetBrains Mono", ui-monospace, monospace !important;
  font-size: 0.72rem !important;
  font-weight: 500 !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  color: #A8C4F0 !important;
  margin: 0 0 1.1rem !important;
}
.sn-footer__col ul { margin: 0; padding: 0; list-style: none; }
.sn-footer__col li { margin: 0 0 0.65rem !important; }
.sn-footer__col a {
  color: rgba(238, 243, 251, 0.82);
  font-size: 0.875rem;
  border-bottom: none;
  transition: color 200ms cubic-bezier(0.16, 1, 0.3, 1);
}
.sn-footer__col a:hover { color: #E8C56A; }
.sn-footer__col--meta p {
  margin: 0 0 0.5rem !important;
  font-size: 0.875rem;
  line-height: 1.8;
  color: rgba(238, 243, 251, 0.64) !important;
}
.sn-footer__copy {
  font-family: "JetBrains Mono", ui-monospace, monospace !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.05em;
  margin-top: 0.6rem !important;
  color: rgba(238, 243, 251, 0.64) !important;
}
/* 论坛邮戳：蓝金信号色，区别于主站玫红邮戳（HTML 类为 .sn-footer__postmark） */
.sn-footer__postmark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 12px;
  padding: 0.3em 0.7em;
  border: 1px solid rgba(109, 143, 214, 0.7) !important;
  border-radius: 4px !important;
  color: #A8C4F0 !important;
  font-family: "JetBrains Mono", ui-monospace, monospace !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.15em;
  transform: rotate(-2deg);
  background: none !important;
  box-shadow: none !important;
}
@media (min-width: 761px) {
  .sn-footer__col--links { border-left: 1px solid rgba(109, 143, 214, 0.22); padding-left: clamp(1.4rem, 3vw, 2.2rem); }
}
@media (max-width: 900px) {
  .sn-footer__credits { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 540px) {
  .sn-footer__credits { grid-template-columns: 1fr !important; gap: 1.8rem !important; padding-top: 1.8rem !important; }
  .sn-footer__col--links { border-left: 0; padding-left: 0; }
  .sn-footer__freq-row { padding-inline: 1.25rem !important; }
  .sn-footer__eq { justify-content: flex-start !important; }
}

/* ---------- 5.2 顶部导航 · 实色夜纸（彻底去除毛玻璃） ----------
   用户明确：星炬学院首页不要毛玻璃。导航改为近实色夜纸 + 发丝线，
   无 backdrop-filter，规避移动端 GPU 负担与 WCAG 对比度风险。 */
.nav-glass {
  background: rgba(12, 14, 24, 0.94) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  border-bottom: 1px solid rgba(109, 143, 214, 0.22) !important;
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.45) !important;
}
body .nav-glass { background: rgba(12, 14, 24, 0.94) !important; }
body.forum-page .nav-glass { background: rgba(12, 14, 24, 0.94) !important; }
.nav-links a, .nav-link {
  color: rgba(240, 244, 255, 0.82) !important;
  font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  letter-spacing: 0.02em;
  position: relative;
}
.nav-links a::after, .nav-link::after {
  content: "" !important; position: absolute !important; left: 0 !important; right: 0 !important;
  bottom: -4px !important; height: 1px !important; background: #F4729B !important;
  transform: scaleX(0) !important; transform-origin: left !important;
  transition: transform 200ms cubic-bezier(0.16, 1, 0.3, 1) !important;
}
.nav-links a:hover::after, .nav-link:hover::after { transform: scaleX(1) !important; }
.nav-logo span {
  font-family: "Noto Serif SC", "Songti SC", Georgia, serif !important;
  color: #F0F4FF !important; letter-spacing: 0.12em !important;
}

/* ---------- 5.3 悬浮簇：入口居左 · 咖啡+同步状态居右 ----------
   方向语义：跨站入口（回主站=离开论坛）靠左下 24px；
   右侧保留「咖啡 bottom:24 + 同步状态 bottom:88」竖列。
   两者滚动时始终可见（real-time follow）。
   咖啡按钮实色去毛玻璃，图标环用 CSS scroll-timeline 显示阅读进度，
   无 JS、无内联脚本，规避 CSP 与移动端性能风险。 */
.stf-back-home {
  left: 24px !important; right: auto !important; bottom: 24px !important;
  background: rgba(240, 244, 255, 0.05) !important;
  color: #F0F4FF !important;
  border: 1px solid rgba(240, 244, 255, 0.26) !important;
  box-shadow: none !important;
  border-radius: 999px !important;
  opacity: 1 !important;
  -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
}
.stf-back-home:hover { background: rgba(109, 143, 214, 0.14) !important; border-color: rgba(109, 143, 214, 0.5) !important; }
.stf-back-home-icon {
  border-color: rgba(109, 143, 214, 0.5) !important;
  background: rgba(109, 143, 214, 0.14) !important; color: #A8C4F0 !important;
}
.donate-fab {
  right: 24px !important; left: auto !important; bottom: 24px !important;
  background: #F4729B !important; color: #130b11 !important;
  border: none !important;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35) !important;
  opacity: 1 !important;
  -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
}
body.forum-page .donate-fab { opacity: 1 !important; }
.donate-fab:hover { background: #E1588A !important; }
.donate-fab-icon {
  position: relative;
  border-color: transparent !important;
  background: rgba(255, 255, 255, 0.18) !important; color: #130b11 !important;
}
/* 进度环：跟随阅读进度实时填充（scroll-timeline，无 JS） */
@keyframes coffee-follow { from { --coffee-progress: 0%; } to { --coffee-progress: 100%; } }
@property --coffee-progress { syntax: "<percentage>"; inherits: false; initial-value: 0%; }
@supports (animation-timeline: scroll()) {
  .donate-fab-icon::after {
    content: "";
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    background: conic-gradient(#fff var(--coffee-progress), transparent 0);
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
            mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
    animation: coffee-follow linear;
    animation-timeline: scroll(root block);
  }
}
/* 同步状态胶囊归位右侧竖列（咖啡上方），入口已让出左下也不回右边 */
.stf-edge-indicator { left: auto !important; right: 24px !important; bottom: 88px !important; }

/* ---------- 5.4 首页背板实色重写（兼容性保底） ----------
   病根：历次「修复」都把深色写在 color-mix()/oklch() 里；不支持这两个函数的
   浏览器会把整条 background 判无效，只剩噪点 SVG 一层 → 首屏变成灰色雾面，
   无论改多少次「看起来都没变」。这里全部用纯 hex/rgba 重写，任何引擎都生效；
   同时撤掉大颗粒彩色噪点（灰雾感的另一来源），只留低透明度细噪点。 */
.forum-hero::before {
  background:
    radial-gradient(circle at 22% 18%, rgba(109, 143, 214, 0.16), transparent 46%),
    radial-gradient(circle at 78% 28%, rgba(232, 197, 106, 0.09), transparent 44%),
    radial-gradient(circle at 50% 92%, rgba(109, 143, 214, 0.11), transparent 52%) !important;
  animation: none !important;
}
.forum-hero__backplate {
  border-color: rgba(168, 196, 240, 0.24) !important;
  background:
    radial-gradient(110% 80% at 50% -10%, rgba(109, 143, 214, 0.13), transparent 55%),
    linear-gradient(180deg, #10152a 0%, #0b0e1a 60%, #090c16 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.07),
    0 30px 70px -30px rgba(3, 5, 12, 0.7),
    0 0 40px rgba(109, 143, 214, 0.08) !important;
}
.forum-hero__backplate::after {
  content: "";
  position: absolute; inset: 0; border-radius: inherit;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
  pointer-events: none;
}
/* hero 底部与正文区的过渡（forum-theme 的 color-mix 渐变在不支持的引擎下消失） */
.forum-hero::after {
  background: linear-gradient(to bottom, transparent 0%, rgba(10, 14, 24, 0.4) 100%) !important;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 60%);
          mask-image: linear-gradient(to bottom, transparent, #000 60%);
}

/* ---------- 5.5 功能区导览 · 实色底板 ----------
   病根：索引卡底色是 8.5% 半透明白（近乎隐身），边框/悬停阴影全是 color-mix()
   → 不支持的引擎下边框直接消失，卡片与页面背景融为一体。
   全部改实色：墨蓝纸面板 + 蓝金发丝边，hover 金边。 */
.stf-indexcard {
  background: #111626 !important;
  border: 1px solid rgba(109, 143, 214, 0.30) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
}
.stf-indexcard:hover {
  background: #141b30 !important;
  border-color: rgba(232, 197, 106, 0.55) !important;
  box-shadow: 0 12px 32px rgba(3, 5, 12, 0.55) !important;
}
.stf-indexcard:focus-visible {
  border-color: rgba(232, 197, 106, 0.55) !important;
}
.stf-indexcard-tab {
  background: #2c3d6b !important;
  color: #dfe8f8 !important;
}
.stf-doorplate {
  color: #A8C4F0 !important;
  border: 1px solid rgba(109, 143, 214, 0.38) !important;
  background: rgba(109, 143, 214, 0.10) !important;
}
.stf-binding-holes span {
  background: #060911 !important;
  border-color: rgba(232, 197, 106, 0.35) !important;
}
