/**
 * newdong —— 现代简洁风 · 全站公共页设计系统
 * 规则：终端自适应（PC / 平板 / 手机）；圆角统一 <= 3px（--nd-r: 3px）
 * 命名前缀统一为 nd-，避免与既有 yd- / mz- / zui 样式冲突
 */

:root {
  --nd-font: "PingFang SC", "Microsoft YaHei UI", "Microsoft YaHei", system-ui, -apple-system, "Segoe UI", sans-serif;
  --nd-bg: #f5f7fa;
  --nd-surface: #ffffff;
  --nd-text: #0f172a;
  --nd-muted: #64748b;
  --nd-line: #e6e9ef;
  --nd-brand: #2563eb;
  --nd-brand-d: #1d4ed8;
  --nd-brand-soft: #eef4ff;
  --nd-danger: #dc2626;
  --nd-ok: #059669;
  --nd-r: 3px;
  --nd-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .06);
  --nd-shadow-lg: 0 8px 24px rgba(16, 24, 40, .10);
  /* 全站唯一版心宽度：顶栏与正文共用，保证左右边缘严格对齐 */
  --nd-max: 1240px;
  --nd-header-h: 72px;
}

*, *::before, *::after { box-sizing: border-box; }

html.nd-root { font-size: 100%; }

body.nd-body {
  margin: 0;
  max-width: 100%;
  min-height: 100vh;
  font-family: var(--nd-font);
  font-size: 15px;
  line-height: 1.6;
  color: var(--nd-text);
  background: var(--nd-bg);
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  /* 兜底：任何意外的超宽元素都不产生横向滚动条。
     用 clip 而非 hidden —— clip 不创建滚动容器，不会破坏 .nd-header 的 sticky 定位。 */
  overflow-x: clip;
}

body.nd-body a { color: var(--nd-brand); text-decoration: none; }
body.nd-body a:hover { color: var(--nd-brand-d); }
/* 注意：不要在此写 height/width，否则特异性(0,1,2)会覆盖所有类级图片尺寸 */
body.nd-body img { max-width: 100%; }
body.nd-body h1, body.nd-body h2, body.nd-body h3, body.nd-body h4 { margin: 0; font-weight: 700; color: var(--nd-text); }
body.nd-body ul { margin: 0; padding: 0; list-style: none; }
body.nd-body p { margin: 0 0 12px; }

