/* ================================================================
   NewWorld · 液态玻璃门户
   深黑底 · 强玻璃拟态 · 荧光强调色(可在设置中更换)
   ================================================================ */
:root {
  --fg: var(--text);                 /* v64: 修复登录/注册/编辑弹窗 input 文字颜色(此前 var(--fg) 未定义而失效) */
  --ac: 46 224 110;                 /* 强调色 RGB,设置中心可切换 */
  --blur: 28px;                     /* 玻璃强度,设置中心可调 */
  --bg: #050706;
  --text: #edf2ee;
  --dim: rgba(237, 242, 238, 0.55);
  --faint: rgba(237, 242, 238, 0.32);
  --stroke: rgba(255, 255, 255, 0.10);
  --stroke-hi: rgba(255, 255, 255, 0.22);
  --r-xl: 28px; --r-lg: 22px; --r-md: 16px; --r-sm: 11px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
[hidden] { display: none !important; }
html { color-scheme: dark; scrollbar-gutter: stable; scrollbar-width: thin; scrollbar-color: transparent transparent; }
/* v57: 主窗口滚动条自动隐藏 — 空闲透明,滑动时显示 */
html::-webkit-scrollbar { width: 9px; }
html::-webkit-scrollbar-track { background: transparent; }
html::-webkit-scrollbar-thumb { background: transparent; border-radius: 5px; border: 2px solid transparent; background-clip: padding-box; transition: background-color .3s; }
html.is-scrolling { scrollbar-color: rgba(255,255,255,.28) transparent; }
html.is-scrolling::-webkit-scrollbar-thumb { background: rgba(255,255,255,.25); background-clip: padding-box; }
html.is-scrolling::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.42); }
body {
  font-family: "HarmonyOS Sans SC","MiSans","PingFang SC","Microsoft YaHei UI",system-ui,sans-serif;
  background: var(--bg); color: var(--text);
  min-height: 100vh; overflow-x: hidden;
}
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; }

/* ---------------- 背景氛围 ---------------- */
.bg-aurora {
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(720px 520px at 12% -6%,  rgb(var(--ac) / 0.16), transparent 65%),
    radial-gradient(900px 640px at 105% 18%, rgb(var(--ac) / 0.08), transparent 60%),
    radial-gradient(700px 700px at 50% 115%, rgba(120, 90, 255, 0.10), transparent 65%);
  transition: opacity .4s;
}
.bg-dots {
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(rgba(255,255,255,0.06) 1px, transparent 1px);
  background-size: 25px 25px;
  mask-image: radial-gradient(ellipse 85% 75% at 50% 25%, #000 25%, transparent 100%);
  transition: opacity .4s;
}
.bg-noise {
  position: fixed; inset: 0; z-index: 0; pointer-events: none; opacity: .05;
  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'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");
}
body.no-dots .bg-dots { opacity: 0; }
body.no-aurora .bg-aurora { opacity: 0; }

/* ---------------- 液态玻璃基元 ---------------- */
.glass-strong {
  position: relative;
  background:
    linear-gradient(135deg, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0.035) 38%, rgba(255,255,255,0.02) 62%, rgba(255,255,255,0.075) 100%);
  border: 1px solid var(--stroke);
  border-radius: var(--r-lg);
  backdrop-filter: blur(min(var(--blur), 10px)) saturate(1.7);
  -webkit-backdrop-filter: blur(min(var(--blur), 10px)) saturate(1.7);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.22),
    inset 0 -1px 0 rgba(255,255,255,0.04),
    inset 1px 0 0 rgba(255,255,255,0.06),
    0 24px 60px rgba(0,0,0,0.55);
}
/* 顶部斜向高光,模拟玻璃反射 */
.glass-strong::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: linear-gradient(115deg, rgba(255,255,255,0.14) 0%, transparent 22%, transparent 78%, rgba(255,255,255,0.05) 100%);
  opacity: .8;
}
.glass-inset {
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--stroke);
  border-radius: var(--r-md);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.10);
}

/* ---------------- 布局 ---------------- */
.app {
  position: relative; z-index: 1;
  display: flex; gap: 24px;
  max-width: 1760px; min-height: 100vh; margin: 0 auto;
  padding: 26px 28px 40px;
}

/* ---------------- 悬浮胶囊侧边栏 ---------------- */
.dock {
  width: 232px; flex-shrink: 0;
  border-radius: 34px;
  padding: 22px 14px 16px;
  display: flex; flex-direction: column;
  position: sticky; top: 26px;
  height: calc(100vh - 55.7px); /* v56: 板块导航底部对齐基准 690.3(原 v53 680,差 10.3px) */
  z-index: 5;
  /* 独立合成层,修复滚动时 backdrop-filter 留下拖影的渲染 bug */
  transform: translateZ(0);
  will-change: transform;
  isolation: isolate;
}
.dock-logo { display: flex; align-items: center; gap: 12px; padding: 2px 10px 20px; }
.logo-gem {
  width: 44px; height: 44px; border-radius: 15px; flex-shrink: 0;
  display: grid; place-items: center;
}
.logo-gem img {
  width: 100%; height: 100%; display: block;
  filter: drop-shadow(0 0 13px rgb(var(--ac) / 0.45));
}
.logo-txt { display: flex; flex-direction: column; line-height: 1.25; }
.logo-txt strong { font-size: 17px; letter-spacing: 1.5px; }
.logo-txt span { font-size: 10.5px; color: var(--faint); letter-spacing: 1px; }

.dock-nav { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 3px; scrollbar-width: none; }
.dock-nav::-webkit-scrollbar { display: none; }

.dock-item {
  display: flex; align-items: center; gap: 11px; width: 100%;
  padding: 11px 13px; border-radius: 999px;
  border: 1px solid transparent; background: none; text-align: left;
  color: var(--dim); font-size: 13.5px;
  transition: all .22s ease;
}
.di-emoji { font-size: 15px; width: 21px; flex-shrink: 0; text-align: center; margin-right: 8px; filter: grayscale(.5) opacity(.75); transition: filter .22s; } /* v64: 右 margin 拉开 emoji 与文字,避免 🧊3D模型 等多字节 emoji 视觉贴近 */
.di-count {
  margin-left: auto; font-size: 10.5px; color: var(--faint);
  background: rgba(255,255,255,0.06); border-radius: 999px;
  padding: 2px 8px; min-width: 25px; text-align: center; transition: all .22s;
}
.dock-item:hover { color: var(--text); background: rgba(255,255,255,0.055); }
.dock-item:hover .di-emoji { filter: none; }
.dock-item.active {
  color: var(--text); font-weight: 600;
  background: linear-gradient(120deg, rgb(var(--ac) / 0.22), rgb(var(--ac) / 0.08));
  border-color: rgb(var(--ac) / 0.4);
  box-shadow: 0 0 22px rgb(var(--ac) / 0.15), inset 0 1px 0 rgba(255,255,255,0.18);
}
.dock-item.active .di-emoji { filter: none; }
.dock-item.active .di-count { background: rgb(var(--ac) / 0.28); color: rgb(var(--ac) / 1); }

/* 管理员拖拽板块排序视觉提示 */
.dock-item[draggable="true"] { cursor: grab; }
.dock-item.dragging { opacity: 0.45; cursor: grabbing; }
.dock-item.drag-before { box-shadow: inset 0 2px 0 rgb(var(--ac) / 0.9); }
.dock-item.drag-after { box-shadow: inset 0 -2px 0 rgb(var(--ac) / 0.9); }

