/* ==========================================================================
   数智小国医 · 网页端视觉稿
   配色:北中医官网红 #992A18 + 金 #D0B27E + 宣纸米白 #F7EBDF
   色值均实测自北中医官网 2024 版 CSS

   风格取向:
     传统 —— 宣纸纹理、宋体标题、金色描边、印章、留白、竖排小字
     科技 —— 玻璃拟态、网格底、光晕跟随、金色渐变发光、数据等宽字体
   ========================================================================== */

/* ---------------------------------------------------------------- 变量 */
:root {
  /* 红 */
  --red: #992A18;
  --red-deep: #6E1D10;
  --red-bright: #B3462F;
  --red-soft: #F7DED6;
  --red-a10: rgba(153, 42, 24, 0.10);
  --red-a20: rgba(153, 42, 24, 0.20);
  --red-a40: rgba(153, 42, 24, 0.40);

  /* 金 */
  --gold: #D0B27E;
  --gold-bright: #E8C87A;
  --gold-deep: #B8963F;
  --gold-a20: rgba(208, 178, 126, 0.30);
  --gold-a40: rgba(208, 178, 126, 0.55);
  --gold-a60: rgba(208, 178, 126, 0.75);
  --gold-a80: rgba(232, 200, 122, 0.92);

  /* 米白 */
  --paper: #F7EBDF;
  --paper-light: #FFFDF9;
  --paper-deep: #EFE3D7;

  /* 墨 */
  --ink: #282828;
  --ink-2: #5D3E44;
  --ink-3: #8A8578;

  /* 语义 */
  --ok: #2F6B4F;
  --warn: #C8860D;

  /* 尺寸 */
  --nav-h: 72px;
  --radius: 14px;
  --radius-sm: 8px;
  --maxw: 1240px;

  /* 动效 */
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);

  /* 鼠标位置(JS 更新) */
  --mx: 50%;
  --my: 30%;
}

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

/* 关键:hidden 属性必须赢过任何 display 声明。
   否则 .nav-user{display:flex} 这类规则会让 hidden 失效——
   这是作者样式覆盖 UA 样式 [hidden]{display:none} 的经典坑。 */
[hidden] { display: none !important; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC",
               "PingFang SC", "Microsoft YaHei", serif;
  font-size: 16px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

h1, h2, h3 { margin: 0; font-weight: 600; }
p { margin: 0; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }
img { max-width: 100%; display: block; }

::selection { background: var(--red-a20); color: var(--red-deep); }

/* 滚动条 */
::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: var(--paper-deep); }
::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--gold), var(--gold-deep));
  border-radius: 10px;
  border: 2px solid var(--paper-deep);
}

/* ==========================================================================
   背景层:宣纸 + 科技网格 + 扫描线 + 光晕
   ========================================================================== */

.bg-layer {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  overflow: hidden;
}

/* 宣纸纹理:纤维细纹 + 云絮晕染 */
.bg-paper {
  position: absolute;
  inset: 0;
  background-color: var(--paper);
  background-image:
    repeating-linear-gradient(0deg, rgba(40,40,40,.014) 0 1px, transparent 1px 4px),
    repeating-linear-gradient(90deg, rgba(40,40,40,.014) 0 1px, transparent 1px 4px),
    radial-gradient(circle at 16% 8%, rgba(153,42,24,.08), transparent 40%),
    radial-gradient(circle at 88% 82%, rgba(208,178,126,.30), transparent 48%),
    radial-gradient(circle at 8% 60%, rgba(208,178,126,.16), transparent 38%),
    radial-gradient(ellipse at 50% 0%, rgba(255,253,249,.9), transparent 60%);
}

/* 科技网格:极淡的工程图纸感 */
.bg-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(153,42,24,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(153,42,24,.045) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: radial-gradient(ellipse 90% 70% at 50% 30%, #000 20%, transparent 78%);
  -webkit-mask-image: radial-gradient(ellipse 90% 70% at 50% 30%, #000 20%, transparent 78%);
}

/* 扫描线:缓慢下移的一道光带 */
.bg-scan {
  position: absolute;
  left: 0; right: 0;
  height: 220px;
  background: linear-gradient(180deg,
    transparent,
    rgba(208,178,126,.10) 45%,
    rgba(232,200,122,.16) 50%,
    rgba(208,178,126,.10) 55%,
    transparent);
  animation: scan 14s linear infinite;
  opacity: .7;
}

@keyframes scan {
  0%   { top: -220px; }
  100% { top: 100%; }
}

/* 光晕:跟随鼠标 */
.bg-glow {
  position: absolute;
  inset: 0;
  background: radial-gradient(
    520px circle at var(--mx) var(--my),
    rgba(208, 178, 126, 0.18),
    rgba(153, 42, 24, 0.06) 40%,
    transparent 68%
  );
  transition: background .25s ease-out;
}

/* ==========================================================================
   导航:滚动后变玻璃拟态
   ========================================================================== */

.nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: var(--nav-h);
  z-index: 100;
  transition: background .4s var(--ease), box-shadow .4s var(--ease),
              backdrop-filter .4s var(--ease);
}

.nav.is-stuck {
  background: rgba(247, 235, 223, 0.72);
  backdrop-filter: blur(18px) saturate(1.4);
  -webkit-backdrop-filter: blur(18px) saturate(1.4);
  box-shadow: 0 1px 0 var(--gold-a40), 0 12px 34px rgba(40, 40, 40, .07);
}

/* 底部金线 */
.nav::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  background: linear-gradient(90deg,
    transparent,
    var(--gold-a60) 20%,
    var(--gold) 50%,
    var(--gold-a60) 80%,
    transparent);
  opacity: .5;
  transition: opacity .4s var(--ease);
}

.nav.is-stuck::after { opacity: 1; }