/* 表单控件：统一圆角 <= 3px、易读字号（覆盖 ZUI 的 13px + 大圆角） */
body.nd-body .form-control {
  font-size: 15px;
  min-height: 42px;
  padding: 8px 12px;
  line-height: 1.5;
  color: var(--nd-text);
  background: #fff;
  border: 1px solid var(--nd-line);
  border-radius: var(--nd-r);
  box-shadow: none;
}
body.nd-body .form-control:focus { border-color: var(--nd-brand); box-shadow: 0 0 0 3px var(--nd-brand-soft); }
body.nd-body .input-group-addon {
  font-size: 14px;
  padding: 8px 12px;
  color: var(--nd-muted);
  background: #f8fafc;
  border: 1px solid var(--nd-line);
  border-radius: var(--nd-r);
}
body.nd-body .btn {
  font-size: 15px;
  padding: 8px 16px;
  line-height: 1.45;
  border-radius: var(--nd-r);
  border: 1px solid transparent;
  box-shadow: none;
}
body.nd-body .btn-sm { font-size: 13px; padding: 5px 10px; }
body.nd-body .btn-lg { font-size: 16px; padding: 11px 22px; }
body.nd-body .btn-primary { color: #fff; background: var(--nd-brand); border-color: var(--nd-brand); }
body.nd-body .btn-primary:hover { background: var(--nd-brand-d); border-color: var(--nd-brand-d); }
body.nd-body .btn-default { color: var(--nd-text); background: #fff; border-color: var(--nd-line); }
body.nd-body .btn-default:hover { border-color: var(--nd-brand); color: var(--nd-brand); }
body.nd-body .btn-block { width: 100%; }

/* ===== 布局 ===== */
.nd-wrap { width: 100%; max-width: var(--nd-max); margin: 0 auto; padding: 0 20px; }
.nd-main { display: block; min-height: 40vh; }

.nd-muted { color: var(--nd-muted); }
.nd-top8 { margin-top: 8px; }
.nd-top16 { margin-top: 16px; }
.nd-top24 { margin-top: 24px; }
.nd-hide-sm { display: initial; }

/* ===== 顶部导航（v13：整体直角化，圆角一律 <= 3px；去掉灰底胶囊与 logo 图标/小字） ===== */
.nd-header {
  position: sticky; top: 0; z-index: 1000;
  height: var(--nd-header-h);
  background: #fff;
  border-bottom: 0;
  box-shadow: 0 1px 0 rgba(15, 23, 42, .07), 0 10px 26px -20px rgba(15, 23, 42, .45);
}
/* 顶部 3px 品牌渐变细条：新导航的视觉标识 */
.nd-header::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, #1d4ed8 0%, #2563eb 38%, #38bdf8 72%, #22d3ee 100%);
}
.nd-header__inner { height: var(--nd-header-h); display: flex; align-items: center; gap: 20px; }

/* 品牌区：仅保留 logo 图片（已去掉图标徽标与副标题小字） */
.nd-logo { display: inline-flex; align-items: center; flex: 0 0 auto; }
.nd-logo__img { height: 60px; width: auto; display: block; }
.nd-logo__text { font-size: 21px; font-weight: 800; color: var(--nd-text); letter-spacing: .5px; line-height: 1.2; }

/* 导航：无灰色底色，仅文字 + 选中态下方 3px 高亮线 */
.nd-nav {
  display: flex; align-items: center; gap: 4px; margin: 0 auto; padding: 0;
  background: transparent; border-radius: 0;
  flex: 0 1 auto; min-width: 0;
}
.nd-nav__link {
  position: relative;
  display: inline-block;
  padding: 12px 18px;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: .01em;
  color: #334155;
  background: transparent; border-radius: 0;
  white-space: nowrap;
  transition: color .15s;
}
.nd-nav__link:hover { color: var(--nd-brand); background: transparent; }
.nd-nav__link.is-active { color: var(--nd-brand); font-weight: 700; background: transparent; box-shadow: none; }
.nd-nav__link.is-active::after {
  content: ""; position: absolute; left: 18px; right: 18px; bottom: 6px;
  height: 3px; background: var(--nd-brand); border-radius: 0;
}

.nd-header__tools { display: flex; align-items: center; gap: 10px; margin-left: auto; flex: 0 0 auto; }

/* 搜索：左侧放大镜图标 + 直角输入框 + 方形蓝色按钮 */
.nd-search { position: relative; display: flex; align-items: center; }
.nd-search__icon {
  position: absolute; left: 14px; top: 50%; transform: translateY(-50%);
  z-index: 2; font-size: 15px; color: #94a3b8; pointer-events: none;
}
.nd-search__input {
  width: 224px; height: 40px; padding: 0 46px 0 38px;
  font-size: 14px; color: var(--nd-text);
  background: #f4f6f9; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  transition: all .15s;
}
.nd-search__input::placeholder { color: #94a3b8; }
.nd-search__input:focus {
  background: #fff; border-color: var(--nd-brand); outline: none;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}
.nd-search__btn {
  position: absolute; right: 3px; top: 3px; width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 0; background: linear-gradient(135deg, var(--nd-brand), #38bdf8); color: #fff;
  cursor: pointer; border-radius: var(--nd-r); font-size: 14px;
}
.nd-search__btn:hover { filter: brightness(1.06); }

.nd-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 42px; padding: 0 20px; font-size: 15px; font-weight: 600;
  border: 1px solid transparent; border-radius: var(--nd-r); cursor: pointer; white-space: nowrap;
  transition: all .15s;
}
.nd-btn--primary { color: #fff; background: var(--nd-brand); }
.nd-btn--primary:hover { color: #fff; background: var(--nd-brand-d); }
.nd-btn--ghost { color: var(--nd-text); background: #fff; border-color: var(--nd-line); }
.nd-btn--ghost:hover { color: var(--nd-brand); border-color: var(--nd-brand); }
.nd-btn--block { width: 100%; }
/* 顶栏主行动按钮（发布作品）：直角化渐变 */
.nd-btn--cta {
  height: 40px; padding: 0 20px; border-radius: var(--nd-r); font-weight: 700;
  color: #fff; background: linear-gradient(135deg, #1d4ed8, #38bdf8);
  box-shadow: 0 8px 18px -10px rgba(37, 99, 235, .95);
}
.nd-btn--cta:hover { color: #fff; filter: brightness(1.06); }
/* 顶栏次要按钮（登录）统一直角 */
.nd-header__tools .nd-btn--ghost { height: 40px; border-radius: var(--nd-r); }
body.nd-body a.nd-btn--cta, body.nd-body a.nd-btn--cta:hover { color: #fff; }
/* 关键修正：body.nd-body a 的特异性(0,1,1)会压过 .nd-btn--primary(0,1,0)，
   导致蓝底按钮上文字也是蓝色（看不见）。用同等以上特异性显式还原按钮文字色。 */
body.nd-body a.nd-btn { text-decoration: none; }
body.nd-body a.nd-btn--primary, body.nd-body a.nd-btn--primary:hover { color: #fff; }
body.nd-body a.nd-btn--ghost { color: var(--nd-text); }
body.nd-body a.nd-btn--ghost:hover { color: var(--nd-brand); }
body.nd-body a.nd-btn--soft { color: var(--nd-brand); }
body.nd-body a.nd-btn--soft:hover { color: #fff; }

/* 用户下拉 */
.nd-usermenu { position: relative; }
.nd-usermenu > button {
  display: inline-flex; align-items: center; gap: 6px;
  height: 40px; padding: 0 16px; font-size: 14px; font-weight: 600;
  color: var(--nd-text); background: #fff; border: 1px solid var(--nd-line);
  border-radius: var(--nd-r); cursor: pointer;
}
.nd-usermenu > button::after {
  content: ""; width: 0; height: 0; border-left: 4px solid transparent;
  border-right: 4px solid transparent; border-top: 5px solid #94a3b8;
}
.nd-usermenu__list {
  position: absolute; right: 0; top: calc(100% + 6px); min-width: 180px;
  padding: 6px; background: #fff; border: 1px solid var(--nd-line);
  border-radius: var(--nd-r); box-shadow: var(--nd-shadow-lg);
  opacity: 0; visibility: hidden; transform: translateY(-4px); transition: all .15s;
}
.nd-usermenu.is-open .nd-usermenu__list { opacity: 1; visibility: visible; transform: translateY(0); }
.nd-usermenu__list a { display: block; padding: 8px 10px; font-size: 14px; color: #334155; border-radius: var(--nd-r); }
.nd-usermenu__list a:hover { color: var(--nd-brand); background: var(--nd-brand-soft); }
.nd-usermenu__sep { height: 1px; margin: 6px 4px; background: var(--nd-line); }

/* 汉堡 / 抽屉 */
.nd-burger {
  display: none; width: 44px; height: 40px; padding: 0;
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r); cursor: pointer;
}
.nd-burger span { display: block; width: 18px; height: 2px; margin: 3px auto; background: #334155; border-radius: 1px; }
.nd-drawer {
  position: fixed; top: 0; right: 0; z-index: 1200;
  width: 78%; max-width: 300px; height: 100%;
  background: #fff; box-shadow: var(--nd-shadow-lg);
  transform: translateX(100%); transition: transform .22s ease, visibility .22s;
  visibility: hidden;
  display: flex; flex-direction: column; padding: 14px;
}
.nd-drawer.is-open { transform: translateX(0); visibility: visible; }
.nd-drawer__head { display: flex; align-items: center; justify-content: space-between; padding-bottom: 10px; border-bottom: 1px solid var(--nd-line); }
.nd-drawer__close { width: 36px; height: 36px; border: 0; background: #f1f5f9; border-radius: var(--nd-r); font-size: 18px; cursor: pointer; }
.nd-drawer__nav { display: flex; flex-direction: column; margin-top: 8px; }
.nd-drawer__nav a { padding: 13px 8px; font-size: 16px; color: #1e293b; border-bottom: 1px solid #f1f5f9; }
.nd-drawer__nav a.is-active { color: var(--nd-brand); font-weight: 700; }
.nd-drawer__tools { margin-top: auto; padding-top: 14px; display: grid; gap: 10px; }
.nd-overlay {
  position: fixed; inset: 0; z-index: 1100; background: rgba(15, 23, 42, .45);
  opacity: 0; visibility: hidden; transition: all .2s;
}
.nd-overlay.is-open { opacity: 1; visibility: visible; }

/* ===== 页头 / 版块 ===== */
.nd-page-head { padding-top: 32px; padding-bottom: 12px; }
.nd-page-head__title { font-size: 34px; line-height: 1.2; letter-spacing: .01em; overflow-wrap: anywhere; word-break: break-word; }
.nd-page-head__desc { margin-top: 8px; color: var(--nd-muted); font-size: 15px; }
.nd-page-head__meta { margin-top: 10px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; color: var(--nd-muted); font-size: 13px; }
.nd-page-head__meta > span { display: inline-flex; align-items: center; gap: 5px; }
.nd-page-head__meta em { font-style: normal; font-weight: 700; color: var(--nd-text); }

.nd-section { padding-top: 26px; padding-bottom: 6px; }
.nd-section__hd { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.nd-section__title { font-size: 23px; }
.nd-section__title small { margin-left: 8px; font-size: 13px; font-weight: 400; color: var(--nd-muted); }
.nd-more { font-size: 14px; color: var(--nd-muted); }
.nd-more:hover { color: var(--nd-brand); }

/* ===== 卡片网格 ===== */
.nd-grid { display: grid; gap: 16px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.nd-grid--wide { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.nd-grid--home { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.nd-card {
  display: block; overflow: hidden; background: var(--nd-surface);
  border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.nd-card:hover { border-color: #cbd5e1; box-shadow: var(--nd-shadow); transform: translateY(-2px); }
.nd-card__thumb {
  position: relative; width: 100%; padding-top: 66%;
  background: #eef2f7 center/cover no-repeat;
}
.nd-card__thumb::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(15, 23, 42, 0) 55%, rgba(15, 23, 42, .28) 100%);
  opacity: 0; transition: opacity .15s;
}
.nd-card:hover .nd-card__thumb::after { opacity: 1; }
.nd-card__body { padding: 12px 14px 14px; }
.nd-card__title { font-size: 15px; font-weight: 600; line-height: 1.45; color: var(--nd-text); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nd-card:hover .nd-card__title { color: var(--nd-brand); }
.nd-card__foot { margin-top: 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.nd-card__stats { display: inline-flex; gap: 6px; color: #64748b; font-size: 13px; }
.nd-card__stat {
  display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px;
  background: #f1f5f9; border-radius: var(--nd-r); white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.nd-card__stat i { color: #94a3b8; font-size: 13px; }
.nd-card:hover .nd-card__stat { background: var(--nd-brand-soft); }
.nd-card:hover .nd-card__stat i { color: var(--nd-brand); }
.nd-card__author { max-width: 45%; font-size: 13px; color: var(--nd-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 瀑布流（列布局，兼容列表页） */
.nd-masonry { columns: 4; column-gap: 16px; }
.nd-masonry .nd-card { margin-bottom: 16px; break-inside: avoid; }

/* ===== 首页 Hero ===== */
.nd-hero { padding-top: 20px; padding-bottom: 4px; }
.nd-hero__track { position: relative; overflow: hidden; border-radius: var(--nd-r); border: 1px solid var(--nd-line); background: #0f172a; }
.nd-hero__slide { display: block; width: 100%; height: 100%; background: #0f172a center/cover no-repeat; }
.nd-hero__dots { position: absolute; left: 0; right: 0; bottom: 12px; display: flex; justify-content: center; gap: 8px; z-index: 3; }
.nd-hero__dot { width: 22px; height: 3px; background: rgba(255, 255, 255, .45); border: 0; padding: 0; border-radius: 2px; cursor: pointer; }
.nd-hero__dot.is-active { background: #fff; }
.nd-hero__nav {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center;
  color: #fff; background: rgba(15, 23, 42, .38); border: 0; border-radius: var(--nd-r); cursor: pointer;
  font-size: 22px; line-height: 1;
}
.nd-hero__nav:hover { background: rgba(15, 23, 42, .6); }
.nd-hero__nav--prev { left: 12px; }
.nd-hero__nav--next { right: 12px; }
.nd-hero__item { position: absolute; inset: 0; opacity: 0; transition: opacity .4s; pointer-events: none; }
.nd-hero__item.is-active { opacity: 1; pointer-events: auto; }
/* 用 padding-top 撑起 16:5 的轮播高度，避免绝对定位子元素导致高度塌陷 */
.nd-hero__frame { position: relative; padding-top: 32%; }

/* 快捷入口（分类）：每行 5 个自适应拉伸；高度较初版压缩 40%，文字居中放大 + 半透明深色底层保证可读 */
.nd-quick { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; padding: 16px 0 4px; }
.nd-quick__item {
  position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden;
  min-width: 0; min-height: 67px; padding: 8px 10px;
  color: #fff; background: #334155 center/cover no-repeat;
  border: 1px solid rgba(15, 23, 42, .06); border-radius: var(--nd-r);
  transition: transform .15s, box-shadow .15s;
}
/* 半透明深色底层：压在背景图上，居中放大的分类文字始终清晰 */
.nd-quick__item::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(15, 23, 42, .34), rgba(15, 23, 42, .52));
  transition: background .15s;
}
.nd-quick__item:hover { transform: translateY(-3px); box-shadow: var(--nd-shadow-lg); }
.nd-quick__item:hover::before { background: linear-gradient(180deg, rgba(29, 78, 216, .58), rgba(15, 23, 42, .62)); }
.nd-quick__label {
  position: relative; z-index: 2; max-width: 100%; text-align: center;
  font-size: 24px; font-weight: 800; letter-spacing: .06em; color: #fff;
  text-shadow: 0 2px 8px rgba(15, 23, 42, .55);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ===== 首页精选：1 张最新大图 + 右侧 4 张小图 + 下方四列 ===== */
.nd-feature { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.nd-feature__main {
  position: relative; display: block; overflow: hidden;
  aspect-ratio: 1 / 1; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  background: #0f172a center/cover no-repeat;
  transition: box-shadow .15s, border-color .15s;
}
/* 悬停：仅保留阴影，不做蓝色描边（用户要求取消蓝色外框） */
.nd-feature__main:hover, .nd-feature__mini:hover { box-shadow: var(--nd-shadow-lg); }
/* 遮罩：只压住底部约 30% 并向上渐变透明，不再全图盖深灰 */
.nd-feature__main::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(0deg, rgba(15, 23, 42, .86) 0%, rgba(15, 23, 42, .5) 16%, rgba(15, 23, 42, 0) 30%);
  transition: background .18s;
}
.nd-feature__main:hover::after { background: linear-gradient(0deg, rgba(15, 23, 42, .94) 0%, rgba(15, 23, 42, .58) 16%, rgba(15, 23, 42, 0) 32%); }
.nd-feature__tag {
  position: absolute; left: 16px; top: 16px; z-index: 3;
  display: inline-flex; align-items: center; gap: 5px;
  height: 28px; padding: 0 13px; font-size: 12px; font-weight: 700; color: #fff;
  background: linear-gradient(135deg, #dc2626, #f97316); border-radius: var(--nd-r);
  box-shadow: 0 8px 16px -10px rgba(220, 38, 38, .95);
}
.nd-feature__info { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; padding: 18px 20px; }
/* 大图标题必须用 body.nd-body 提升特异性：否则会被全局 body.nd-body h1~h4（0,1,2）
   的深色字规则压过，导致"白色字不显示"。 */
body.nd-body .nd-feature__info h3 {
  font-size: 21px; line-height: 1.35; color: #fff;
  text-shadow: 0 2px 10px rgba(15, 23, 42, .65);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.nd-feature__meta { margin-top: 10px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px; font-size: 13px; color: rgba(255, 255, 255, .92); }
.nd-feature__meta > span { display: inline-flex; align-items: center; gap: 5px; }
.nd-feature__meta em { font-style: normal; font-weight: 700; color: #fff; font-variant-numeric: tabular-nums; }
.nd-feature__side { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 16px; aspect-ratio: 1 / 1; }
.nd-feature__mini {
  position: relative; display: block; overflow: hidden;
  border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  background: #eef2f7 center/cover no-repeat;
  transition: box-shadow .15s, border-color .15s;
}
.nd-feature__mini::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(0deg, rgba(15, 23, 42, .88) 0%, rgba(15, 23, 42, .52) 16%, rgba(15, 23, 42, 0) 30%);
  transition: background .18s;
}
.nd-feature__mini:hover::after { background: linear-gradient(0deg, rgba(15, 23, 42, .95) 0%, rgba(15, 23, 42, .6) 16%, rgba(15, 23, 42, 0) 32%); }
/* 小图信息层：标题 + 浏览量 / 点赞量 / 发布者 */
.nd-feature__mini-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 10px 12px; }
.nd-feature__mini b {
  display: block; font-size: 13px; font-weight: 700; line-height: 1.4; color: #fff;
  text-shadow: 0 1px 6px rgba(15, 23, 42, .6);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.nd-feature__mini-meta { margin-top: 5px; display: flex; align-items: center; gap: 10px; font-size: 12px; color: rgba(255, 255, 255, .92); font-variant-numeric: tabular-nums; }
.nd-feature__mini-meta > span { display: inline-flex; align-items: center; gap: 4px; }
.nd-feature__mini-author { max-width: 46%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nd-feature-grid { margin-top: 16px; }
.nd-feature-grid .nd-card__thumb { padding-top: 100%; }
/* 精选区下方三行卡片：与上方大图/小图一致，常显底部向上渐变加深 */
.nd-feature-grid .nd-card__thumb::after {
  opacity: 1;
  background: linear-gradient(0deg, rgba(15, 23, 42, .55) 0%, rgba(15, 23, 42, .28) 14%, rgba(15, 23, 42, 0) 30%);
}
.nd-feature-grid .nd-card:hover .nd-card__thumb::after {
  background: linear-gradient(0deg, rgba(15, 23, 42, .68) 0%, rgba(15, 23, 42, .36) 15%, rgba(15, 23, 42, 0) 32%);
}

/* ===== 全站搜索结果：类型快捷跳转条 ===== */
.nd-search-bar { display: flex; flex-wrap: wrap; gap: 12px; padding: 6px 0 4px; }
.nd-search-bar__item {
  display: inline-flex; align-items: center; gap: 8px; height: 46px; padding: 0 20px;
  font-size: 15px; font-weight: 600; color: #334155;
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  transition: color .15s, border-color .15s, box-shadow .15s;
}
.nd-search-bar__item i { color: var(--nd-brand); }
.nd-search-bar__item:hover { color: var(--nd-brand); border-color: var(--nd-brand); box-shadow: var(--nd-shadow); }
.nd-search-bar__item em {
  font-style: normal; font-size: 12px; font-weight: 700; color: #fff;
  min-width: 22px; height: 22px; padding: 0 7px; border-radius: var(--nd-r);
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--nd-brand), #38bdf8);
  font-variant-numeric: tabular-nums;
}

/* ===== 标签（列表页分类按钮：全景图片 / 全景视频 等） ===== */
.nd-tags { display: flex; flex-wrap: wrap; gap: 10px; padding: 12px 0 22px; }
.nd-tag {
  display: inline-flex; align-items: center; height: 44px; padding: 0 22px;
  font-size: 15px; font-weight: 600; color: #334155;
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  transition: color .15s, border-color .15s, background .15s, box-shadow .15s;
}
.nd-tag:hover { color: var(--nd-brand); border-color: var(--nd-brand); box-shadow: var(--nd-shadow); }
.nd-tag.is-active { color: #fff; background: var(--nd-brand); border-color: var(--nd-brand); }

/* ===== 达人 ===== */
.nd-creators { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
.nd-creator {
  display: flex; align-items: center; gap: 10px; padding: 12px;
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r); color: var(--nd-text);
}
.nd-creator:hover { border-color: var(--nd-brand); }
.nd-creator img { width: 44px; height: 44px; border-radius: var(--nd-r); object-fit: cover; background: #eef2f7; }
.nd-creator span { font-size: 14px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.nd-people { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; padding-bottom: 28px; }
.nd-people-card {
  position: relative; overflow: hidden;
  padding: 30px 22px 24px; text-align: center;
  background: linear-gradient(180deg, #f7faff 0%, #ffffff 46%);
  border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  transition: border-color .15s, transform .15s, box-shadow .15s;
}
.nd-people-card::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; opacity: 0;
  background: linear-gradient(90deg, #2563eb, #60a5fa); transition: opacity .15s;
}
.nd-people-card:hover { border-color: var(--nd-brand); transform: translateY(-3px); box-shadow: var(--nd-shadow-lg); }
.nd-people-card:hover::before { opacity: 1; }
/* 注意：`.nd-people-card img`(0,1,1) 特异性高于 `__avatar`(0,1,0)，两处必须同步，否则尺寸不生效 */
.nd-people-card img,
.nd-people-card__avatar {
  width: 96px; height: 96px; border-radius: var(--nd-r); object-fit: cover; background: #eef2f7;
  border: 3px solid #fff; box-shadow: 0 0 0 1px var(--nd-line), 0 8px 20px rgba(15, 23, 42, .10);
}
.nd-people-card__name { margin-top: 16px; font-size: 19px; font-weight: 800; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nd-people-card__stats { margin-top: 8px; font-size: 14px; color: var(--nd-muted); }
.nd-people-card__link { display: inline-block; margin-top: 12px; padding: 6px 14px; font-size: 13px; color: var(--nd-brand); border: 1px solid var(--nd-brand); border-radius: var(--nd-r); }
.nd-people-card__link:hover { color: #fff; background: var(--nd-brand); }
.nd-people-card .nd-btn { margin-top: 18px; height: 44px; font-size: 15px; }

/* ===== 达人主页：带头图的资料卡（margin:auto 兜底，避免覆盖 .nd-wrap 的水平居中） ===== */
.nd-author {
  position: relative; overflow: hidden; background: #fff;
  border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  margin: 20px auto 0;
}
.nd-author__banner {
  position: relative; height: 136px;
  background: radial-gradient(120% 200% at 10% 0%, #3b82f6 0%, #1d4ed8 46%, #1e3a8a 100%);
}
.nd-author__banner::after {
  content: ""; position: absolute; inset: 0; opacity: .45;
  background-image: radial-gradient(rgba(255, 255, 255, .18) 1px, transparent 1px);
  background-size: 14px 14px;
}
/* 头像向上叠压横幅 46px；文字信息用 padding-top 压到横幅以下，避免名字叠在蓝色横幅上 */
.nd-author__head { position: relative; display: flex; gap: 22px; align-items: flex-start; padding: 0 26px 22px; margin-top: -46px; }
.nd-author__avatar {
  flex: 0 0 auto; width: 112px; height: 112px; border-radius: var(--nd-r);
  object-fit: cover; background: #eef2f7;
  border: 4px solid #fff; box-shadow: 0 6px 18px rgba(15, 23, 42, .16);
}
.nd-author__meta { flex: 1 1 auto; min-width: 0; padding-top: 56px; }
/* 名称行：昵称 + 等级徽章（作品量/浏览量已移至联系方式行） */
.nd-author__titlerow { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; }
.nd-author__name { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: 27px; line-height: 1.2; overflow-wrap: anywhere; }
.nd-author__badge {
  display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px;
  font-size: 12px; font-weight: 700; color: #b45309;
  background: linear-gradient(135deg, #fef3c7, #fde68a);
  border: 1px solid #fcd34d; border-radius: var(--nd-r); white-space: nowrap;
}
.nd-author__region { margin-top: 8px; display: inline-flex; align-items: center; gap: 5px; font-size: 14px; color: var(--nd-muted); }
.nd-author__stats { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px; }
.nd-author__stat {
  min-width: 118px; padding: 12px 18px; text-align: center;
  background: linear-gradient(180deg, #f8fafc, #f1f5f9);
  border: 1px solid var(--nd-line); border-radius: var(--nd-r);
}
.nd-author__stat b { display: block; font-size: 26px; font-weight: 800; line-height: 1.15; color: var(--nd-brand); font-variant-numeric: tabular-nums; }
.nd-author__stat span, .nd-author__stat em { display: block; margin-top: 2px; font-style: normal; font-size: 12px; color: var(--nd-muted); }
.nd-author__contact { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 10px; font-size: 13px; color: var(--nd-muted); }
.nd-author__contact-item {
  display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; white-space: nowrap;
  background: #f8fafc; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
}
.nd-author__contact-item b { font-weight: 700; color: var(--nd-text); font-variant-numeric: tabular-nums; }
.nd-author__contact a { color: var(--nd-brand); }

/* ===== 达人主页作品分类菜单：独立卡片区块，与上方资料卡分离（v11） ===== */
.nd-author__tabs {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px;
  margin: 14px auto 0; padding: 14px 22px;
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
}
.nd-author__tabs .nd-tabs__item {
  padding: 12px 28px; font-size: 16px; font-weight: 700; color: #334155;
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  transition: color .15s, border-color .15s, background .15s, box-shadow .15s;
}
.nd-author__tabs .nd-tabs__item:hover { color: var(--nd-brand); border-color: var(--nd-brand); box-shadow: var(--nd-shadow); }
.nd-author__tabs .nd-tabs__item.is-active { color: #fff; background: var(--nd-brand); border-color: var(--nd-brand); }
.nd-author__tabs .nd-tabs__item.is-active::after { display: none; }
.nd-author__works { margin-top: 24px; }

/* ===== 文章 ===== */
.nd-sheet { background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r); padding: 26px; }
.nd-prose { font-size: 15px; line-height: 1.85; color: #1f2937; word-wrap: break-word; word-break: break-word; }
.nd-prose img { max-width: 100%; height: auto; display: block; margin: 12px 0; }
.nd-prose p { margin: 0 0 14px; }
.nd-prose table { width: 100% !important; max-width: 100%; display: block; overflow-x: auto; }

.nd-news { display: grid; gap: 12px; }
.nd-news-row { display: flex; gap: 14px; padding: 14px; background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r); }
.nd-news-row:hover { border-color: var(--nd-brand); }
.nd-news-row__thumb { flex: 0 0 160px; width: 160px; height: 106px; border-radius: var(--nd-r); background: #eef2f7 center/cover no-repeat; }
.nd-news-row__body { min-width: 0; display: flex; flex-direction: column; }
.nd-news-row__title { font-size: 17px; font-weight: 700; }
.nd-news-row__excerpt { margin-top: 6px; font-size: 13px; color: var(--nd-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nd-news-row__meta { margin-top: auto; padding-top: 8px; font-size: 12px; color: #94a3b8; display: flex; gap: 14px; }

/* ===== 地图 ===== */
.nd-map { padding-top: 8px; padding-bottom: 26px; }
.nd-map__frame { display: block; width: 100%; height: 70vh; min-height: 420px; border: 1px solid var(--nd-line); border-radius: var(--nd-r); background: #fff; }

/* ===== 分页 ===== */
.nd-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; padding: 26px 0; }
.nd-pager__sum { font-size: 13px; color: var(--nd-muted); margin-right: 6px; }
.nd-pager__item {
  min-width: 34px; height: 34px; padding: 0 10px; display: inline-flex; align-items: center; justify-content: center;
  font-size: 14px; color: #334155; background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
}
.nd-pager__item:hover { color: var(--nd-brand); border-color: var(--nd-brand); }
.nd-pager__item.is-active { color: #fff; background: var(--nd-brand); border-color: var(--nd-brand); }
.nd-pager__gap { padding: 0 4px; color: #94a3b8; }

/* ===== 空态 / 加载提示 ===== */
.nd-empty { padding: 60px 16px; text-align: center; color: var(--nd-muted); font-size: 14px; }
.nd-no-data { padding: 40px 16px; text-align: center; color: var(--nd-muted); }
.nd-loading { padding: 22px 16px; text-align: center; color: var(--nd-muted); font-size: 13px; }

/* ===== 页脚 ===== */
.nd-footer { position: relative; clear: both; width: 100%; margin-top: 40px; background: #fff; border-top: 1px solid var(--nd-line); }
.nd-footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 24px; padding: 34px 0 18px; }
.nd-footer__logo { display: inline-flex; align-items: center; }
.nd-footer__logo img { height: 100px; width: auto; }
.nd-footer__muted { margin-top: 10px; color: var(--nd-muted); font-size: 13px; }
.nd-footer__links { display: flex; flex-direction: column; gap: 10px; }
.nd-footer__links a { font-size: 14px; color: #475569; }
.nd-footer__links a:hover { color: var(--nd-brand); }
.nd-footer__col-title { font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.nd-footer__icp { padding: 14px 0 24px; border-top: 1px solid var(--nd-line); text-align: center; color: var(--nd-muted); font-size: 13px; }

/* ===== 通行证（登录/注册/找回/绑定） ===== */
.nd-auth-wrap { display: flex; justify-content: center; padding: 40px 20px 60px; }
.nd-auth-card {
  width: 100%; max-width: 420px; padding: 28px 26px 30px; background: #fff;
  border: 1px solid var(--nd-line); border-radius: var(--nd-r); box-shadow: var(--nd-shadow);
}
.nd-auth-card__brand { text-align: center; margin-bottom: 6px; }
.nd-auth-card__brand img { height: 100px; width: auto; }
.nd-auth-card__title { margin-top: 14px; font-size: 22px; text-align: center; }
.nd-auth-card__sub { margin-top: 4px; text-align: center; color: var(--nd-muted); font-size: 13px; }

.nd-auth-tabs { display: flex; gap: 0; margin: 20px 0 18px; background: #f1f5f9; border-radius: var(--nd-r); padding: 3px; }
.nd-auth-tabs__btn {
  flex: 1 1 0; height: 36px; font-size: 14px; color: #475569; background: transparent;
  border: 0; border-radius: var(--nd-r); cursor: pointer;
}
.nd-auth-tabs__btn.is-active { color: var(--nd-brand); background: #fff; font-weight: 700; box-shadow: var(--nd-shadow); }

.nd-auth-panel { display: none; }
.nd-auth-panel.is-active { display: block; }
.nd-auth-panel .input-group { margin-bottom: 14px; width: 100%; }
.nd-auth-panel .input-group > .form-control { border-radius: var(--nd-r); }
.nd-auth-panel .input-group > .input-group-addon:first-child { border-right: 0; }
.nd-auth-panel .btn-block { margin-top: 8px; height: 44px; }

.nd-auth-steps { display: flex; gap: 10px; justify-content: center; margin-bottom: 16px; font-size: 13px; color: var(--nd-muted); }
.nd-auth-steps span.is-done { color: var(--nd-brand); font-weight: 700; }
.nd-auth-note { margin: -6px 0 12px; font-size: 12px; color: var(--nd-muted); }
.nd-auth-links { margin-top: 16px; text-align: center; font-size: 13px; }
.nd-auth-oauth { margin-top: 16px; display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; }
.nd-auth-oauth img { height: 34px; }
.nd-findpwd-step { display: none; }
.nd-findpwd-step.is-active { display: block; }

.nd-consent-backdrop {
  position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center;
  padding: 20px; background: rgba(15, 23, 42, .5); opacity: 0; visibility: hidden; transition: all .2s;
}
.nd-consent-backdrop.is-open { opacity: 1; visibility: visible; }
.nd-consent-modal { width: 100%; max-width: 460px; background: #fff; border-radius: var(--nd-r); overflow: hidden; }
.nd-consent-modal__head { padding: 16px 18px; font-weight: 700; border-bottom: 1px solid var(--nd-line); }
.nd-consent-modal__body { padding: 18px; font-size: 14px; line-height: 1.7; color: #334155; }
.nd-consent-modal__links { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 12px; }
.nd-consent-modal__foot { padding: 14px 18px; display: flex; gap: 10px; justify-content: flex-end; border-top: 1px solid var(--nd-line); }

/* ===== 表单字段（nd-field / nd-input） ===== */
.nd-field {
  position: relative;
  display: flex;
  align-items: center;
  margin-bottom: 14px;
  background: #fff;
  border: 1px solid var(--nd-line);
  border-radius: var(--nd-r);
  transition: border-color .15s, box-shadow .15s;
}
.nd-field:focus-within { border-color: var(--nd-brand); box-shadow: 0 0 0 3px var(--nd-brand-soft); }
.nd-field.has-error { border-color: var(--nd-danger); box-shadow: 0 0 0 3px #fee2e2; }
.nd-field__icon { flex: 0 0 auto; width: 42px; text-align: center; color: #94a3b8; font-size: 15px; }
.nd-field__label { flex: 0 0 auto; padding: 0 10px 0 14px; font-size: 13px; color: var(--nd-muted); }
.nd-field .nd-input { border: 0; background: transparent; box-shadow: none; }
.nd-field .nd-input:focus { border: 0; box-shadow: none; }
.nd-input--withlabel { padding-left: 0 !important; }
.nd-input--withsuffix { padding-right: 106px !important; }
.nd-field__suffix {
  position: absolute; right: 5px; top: 5px; height: 34px; padding: 0 12px;
  font-size: 13px;
}
.nd-field__captcha {
  flex: 0 0 auto; width: 92px; height: 34px; margin-right: 5px;
  border: 1px solid var(--nd-line); border-radius: var(--nd-r); cursor: pointer; display: block;
}
.nd-input {
  display: block; width: 100%; height: 44px; padding: 0 14px;
  font-family: inherit; font-size: 15px; color: var(--nd-text);
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r);
  outline: none; transition: border-color .15s, box-shadow .15s;
}
.nd-input::placeholder { color: #9aa6b6; }
.nd-input:focus { border-color: var(--nd-brand); box-shadow: 0 0 0 3px var(--nd-brand-soft); }

.nd-auth-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 4px 0 16px; font-size: 13px; }
.nd-check { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: #475569; cursor: pointer; }
.nd-check input { margin: 0; }
.nd-check a { color: var(--nd-brand); }
.nd-check--block { display: flex; align-items: flex-start; margin: 0 0 16px; line-height: 1.65; }
.nd-check--block input { margin-top: 4px; flex: 0 0 auto; }

.nd-btn--soft { color: var(--nd-brand); background: var(--nd-brand-soft); border-color: transparent; }
.nd-btn--soft:hover { color: #fff; background: var(--nd-brand); }
.nd-btn--lg { height: 44px; font-size: 15px; padding: 0 22px; }

.nd-auth-card__brandtext { font-size: 18px; font-weight: 800; color: var(--nd-text); }
.nd-auth-oauth__btn {
  display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 22px;
  font-size: 14px; color: #334155; background: #fff;
  border: 1px solid var(--nd-line); border-radius: var(--nd-r);
}
.nd-auth-oauth__btn:hover { color: var(--nd-brand); border-color: var(--nd-brand); }
.nd-auth-oauth__btn img { width: 22px; height: 22px; }
.nd-auth-oauth__btn svg { width: 22px; height: 22px; flex: 0 0 auto; }
.nd-auth-oauth__btn--qq:hover { color: #12b7f5; border-color: #12b7f5; }
.nd-auth-oauth__btn--wx:hover { color: #07c160; border-color: #07c160; }
.nd-auth-oauth__btn--douyin:hover { color: #111; border-color: #111; }
.nd-auth-oauth__btn--qq:hover img,
.nd-auth-oauth__btn--wx:hover img,
.nd-auth-oauth__btn--douyin:hover svg { transform: scale(1.06); }
.nd-auth-copyright { margin: 18px 0 0; text-align: center; font-size: 12px; color: var(--nd-muted); }
.nd-auth-wrap { flex-direction: column; align-items: center; }
.nd-auth-panel .nd-btn--block + .nd-btn--block { margin-top: 10px; }

/* ===== 提示 / 空态卡片 ===== */
.nd-notice-wrap { display: flex; align-items: center; justify-content: center; padding: 56px 14px; min-height: 52vh; }
.nd-notice-card {
  width: 100%; max-width: 520px; padding: 32px 26px 28px; text-align: center; background: #fff;
  border: 1px solid var(--nd-line); border-radius: var(--nd-r); box-shadow: var(--nd-shadow);
}
.nd-notice-card--auth { max-width: 420px; }
.nd-notice-card__brand { display: inline-flex; justify-content: center; margin-bottom: 12px; }
.nd-notice-card__brand img { height: 38px; width: auto; }
.nd-notice-card__icon { font-size: 34px; color: var(--nd-brand); margin-bottom: 10px; }
.nd-notice-card__title { font-size: 20px; line-height: 1.4; }
.nd-notice-card__desc { margin-top: 10px; font-size: 14px; color: var(--nd-muted); }
.nd-notice-card__qr { display: block; margin: 16px auto 10px; border: 1px solid var(--nd-line); border-radius: var(--nd-r); }
.nd-notice-code { display: inline-block; margin-bottom: 16px; padding: 6px 18px; font-size: 20px; font-weight: 800; letter-spacing: 2px; color: var(--nd-brand); background: var(--nd-brand-soft); border-radius: var(--nd-r); }
.nd-notice-form { max-width: 300px; margin: 0 auto; }
.nd-notice-form .nd-btn { margin-top: 10px; }
.nd-notice-card__actions { margin-top: 22px; display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.nd-notice-card__foot { margin: 18px 0 0; font-size: 12px; color: var(--nd-muted); }

.nd-empty__icon { font-size: 40px; color: #cbd5e1; margin-bottom: 12px; }
.nd-empty__title { font-size: 16px; font-weight: 700; color: var(--nd-text); }
.nd-empty__desc { margin-top: 6px; font-size: 13px; }
.nd-empty .nd-btn { margin-top: 18px; }

/* ===== 筛选栏 / 胶囊（达人列表页等） ===== */
.nd-filterbar { display: flex; flex-wrap: wrap; gap: 14px 32px; padding: 6px 0 22px; }
.nd-filterbar__group { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.nd-filterbar__label { font-size: 15px; font-weight: 600; color: var(--nd-muted); }
.nd-chip {
  display: inline-flex; align-items: center; height: 44px; padding: 0 22px;
  font-size: 15px; font-weight: 600; color: #334155;
  background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r); white-space: nowrap;
  transition: color .15s, border-color .15s, background .15s, box-shadow .15s;
}
.nd-chip:hover { color: var(--nd-brand); border-color: var(--nd-brand); box-shadow: var(--nd-shadow); }
.nd-chip.is-active { color: #fff; background: var(--nd-brand); border-color: var(--nd-brand); }

/* ===== 标签页 ===== */
.nd-tabs { display: flex; flex-wrap: wrap; gap: 4px; margin: 16px 0 18px; border-bottom: 1px solid var(--nd-line); }
.nd-tabs__item {
  position: relative; padding: 9px 16px; font-size: 14px; color: #475569; border-radius: var(--nd-r) var(--nd-r) 0 0;
}
.nd-tabs__item:hover { color: var(--nd-brand); background: var(--nd-brand-soft); }
.nd-tabs__item.is-active { color: var(--nd-brand); font-weight: 700; }
.nd-tabs__item.is-active::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: -1px; height: 2px; background: var(--nd-brand); border-radius: 2px; }

/* ===== 达人主页补充（结构类已在上面统一定义） ===== */
.nd-author__single-link { margin-left: auto; align-self: flex-end; padding-bottom: 4px; }

/* ===== 达人列表补充 ===== */
.nd-people-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; padding-bottom: 28px; }
.nd-people-card__link-wrap { display: inline-block; }
.nd-people-card__avatar { width: 96px; height: 96px; border-radius: var(--nd-r); object-fit: cover; background: #eef2f7; }
.nd-people-card__stats { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 8px 0 0; font-size: 14px; color: var(--nd-muted); }
.nd-people-card__stats i { width: 1px; height: 12px; background: var(--nd-line); }

/* ===== 资讯列表 ===== */
.nd-news__item { margin-bottom: 12px; }
.nd-news__row { display: flex; gap: 14px; padding: 14px; background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r); }
.nd-news__row:hover { border-color: var(--nd-brand); box-shadow: var(--nd-shadow); }
.nd-news__thumb { flex: 0 0 168px; width: 168px; height: 112px; border-radius: var(--nd-r); background: #eef2f7 center/cover no-repeat; }
.nd-news__body { min-width: 0; display: flex; flex-direction: column; }
.nd-news__title { font-size: 17px; font-weight: 700; color: var(--nd-text); }
.nd-news__row:hover .nd-news__title { color: var(--nd-brand); }
.nd-news__excerpt { margin-top: 6px; font-size: 13px; color: var(--nd-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nd-news__meta { margin-top: auto; padding-top: 8px; font-size: 12px; color: #94a3b8; display: flex; flex-wrap: wrap; gap: 14px; }

/* ===== 广告位 ===== */
.nd-ad-row { display: flex; flex-wrap: wrap; gap: 14px; padding-top: 10px; }
.nd-ad-row__item { flex: 1 1 300px; display: block; }
.nd-ad-row__item img { width: 100%; height: auto; border-radius: var(--nd-r); }

/* ===== 文章详情（正文 + 侧栏） ===== */
.nd-article-layout { display: grid; grid-template-columns: minmax(0, 1fr) 288px; gap: 22px; align-items: start; padding-top: 8px; padding-bottom: 26px; }
.nd-article-aside { position: sticky; top: calc(var(--nd-header-h) + 16px); display: grid; gap: 16px; }
.nd-side-card { padding: 16px; background: #fff; border: 1px solid var(--nd-line); border-radius: var(--nd-r); }
.nd-side-card__title { margin-bottom: 10px; padding-bottom: 8px; font-size: 15px; border-bottom: 1px solid var(--nd-line); }
.nd-side-list { display: flex; flex-direction: column; gap: 9px; }
.nd-side-list a { font-size: 13px; color: #475569; line-height: 1.5; }
.nd-side-list a:hover { color: var(--nd-brand); }

/* ===== 普通视频播放页 ===== */
.nd-page-head--tight { padding-top: 20px; }
.nd-player-section { padding-top: 8px; }
.nd-player { background: #000; border: 1px solid var(--nd-line); border-radius: var(--nd-r); overflow: hidden; }
.nd-player__video { display: block; width: 100%; max-height: 76vh; background: #000; }
.nd-player__stats { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
/* 播放器上方靠右的统计行（普通视频播放页） */
.nd-player__stats--top { justify-content: flex-end; margin-top: 0; margin-bottom: 12px; }
.nd-player__stat {
  display: inline-flex; align-items: center; gap: 7px; padding: 9px 16px;
  font-size: 13px; color: var(--nd-muted); background: #fff;
  border: 1px solid var(--nd-line); border-radius: var(--nd-r);
}
.nd-player__stat i { font-size: 14px; color: var(--nd-brand); }
.nd-player__stat b { font-size: 17px; font-weight: 800; color: var(--nd-text); font-variant-numeric: tabular-nums; }
.nd-player__actions { display: flex; flex-wrap: wrap; gap: 10px; padding: 16px 0 4px; }

/* ===== 自适应 ===== */
@media (max-width: 1240px) {
  .nd-header__inner { gap: 12px; }
  .nd-nav { gap: 0; padding: 0; }
  .nd-nav__link { padding: 12px 13px; font-size: 15px; }
  .nd-nav__link.is-active::after { left: 13px; right: 13px; }
  .nd-search__input { width: 190px; }
}

@media (max-width: 1080px) {
  .nd-grid, .nd-grid--home { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .nd-masonry { columns: 3; }
  .nd-creators, .nd-people, .nd-people-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .nd-article-layout { grid-template-columns: minmax(0, 1fr) 250px; }
  .nd-page-head__title { font-size: 30px; }
}

@media (max-width: 900px) {
  .nd-nav { display: none; }
  .nd-burger { display: block; }
  .nd-hide-sm { display: none !important; }
  .nd-search__input { width: 170px; }
  .nd-article-layout { grid-template-columns: minmax(0, 1fr); }
  .nd-article-aside { position: static; }
}

@media (max-width: 768px) {
  .nd-wrap { padding: 0 14px; }
  .nd-grid, .nd-grid--home, .nd-grid--wide { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nd-masonry { columns: 2; }
  .nd-quick { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nd-creators, .nd-people, .nd-people-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .nd-hero__frame { padding-top: 46%; }
  .nd-page-head { padding-top: 22px; padding-bottom: 8px; }
  .nd-page-head__title { font-size: 24px; }
  .nd-page-head__desc { font-size: 14px; }
  /* 列表页分类按钮：移动端仍保持易点按 */
  .nd-tags { gap: 8px; padding: 10px 0 16px; }
  .nd-tag { height: 40px; padding: 0 16px; font-size: 14px; }
  .nd-filterbar { gap: 10px 20px; padding: 4px 0 16px; }
  .nd-filterbar__group { gap: 8px; }
  .nd-filterbar__label { font-size: 14px; }
  .nd-chip { height: 40px; padding: 0 16px; font-size: 14px; }
  /* 达人列表卡片：移动端缩小一点，保证两列不拥挤 */
  .nd-people-card { padding: 20px 12px 16px; }
  .nd-people-card img, .nd-people-card__avatar { width: 72px; height: 72px; }
  .nd-people-card__name { margin-top: 10px; font-size: 16px; }
  .nd-people-card__stats { font-size: 12px; gap: 7px; margin-top: 6px; }
  .nd-people-card .nd-btn { margin-top: 12px; height: 40px; font-size: 14px; }
  .nd-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 16px; padding: 24px 0 10px; }
  .nd-footer__grid > div:first-child { grid-column: 1 / -1; }
  .nd-footer__links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; }
  .nd-author { margin-top: 16px; }
  .nd-author__banner { height: 104px; }
  .nd-author__head { flex-direction: column; align-items: center; gap: 10px; padding: 0 16px 20px; margin-top: -46px; text-align: center; }
  .nd-author__avatar { width: 92px; height: 92px; }
  .nd-author__meta { padding-top: 0; width: 100%; }
  .nd-author__titlerow { flex-direction: column; align-items: center; gap: 10px; }
  .nd-author__titlerow .nd-author__stats { justify-content: center; }
  .nd-author__name { justify-content: center; font-size: 22px; }
  .nd-author__region { justify-content: center; }
  .nd-author__stats { justify-content: center; width: 100%; }
  .nd-author__stat { flex: 1 1 0; min-width: 0; padding: 10px 8px; }
  .nd-author__stat b { font-size: 21px; }
  .nd-author__contact { justify-content: center; }
  /* 达人主页分类：移动端排成 2×2 网格，整体居中、不换行挤压 */
  .nd-author__tabs { margin-top: 12px; padding: 12px; gap: 8px; }
  .nd-author__tabs .nd-tabs__item { flex: 1 1 calc(50% - 8px); padding: 11px 10px; font-size: 15px; text-align: center; }
  /* 首页精选：移动端大图整行 + 小图 2×2 */
  .nd-feature { grid-template-columns: 1fr; }
  .nd-feature__side { aspect-ratio: auto; grid-auto-rows: 1fr; }
  .nd-feature__side .nd-feature__mini { aspect-ratio: 1 / 1; }
  .nd-feature__tag { left: 10px; top: 10px; height: 26px; padding: 0 11px; font-size: 11px; }
  .nd-feature__info { padding: 12px 14px; }
  body.nd-body .nd-feature__info h3 { font-size: 17px; }
  .nd-feature__meta { gap: 10px; font-size: 12px; }
  .nd-news-row, .nd-news__row { flex-direction: column; }
  .nd-news-row__thumb, .nd-news__thumb { width: 100%; flex-basis: auto; height: 180px; }
  .nd-sheet { padding: 18px 16px; }
  .nd-map__frame { height: 56vh; }
  .nd-player__video { max-height: 56vh; }
  .nd-player__actions .nd-btn { flex: 1 1 auto; }
}

@media (max-width: 480px) {
  .nd-grid, .nd-grid--home, .nd-grid--wide { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .nd-card__body { padding: 9px 10px 11px; }
  .nd-card__title { font-size: 14px; }
  .nd-card__stat { padding: 2px 7px; font-size: 12px; }
  .nd-card__stat i { font-size: 12px; }
  .nd-auth-card { padding: 22px 16px 24px; }
  .nd-notice-card { padding: 24px 16px 22px; }
  .nd-news__row { padding: 12px; }
  .nd-news__thumb { height: 152px; }
  .nd-news__title { font-size: 15px; }
  .nd-page-head__title { font-size: 22px; }
  .nd-input--withsuffix { padding-right: 0 !important; }
  .nd-field { flex-wrap: wrap; }
  .nd-field__suffix { position: static; width: 100%; margin: 0 5px 5px; }
  .nd-player__stats { gap: 8px; }
  .nd-player__stat { flex: 1 1 0; justify-content: center; padding: 8px 10px; }
  .nd-player__stat b { font-size: 16px; }
  .nd-author__stat b { font-size: 19px; }
  .nd-tag { height: 38px; padding: 0 13px; font-size: 13px; }
  .nd-chip { height: 38px; padding: 0 13px; font-size: 13px; }
  .nd-people-card { padding: 18px 10px 14px; }
  .nd-people-card img, .nd-people-card__avatar { width: 64px; height: 64px; }
  .nd-people-card__name { font-size: 15px; }
  .nd-people-card .nd-btn { margin-top: 10px; height: 38px; font-size: 13px; padding: 0 10px; }
  .nd-author__tabs .nd-tabs__item { font-size: 14px; padding: 10px 6px; }
}

/* ===== 发布/编辑页（yd- 外壳）字号收敛 =====
   newdong-shell.css 把 html 根字号放大到 118.75%（≈19px），叠加其 !important 规则，
   导致上传页顶部导航 / 二级导航字号过大。页面挂上 html.nd-compact 后统一收敛。 */
html.nd-compact { font-size: 100%; }
html.nd-compact body.yd-body { font-size: 15px; }
html.nd-compact body.yd-body.yd-page-add .yd-header-zone .yd-nav__link,
html.nd-compact body.yd-body.yd-page-edit .yd-header-zone .yd-nav__link {
  font-size: 15px !important;
  padding-left: 16px;
  padding-right: 16px;
}
html.nd-compact body.yd-body.yd-page-add .yd-btn,
html.nd-compact body.yd-body.yd-page-edit .yd-btn {
  font-size: 14px !important;
  padding: 8px 16px !important;
}
html.nd-compact body.yd-body.yd-page-add .yd-user-dd > button,
html.nd-compact body.yd-body.yd-page-edit .yd-user-dd > button {
  font-size: 14px !important;
}
html.nd-compact body.yd-body.yd-page-add .yd-user-dd__menu a,
html.nd-compact body.yd-body.yd-page-edit .yd-user-dd__menu a {
  font-size: 14px !important;
}
/* 中部二级导航（会员 tabs）同步收敛 */
html.nd-compact .mz-member-tabs a { font-size: 14px; min-height: 44px; padding: 8px 12px; }
html.nd-compact body.yd-body .btn { font-size: 14px; }
html.nd-compact body.yd-body .form-control { font-size: 14px; }

/* ===== 移动端底部固定导航（源自 vrjieyang red_mobile_nav，按 newdong 规范重做） =====
   仅 ≤768px 显示；层级 999：低于顶栏(1000)/抽屉(1200)/弹窗(2000)，
   抽屉与弹窗打开时自然盖住底栏。发布键上浮但圆角仍守全站 3px 上限。 */
.nd-footnav { display: none; }

@media (max-width: 768px) {
  /* 给固定底栏让位，避免页脚内容被遮挡；兼容刘海屏安全区 */
  body.nd-body { padding-bottom: calc(62px + env(safe-area-inset-bottom, 0px)); }
  .nd-footnav {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 999;
    display: flex; align-items: stretch; justify-content: space-around;
    height: calc(56px + env(safe-area-inset-bottom, 0px));
    padding: 0 2px env(safe-area-inset-bottom, 0px);
    background: #fff;
    border-top: 1px solid var(--nd-line);
    box-shadow: 0 -2px 12px rgba(16, 24, 40, .07);
  }
  .nd-footnav__item {
    flex: 1 1 0; min-width: 0;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
    color: var(--nd-muted); font-size: 11px; line-height: 1;
    -webkit-tap-highlight-color: transparent;
  }
  .nd-footnav__item svg { width: 22px; height: 22px; display: block; }
  .nd-footnav__item:active { color: var(--nd-brand); }
  .nd-footnav__item.is-active { color: var(--nd-brand); font-weight: 700; }
  /* 中央发布键：上浮方块（3px 圆角），品牌色 */
  .nd-footnav__item--publish { justify-content: flex-start; }
  .nd-footnav__fab {
    width: 46px; height: 46px; margin-top: -16px; margin-bottom: 1px;
    display: flex; align-items: center; justify-content: center;
    background: var(--nd-brand); color: #fff;
    border: 3px solid #fff;
    border-radius: 3px;
    box-shadow: 0 6px 14px rgba(37, 99, 235, .38);
  }
  .nd-footnav__fab svg { width: 24px; height: 24px; }
  .nd-footnav__item--publish span:last-child { margin-top: -2px; }
  .nd-footnav__item--publish.is-active .nd-footnav__fab { background: var(--nd-brand-d); }
}

/* ===================================================================
   全站圆角上限：3px（v13）
   —— 统一收敛 ZUI 组件 / 第三方插件 / 主题外壳的大圆角与胶囊，
      全站任何圆角均不超过 3px（直角元素不受影响）。
   =================================================================== */
.btn, .btn-lg, .btn-sm, .btn-xs, .btn-mini,
.btn-group-xs > .btn, .btn-group-sm > .btn, .btn-group-lg > .btn, .form-condensed .btn,
.form-control, .input-lg, .input-group-addon, .input-group-sm > .form-control,
.input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn,
.input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn,
.panel, .panel-group .panel, .panel-heading, .panel-footer,
.modal-content, .modal-dialog, .modal-header, .modal-footer, .modal-iframe .modal-body > iframe,
.dropdown-menu, .dropdown-submenu > .dropdown-menu, .popover, .popover-title, .tooltip-inner,
.nav-tabs > li > a, .nav-pills > li > a, .navbar, .navbar-toggle,
.pager > li > a, .pager > li > span, .pager-loose > li > a, .pager-loose > li > span,
.pager-pills > li > a, .pager-pills > li > span, .pagination > li > a, .pagination > li > span,
.progress, .progress-bar, .breadcrumb, .label, .label-badge, .label-dot, .alert, .well,
.img-rounded, .img-thumbnail, .img-circle, .thumbnail, .list-group-item, .card,
.card > img, .card > .media-wrapper, .cards-borderless .card > img, .cards-borderless .card > .media-wrapper,
.carousel-indicators li, .messager, .tree-chevrons li::before,
pre, code, kbd, .btn-file, .file-input,
.chosen-container, .chosen-container .chosen-single, .chosen-container .chosen-choices,
.chosen-container-multi .chosen-choices, .chosen-container .chosen-drop,
.bootstrap-switch, .bootstrap-switch-label, .bootstrap-switch-handle-on, .bootstrap-switch-handle-off,
.datetimepicker, .datetimepicker-days, .picker,
#searchScene, #searchScene .searchResultList {
  border-radius: 3px !important;
}