.dock-bottom { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.dock-user { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; border-radius: var(--r-lg); }
.avatar {
  width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0;
  display: grid; place-items: center; font-size: 14px; font-weight: 700; color: #03130a;
  background: linear-gradient(135deg, rgb(var(--ac) / 1), rgb(var(--ac) / 0.55));
  box-shadow: 0 0 16px rgb(var(--ac) / 0.35);
}
.du-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.du-txt { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; flex: 1 1 auto; }
.du-txt strong { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.du-txt span { font-size: 10.5px; color: var(--faint); }
.du-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }

/* ---------------- 主区域 ---------------- */
.stagearea { flex: 1; min-width: 0; min-height: calc(100vh - 66px); display: flex; flex-direction: column; gap: 22px; }

.topbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: nowrap; padding: 4px 2px 0; }
.tb-title { flex: 0 0 auto; min-width: 190px; }
.tb-actions { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; flex-wrap: nowrap; }
.tb-title h1 { font-size: 27px; font-weight: 700; letter-spacing: .5px; }
.tb-title p { margin-top: 5px; font-size: 12px; color: var(--faint); letter-spacing: 2.5px; }

.searchbox {
  display: flex; align-items: center; gap: 9px;
  border-radius: 999px; padding: 0 16px; height: 46px; width: min(320px, 60vw);
  transition: border-color .25s, box-shadow .25s;
}
.searchbox:focus-within { border-color: rgb(var(--ac) / 0.55); box-shadow: 0 0 26px rgb(var(--ac) / 0.18); }
.searchbox svg { width: 16px; height: 16px; color: var(--faint); flex-shrink: 0; }
.searchbox input { flex: 1; background: none; border: none; outline: none; color: var(--text); font-size: 13.5px; }
.searchbox input::placeholder { color: var(--faint); }
.searchbox kbd { font-size: 10.5px; color: var(--faint); border: 1px solid var(--stroke-hi); border-radius: 6px; padding: 2px 7px; background: rgba(255,255,255,0.05); }

.iconbtn {
  width: 46px; height: 46px; border-radius: 999px; font-size: 17px;
  display: grid; place-items: center; color: var(--text);
  transition: transform .2s, border-color .2s, box-shadow .2s;
}
.iconbtn:hover { transform: translateY(-2px); border-color: rgb(var(--ac) / 0.45); box-shadow: 0 0 22px rgb(var(--ac) / 0.15); }

.btn-primary {
  height: 46px; padding: 0 22px; border: none; border-radius: 999px;
  font-size: 14px; font-weight: 700; color: #03130a; letter-spacing: .5px;
  background: linear-gradient(135deg, rgb(var(--ac) / 1), rgb(var(--ac) / 0.68));
  box-shadow: 0 0 28px rgb(var(--ac) / 0.35), inset 0 1.5px 0 rgba(255,255,255,0.5);
  transition: transform .2s, box-shadow .2s;
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 34px rgb(var(--ac) / 0.5), inset 0 1.5px 0 rgba(255,255,255,0.5); }
.btn-primary.wide { width: 100%; margin-top: 6px; }

/* ---------------- 中部三栏 + 资源列表 ---------------- */
.midgrid {
  flex: 0 0 auto; min-height: 0; position: relative;
  display: flex; flex-direction: column; gap: 14px; overflow: visible;
}
.midrow {
  flex: 0 0 auto; display: grid; gap: 14px;
  grid-template-columns: minmax(190px, 235px) minmax(0, 1fr) minmax(320px, 480px);
  height: calc(100vh - 138px); min-height: 420px;
}
.midgrid .glass-strong,
.midgrid .dcard,
.midgrid .stat-total,
.midgrid .sr-row,
.midgrid .detail,
.midgrid .reslist {
  backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  background: linear-gradient(145deg, rgba(255,255,255,.22), rgba(255,255,255,.075) 54%, rgba(255,255,255,.16));
  border-color: rgba(255,255,255,.32);
}

/* 平铺资源列表(下方独立滚动区) */
.reslist {
  flex: 0 0 auto; overflow: visible;
  border-radius: var(--r-xl); padding: 14px 18px 22px; scrollbar-width: none;
}
.reslist::-webkit-scrollbar { display: none; }
.reslist-head {
  position: sticky; top: -14px; z-index: 3; margin: -2px -2px 14px; padding: 8px 2px;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  font-size: 13px; font-weight: 600; color: var(--dim);
  background: linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,.02) 90%);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border-radius: var(--r-sm);
}

/* 顶部 [网站总览 / 板块简介] 切换胶囊 */
.rl-toggle { display: flex; gap: 2px; padding: 3px; margin: -2px -2px 14px; width: fit-content;
  border-radius: 999px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1); }
.rl-tab { font: inherit; font-size: 11.5px; padding: 4px 14px; border: 0; background: transparent;
  color: var(--dim); border-radius: 999px; cursor: pointer; transition: all .18s; }
.rl-tab:hover { color: var(--text); }
.rl-tab.on { background: rgb(var(--ac) / .2); color: rgb(var(--ac) / 1); font-weight: 600; }

/* v58: 反馈正文(管理员待审列表里展示,保留换行) */
.fb-msg { display: block; white-space: pre-wrap; word-break: break-word; color: var(--dim); margin-top: 4px; }

/* 板块简介整块视图:一句话 desc,管理员 ✏️ 就地编辑 */
.board-intro.full { display: flex; align-items: flex-start; gap: 12px; padding: 24px 8px;
  font-size: 15px; line-height: 1.8; color: var(--text); }
.board-intro.full .bi-emoji { font-size: 22px; flex-shrink: 0; opacity: .9; }
.board-intro.full .bi-txt { flex: 1; min-width: 0; }
.bi-edit { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
  width: 24px; height: 24px; padding: 0; margin-top: 4px; border-radius: 6px;
  border: 1px solid rgba(255,255,255,.22); background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.85); font-size: 12px; cursor: pointer; transition: .15s; }
.bi-edit:hover { background: rgb(var(--ac) / .5); border-color: rgb(var(--ac) / .8); }

/* 类型速览列 */
.statcol { display: flex; flex-direction: column; gap: 14px; min-height: 0; overflow-y: auto; scrollbar-width: none; }
/* v56: 板块总览盒子由 grid stretch 撑到 690.3,与编辑精选/评论区齐平(撤回 v55 误加的 +8px) */
.statcol::-webkit-scrollbar { display: none; }

/* ---------------- 3D 编辑精选 ---------------- */
.deckwrap {
  border-radius: var(--r-xl); padding: 18px 22px 14px;
  display: flex; flex-direction: column; overflow: hidden;
  min-height: 430px;
}
.deck-head { display: flex; align-items: center; gap: 12px; z-index: 3; }
.deck-title { font-size: 14px; font-weight: 650; letter-spacing: 1px; color: rgb(var(--ac) / 1); text-shadow: 0 0 16px rgb(var(--ac) / 0.4); }
.deck-hint { font-size: 11px; color: var(--faint); letter-spacing: 1px; }
.deck-ctrl { margin-left: auto; display: flex; gap: 8px; }
.deck-btn {
  width: 32px; height: 32px; border-radius: 999px; font-size: 16px; line-height: 1;
  color: var(--dim); background: rgba(255,255,255,0.05);
  border: 1px solid var(--stroke); transition: all .2s;
}
.deck-btn:hover { color: var(--text); border-color: rgb(var(--ac) / 0.5); box-shadow: 0 0 16px rgb(var(--ac) / 0.2); }