.nav-inner {
  max-width: var(--maxw);
  height: 100%;
  margin: 0 auto;
  padding: 0 32px;
  display: flex;
  align-items: center;
  gap: 32px;
}

/* 品牌 */
.brand { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }

.brand-seal {
  width: 40px; height: 40px;
  display: grid; place-items: center;
  background: linear-gradient(140deg, var(--red-bright), var(--red-deep));
  color: #fff;
  font-size: 20px;
  border-radius: 6px;
  box-shadow: 0 4px 14px var(--red-a40), inset 0 1px 0 rgba(255,255,255,.25);
}

.brand-text { display: flex; flex-direction: column; line-height: 1.15; }
.brand-name { font-size: 19px; letter-spacing: 3px; color: var(--red); }

.brand-en {
  font-size: 9px;
  letter-spacing: 2.4px;
  color: var(--ink-3);
  font-family: "SF Mono", Menlo, Consolas, monospace;
}

/* 导航链接 */
.nav-links { display: flex; gap: 4px; margin-left: auto; }

.nav-links a {
  position: relative;
  padding: 8px 16px;
  font-size: 15px;
  color: var(--ink-2);
  border-radius: 6px;
  transition: color .25s var(--ease), background .25s var(--ease);
}

.nav-links a::after {
  content: "";
  position: absolute;
  left: 16px; right: 16px; bottom: 4px;
  height: 1px;
  background: linear-gradient(90deg, var(--gold), var(--red));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .35s var(--ease);
}

.nav-links a:hover { color: var(--red); background: var(--red-a10); }
.nav-links a:hover::after { transform: scaleX(1); }

/* 审核台入口:管理员专有 */
.nav-admin { position: relative; }
.nav-admin::before {
  content: "";
  position: absolute;
  top: 4px; right: 4px;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--red);
  box-shadow: 0 0 0 3px var(--red-a20);
  animation: pulse 2.4s ease-in-out infinite;
}

/* 「审核台」入口:只有管理员/审核员可见(身份由服务端返回) */
body:not([data-role="admin"]):not([data-role="reviewer"]) .nav-admin { display: none; }

/* 登录按钮 */
.nav-login {
  padding: 8px 22px;
  font-size: 14px;
  font-family: inherit;
  letter-spacing: 1px;
  color: #fff;
  background: linear-gradient(135deg, var(--red-bright), var(--red-deep));
  border: none;
  border-radius: 8px;
  box-shadow: 0 6px 16px var(--red-a40);
  transition: transform .28s var(--ease), box-shadow .28s var(--ease);
  flex-shrink: 0;
}

.nav-login:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px var(--red-a40);
}

@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.35); opacity: .6; }
}

/* 角色切换 */
.role-switch {
  position: relative;
  display: flex;
  padding: 3px;
  background: rgba(255, 253, 249, 0.8);
  border: 1px solid var(--gold-a40);
  border-radius: 10px;
  flex-shrink: 0;
}

.role-btn {
  position: relative;
  z-index: 2;
  padding: 7px 18px;
  font-size: 13px;
  letter-spacing: 1px;
  background: none;
  border: 0;
  color: var(--ink-3);
  border-radius: 8px;
  transition: color .3s var(--ease);
}

.role-btn.is-on { color: #fff; }

.role-slider {
  position: absolute;
  z-index: 1;
  top: 3px; left: 3px;
  width: calc(50% - 3px);
  height: calc(100% - 6px);
  background: linear-gradient(135deg, var(--red-bright), var(--red-deep));
  border-radius: 8px;
  box-shadow: 0 3px 12px var(--red-a40);
  transition: transform .42s var(--ease-out);
}

body[data-role="admin"] .role-slider { transform: translateX(100%); }

/* ==========================================================================
   Hero
   ========================================================================== */

.hero {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: calc(var(--nav-h) + 96px) 32px 72px;
}

.hero-inner { max-width: 780px; }

.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 6px 16px 6px 12px;
  font-size: 13px;
  letter-spacing: 2px;
  color: var(--red);
  background: rgba(255, 253, 249, 0.7);
  border: 1px solid var(--gold-a40);
  border-radius: 999px;
  margin-bottom: 30px;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.hero-eyebrow .dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--red);
  box-shadow: 0 0 0 4px var(--red-a20);
  animation: pulse 2.4s ease-in-out infinite;
}

.hero-title {
  font-size: clamp(46px, 8vw, 88px);
  letter-spacing: 14px;
  line-height: 1.08;
  color: var(--red);
  text-indent: 14px;
  background: linear-gradient(158deg,
    var(--red-deep) 4%,
    var(--red) 34%,
    var(--gold-deep) 76%,
    var(--gold-bright) 106%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 20px rgba(184, 150, 63, .28));
}

/* 金线 + 印章 */
.hero-rule {
  display: flex;
  align-items: center;
  gap: 18px;
  margin: 28px 0 24px;
}

.rule-line {
  height: 2px;
  flex: 1;
  max-width: 180px;
  background: linear-gradient(90deg, transparent, var(--gold) 30%, var(--gold-bright) 50%, var(--gold) 70%, transparent);
  border-radius: 2px;
  box-shadow: 0 0 12px var(--gold-a40);
}

.rule-seal {
  padding: 5px 14px;
  font-size: 12px;
  letter-spacing: 4px;
  color: var(--red);
  border: 1.5px solid var(--red);
  border-radius: 5px;
  transform: rotate(-2deg);
  background: rgba(255, 253, 249, .75);
  box-shadow: 0 0 0 3px var(--gold-a20), 0 4px 14px rgba(184, 150, 63, .22);
}

.hero-sub {
  font-size: 20px;
  letter-spacing: 4px;
  color: var(--ink-2);
  margin-bottom: 18px;
}

.hero-desc {
  font-size: 16px;
  color: var(--ink-3);
  max-width: 620px;
  line-height: 1.9;
}

.hero-cta { display: flex; gap: 16px; margin-top: 38px; flex-wrap: wrap; }

/* 按钮 */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 30px;
  font-size: 15px;
  letter-spacing: 2px;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease),
              background .3s var(--ease), color .3s var(--ease);
  position: relative;
  overflow: hidden;
}

.btn--primary {
  color: #fff;
  background: linear-gradient(135deg, var(--red-bright), var(--red-deep));
  box-shadow: 0 10px 26px var(--red-a40);
}

/* 掠过的高光 */
.btn--primary::after {
  content: "";
  position: absolute;
  top: 0; left: -60%;
  width: 40%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent);
  transform: skewX(-20deg);
  transition: left .6s var(--ease);
}

.btn--primary:hover { transform: translateY(-2px); box-shadow: 0 16px 34px var(--red-a40); }
.btn--primary:hover::after { left: 120%; }

.btn--ghost {
  color: var(--red);
  border-color: var(--gold-a60);
  background: rgba(255, 253, 249, .6);
}

.btn--ghost:hover {
  transform: translateY(-2px);
  border-color: var(--red);
  background: var(--red-soft);
}

.btn-arrow { transition: transform .3s var(--ease); }
.btn:hover .btn-arrow { transform: translateX(4px); }

/* ---------------------------------------------------------- 数据条 */
.hero-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  margin-top: 76px;
  background: var(--gold-a60);
  border: 2px solid var(--gold-a40);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: 0 14px 40px rgba(184, 150, 63, .14);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.stat {
  padding: 26px 20px;
  background: rgba(255, 253, 249, 0.78);
  text-align: center;
  transition: background .35s var(--ease);
}

.stat:hover { background: rgba(255, 253, 249, 0.98); }

.stat-num {
  font-size: 38px;
  line-height: 1.1;
  font-family: "SF Mono", Menlo, Consolas, monospace;
  letter-spacing: 1px;
  background: linear-gradient(150deg, var(--gold-deep) 10%, var(--gold) 55%, var(--gold-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 1px 8px rgba(184, 150, 63, .3));
}

.stat-label {
  margin-top: 6px;
  font-size: 13px;
  letter-spacing: 2px;
  color: var(--ink-3);
}

/* ==========================================================================
   身份提示条
   ========================================================================== */

.role-banner {
  max-width: var(--maxw);
  margin: 0 auto 20px;
  padding: 0 32px;
}

.role-banner::before {
  content: "";
  display: block;
}

.role-banner {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 22px;
  margin: 0 auto 8px;
  max-width: calc(var(--maxw) - 64px);
  background: rgba(255, 253, 249, 0.7);
  border: 1px solid var(--gold-a40);
  border-left: 3px solid var(--gold);
  border-radius: var(--radius-sm);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: border-color .4s var(--ease), background .4s var(--ease);
}

body[data-role="admin"] .role-banner {
  border-left-color: var(--red);
  background: rgba(247, 222, 214, 0.6);
}

.role-banner-icon {
  width: 28px; height: 28px;
  display: grid; place-items: center;
  font-size: 14px;
  color: #fff;
  background: var(--gold-deep);
  border-radius: 5px;
  flex-shrink: 0;
  transition: background .4s var(--ease);
}

body[data-role="admin"] .role-banner-icon { background: var(--red); }

.role-banner-text { font-size: 14.5px; color: var(--ink-2); }
.role-banner-text b { color: var(--red); }

/* ==========================================================================
   区块通用
   ========================================================================== */

.section {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 72px 32px;
}

.section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
  margin-bottom: 38px;
  padding-bottom: 18px;
  border-bottom: 2px solid var(--gold-a40);
  position: relative;
}

/* 标题下的红色短线(叠在金色底线之上) */
.section-head::after {
  content: "";
  position: absolute;
  left: 0; bottom: -2px;
  width: 96px; height: 2px;
  background: linear-gradient(90deg, var(--red), var(--gold-bright), transparent);
  box-shadow: 0 0 10px var(--gold-a40);
}

.section-title-wrap { display: flex; align-items: baseline; gap: 14px; }

.section-title {
  font-size: 30px;
  letter-spacing: 6px;
  color: var(--red);
}

/* 标题前的金色方点 */
.section-title::before {
  content: "";
  display: inline-block;
  width: 8px; height: 8px;
  margin-right: 14px;
  vertical-align: middle;
  background: linear-gradient(135deg, var(--gold-bright), var(--gold-deep));
  box-shadow: 0 0 10px var(--gold-a60);
  transform: rotate(45deg);
}

.section-en {
  font-size: 11px;
  letter-spacing: 3px;
  color: var(--ink-3);
  font-family: "SF Mono", Menlo, Consolas, monospace;
}

.section-filter { display: flex; gap: 8px; flex-wrap: wrap; }

.chip {
  padding: 7px 16px;
  font-size: 13px;
  color: var(--ink-2);
  background: rgba(255, 253, 249, .7);
  border: 1px solid var(--gold-a60);
  border-radius: 999px;
  transition: all .28s var(--ease);
}

.chip:hover {
  border-color: var(--gold-bright);
  color: var(--gold-deep);
  background: rgba(232, 200, 122, .16);
  transform: translateY(-1px);
}

.chip.is-on {
  background: linear-gradient(135deg, var(--red-bright), var(--red-deep));
  border-color: transparent;
  color: #fff;
  box-shadow: 0 6px 16px var(--red-a40);
}

/* ==========================================================================
   医案卡片
   ========================================================================== */

.case-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 22px;
}

.case-card {
  position: relative;
  padding: 26px 24px 20px;
  cursor: pointer;
  background: linear-gradient(180deg, rgba(255, 253, 249, 0.86), rgba(255, 253, 249, 0.72));
  border: 1px solid var(--gold-a60);
  border-radius: var(--radius);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  overflow: hidden;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .6), 0 6px 18px rgba(184, 150, 63, .07);
  transition: transform .45s var(--ease-out), box-shadow .45s var(--ease-out),
              border-color .45s var(--ease);
}