.deck-stage {
  flex: 1; position: relative;
  perspective: 1500px; perspective-origin: 50% 42%;
  display: grid; place-items: center;
  min-height: 300px;
  z-index: 2;
}
.deck {
  position: relative; width: 100%; height: 100%;
  transform-style: preserve-3d;
  transition: transform .5s cubic-bezier(.2,.8,.25,1);
  animation: deckFloat 7s ease-in-out infinite;
}
@keyframes deckFloat {
  0%, 100% { translate: 0 0; }
  50%      { translate: 0 -8px; }
}
/* v62: 板块简介视图(选中板块、未选网站) — 关掉浮动 + 视差内联 transform */
.deck.is-intro { animation: none; transform: none !important; }
.deck-intro {
  position: absolute; inset: 0; overflow-y: auto; scrollbar-width: none;
  display: flex; flex-direction: column; gap: 16px;
  padding: 28px 30px; transform: none;
}
.deck-intro::-webkit-scrollbar { display: none; }
.deck-intro.is-overview { justify-content: center; text-align: left; }
/* v62: 类名加 .deck-intro 作用域,避免与左侧 dock 的 .di-emoji 冲突 */
.deck-intro .di-head { display: flex; align-items: center; gap: 14px; }
.deck-intro .di-emoji { font-size: 32px; flex-shrink: 0; line-height: 1; }
.deck-intro .di-name { font-size: 19px; font-weight: 700; color: var(--text); letter-spacing: .5px; }
.deck-intro .di-desc { font-size: 15px; line-height: 1.85; color: var(--dim); white-space: pre-wrap; word-break: break-word; }
.deck-intro .di-empty { color: var(--faint); font-style: italic; }
.deck-intro .di-hint { font-size: 12.5px; color: var(--faint); margin-top: 2px; }