/* 顶部金色渐变线:默认露出一小截,hover 展开 */
.case-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--gold-bright), var(--gold), var(--red), transparent);
  transform: scaleX(.2);
  transform-origin: left;
  transition: transform .55s var(--ease-out);
}

/* hover 光晕 */
.case-card::after {
  content: "";
  position: absolute;
  top: -60%; right: -30%;
  width: 260px; height: 260px;
  background: radial-gradient(circle, var(--gold-a40), transparent 62%);
  opacity: 0;
  transition: opacity .5s var(--ease);
  pointer-events: none;
}

.case-card:hover {
  transform: translateY(-6px);
  border-color: var(--gold-bright);
  box-shadow: 0 22px 46px rgba(184, 150, 63, .18), 0 0 0 1px var(--gold-a60);
}

.case-card:hover::before { transform: scaleX(1); }
.case-card:hover::after { opacity: 1; }

.case-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}

.case-part {
  padding: 3px 12px;
  font-size: 12px;
  letter-spacing: 2px;
  color: var(--red);
  background: var(--red-soft);
  border: 1px solid var(--red-a20);
  border-radius: 4px;
}

.case-effect {
  font-size: 12px;
  letter-spacing: 1px;
  padding: 3px 12px;
  border-radius: 4px;
  border: 1px solid;
}

.case-effect.is-ok { color: var(--ok); border-color: rgba(47,107,79,.35); background: rgba(47,107,79,.07); }
.case-effect.is-no { color: var(--warn); border-color: rgba(200,134,13,.35); background: rgba(200,134,13,.07); }

.case-title {
  font-size: 19px;
  line-height: 1.5;
  color: var(--ink);
  letter-spacing: 1px;
  margin-bottom: 10px;
}

.case-brief {
  font-size: 14px;
  color: var(--ink-3);
  line-height: 1.85;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.case-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; }

.tag {
  font-size: 12px;
  padding: 3px 10px;
  color: var(--gold-deep);
  border: 1px solid var(--gold-a60);
  background: rgba(232, 200, 122, .16);
  border-radius: 4px;
  letter-spacing: 1px;
}

.case-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 14px;
  border-top: 1px dashed var(--gold-a40);
  font-size: 12.5px;
  color: var(--ink-3);
}

.case-meta {
  color: var(--ink-3);
  letter-spacing: .5px;
}

/* 空状态 */
.case-empty {
  grid-column: 1 / -1;
  padding: 72px 32px;
  text-align: center;
  font-size: 16px;
  color: var(--ink-3);
  background: rgba(255, 253, 249, .6);
  border: 1px dashed var(--gold-a60);
  border-radius: var(--radius);
}

.case-empty span {
  display: block;
  margin-top: 10px;
  font-size: 13px;
  color: var(--ink-3);
  opacity: .8;
}

.case-more { color: var(--red); letter-spacing: 1px; transition: transform .3s var(--ease); }
.case-card:hover .case-more { transform: translateX(4px); }

/* ==========================================================================
   论坛
   ========================================================================== */

.forum-list { display: flex; flex-direction: column; gap: 12px; }

.forum-item {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 22px 24px;
  background: rgba(255, 253, 249, 0.72);
  border: 1px solid var(--gold-a40);
  border-radius: var(--radius);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: transform .4s var(--ease-out), border-color .4s var(--ease),
              box-shadow .4s var(--ease), background .4s var(--ease);
}

.forum-item:hover {
  transform: translateX(6px);
  border-color: var(--gold-bright);
  background: rgba(255, 253, 249, 0.96);
  box-shadow: -4px 0 0 var(--gold), 0 14px 32px rgba(184, 150, 63, .14);
}

.forum-kind {
  width: 44px; height: 44px;
  flex-shrink: 0;
  display: grid; place-items: center;
  font-size: 18px;
  border-radius: 8px;
  color: #fff;
  background: linear-gradient(140deg, var(--red-bright), var(--red-deep));
  box-shadow: 0 6px 16px var(--red-a20);
}