.dcard {
  position: absolute; left: 50%; top: 50%;
  width: 296px; height: 196px;
  margin: -98px 0 0 -148px;
  border-radius: 20px; padding: 15px 17px 13px;
  transform-style: preserve-3d;
  cursor: pointer;
  display: flex; flex-direction: column; gap: 7px;
  background: linear-gradient(135deg, rgba(255,255,255,0.16), rgba(255,255,255,0.055) 55%, rgba(255,255,255,0.10));
  border: 1px solid rgba(255,255,255,0.28);
  backdrop-filter: blur(14px) saturate(1.4);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  box-shadow: inset 0 1.5px 0 rgba(255,255,255,0.35), 0 26px 50px rgba(0,0,0,0.55);
  transition: transform .55s cubic-bezier(.2,.8,.25,1), opacity .45s, box-shadow .45s, background .45s, border-color .45s;
  will-change: transform, opacity;
}
.dcard .dc-top { display: flex; align-items: center; gap: 8px; }
.dc-ico {
  width: 30px; height: 30px; border-radius: 10px; flex-shrink: 0; overflow: hidden;
  display: grid; place-items: center; font-size: 13px;
  background: rgba(255,255,255,0.16); border: 1px solid rgba(255,255,255,0.25);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.3);
}
.dc-ico img { width: 17px; height: 17px; object-fit: contain; }
.dc-type {
  font-size: 10px; padding: 3px 9px; border-radius: 999px; letter-spacing: 1px;
  background: rgba(255,255,255,0.14); border: 1px solid rgba(255,255,255,0.2);
  color: rgba(255,255,255,0.85);
}
.dc-pin { margin-left: auto; font-size: 12px; opacity: .7; }
.dc-name { font-size: 16.5px; font-weight: 700; letter-spacing: .4px; text-shadow: 0 1px 6px rgba(0,0,0,.35); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dc-host { font-size: 10.5px; color: rgba(255,255,255,0.55); }
.dc-desc {
  font-size: 11px; line-height: 1.55; color: rgba(255,255,255,0.62);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.dc-edit {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; margin-left: 6px; padding: 0;
  border-radius: 6px; border: 1px solid rgba(255,255,255,0.22);
  background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.85);
  font-size: 12px; cursor: pointer; vertical-align: middle; transition: .15s;
}
.dc-edit:hover { background: rgba(var(--ac),0.5); border-color: rgba(var(--ac),0.8); }
.dc-edit[data-act="del-res"]:hover { background: rgba(239,68,68,0.7); border-color: rgba(239,68,68,0.9); }
.dc-foot { margin-top: auto; display: flex; align-items: center; gap: 6px; }
.dc-tags { display: flex; gap: 6px; flex-wrap: wrap; min-width: 0; overflow: hidden; }
.dc-tag { font-size: 10px; padding: 2.5px 9px; border-radius: 999px; background: rgba(0,0,0,0.22); color: rgba(255,255,255,0.75); border: 1px solid rgba(255,255,255,0.12); white-space: nowrap; }
.dc-go {
  margin-left: auto; flex-shrink: 0;
  width: 28px; height: 28px; border-radius: 50%;
  display: grid; place-items: center; font-size: 13px;
  background: rgba(255,255,255,0.16); border: 1px solid rgba(255,255,255,0.3);
  color: rgba(255,255,255,0.9);
  transition: all .2s;
}
.dcard:hover .dc-go { background: rgba(255,255,255,0.28); transform: scale(1.08); }

/* 单卡聚焦:整张卡片占据编辑精选区(无 coverflow,信息完整展示) */
.deckwrap:has(.dcard.is-single) .deck-head,
.deckwrap:has(.dcard.is-single) .deck-dots { display: none; }
.deckwrap:has(.dcard.is-single) { padding: 0; }
.deckwrap:has(.dcard.is-single) .deck-stage { min-height: 100%; }
.dcard.is-single {
  position: relative; left: auto; top: auto; margin: 0;
  width: 100%; height: 100%; min-height: 280px;
  padding: 28px 32px; gap: 14px;
  animation: none; transform: none !important;
  border-radius: var(--r-xl);                            /* 撑满后圆角贴 deckwrap */
}
.dcard.is-single .dc-name { font-size: 22px; white-space: normal; }
.dcard.is-single .dc-host { font-size: 13px; }
.dcard.is-single .dc-desc { font-size: 14.5px; line-height: 1.8; -webkit-line-clamp: 8; }
.dcard.is-single .dc-foot { margin-top: auto; }
.dcard.is-single .dc-go { font-size: 16px; width: 32px; height: 32px; }

/* 激活卡:荧光实体玻璃 */
.dcard.is-active {
  background: linear-gradient(140deg, rgb(var(--ac) / 0.92), rgb(var(--ac) / 0.55) 60%, rgb(var(--ac) / 0.75));
  border-color: rgb(var(--ac) / 0.9);
  box-shadow:
    inset 0 2px 0 rgba(255,255,255,0.55),
    0 0 60px rgb(var(--ac) / 0.45),
    0 30px 60px rgba(0,0,0,0.6);
  color: #04170b;
}
/* 抽出状态:从卡堆里滑出一截,辉光更强 */
.dcard.popped {
  box-shadow:
    inset 0 2px 0 rgba(255,255,255,0.6),
    0 0 90px rgb(var(--ac) / 0.65),
    0 40px 80px rgba(0,0,0,0.65);
}
.dcard.is-active .dc-name { color: #04170b; text-shadow: none; }
.dcard.is-active .dc-host { color: rgba(4,23,11,0.65); }
.dcard.is-active .dc-desc { color: rgba(4,23,11,0.72); }
.dcard.is-active .dc-type { background: rgba(255,255,255,0.35); border-color: rgba(255,255,255,0.5); color: #04170b; }
.dcard.is-active .dc-tag { background: rgba(0,0,0,0.18); color: rgba(4,23,11,0.85); border-color: rgba(0,0,0,0.1); }
.dcard.is-active .dc-ico { background: rgba(255,255,255,0.45); border-color: rgba(255,255,255,0.6); }
.dcard.is-active .dc-go { background: rgba(0,0,0,0.2); border-color: rgba(0,0,0,0.15); color: #eafff2; }

/* 新建板块按钮 & 自定义板块 */
.dock-add {
  display: flex; align-items: center; justify-content: center; gap: 7px;
  width: 100%; margin-top: 5px; padding: 10px 13px;
  border-radius: 999px; font-size: 12.5px;
  color: var(--faint); background: none;
  border: 1.5px dashed rgba(255,255,255,0.16);
  transition: all .22s;
}
.dock-add:hover { color: rgb(var(--ac) / 1); border-color: rgb(var(--ac) / 0.5); box-shadow: 0 0 16px rgb(var(--ac) / 0.12); }
.di-x {
  display: none; margin-left: 4px; flex-shrink: 0;
  width: 18px; height: 18px; border-radius: 50%; font-size: 10px; line-height: 1;
  border: none; background: rgba(255,255,255,0.1); color: var(--dim);
}
.dock-item:hover .di-x { display: grid; place-items: center; }
.di-x:hover { background: rgba(255,90,90,0.35); color: #fff; }

/* 快捷 emoji 选择 */
.emoji-picks { display: flex; gap: 6px; flex-wrap: wrap; }
.epick {
  width: 34px; height: 34px; border-radius: 10px; font-size: 16px;
  background: rgba(255,255,255,0.05); border: 1px solid var(--stroke);
  transition: all .15s;
}
.epick:hover, .epick.on { border-color: rgb(var(--ac) / 0.6); background: rgb(var(--ac) / 0.15); }

.deck-dots { display: flex; justify-content: center; gap: 7px; padding: 10px 0 6px; z-index: 3; }
.ddot { width: 7px; height: 7px; border-radius: 50%; border: none; background: rgba(255,255,255,0.16); transition: all .3s; padding: 0; }
.ddot.on { background: rgb(var(--ac) / 1); box-shadow: 0 0 12px rgb(var(--ac) / 0.6); transform: scale(1.25); }

/* ---------------- 详情面板 ---------------- */
.detail { border-radius: var(--r-xl); padding: 22px; display: flex; flex-direction: column; gap: 14px; overflow: hidden; }
.dt-crumb { font-size: 11px; color: var(--faint); letter-spacing: 1px; display: flex; align-items: center; gap: 6px; }
.dt-crumb b { color: rgb(var(--ac) / 1); font-weight: 600; }
.dt-head { display: flex; align-items: center; gap: 13px; }
.dt-favicon {
  width: 46px; height: 46px; border-radius: 14px; flex-shrink: 0; overflow: hidden;
  display: grid; place-items: center;
  background: rgba(255,255,255,0.08); border: 1px solid var(--stroke-hi);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
  font-size: 20px;
}
.dt-favicon img { width: 26px; height: 26px; object-fit: contain; }
.dt-name { font-size: 18px; font-weight: 700; line-height: 1.25; }
.dt-host { font-size: 11px; color: var(--faint); margin-top: 3px; }
.dt-desc { font-size: 13px; line-height: 1.75; color: var(--dim); }
.dt-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.dt-cell { padding: 10px 12px; border-radius: var(--r-sm); }
.dt-cell b { display: block; font-size: 10.5px; color: var(--faint); font-weight: 500; margin-bottom: 4px; letter-spacing: 1px; }
.dt-cell span { font-size: 12.5px; font-weight: 600; }
.dt-cell .ok { color: rgb(var(--ac) / 1); }
.dt-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.dt-tag { font-size: 11px; color: var(--dim); background: rgba(255,255,255,0.05); border: 1px solid var(--stroke); border-radius: 999px; padding: 3.5px 11px; }
.dt-actions { margin-top: auto; display: flex; gap: 9px; }
.dt-actions .btn-primary { flex: 1; height: 44px; font-size: 13.5px; }
.btn-ghost {
  height: 44px; padding: 0 15px; border-radius: 999px; font-size: 13px;
  color: var(--text); background: rgba(255,255,255,0.05);
  border: 1px solid var(--stroke-hi);
  /* 顶栏铃铛图标按钮:简约圆形,未读带红点 */
}
.ann-icon { position: relative; width: 44px; height: 44px; padding: 0; border-radius: 50%;
  font-size: 18px; color: var(--text); background: rgba(255,255,255,0.05);
  border: 1px solid var(--stroke-hi); cursor: pointer; display: grid; place-items: center; transition: .18s; }
.ann-icon:hover { border-color: rgb(var(--ac) / .5); box-shadow: 0 0 18px rgb(var(--ac) / .15); }
.ann-icon.has-unread::after { content: ""; position: absolute; top: 8px; right: 9px;
  width: 8px; height: 8px; border-radius: 50%; background: rgb(239,68,68); box-shadow: 0 0 6px rgba(239,68,68,.6); }
/* 全部公告列表卡片 */
.ann-list { display: flex; flex-direction: column; gap: 14px; max-height: 60vh; overflow-y: auto; padding-right: 4px; }
.ann-card { padding: 14px 16px; border-radius: var(--r-md); background: rgba(255,255,255,.04); border: 1px solid var(--stroke); }
.ann-card-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.ann-card-body { font-size: 13px; line-height: 1.7; color: var(--dim); }
.ann-card-body p { margin: 0 0 8px; }
.ann-card-time { font-size: 11px; color: var(--faint); margin-top: 10px; }

  transition: all .2s;
}
.btn-ghost:hover { border-color: rgb(var(--ac) / 0.5); box-shadow: 0 0 18px rgb(var(--ac) / 0.15); }
.btn-ghost.faved { color: rgb(var(--ac) / 1); border-color: rgb(var(--ac) / 0.5); }
.btn-ghost.danger:hover { border-color: rgba(255, 99, 99, 0.6); color: #ff8484; box-shadow: 0 0 18px rgba(255, 99, 99, 0.15); }
.dt-empty { display: grid; place-items: center; text-align: center; flex: 1; color: var(--faint); font-size: 13px; line-height: 2; }
.dt-empty .big { font-size: 40px; }

/* 评论面板 */
.dt-actions-top { margin-top: 14px; margin-bottom: 4px; flex-wrap: wrap; }
.dt-actions-top .btn-ghost { flex: 1; min-width: 92px; height: 40px; font-size: 12.5px; }
.dt-actions-top .btn-ghost b { font-weight: 700; }
.dt-cmt-wrap { margin-top: 14px; display: flex; flex-direction: column; flex: 1; min-height: 0; }
.dt-cmt-head { display: flex; justify-content: space-between; align-items: baseline; font-size: 12px; color: var(--faint); letter-spacing: 1px; margin-bottom: 9px; }
.dt-cmt-count { font-weight: 700; color: rgb(var(--ac) / 1); }
.dt-cmt-list { flex: 1; min-height: 0; overflow-y: auto; padding-right: 4px; display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; scrollbar-width: none; }
.dt-cmt-list::-webkit-scrollbar { display: none; }
.dt-cmt { display: flex; gap: 9px; padding: 0; }
.dt-cmt-avatar { width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0; display: grid; place-items: center;
  font-size: 12.5px; font-weight: 700; color: #04170b; background: rgb(var(--ac) / 1); box-shadow: 0 2px 8px rgb(var(--ac) / .25); }
.dt-cmt-main { flex: 1; min-width: 0; }
.dt-cmt-top { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 2px; flex-wrap: wrap; gap: 4px; }
.dt-cmt-author { font-size: 12.5px; font-weight: 600; color: var(--text); }
.dt-cmt-time { font-size: 10.5px; color: var(--faint); }
.dt-cmt-body { font-size: 13px; line-height: 1.45; color: var(--dim); margin: 0; word-break: break-word; white-space: pre-wrap; }
.dt-cmt-empty, .dt-cmt-loading { text-align: center; color: var(--faint); font-size: 12px; padding: 26px 0; }
.dt-cmt-form { display: flex; flex-direction: column; gap: 7px; padding-top: 8px; border-top: 1px solid var(--stroke); }
.dt-cmt-input { min-height: 56px; max-height: 120px; padding: 9px 11px; border-radius: var(--r-sm); font-size: 13px; line-height: 1.5; resize: vertical; background: rgba(255,255,255,0.04); border: 1px solid var(--stroke); color: var(--text); font-family: inherit; }
.dt-cmt-input:focus { outline: none; border-color: rgb(var(--ac) / 0.6); box-shadow: 0 0 14px rgb(var(--ac) / 0.12); }
.dt-cmt-submit { align-self: flex-end; height: 36px; padding: 0 22px; font-size: 12.5px; }
.dt-cmt-submit:disabled { opacity: 0.55; cursor: not-allowed; }
/* 已屏蔽评论:内容划线变暗 */
.dt-cmt.is-hidden { opacity: .75; }
.dt-cmt.is-hidden .dt-cmt-body { text-decoration: line-through; opacity: .5; }
.dt-cmt-tag { font-size: 10px; padding: 1px 7px; margin-left: 6px; border-radius: 999px;
  background: rgba(239,68,68,.18); color: rgb(239,68,68); border: 1px solid rgba(239,68,68,.35); }
.dt-cmt-admin { display: inline-flex; gap: 5px; }
.dt-cmt-btn { font: inherit; font-size: 10.5px; padding: 2px 9px; border-radius: var(--r-sm);
  cursor: pointer; background: rgba(255,255,255,.06); border: 1px solid var(--stroke); color: var(--dim); transition: .15s; }
.dt-cmt-btn:hover { color: var(--text); border-color: rgb(var(--ac) / .5); background: rgb(var(--ac) / .12); }
/* 评论行「已屏蔽」小标记(全局评论 Tab) */
.cmt-tag-hid { color: rgb(239,68,68); font-weight: 600; }
.cmt-tag-rp { color: rgb(var(--ac) / 1); font-weight: 600; }

/* 评论列表渐入(丝滑切换) */
.dt-cmt-list { transition: opacity .25s ease; }

/* 树状回复:子评论缩进 + 左边线 */
.dt-cmt.is-reply { margin-left: 22px; padding-left: 10px; border-left: 2px solid rgb(var(--ac) / .4); }
/* 引用块 */
.dt-cmt-quote { margin: 0 0 6px; padding: 6px 10px; border-left: 3px solid var(--stroke);
  background: rgba(255,255,255,.04); font-size: 12px; color: var(--faint); word-break: break-word; white-space: pre-wrap; }
.dt-cmt-rpbtns { display: inline-flex; gap: 5px; margin-left: auto; }
/* 回复/引用上下文条(表单上方) */
.dt-reply-ctx { margin-bottom: 6px; padding: 6px 10px; border-radius: var(--r-sm);
  background: rgb(var(--ac) / .08); border: 1px solid rgb(var(--ac) / .2);
  font-size: 11.5px; color: var(--dim); display: flex; align-items: flex-start; gap: 8px; }
.dt-reply-ctx span { flex: 1; min-width: 0; }
.dt-ctx-quote { font-size: 11px; color: var(--faint); margin-top: 3px; padding-left: 8px;
  border-left: 2px solid var(--stroke); white-space: pre-wrap; word-break: break-word; }
.dt-ctx-cancel { flex-shrink: 0; font: inherit; font-size: 14px; line-height: 1; width: 20px; height: 20px;
  padding: 0; border: 0; background: transparent; color: var(--faint); cursor: pointer; border-radius: 50%; }
.dt-ctx-cancel:hover { color: var(--text); background: rgba(255,255,255,.1); }

/* ---------------- 栏目资源卡(看板内使用) ---------------- */

.rcard {
  position: relative; overflow: hidden;
  border-radius: var(--r-md); padding: 16px;
  display: flex; flex-direction: column; gap: 10px;
  cursor: pointer;
  animation: cardIn .45s cubic-bezier(.2,.8,.25,1) backwards;
  transition: transform .28s cubic-bezier(.2,.8,.25,1), border-color .28s, box-shadow .28s;
}
@keyframes cardIn {
  from { opacity: 0; transform: translateY(14px) scale(.98); }
  to   { opacity: 1; transform: none; }
}
.rcard:hover {
  transform: translateY(-4px);
  border-color: rgb(var(--ac) / 0.4);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.22), 0 18px 44px rgba(0,0,0,0.5), 0 0 28px rgb(var(--ac) / 0.12);
}
.rcard.sel {
  border-color: rgb(var(--ac) / 0.65);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 0 34px rgb(var(--ac) / 0.2), 0 18px 44px rgba(0,0,0,0.5);
}
.rcard .rc-head { display: flex; align-items: center; gap: 10px; }
.rc-ico {
  width: 36px; height: 36px; border-radius: 12px; flex-shrink: 0; overflow: hidden;
  display: grid; place-items: center; font-size: 15px;
  background: rgba(255,255,255,0.08); border: 1px solid var(--stroke-hi);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
}
.rc-ico img { width: 20px; height: 20px; object-fit: contain; }
.rc-name { font-size: 14.5px; font-weight: 650; line-height: 1.3; }
.rc-host { font-size: 10.5px; color: var(--faint); margin-top: 2px; }
.rc-desc {
  font-size: 12px; line-height: 1.65; color: var(--dim);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  min-height: 39px;
}
.rc-foot { margin-top: auto; display: flex; align-items: center; gap: 6px; }
.rc-type {
  font-size: 10.5px; padding: 3px 10px; border-radius: 999px;
  background: rgb(var(--ac) / 0.12); border: 1px solid rgb(var(--ac) / 0.3);
  color: rgb(var(--ac) / 1);
}
.rc-tags { display: flex; gap: 5px; overflow: hidden; }
.rc-tag { font-size: 10.5px; color: var(--faint); background: rgba(255,255,255,0.05); border: 1px solid var(--stroke); border-radius: 999px; padding: 3px 9px; white-space: nowrap; }
.rc-open {
  margin-left: auto; flex-shrink: 0;
  width: 28px; height: 28px; border-radius: 50%; font-size: 12px;
  display: grid; place-items: center;
  background: rgba(255,255,255,0.07); border: 1px solid var(--stroke-hi); color: var(--text);
  transition: all .2s;
}
.rc-open:hover { background: rgb(var(--ac) / 0.25); border-color: rgb(var(--ac) / 0.6); }

.board .cat-empty {
  grid-column: 1 / -1; text-align: center; padding: 80px 0; color: var(--faint);
  font-size: 13px; line-height: 2.2;
}
.board .cat-empty .big { font-size: 42px; }

/* ---------------- 抽屉 & 弹窗 ---------------- */
.drawer-mask, .modal-mask {
  position: fixed; inset: 0; z-index: 40;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  animation: fadeIn .25s ease;
}
@keyframes fadeIn { from { opacity: 0; } }

.drawer {
  position: fixed; top: 16px; right: 16px; bottom: 16px; z-index: 50;
  width: min(360px, calc(100vw - 32px));
  border-radius: var(--r-xl); padding: 24px;
  overflow-y: auto; scrollbar-width: thin;
  animation: slideIn .35s cubic-bezier(.2,.8,.25,1);
}
@keyframes slideIn { from { transform: translateX(60px); opacity: 0; } }

.drawer-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; padding-right: 26px; } /* v60: padding-right 给绝对定位的 ✕ 让位,标题不压其下 */
.drawer-head h2 { font-size: 18px; }
.drawer-head .iconbtn { width: 36px; height: 36px; font-size: 13px; position: absolute; top: 9px; right: 9px; } /* v60: ✕ 与右上圆角同圆心(圆角 r=28、按钮 r=18、边框 1 → 偏移 9px) */

.set-group { margin-bottom: 26px; }
.set-group h3 { font-size: 13px; font-weight: 650; color: var(--dim); letter-spacing: 1px; margin-bottom: 12px; }
.set-val { color: rgb(var(--ac) / 1); margin-left: 6px; }

.swatches { display: flex; gap: 10px; }
.swatch {
  width: 38px; height: 38px; border-radius: 999px; border: 2px solid transparent;
  background: var(--sw); box-shadow: 0 0 16px color-mix(in srgb, var(--sw) 45%, transparent);
  transition: all .2s;
}
.swatch:hover { transform: scale(1.1); }
.swatch.on { border-color: #fff; transform: scale(1.12); }

input[type="range"] {
  width: 100%; accent-color: rgb(var(--ac) / 1); height: 32px;
}

.toggle-row {
  display: flex; align-items: center; justify-content: space-between;
  font-size: 13px; color: var(--text); padding: 9px 2px; cursor: pointer; user-select: none;
}
.toggle-row.boxed { padding: 11px 14px; border: 1px solid var(--stroke); border-radius: var(--r-md); background: rgba(255,255,255,0.03); margin: 10px 0 4px; }
.toggle-row input { display: none; }
.toggle {
  width: 42px; height: 24px; border-radius: 999px; position: relative; flex-shrink: 0;
  background: rgba(255,255,255,0.12); border: 1px solid var(--stroke-hi);
  transition: all .25s;
}
.toggle::after {
  content: ""; position: absolute; top: 2px; left: 2px;
  width: 18px; height: 18px; border-radius: 50%;
  background: #cfd6d0; transition: all .25s cubic-bezier(.2,.8,.25,1);
}
.toggle-row input:checked + .toggle { background: rgb(var(--ac) / 0.5); border-color: rgb(var(--ac) / 0.7); box-shadow: 0 0 14px rgb(var(--ac) / 0.3); }
.toggle-row input:checked + .toggle::after { left: 20px; background: #fff; }

.set-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.set-btns .btn-ghost { height: 38px; font-size: 12px; }
.set-note { margin-top: 12px; font-size: 11px; line-height: 1.7; color: var(--faint); }

/* 弹窗 */
.modal-mask { display: grid; place-items: center; padding: 20px; }
.modal {
  width: min(480px, 100%); border-radius: var(--r-xl); padding: 26px;
  max-height: calc(100vh - 60px); overflow-y: auto; scrollbar-width: thin;
  animation: popIn .35s cubic-bezier(.2,.8,.25,1);
}
@keyframes popIn { from { transform: translateY(26px) scale(.97); opacity: 0; } }

#addForm, #catForm { display: flex; flex-direction: column; gap: 13px; }
#addForm label, #catForm label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--dim); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
#addForm input, #addForm select, #addForm textarea, #catForm input, #feedbackForm textarea {
  background: rgba(255,255,255,0.05); border: 1px solid var(--stroke-hi);
  border-radius: var(--r-sm); color: var(--text);
  padding: 11px 13px; font-size: 13px; outline: none; resize: vertical;
  transition: border-color .2s, box-shadow .2s;
}
#addForm input:focus, #addForm select:focus, #addForm textarea:focus, #catForm input:focus, #feedbackForm textarea:focus {
  border-color: rgb(var(--ac) / 0.55); box-shadow: 0 0 18px rgb(var(--ac) / 0.12);
}
#addForm select option { background: #101512; }
/* v61: 反馈输入框 — 更柔和深色、更大、占位多行、带字数计数 */
#feedbackForm .fb-field { display: flex; flex-direction: column; gap: 6px; }
#feedbackForm textarea { min-height: 170px; line-height: 1.75; border-radius: var(--r-lg); font-size: 14px; resize: vertical;
  background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.14); padding: 14px 16px; }
#feedbackForm textarea:focus { border-color: rgb(var(--ac) / 0.55); box-shadow: 0 0 20px rgb(var(--ac) / 0.14); }
#feedbackForm textarea::placeholder { color: var(--faint); line-height: 1.75; }
#feedbackForm .fb-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 4px; }
#feedbackForm .fb-count { font-size: 11px; color: var(--faint); flex: 0 0 auto; }
#feedbackForm .fb-count.over { color: #ff8a80; }
#feedbackForm .fb-tip { font-size: 10.5px; color: var(--faint); text-align: right; line-height: 1.5; }

/* v61: 投稿弹窗「新建类型/分类」展开行 */
.new-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 10px 12px; margin-top: -2px;
  border-radius: var(--r-md); background: rgba(255,255,255,0.045); border: 1px dashed rgba(255,255,255,0.16); }
.new-row label { display: flex; flex-direction: column; gap: 5px; font-size: 11px; color: var(--dim); }

/* toast */
.toast {
  position: fixed; left: 50%; bottom: 34px; translate: -50% 0; z-index: 60;
  padding: 12px 22px; border-radius: 999px; font-size: 13px;
  animation: toastIn .3s cubic-bezier(.2,.8,.25,1);
  box-shadow: 0 0 30px rgb(var(--ac) / 0.2), 0 18px 40px rgba(0,0,0,.5);
  border-color: rgb(var(--ac) / 0.4);
}
@keyframes toastIn { from { translate: -50% 16px; opacity: 0; } }

/* ---------------- 分享接收条 ---------------- */
.sharebar {
  position: fixed; top: 18px; left: 50%; translate: -50% 0; z-index: 70;
  display: flex; align-items: center; gap: 12px;
  padding: 12px 18px; border-radius: 999px; font-size: 13px;
  border-color: rgb(var(--ac) / 0.45);
  box-shadow: 0 0 34px rgb(var(--ac) / 0.22), 0 18px 40px rgba(0,0,0,.5);
  animation: toastIn .35s cubic-bezier(.2,.8,.25,1);
  max-width: calc(100vw - 32px); flex-wrap: wrap;
}
.sharebar .btn-primary { height: 36px; padding: 0 16px; font-size: 12.5px; }
.sharebar .btn-ghost { height: 36px; padding: 0 14px; font-size: 12.5px; }

/* 引擎选中态 */
#engineBtns .btn-ghost.on {
  color: rgb(var(--ac) / 1);
  border-color: rgb(var(--ac) / 0.55);
  box-shadow: 0 0 16px rgb(var(--ac) / 0.15);
}

/* ---------------- 站内文章阅读器 ---------------- */
.modal.reader { width: min(780px, 100%); }
.reader-meta { display: flex; gap: 8px; flex-wrap: wrap; margin: -6px 0 16px; }
.reader-body {
  font-size: 15px; line-height: 1.9; color: rgba(237,242,238,0.85);
  max-height: calc(100vh - 260px); overflow-y: auto; scrollbar-width: thin;
  padding-right: 8px;
}
.reader-body h1 { font-size: 24px; margin: 4px 0 18px; line-height: 1.4; }
.reader-body h2 {
  font-size: 18px; margin: 26px 0 10px; padding-left: 12px; line-height: 1.4;
  border-left: 3px solid rgb(var(--ac) / 0.8);
}
.reader-body h3 { font-size: 16px; margin: 20px 0 8px; }
.reader-body p { margin: 10px 0; }
.reader-body ul, .reader-body ol { margin: 10px 0; padding-left: 24px; }
.reader-body li { margin: 5px 0; }
.reader-body a { color: rgb(var(--ac) / 1); text-decoration: none; border-bottom: 1px solid rgb(var(--ac) / 0.4); }
.reader-body a:hover { border-bottom-color: rgb(var(--ac) / 1); }
.reader-body code {
  font-family: Consolas, "Cascadia Code", monospace; font-size: 13px;
  background: rgba(255,255,255,0.08); border: 1px solid var(--stroke);
  border-radius: 6px; padding: 2px 7px; color: rgb(var(--ac) / 1);
}
.reader-body pre {
  background: rgba(0,0,0,0.35); border: 1px solid var(--stroke);
  border-radius: var(--r-sm); padding: 14px 16px; overflow-x: auto; margin: 12px 0;
}
.reader-body pre code { background: none; border: none; padding: 0; color: rgba(237,242,238,0.9); }
.reader-body blockquote {
  margin: 14px 0; padding: 10px 16px;
  border-left: 3px solid rgb(var(--ac) / 0.7);
  background: rgb(var(--ac) / 0.06);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
  color: var(--dim);
}
.reader-body img { max-width: 100%; border-radius: var(--r-sm); margin: 10px 0; }
.reader-body hr { border: none; border-top: 1px solid var(--stroke); margin: 20px 0; }