.forum-kind.is-share  { background: linear-gradient(140deg, var(--gold), var(--gold-deep)); color: #fff; }
.forum-kind.is-theory { background: linear-gradient(140deg, #6B7A8F, #46536B); }

.forum-body { flex: 1; min-width: 0; }

.forum-title {
  font-size: 17px;
  color: var(--ink);
  letter-spacing: 1px;
  margin-bottom: 6px;
}

.forum-excerpt {
  font-size: 13.5px;
  color: var(--ink-3);
  line-height: 1.7;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.forum-meta {
  margin-top: 8px;
  font-size: 12px;
  color: var(--ink-3);
  font-family: "SF Mono", Menlo, Consolas, monospace;
}

.forum-meta .sep { margin: 0 8px; opacity: .5; }

.forum-status {
  flex-shrink: 0;
  padding: 5px 14px;
  font-size: 12px;
  letter-spacing: 1px;
  border-radius: 999px;
  border: 1px solid;
}

.forum-status.is-ok      { color: var(--ok); border-color: rgba(47,107,79,.35); background: rgba(47,107,79,.07); }
.forum-status.is-pending { color: var(--red); border-color: var(--red-a40); background: var(--red-a10); }

/* ==========================================================================
   问题本
   ========================================================================== */

.question-board {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 20px;
}

.question-card {
  position: relative;
  padding: 26px 24px 22px;
  background: rgba(255, 253, 249, 0.75);
  border: 1px solid var(--gold-a40);
  border-radius: var(--radius);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: transform .4s var(--ease-out), box-shadow .4s var(--ease),
              border-color .4s var(--ease);
}

/* 左上角折角 */
.question-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 34px; height: 34px;
  background: linear-gradient(135deg, var(--gold-a60) 0 50%, transparent 50%);
  border-top-left-radius: var(--radius);
}

.question-card:hover {
  transform: translateY(-5px);
  border-color: var(--gold);
  box-shadow: 0 18px 40px rgba(40,40,40,.1);
}

.question-card h3 {
  font-size: 17px;
  color: var(--ink);
  letter-spacing: 1px;
  margin-bottom: 10px;
}

.question-card p { font-size: 14px; color: var(--ink-3); line-height: 1.8; }

.q-status {
  display: inline-block;
  margin-bottom: 14px;
  padding: 3px 12px;
  font-size: 12px;
  letter-spacing: 1px;
  border-radius: 4px;
  border: 1px solid;
}

.q-status.is-local    { color: var(--ink-3); border-color: var(--gold-a60); }
.q-status.is-pushed   { color: var(--warn); border-color: rgba(200,134,13,.4); background: rgba(200,134,13,.07); }
.q-status.is-answered { color: var(--ok); border-color: rgba(47,107,79,.35); background: rgba(47,107,79,.07); }

.q-answer {
  margin-top: 16px;
  padding: 14px 16px;
  font-size: 13.5px;
  line-height: 1.8;
  color: var(--ink-2);
  background: rgba(47, 107, 79, 0.06);
  border-left: 3px solid var(--ok);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}

/* ==========================================================================
   管理审核台
   ========================================================================== */

.section--admin {
  position: relative;
  max-width: calc(var(--maxw) - 64px);
  margin: 24px auto 0;
  padding: 56px 40px;
  background:
    linear-gradient(180deg, rgba(247, 222, 214, 0.55), rgba(255, 253, 249, 0.75));
  border: 1px solid var(--red-a20);
  border-radius: 20px;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 24px 60px rgba(153, 42, 24, .08);
}

/* 四角金饰 —— 行政/管理界面的仪式感 */
.section--admin::before,
.section--admin::after {
  content: "";
  position: absolute;
  width: 26px; height: 26px;
  border: 2px solid var(--gold);
}

.section--admin::before { top: 12px; left: 12px; border-right: none; border-bottom: none; }
.section--admin::after  { right: 12px; bottom: 12px; border-left: none; border-top: none; }

/* 管理员身份下才显示 */
/* 审核台显隐由 html[data-state] 控制,见文件末尾「权限门」部分 */

/* 管理员模式下轻微改变整体色调 */
body[data-role="admin"] .bg-paper {
  background-image:
    repeating-linear-gradient(0deg, rgba(40,40,40,.014) 0 1px, transparent 1px 4px),
    repeating-linear-gradient(90deg, rgba(40,40,40,.014) 0 1px, transparent 1px 4px),
    radial-gradient(circle at 16% 8%, rgba(153,42,24,.12), transparent 42%),
    radial-gradient(circle at 88% 82%, rgba(208,178,126,.18), transparent 46%),
    radial-gradient(ellipse at 50% 0%, rgba(255,253,249,.9), transparent 60%);
}

.badge-pending {
  padding: 3px 12px;
  font-size: 12px;
  letter-spacing: 1px;
  color: #fff;
  background: linear-gradient(135deg, var(--red-bright), var(--red-deep));
  border-radius: 999px;
  box-shadow: 0 4px 12px var(--red-a40);
  animation: pulse 2.6s ease-in-out infinite;
}

.admin-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 30px;
}

.admin-stat {
  padding: 20px;
  text-align: center;
  background: rgba(255, 253, 249, .8);
  border: 1px solid var(--gold-a40);
  border-radius: var(--radius-sm);
  transition: transform .35s var(--ease), border-color .35s var(--ease);
}

.admin-stat:hover { transform: translateY(-3px); border-color: var(--gold); }

.as-num {
  display: block;
  font-size: 30px;
  font-family: "SF Mono", Menlo, Consolas, monospace;
  color: var(--red);
  line-height: 1.2;
}

.as-label { font-size: 12.5px; color: var(--ink-3); letter-spacing: 1px; }

.review-list { display: flex; flex-direction: column; gap: 14px; }

.review-item {
  padding: 22px 24px;
  background: rgba(255, 253, 249, 0.9);
  border: 1px solid var(--gold-a40);
  border-radius: var(--radius);
  transition: border-color .35s var(--ease), box-shadow .35s var(--ease);
}

.review-item:hover {
  border-color: var(--gold);
  box-shadow: 0 12px 30px rgba(40,40,40,.08);
}

.review-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}

.review-kind {
  padding: 3px 11px;
  font-size: 12px;
  letter-spacing: 1px;
  color: #fff;
  background: linear-gradient(135deg, var(--red-bright), var(--red-deep));
  border-radius: 4px;
}

.review-kind.is-q { background: linear-gradient(135deg, var(--gold), var(--gold-deep)); }

.review-title { font-size: 17px; color: var(--ink); letter-spacing: 1px; }

.review-time {
  margin-left: auto;
  font-size: 12px;
  color: var(--ink-3);
  font-family: "SF Mono", Menlo, Consolas, monospace;
}

.review-excerpt {
  font-size: 13.5px;
  color: var(--ink-3);
  line-height: 1.8;
  margin-bottom: 14px;
}

.review-gates { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }

.gate {
  font-size: 12px;
  padding: 3px 11px;
  border-radius: 4px;
  border: 1px solid;
}

.gate.is-on  { color: var(--ok); border-color: rgba(47,107,79,.35); background: rgba(47,107,79,.07); }
.gate.is-off { color: var(--warn); border-color: rgba(200,134,13,.35); background: rgba(200,134,13,.07); }

.review-actions { display: flex; gap: 10px; flex-wrap: wrap; }

.btn-mini {
  padding: 8px 20px;
  font-size: 13px;
  letter-spacing: 1px;
  border-radius: 6px;
  border: 1px solid transparent;
  transition: all .28s var(--ease);
}

.btn-mini--ok {
  color: #fff;
  background: linear-gradient(135deg, #3E8B66, var(--ok));
  box-shadow: 0 6px 16px rgba(47,107,79,.25);
}

.btn-mini--no {
  color: var(--red);
  border-color: var(--red-a40);
  background: rgba(255, 253, 249, .8);
}

.btn-mini--ghost { color: var(--ink-2); border-color: var(--gold-a60); background: transparent; }

.btn-mini:hover { transform: translateY(-2px); }

/* ==========================================================================
   页脚
   ========================================================================== */

.footer {
  margin-top: 60px;
  padding: 56px 32px 40px;
  background: linear-gradient(180deg, rgba(232, 200, 122, .12), rgba(239, 227, 215, .85));
  border-top: 2px solid var(--gold-a40);
  position: relative;
}

/* 页脚顶部金色渐变线 */
.footer::before {
  content: "";
  position: absolute;
  top: -2px; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--gold-bright) 50%, transparent);
  box-shadow: 0 0 14px var(--gold-a60);
}

.footer-inner { max-width: var(--maxw); margin: 0 auto; }

.footer-brand {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 24px;
}

.footer-name { font-size: 18px; letter-spacing: 3px; color: var(--red); }

.footer-en {
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--ink-3);
  font-family: "SF Mono", Menlo, Consolas, monospace;
}

.footer-note {
  font-size: 13.5px;
  color: var(--ink-3);
  line-height: 1.9;
  max-width: 860px;
  padding: 20px 22px;
  background: rgba(255, 253, 249, .7);
  border-left: 3px solid var(--gold);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}

.footer-note b { color: var(--red); }

.footer-bottom {
  margin-top: 30px;
  padding-top: 22px;
  border-top: 1px dashed var(--gold-a40);
  font-size: 12.5px;
  color: var(--ink-3);
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  font-family: "SF Mono", Menlo, Consolas, monospace;
}

.footer-bottom .sep { opacity: .5; }

/* ---------------------------------------------------------- 回到顶部 */
.to-top {
  position: fixed;
  right: 28px; bottom: 28px;
  width: 46px; height: 46px;
  font-size: 18px;
  color: var(--gold-deep);
  background: linear-gradient(180deg, rgba(255, 253, 249, .95), rgba(247, 235, 223, .9));
  border: 1.5px solid var(--gold);
  border-radius: 50%;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 10px 26px rgba(184, 150, 63, .26);
  opacity: 0;
  transform: translateY(14px) scale(.9);
  pointer-events: none;
  transition: all .4s var(--ease-out);
  z-index: 90;
}

.to-top.is-on { opacity: 1; transform: none; pointer-events: auto; }
.to-top:hover {
  background: linear-gradient(135deg, var(--gold-bright), var(--gold-deep));
  color: #fff;
  border-color: var(--gold-bright);
  box-shadow: 0 12px 30px rgba(184, 150, 63, .4);
}

/* ==========================================================================
   滚动入场动画
   ========================================================================== */

.reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .8s var(--ease-out), transform .8s var(--ease-out);
  will-change: opacity, transform;
}

.reveal.is-visible { opacity: 1; transform: none; }

/* Hero 内元素依次登场 */
.hero .reveal:nth-child(1) { transition-delay: .05s; }
.hero .reveal:nth-child(2) { transition-delay: .14s; }
.hero .reveal:nth-child(3) { transition-delay: .22s; }
.hero .reveal:nth-child(4) { transition-delay: .30s; }
.hero .reveal:nth-child(5) { transition-delay: .38s; }
.hero .reveal:nth-child(6) { transition-delay: .46s; }

/* 卡片网格错峰 */
.case-grid .reveal:nth-child(1) { transition-delay: .04s; }
.case-grid .reveal:nth-child(2) { transition-delay: .10s; }
.case-grid .reveal:nth-child(3) { transition-delay: .16s; }
.case-grid .reveal:nth-child(4) { transition-delay: .22s; }
.case-grid .reveal:nth-child(5) { transition-delay: .28s; }
.case-grid .reveal:nth-child(6) { transition-delay: .34s; }

.forum-list .reveal:nth-child(1) { transition-delay: .04s; }
.forum-list .reveal:nth-child(2) { transition-delay: .10s; }
.forum-list .reveal:nth-child(3) { transition-delay: .16s; }
.forum-list .reveal:nth-child(4) { transition-delay: .22s; }

.question-board .reveal:nth-child(1) { transition-delay: .04s; }
.question-board .reveal:nth-child(2) { transition-delay: .12s; }
.question-board .reveal:nth-child(3) { transition-delay: .20s; }

.review-list .reveal:nth-child(1) { transition-delay: .04s; }
.review-list .reveal:nth-child(2) { transition-delay: .10s; }
.review-list .reveal:nth-child(3) { transition-delay: .16s; }

/* 角色切换时,管理区块重新入场 */
body[data-role="admin"] .section--admin .reveal { animation: adminIn .7s var(--ease-out) both; }

@keyframes adminIn {
  from { opacity: 0; transform: translateY(22px) scale(.99); }
  to   { opacity: 1; transform: none; }
}

/* ==========================================================================
   响应式
   ========================================================================== */