/* ---------------- 资源网格 ---------------- */
.zone-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); }
.zone-empty { padding: 22px; text-align: center; font-size: 12.5px; color: var(--faint); border: 1px dashed var(--stroke); border-radius: var(--r-md); }
.rc-badge { font-size: 10.5px; padding: 3px 9px; border-radius: 999px; background: rgb(var(--ac) / 0.18); border: 1px solid rgb(var(--ac) / 0.5); color: rgb(var(--ac) / 1); }
.rc-badge.rc-nsfw { background: rgba(232, 60, 60, 0.22); border-color: rgba(232, 60, 60, 0.7); color: #ff7a7a; font-weight: 700; box-shadow: 0 0 10px rgba(232, 60, 60, 0.25); }
.dt-cell.rc-nsfw-cell { border-color: rgba(232, 60, 60, 0.45); background: rgba(232, 60, 60, 0.08); }
.dt-cell.rc-nsfw-cell .rc-nsfw { color: #ff7a7a; font-weight: 700; }

/* ---------------- 响应式 ---------------- */
@media (max-width: 1240px) {
  .detail { padding: 16px; }
  .stat-num { font-size: 21px; }
}
@media (max-width: 920px) {
  .app { flex-direction: column; padding: 14px; }
  .dock { width: 100%; position: static; height: auto; border-radius: var(--r-xl); }
  .dock-nav { flex-direction: row; flex-wrap: wrap; }
  .dock-item { width: auto; }
  .di-count { margin-left: 6px; }
  .midgrid { min-height: 900px; }
  .statcol { flex-direction: row; flex-wrap: wrap; }
  .stat { min-width: 130px; }
}

/* ================================================================
   账号 / 对话框 / 投稿列表 / 管理面板
   ================================================================ */

/* 侧栏账户块:登录态切换(基础规则在前,这里只补覆盖) */
.dock-user .avatar { width: 36px; height: 36px; flex: 0 0 auto; font-size: 16px; }
.du-btn, .du-link { font: inherit; color: var(--fg); cursor: pointer; border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.05); padding: 7px 12px; border-radius: var(--r-sm); transition: .18s; }
.du-btn { background: linear-gradient(135deg, rgba(var(--ac),.9), rgba(var(--ac),.6)); color: #04170b; border: none; font-weight: 700; }
.du-btn.ghost { background: transparent; border: 1px solid rgba(255,255,255,.18); color: var(--fg); font-weight: 500; }
.du-btn:hover, .du-link:hover { filter: brightness(1.08); transform: translateY(-1px); }
.du-link { padding: 7px 9px; font-size: 14px; }
.du-hint { width: 100%; font-size: 11px; opacity: .55; line-height: 1.4; }
.du-role { display: inline-block; font-size: 10px; padding: 1px 7px; border-radius: 20px; margin-top: 2px;
  background: rgba(255,255,255,.08); }
.du-role.admin { background: rgba(var(--ac),.22); color: rgb(var(--ac)); border: 1px solid rgba(var(--ac),.5); }
.du-admin { width: 100%; font: inherit; font-weight: 700; cursor: pointer;
  background: linear-gradient(135deg, rgba(251,146,60,.85), rgba(244,114,182,.7)); color: #1a0a02;
  border: none; padding: 9px; border-radius: var(--r-sm); }

/* 通用对话框 */
.dialog-body { padding: 6px 4px 4px; max-height: 64vh; overflow-y: auto; }
.dialog-form { display: flex; flex-direction: column; gap: 12px; }
.dialog-form label { display: flex; flex-direction: column; gap: 5px; font-size: 13px; opacity: .85; }
.dialog-form input { font: inherit; padding: 10px 12px; border-radius: var(--r-sm);
  border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.04); color: var(--fg); }
.dialog-form input:focus { outline: none; border-color: rgba(var(--ac),.6); }
/* .df-input 通用:input/textarea/select 都用同一深色主题(原仅 input 有样式,textarea 退化成白底) */
.df-input { font: inherit; padding: 10px 12px; border-radius: var(--r-sm);
  border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.04); color: var(--fg); box-sizing: border-box; }