@media (max-width: 980px) {
  .nav-links { display: none; }
  .hero { padding-top: calc(var(--nav-h) + 64px); }
  .hero-stats { grid-template-columns: repeat(2, 1fr); }
  .admin-stats { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
  .nav-inner { padding: 0 18px; gap: 12px; }
  .brand-en { display: none; }
  .role-btn { padding: 6px 12px; font-size: 12px; }
  .hero, .section { padding-left: 18px; padding-right: 18px; }
  .role-banner { margin-left: 18px; margin-right: 18px; }
  .section--admin { margin-left: 18px; margin-right: 18px; padding: 40px 22px; }
  .hero-title { letter-spacing: 8px; text-indent: 8px; }
  .hero-sub { font-size: 17px; letter-spacing: 2px; }
  .section-title { font-size: 24px; letter-spacing: 4px; }
  .case-grid, .question-board { grid-template-columns: 1fr; }
  .forum-item { flex-wrap: wrap; }
  .forum-status { margin-left: 64px; }
  .to-top { right: 18px; bottom: 18px; }
}

/* ==========================================================================
   权限门(审核台专属页面)
   ========================================================================== */

.gate-block {
  display: none;
  min-height: calc(100vh - var(--nav-h) - 220px);
  padding: calc(var(--nav-h) + 72px) 32px 80px;
  place-items: center;
}

/* ---- 状态机 ----
   guest   未登录        → 显示登录表单
   loading 校验 token 中  → 显示校验中
   denied  登录但无权限   → 显示无权限
   ok      管理员        → 显示审核台
   -------------------------------------------------- */

html[data-state="guest"] .gate-block,
html[data-state="loading"] .gate-block,
html[data-state="denied"] .gate-block { display: grid; }

html[data-state="ok"] .gate-block { display: none; }

html[data-state="guest"] .section--admin,
html[data-state="loading"] .section--admin,
html[data-state="denied"] .section--admin { display: none; }

/* 门内三种面板,同时只显示一个 */
.gate-pane { display: none; }

html[data-state="guest"] #loginPane,
html[data-state="loading"] #loadingPane,
html[data-state="denied"] #deniedPane { display: block; }

/* ---- 登录表单 ---- */

.login-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 16px;
}

.login-input {
  height: 52px;
  padding: 0 18px;
  font-size: 15px;
  font-family: inherit;
  color: var(--ink);
  background: rgba(247, 235, 223, .92);
  border: 1px solid var(--gold-a60);
  border-radius: var(--radius-sm);
  outline: none;
  transition: border-color .28s var(--ease), box-shadow .28s var(--ease);
}

.login-input::placeholder { color: #A9A297; }

.login-input:focus {
  border-color: var(--red);
  box-shadow: 0 0 0 3px var(--red-a10);
}

.login-btn { width: 100%; height: 52px; }
.login-btn[disabled] { opacity: .6; cursor: not-allowed; }

.login-msg {
  min-height: 20px;
  font-size: 13.5px;
  color: var(--red);
  text-align: center;
}

/* ---- 登录弹层 ---- */

.modal {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: grid;
  place-items: center;
  padding: 24px;
}

.modal[hidden] { display: none; }

.modal-mask {
  position: absolute;
  inset: 0;
  background: rgba(40, 40, 40, .38);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  opacity: 0;
  transition: opacity .26s var(--ease);
}

.modal.is-on .modal-mask { opacity: 1; }

.modal-card {
  position: relative;
  width: 100%;
  max-width: 400px;
  padding: 36px 32px 30px;
  background: linear-gradient(180deg, rgba(255,253,249,.98), rgba(247,235,223,.96));
  border: 1px solid var(--gold-a60);
  border-radius: 18px;
  box-shadow: 0 30px 70px rgba(40,40,40,.28), 0 0 0 1px var(--gold-a20);
  opacity: 0;
  transform: translateY(16px) scale(.97);
  transition: opacity .28s var(--ease), transform .32s var(--ease-out);
}

.modal.is-on .modal-card { opacity: 1; transform: none; }

/* 四角金饰 */
.modal-card::before,
.modal-card::after {
  content: "";
  position: absolute;
  width: 20px; height: 20px;
  border: 2px solid var(--gold);
}

.modal-card::before { top: 10px; left: 10px; border-right: none; border-bottom: none; }
.modal-card::after  { right: 10px; bottom: 10px; border-left: none; border-top: none; }

.modal-close {
  position: absolute;
  top: 12px; right: 14px;
  width: 32px; height: 32px;
  font-size: 22px;
  line-height: 1;
  font-family: inherit;
  color: var(--ink-3);
  background: none;
  border: none;
  border-radius: 6px;
  transition: color .24s var(--ease), background .24s var(--ease);
}

.modal-close:hover { color: var(--red); background: var(--red-a10); }

.modal-title {
  font-size: 24px;
  letter-spacing: 6px;
  color: var(--red);
  text-align: center;
  margin-bottom: 10px;
}

.modal-desc {
  font-size: 13.5px;
  color: var(--ink-3);
  line-height: 1.8;
  text-align: center;
  margin-bottom: 26px;
}

/* ==========================================================================
   医案详情弹层
   ========================================================================== */

/* 卡片本身不滚动(overflow:hidden 只为裁圆角),
   滚动交给内部的 .case-detail —— 这样绝对定位的关闭按钮不会跟着内容跑 */
.modal-card--case {
  max-width: 760px;
  padding: 0;
  overflow: hidden;
  text-align: left;
}

/* 关闭按钮钉在卡片右上角 */
.modal-card--case .modal-close {
  top: 16px;
  right: 18px;
  z-index: 2;
  background: rgba(255, 253, 249, .92);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

/* 真正滚动的只有内容区 */
.case-detail {
  max-height: 86vh;
  overflow-y: auto;
  padding: 40px 40px 34px;
}

.cd-title {
  font-size: 26px;
  line-height: 1.4;
  letter-spacing: 3px;
  color: var(--red);
  margin-bottom: 16px;
  padding-right: 32px;
}

.cd-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding-bottom: 18px;
  margin-bottom: 26px;
  border-bottom: 2px solid var(--gold-a40);
}

.cd-date {
  margin-left: auto;
  font-size: 12.5px;
  color: var(--ink-3);
  font-family: "SF Mono", Menlo, Consolas, monospace;
}

.cd-section { margin-bottom: 22px; }

.cd-label {
  font-size: 14px;
  letter-spacing: 2px;
  color: var(--red);
  padding-bottom: 8px;
  margin-bottom: 12px;
  border-bottom: 1px dashed var(--gold-a40);
}

.cd-text {
  font-size: 15px;
  line-height: 1.95;
  color: var(--ink);
  white-space: pre-wrap;   /* 保留小程序端输入的换行 */
}

.cd-text--empty { color: var(--ink-3); }

.cd-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 22px 0;
}

.cd-foot {
  display: flex;
  gap: 22px;
  flex-wrap: wrap;
  padding-top: 18px;
  border-top: 1px dashed var(--gold-a40);
  font-size: 13px;
  color: var(--ink-3);
}

@media (max-width: 640px) {
  .case-detail { padding: 28px 20px 24px; }
  .modal-card--case .modal-close { top: 10px; right: 12px; }
  .cd-title { font-size: 21px; letter-spacing: 1px; }
  .cd-date { margin-left: 0; }
}

/* ---- 导航栏用户信息 ---- */

.nav-user {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.nav-user-role {
  padding: 3px 10px;
  font-size: 12px;
  letter-spacing: 1px;
  color: #fff;
  background: linear-gradient(135deg, var(--red-bright), var(--red-deep));
  border-radius: 4px;
}

.nav-user-name {
  font-size: 14px;
  color: var(--ink-2);
  max-width: 120px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nav-logout {
  padding: 6px 14px;
  font-size: 13px;
  font-family: inherit;
  color: var(--ink-2);
  background: rgba(255, 253, 249, .85);
  border: 1px solid var(--gold-a60);
  border-radius: 6px;
  transition: all .26s var(--ease);
}

.nav-logout:hover {
  color: var(--red);
  border-color: var(--red);
  background: var(--red-soft);
}

/* ---- 审核条目补充 ---- */

.review-item[data-id] { position: relative; }

.review-note-line {
  margin: 10px 0 0;
  font-size: 13px;
  color: var(--red-deep);
}

.review-done {
  font-size: 13px;
  color: var(--ink-3);
  letter-spacing: 1px;
}

.btn-mini[disabled] {
  opacity: .45;
  cursor: not-allowed;
  transform: none !important;
}

.gate-card {
  position: relative;
  max-width: 540px;
  text-align: center;
  padding: 52px 40px;
  background: linear-gradient(180deg, rgba(255,253,249,.94), rgba(247,235,223,.88));
  border: 1px solid var(--gold-a60);
  border-radius: 20px;
  box-shadow: 0 26px 60px rgba(184,150,63,.20);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

/* 四角金饰 */
.gate-card::before,
.gate-card::after {
  content: "";
  position: absolute;
  width: 22px; height: 22px;
  border: 2px solid var(--gold);
}

.gate-card::before { top: 12px; left: 12px; border-right: none; border-bottom: none; }
.gate-card::after  { right: 12px; bottom: 12px; border-left: none; border-top: none; }

.gate-seal {
  width: 64px; height: 64px;
  margin: 0 auto 26px;
  display: grid; place-items: center;
  font-size: 26px;
  color: #fff;
  background: linear-gradient(140deg, var(--red-bright), var(--red-deep));
  border-radius: 10px;
  box-shadow: 0 10px 26px var(--red-a40), 0 0 0 6px var(--gold-a20);
}

.gate-title {
  font-size: 30px;
  letter-spacing: 6px;
  color: var(--red);
  margin-bottom: 16px;
}

.gate-desc {
  font-size: 15px;
  color: var(--ink-3);
  line-height: 1.9;
  margin-bottom: 30px;
}

.gate-desc b { color: var(--red); }

.gate-actions {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}

.gate-note {
  margin-top: 30px;
  padding-top: 22px;
  border-top: 1px dashed var(--gold-a40);
  font-size: 12.5px;
  color: var(--ink-3);
  line-height: 1.8;
  text-align: left;
}

/* ==========================================================================
   审核动作反馈(视觉稿:只做标记,不提交)
   ========================================================================== */

.review-item.is-passed   { border-color: rgba(47,107,79,.5); opacity: .75; }
.review-item.is-rejected { border-color: var(--red-a40); opacity: .6; }

.review-stamp {
  display: inline-block;
  margin-top: 14px;
  padding: 4px 14px;
  font-size: 12px;
  letter-spacing: 2px;
  border: 1.5px solid;
  border-radius: 4px;
  transform: rotate(-2deg);
  animation: stampIn .42s var(--ease-out);
}

.review-stamp.is-pass   { color: var(--ok); border-color: var(--ok); }
.review-stamp.is-reject { color: var(--red); border-color: var(--red); }

@keyframes stampIn {
  from { opacity: 0; transform: rotate(-2deg) scale(1.7); }
  to   { opacity: 1; transform: rotate(-2deg) scale(1); }
}

.admin-foot-note {
  margin-top: 26px;
  font-size: 13px;
  color: var(--ink-3);
  text-align: center;
}

/* 轻提示 */
.toast {
  position: fixed;
  left: 50%; bottom: 40px;
  transform: translate(-50%, 16px);
  padding: 12px 26px;
  font-size: 14px;
  letter-spacing: 1px;
  color: #fff;
  background: linear-gradient(135deg, rgba(153,42,24,.96), rgba(110,29,16,.96));
  border: 1px solid var(--gold-a60);
  border-radius: 999px;
  box-shadow: 0 14px 34px rgba(40,40,40,.28);
  opacity: 0;
  transition: opacity .35s var(--ease), transform .35s var(--ease-out);
  z-index: 200;
  pointer-events: none;
}

.toast.is-on { opacity: 1; transform: translate(-50%, 0); }

/* ==========================================================================
   无障碍:尊重「减弱动态效果」
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }

  .reveal { opacity: 1; transform: none; }
  .bg-scan { display: none; }
  .bg-glow { display: none; }
}