.df-input:focus { outline: none; border-color: rgba(var(--ac),.6); }
.dialog-form textarea.df-input { min-height: 120px; line-height: 1.6; resize: vertical; width: 100%; }
.btn-primary.wide { width: 100%; margin-top: 4px; }
.dialog-foot { text-align: center; font-size: 13px; opacity: .65; }
.dialog-foot a { color: rgb(var(--ac)); cursor: pointer; text-decoration: underline; }
.dialog-loading, .dialog-empty { text-align: center; padding: 30px 10px; opacity: .55; font-size: 14px; }

/* 投稿 / 审核列表 */
.sub-list { display: flex; flex-direction: column; gap: 10px; }
.sub-row { display: grid; grid-template-columns: 56px 1fr auto; gap: 10px; align-items: center;
  padding: 12px; border-radius: var(--r-md); background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); }
.sub-kind { font-size: 12px; padding: 4px 8px; border-radius: var(--r-sm); text-align: center;
  background: rgba(var(--ac),.16); color: rgb(var(--ac)); font-weight: 600; height: fit-content; }
.sub-main { min-width: 0; }
.sub-main b { display: block; font-size: 14px; }
.sub-main span, .sub-main small { font-size: 12px; opacity: .6; word-break: break-all; }
.sub-note { grid-column: 2 / 4; font-size: 12px; color: rgb(251,146,60); }
.tag-new { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 999px; margin-right: 6px;
  background: rgba(var(--ac),.16); color: rgb(var(--ac)); border: 1px solid rgba(var(--ac),.4); white-space: nowrap; } /* v61: 新类型/新板块标记 */
.sub-status { font-size: 12px; padding: 4px 10px; border-radius: 20px; font-weight: 600; white-space: nowrap; }
.sub-status.pending { background: rgba(250,204,21,.16); color: #facc15; }
.sub-status.approved { background: rgba(var(--ac),.2); color: rgb(var(--ac)); }
.sub-status.rejected { background: rgba(248,113,113,.16); color: #f87171; }
.sub-act { display: flex; gap: 6px; }

/* 管理面板 */
.admin-tabs { display: flex; gap: 8px; margin-bottom: 14px; }
.atab { font: inherit; cursor: pointer; padding: 8px 16px; border-radius: var(--r-sm);
  border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.04); color: var(--fg); transition: .16s; }
.atab.on { background: linear-gradient(135deg, rgba(var(--ac),.85), rgba(var(--ac),.55)); color: #04170b; border: none; font-weight: 700; }
.admin-body { min-height: 80px; }
.stats-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.stat-card { padding:16px 12px; border:1px solid rgba(var(--ac),.18); border-radius:var(--r-sm); background:rgba(255,255,255,.04); text-align:center; }
.stat-card b { display:block; color:rgb(var(--ac)); font-size:25px; line-height:1.1; }
.stat-card span { display:block; margin-top:7px; font-size:12px; opacity:.7; }
.stats-note { margin:16px 2px 4px; font-size:12px; opacity:.58; line-height:1.6; }
@media (max-width:560px) { .stats-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* 用户列表 */
.user-list { display: flex; flex-direction: column; gap: 10px; }
.user-row { display: grid; grid-template-columns: 40px 1fr auto auto; gap: 12px; align-items: center;
  padding: 12px; border-radius: var(--r-md); background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); }
.u-avatar { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; font-weight: 700;
  background: rgba(var(--ac),.2); color: rgb(var(--ac)); border: 1px solid rgba(var(--ac),.4); }
.u-main { min-width: 0; }
.u-main b { display: block; font-size: 14px; }
.u-main span { font-size: 12px; opacity: .55; }
.u-role { font-size: 12px; padding: 3px 9px; border-radius: 20px; white-space: nowrap;
  background: rgba(255,255,255,.08); }
.u-role.admin { background: rgba(var(--ac),.22); color: rgb(var(--ac)); }
.u-act { display: flex; gap: 6px; }
.u-btn { font: inherit; font-size: 12px; cursor: pointer; padding: 6px 10px; border-radius: var(--r-sm);
  border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.05); color: var(--fg); transition: .16s; }
.u-btn:hover { filter: brightness(1.1); }
.u-btn.ok { background: rgba(var(--ac),.85); color: #04170b; border: none; font-weight: 700; }
.u-btn:disabled { opacity: .4; cursor: default; }

/* ---------------- 中间列:全站资源总数 + 板块排行 ---------------- */
.stat-total { display: block; width: 100%; text-align: left; cursor: pointer; padding: 16px 16px 14px;
  border-radius: var(--r-md); border: 1px solid rgb(var(--ac) / .35);
  background: linear-gradient(150deg, rgb(var(--ac) / .18), rgb(var(--ac) / .05)); transition: .2s; font: inherit; color: var(--fg); }
.stat-total:hover { transform: translateY(-2px); border-color: rgb(var(--ac) / .6); }
.stat-total.sel { box-shadow: 0 0 0 2px rgb(var(--ac) / .5) inset; }
.stat-total .st-num em { font-style: normal; font-size: 36px; font-weight: 800; line-height: 1; color: rgb(var(--ac) / 1); }
.stat-total .st-label { font-size: 12px; color: var(--dim); margin-top: 7px; }
.stat-total .st-hint { font-size: 11px; color: var(--faint); margin-top: 2px; }
.stat-rank { display: flex; flex-direction: column; gap: 6px; flex: 0 0 auto; padding-right: 2px; }
.stat-empty { padding: 14px 10px; text-align: center; font-size: 12px; color: var(--faint); }
.sr-title { font-size: 11px; color: var(--faint); padding: 2px 4px 0; letter-spacing: .5px; }
.sr-row { position: relative; overflow: hidden; display: flex; align-items: center; gap: 8px;
  width: 100%; text-align: left; padding: 8px 11px 9px; border-radius: var(--r-sm); cursor: pointer;
  font: inherit; color: var(--fg); border: 1px solid rgb(var(--tc) / .25); background: rgb(var(--tc) / .07); transition: .18s; }
.sr-row:hover { transform: translateX(3px); background: rgb(var(--tc) / .16); border-color: rgb(var(--tc) / .5); }
.sr-row.sel { box-shadow: 0 0 0 2px rgb(var(--tc) / .5) inset; }
.sr-emoji { font-size: 15px; font-weight: 700; min-width: 18px; text-align: center; font-variant-numeric: tabular-nums; }
.sr-name { flex: 1; min-width: 0; font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sr-cnt { font-size: 12px; font-weight: 700; color: rgb(var(--tc) / 1); font-variant-numeric: tabular-nums; }
.sr-bar { position: absolute; left: 0; bottom: 0; height: 2px; background: rgb(var(--tc) / .55); border-radius: 2px; }

@media (prefers-reduced-motion: reduce) {
  .deck { animation: none !important; }
  .rcard { animation: none !important; }
}

/* ---------------- 公告横幅 ---------------- */
.announce-bar {
  display: flex; align-items: center; gap: 12px;
  padding: 9px 16px; margin: 0 0 12px; border-radius: var(--r-md);
  border: 1px solid rgb(var(--ac) / 0.4);
  background: linear-gradient(135deg, rgb(var(--ac) / 0.18), rgba(255,255,255,0.06) 60%, rgb(var(--ac) / 0.10));
  box-shadow: 0 0 24px rgb(var(--ac) / 0.18), inset 0 1px 0 rgba(255,255,255,0.2);
  font-size: 13px; cursor: pointer; transition: transform .22s, box-shadow .22s;
  animation: cardIn .4s ease backwards;
}
.announce-bar:hover { transform: translateY(-2px); box-shadow: 0 0 30px rgb(var(--ac) / 0.26), inset 0 1px 0 rgba(255,255,255,0.25); }
.announce-bar .ann-ico { font-size: 16px; flex-shrink: 0; }
.announce-text { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
.announce-bar .ann-go { flex-shrink: 0; font-size: 11px; color: var(--faint); }

/* ---------------- 资源卡:点赞 / 浏览角标 ---------------- */
.rc-stat {
  display: inline-flex; align-items: center; gap: 3px; flex-shrink: 0;
  font-size: 10.5px; color: var(--faint); padding: 3px 8px;
  border-radius: 999px; background: rgba(255,255,255,0.05); border: 1px solid var(--stroke);
  transition: all .2s; user-select: none;
}
.rc-stat b { font-weight: 700; font-variant-numeric: tabular-nums; }
.rc-views { cursor: default; }
.rc-likes { cursor: pointer; }
.rc-likes:hover { color: var(--text); border-color: var(--stroke-hi); background: rgba(255,255,255,0.08); }
.rcard.liked .rc-likes {
  color: rgb(var(--ac) / 1); border-color: rgb(var(--ac) / 0.5);
  background: rgb(var(--ac) / 0.14); text-shadow: 0 0 10px rgb(var(--ac) / 0.4);
}

/* ---------------- zone-head 排序下拉 ---------------- */
.zone-sort {
  margin-left: auto; font: inherit; font-size: 11px; font-weight: 600;
  padding: 4px 10px; border-radius: 999px; cursor: pointer;
  color: var(--dim); background: rgba(255,255,255,0.06); border: 1px solid var(--stroke-hi);
  transition: all .2s;
}
.zone-sort:hover { color: var(--text); border-color: rgb(var(--ac) / 0.5); }
.zone-sort:focus { outline: none; border-color: rgb(var(--ac) / 0.6); box-shadow: 0 0 12px rgb(var(--ac) / 0.2); }
/* 下拉选项:深色背景贴合主题(覆盖系统白底) */
.zone-sort option {
  background: #121a16; color: var(--text);
}
.zone-sort option:checked { color: rgb(var(--ac) / 1); }

/* ---------------- 详情面板:点赞按钮已点 ---------------- */
#dtLike.liked {
  color: rgb(var(--ac) / 1); border-color: rgb(var(--ac) / 0.6);
  background: rgb(var(--ac) / 0.16); text-shadow: 0 0 10px rgb(var(--ac) / 0.35);
}

/* ---------------- 卡片就地展开简介 ---------------- */
.rcard.expanded .rc-desc {
  display: block; -webkit-line-clamp: unset; -webkit-box-orient: initial;
  overflow: visible; min-height: 0;
}
.rc-expand { display: none; }
.rcard.expanded .rc-expand { display: flex; margin-top: 6px; }
.rc-open-full {
  flex: 1; height: 38px; border-radius: var(--r-md); font: inherit;
  font-size: 13px; font-weight: 650; cursor: pointer; transition: all .2s;
  border: 1px solid rgb(var(--ac) / 0.5); background: rgb(var(--ac) / 0.16);
  color: rgb(var(--ac) / 1);
}
.rc-open-full:hover { background: rgb(var(--ac) / 0.28); box-shadow: 0 0 16px rgb(var(--ac) / 0.3); }
